PageSourceSearch

https://hydrachem.com/wp-content/themes/hydrachem/js/app.js?ver=7.1.3

js hydrachem.com collected 2026-10-08 03:02:02 UTC 979,697 bytes, 23,905 lines download raw bytes

1(() => {
2  var __create = Object.create;
3  var __defProp = Object.defineProperty;
4  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5  var __getOwnPropNames = Object.getOwnPropertyNames;
6  var __getProtoOf = Object.getPrototypeOf;
7  var __hasOwnProp = Object.prototype.hasOwnProperty;
8  var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
9  var __commonJS = (cb, mod) => function __require() {
10    return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
11  };
12  var __reExport = (target, module, desc) => {
13    if (module && typeof module === "object" || typeof module === "function") {
14      for (let key of __getOwnPropNames(module))
15        if (!__hasOwnProp.call(target, key) && key !== "default")
16          __defProp(target, key, { get: () => module[key], enumerable: !(desc = __getOwnPropDesc(module, key)) || desc.enumerable });
17    }
18    return target;
19  };
20  var __toModule = (module) => {
21    return __reExport(__markAsModule(__defProp(module != null ? __create(__getProtoOf(module)) : {}, "default", module && module.__esModule && "default" in module ? { get: () => module.default, enumerable: true } : { value: module, enumerable: true })), module);
22  };
23
24  
vendor: 242,788 bytes, lines 24-5909
24// node_modules/jquery/dist/jquery.js
25  var require_jquery = __commonJS({
26    "node_modules/jquery/dist/jquery.js"(exports, module) {
27      (function(global2, factory) {
28        "use strict";
29        if (typeof module === "object" && typeof module.exports === "object") {
30          module.exports = global2.document ? factory(global2, true) : function(w) {
31            if (!w.document) {
32              throw new Error("jQuery requires a window with a document");
33            }
34            return factory(w);
35          };
36        } else {
37          factory(global2);
38        }
39      })(typeof window !== "undefined" ? window : exports, function(window2, noGlobal) {
40        "use strict";
41        var arr = [];
42        var getProto = Object.getPrototypeOf;
43        var slice = arr.slice;
44        var flat = arr.flat ? function(array) {
45          return arr.flat.call(array);
46        } : function(array) {
47          return arr.concat.apply([], array);
48        };
49        var push = arr.push;
50        var indexOf = arr.indexOf;
51        var class2type = {};
52        var toString = class2type.toString;
53        var hasOwn = class2type.hasOwnProperty;
54        var fnToString = hasOwn.toString;
55        var ObjectFunctionString = fnToString.call(Object);
56        var support = {};
57        var isFunction2 = function isFunction3(obj) {
58          return typeof obj === "function" && typeof obj.nodeType !== "number" && typeof obj.item !== "function";
59        };
60        var isWindow = function isWindow2(obj) {
61          return obj != null && obj === obj.window;
62        };
63        var document2 = window2.document;
64        var preservedScriptAttributes = {
65          type: true,
66          src: true,
67          nonce: true,
68          noModule: true
69        };
70        function DOMEval(code, node, doc) {
71          doc = doc || document2;
72          var i, val, script = doc.createElement("script");
73          script.text = code;
74          if (node) {
75            for (i in preservedScriptAttributes) {
76              val = node[i] || node.getAttribute && node.getAttribute(i);
77              if (val) {
78                script.setAttribute(i, val);
79              }
80            }
81          }
82          doc.head.appendChild(script).parentNode.removeChild(script);
83        }
84        function toType(obj) {
85          if (obj == null) {
86            return obj + "";
87          }
88          return typeof obj === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : typeof obj;
89        }
90        var version = "3.6.0", jQuery2 = function(selector3, context) {
91          return new jQuery2.fn.init(selector3, context);
92        };
93        jQuery2.fn = jQuery2.prototype = {
94          jquery: version,
95          constructor: jQuery2,
96          length: 0,
97          toArray: function() {
98            return slice.call(this);
99          },
100          get: function(num) {
101            if (num == null) {
102              return slice.call(this);
103            }
104            return num < 0 ? this[num + this.length] : this[num];
105          },
106          pushStack: function(elems) {
107            var ret = jQuery2.merge(this.constructor(), elems);
108            ret.prevObject = this;
109            return ret;
110          },
111          each: function(callback) {
112            return jQuery2.each(this, callback);
113          },
114          map: function(callback) {
115            return this.pushStack(jQuery2.map(this, function(elem, i) {
116              return callback.call(elem, i, elem);
117            }));
118          },
119          slice: function() {
120            return this.pushStack(slice.apply(this, arguments));
121          },
122          first: function() {
123            return this.eq(0);
124          },
125          last: function() {
126            return this.eq(-1);
127          },
128          even: function() {
129            return this.pushStack(jQuery2.grep(this, function(_elem, i) {
130              return (i + 1) % 2;
131            }));
132          },
133          odd: function() {
134            return this.pushStack(jQuery2.grep(this, function(_elem, i) {
135              return i % 2;
136            }));
137          },
138          eq: function(i) {
139            var len = this.length, j = +i + (i < 0 ? len : 0);
140            return this.pushStack(j >= 0 && j < len ? [this[j]] : []);
141          },
142          end: function() {
143            return this.prevObject || this.constructor();
144          },
145          push,
146          sort: arr.sort,
147          splice: arr.splice
148        };
149        jQuery2.extend = jQuery2.fn.extend = function() {
150          var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false;
151          if (typeof target === "boolean") {
152            deep = target;
153            target = arguments[i] || {};
154            i++;
155          }
156          if (typeof target !== "object" && !isFunction2(target)) {
157            target = {};
158          }
159          if (i === length) {
160            target = this;
161            i--;
162          }
163          for (; i < length; i++) {
164            if ((options = arguments[i]) != null) {
165              for (name in options) {
166                copy = options[name];
167                if (name === "__proto__" || target === copy) {
168                  continue;
169                }
170                if (deep && copy && (jQuery2.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {
171                  src = target[name];
172                  if (copyIsArray && !Array.isArray(src)) {
173                    clone = [];
174                  } else if (!copyIsArray && !jQuery2.isPlainObject(src)) {
175                    clone = {};
176                  } else {
177                    clone = src;
178                  }
179                  copyIsArray = false;
180                  target[name] = jQuery2.extend(deep, clone, copy);
181                } else if (copy !== void 0) {
182                  target[name] = copy;
183                }
184              }
185            }
186          }
187          return target;
188        };
189        jQuery2.extend({
190          expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""),
191          isReady: true,
192          error: function(msg) {
193            throw new Error(msg);
194          },
195          noop: function() {
196          },
197          isPlainObject: function(obj) {
198            var proto, Ctor;
199            if (!obj || toString.call(obj) !== "[object Object]") {
200              return false;
201            }
202            proto = getProto(obj);
203            if (!proto) {
204              return true;
205            }
206            Ctor = hasOwn.call(proto, "constructor") && proto.constructor;
207            return typeof Ctor === "function" && fnToString.call(Ctor) === ObjectFunctionString;
208          },
209          isEmptyObject: function(obj) {
210            var name;
211            for (name in obj) {
212              return false;
213            }
214            return true;
215          },
216          globalEval: function(code, options, doc) {
217            DOMEval(code, { nonce: options && options.nonce }, doc);
218          },
219          each: function(obj, callback) {
220            var length, i = 0;
221            if (isArrayLike(obj)) {
222              length = obj.length;
223              for (; i < length; i++) {
224                if (callback.call(obj[i], i, obj[i]) === false) {
225                  break;
226                }
227              }
228            } else {
229              for (i in obj) {
230                if (callback.call(obj[i], i, obj[i]) === false) {
231                  break;
232                }
233              }
234            }
235            return obj;
236          },
237          makeArray: function(arr2, results) {
238            var ret = results || [];
239            if (arr2 != null) {
240              if (isArrayLike(Object(arr2))) {
241                jQuery2.merge(ret, typeof arr2 === "string" ? [arr2] : arr2);
242              } else {
243                push.call(ret, arr2);
244              }
245            }
246            return ret;
247          },
248          inArray: function(elem, arr2, i) {
249            return arr2 == null ? -1 : indexOf.call(arr2, elem, i);
250          },
251          merge: function(first, second) {
252            var len = +second.length, j = 0, i = first.length;
253            for (; j < len; j++) {
254              first[i++] = second[j];
255            }
256            first.length = i;
257            return first;
258          },
259          grep: function(elems, callback, invert) {
260            var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert;
261            for (; i < length; i++) {
262              callbackInverse = !callback(elems[i], i);
263              if (callbackInverse !== callbackExpect) {
264                matches.push(elems[i]);
265              }
266            }
267            return matches;
268          },
269          map: function(elems, callback, arg) {
270            var length, value, i = 0, ret = [];
271            if (isArrayLike(elems)) {
272              length = elems.length;
273              for (; i < length; i++) {
274                value = callback(elems[i], i, arg);
275                if (value != null) {
276                  ret.push(value);
277                }
278              }
279            } else {
280              for (i in elems) {
281                value = callback(elems[i], i, arg);
282                if (value != null) {
283                  ret.push(value);
284                }
285              }
286            }
287            return flat(ret);
288          },
289          guid: 1,
290          support
291        });
292        if (typeof Symbol === "function") {
293          jQuery2.fn[Symbol.iterator] = arr[Symbol.iterator];
294        }
295        jQuery2.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(_i2, name) {
296          class2type["[object " + name + "]"] = name.toLowerCase();
297        });
298        function isArrayLike(obj) {
299          var length = !!obj && "length" in obj && obj.length, type = toType(obj);
300          if (isFunction2(obj) || isWindow(obj)) {
301            return false;
302          }
303          return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj;
304        }
305        var Sizzle = function(window3) {
306          var i, support2, Expr, getText2, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, setDocument, document3, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains2, expando = "sizzle" + 1 * new Date(), preferredDoc = window3.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), nonnativeSelectorCache = createCache(), sortOrder = function(a, b) {
307            if (a === b) {
308              hasDuplicate = true;
309            }
310            return 0;
311          }, hasOwn2 = {}.hasOwnProperty, arr2 = [], pop = arr2.pop, pushNative = arr2.push, push2 = arr2.push, slice2 = arr2.slice, indexOf2 = function(list, elem) {
312            var i2 = 0, len = list.length;
313            for (; i2 < len; i2++) {
314              if (list[i2] === elem) {
315                return i2;
316              }
317            }
318            return -1;
319          }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", whitespace = "[\\x20\\t\\r\\n\\f]", identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + "*([*^$|!~]?=)" + whitespace + `*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(` + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + identifier + `)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|` + attributes + ")*)|.*)\\)|)", rwhitespace = new RegExp(whitespace + "+", "g"), rtrim2 = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"), rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"), rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"), rdescend = new RegExp(whitespace + "|>"), rpseudo = new RegExp(pseudos), ridentifier = new RegExp("^" + identifier + "$"), matchExpr = {
320            "ID": new RegExp("^#(" + identifier + ")"),
321            "CLASS": new RegExp("^\\.(" + identifier + ")"),
322            "TAG": new RegExp("^(" + identifier + "|[*])"),
323            "ATTR": new RegExp("^" + attributes),
324            "PSEUDO": new RegExp("^" + pseudos),
325            "CHILD": new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"),
326            "bool": new RegExp("^(?:" + booleans + ")$", "i"),
327            "needsContext": new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
328          }, rhtml2 = /HTML$/i, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rnative = /^[^{]+\{\s*\[native \w/, rquickExpr2 = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, runescape = new RegExp("\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g"), funescape = function(escape, nonHex) {
329            var high = "0x" + escape.slice(1) - 65536;
330            return nonHex ? nonHex : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320);
331          }, rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, fcssescape = function(ch, asCodePoint) {
332            if (asCodePoint) {
333              if (ch === "\0") {
334                return "\uFFFD";
335              }
336              return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " ";
337            }
338            return "\\" + ch;
339          }, unloadHandler = function() {
340            setDocument();
341          }, inDisabledFieldset = addCombinator(function(elem) {
342            return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
343          }, { dir: "parentNode", next: "legend" });
344          try {
345            push2.apply(arr2 = slice2.call(preferredDoc.childNodes), preferredDoc.childNodes);
346            arr2[preferredDoc.childNodes.length].nodeType;
347          } catch (e) {
348            push2 = {
349              apply: arr2.length ? function(target, els) {
350                pushNative.apply(target, slice2.call(els));
351              } : function(target, els) {
352                var j = target.length, i2 = 0;
353                while (target[j++] = els[i2++]) {
354                }
355                target.length = j - 1;
356              }
357            };
358          }
359          function Sizzle2(selector3, context, results, seed) {
360            var m, i2, elem, nid, match, groups, newSelector, newContext = context && context.ownerDocument, nodeType = context ? context.nodeType : 9;
361            results = results || [];
362            if (typeof selector3 !== "string" || !selector3 || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {
363              return results;
364            }
365            if (!seed) {
366              setDocument(context);
367              context = context || document3;
368              if (documentIsHTML) {
369                if (nodeType !== 11 && (match = rquickExpr2.exec(selector3))) {
370                  if (m = match[1]) {
371                    if (nodeType === 9) {
372                      if (elem = context.getElementById(m)) {
373                        if (elem.id === m) {
374                          results.push(elem);
375                          return results;
376                        }
377                      } else {
378                        return results;
379                      }
380                    } else {
381                      if (newContext && (elem = newContext.getElementById(m)) && contains2(context, elem) && elem.id === m) {
382                        results.push(elem);
383                        return results;
384                      }
385                    }
386                  } else if (match[2]) {
387                    push2.apply(results, context.getElementsByTagName(selector3));
388                    return results;
389                  } else if ((m = match[3]) && support2.getElementsByClassName && context.getElementsByClassName) {
390                    push2.apply(results, context.getElementsByClassName(m));
391                    return results;
392                  }
393                }
394                if (support2.qsa && !nonnativeSelectorCache[selector3 + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector3)) && (nodeType !== 1 || context.nodeName.toLowerCase() !== "object")) {
395                  newSelector = selector3;
396                  newContext = context;
397                  if (nodeType === 1 && (rdescend.test(selector3) || rcombinators.test(selector3))) {
398                    newContext = rsibling.test(selector3) && testContext(context.parentNode) || context;
399                    if (newContext !== context || !support2.scope) {
400                      if (nid = context.getAttribute("id")) {
401                        nid = nid.replace(rcssescape, fcssescape);
402                      } else {
403                        context.setAttribute("id", nid = expando);
404                      }
405                    }
406                    groups = tokenize(selector3);
407                    i2 = groups.length;
408                    while (i2--) {
409                      groups[i2] = (nid ? "#" + nid : ":scope") + " " + toSelector(groups[i2]);
410                    }
411                    newSelector = groups.join(",");
412                  }
413                  try {
414                    push2.apply(results, newContext.querySelectorAll(newSelector));
415                    return results;
416                  } catch (qsaError) {
417                    nonnativeSelectorCache(selector3, true);
418                  } finally {
419                    if (nid === expando) {
420                      context.removeAttribute("id");
421                    }
422                  }
423                }
424              }
425            }
426            return select(selector3.replace(rtrim2, "$1"), context, results, seed);
427          }
428          function createCache() {
429            var keys = [];
430            function cache(key, value) {
431              if (keys.push(key + " ") > Expr.cacheLength) {
432                delete cache[keys.shift()];
433              }
434              return cache[key + " "] = value;
435            }
436            return cache;
437          }
438          function markFunction(fn2) {
439            fn2[expando] = true;
440            return fn2;
441          }
442          function assert(fn2) {
443            var el = document3.createElement("fieldset");
444            try {
445              return !!fn2(el);
446            } catch (e) {
447              return false;
448            } finally {
449              if (el.parentNode) {
450                el.parentNode.removeChild(el);
451              }
452              el = null;
453            }
454          }
455          function addHandle(attrs, handler) {
456            var arr3 = attrs.split("|"), i2 = arr3.length;
457            while (i2--) {
458              Expr.attrHandle[arr3[i2]] = handler;
459            }
460          }
461          function siblingCheck(a, b) {
462            var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex;
463            if (diff) {
464              return diff;
465            }
466            if (cur) {
467              while (cur = cur.nextSibling) {
468                if (cur === b) {
469                  return -1;
470                }
471              }
472            }
473            return a ? 1 : -1;
474          }
475          function createInputPseudo(type) {
476            return function(elem) {
477              var name = elem.nodeName.toLowerCase();
478              return name === "input" && elem.type === type;
479            };
480          }
481          function createButtonPseudo(type) {
482            return function(elem) {
483              var name = elem.nodeName.toLowerCase();
484              return (name === "input" || name === "button") && elem.type === type;
485            };
486          }
487          function createDisabledPseudo(disabled) {
488            return function(elem) {
489              if ("form" in elem) {
490                if (elem.parentNode && elem.disabled === false) {
491                  if ("label" in elem) {
492                    if ("label" in elem.parentNode) {
493                      return elem.parentNode.disabled === disabled;
494                    } else {
495                      return elem.disabled === disabled;
496                    }
497                  }
498                  return elem.isDisabled === disabled || elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;
499                }
500                return elem.disabled === disabled;
501              } else if ("label" in elem) {
502                return elem.disabled === disabled;
503              }
504              return false;
505            };
506          }
507          function createPositionalPseudo(fn2) {
508            return markFunction(function(argument) {
509              argument = +argument;
510              return markFunction(function(seed, matches2) {
511                var j, matchIndexes = fn2([], seed.length, argument), i2 = matchIndexes.length;
512                while (i2--) {
513                  if (seed[j = matchIndexes[i2]]) {
514                    seed[j] = !(matches2[j] = seed[j]);
515                  }
516                }
517              });
518            });
519          }
520          function testContext(context) {
521            return context && typeof context.getElementsByTagName !== "undefined" && context;
522          }
523          support2 = Sizzle2.support = {};
524          isXML = Sizzle2.isXML = function(elem) {
525            var namespace = elem && elem.namespaceURI, docElem2 = elem && (elem.ownerDocument || elem).documentElement;
526            return !rhtml2.test(namespace || docElem2 && docElem2.nodeName || "HTML");
527          };
528          setDocument = Sizzle2.setDocument = function(node) {
529            var hasCompare, subWindow, doc = node ? node.ownerDocument || node : preferredDoc;
530            if (doc == document3 || doc.nodeType !== 9 || !doc.documentElement) {
531              return document3;
532            }
533            document3 = doc;
534            docElem = document3.documentElement;
535            documentIsHTML = !isXML(document3);
536            if (preferredDoc != document3 && (subWindow = document3.defaultView) && subWindow.top !== subWindow) {
537              if (subWindow.addEventListener) {
538                subWindow.addEventListener("unload", unloadHandler, false);
539              } else if (subWindow.attachEvent) {
540                subWindow.attachEvent("onunload", unloadHandler);
541              }
542            }
543            support2.scope = assert(function(el) {
544              docElem.appendChild(el).appendChild(document3.createElement("div"));
545              return typeof el.querySelectorAll !== "undefined" && !el.querySelectorAll(":scope fieldset div").length;
546            });
547            support2.attributes = assert(function(el) {
548              el.className = "i";
549              return !el.getAttribute("className");
550            });
551            support2.getElementsByTagName = assert(function(el) {
552              el.appendChild(document3.createComment(""));
553              return !el.getElementsByTagName("*").length;
554            });
555            support2.getElementsByClassName = rnative.test(document3.getElementsByClassName);
556            support2.getById = assert(function(el) {
557              docElem.appendChild(el).id = expando;
558              return !document3.getElementsByName || !document3.getElementsByName(expando).length;
559            });
560            if (support2.getById) {
561              Expr.filter["ID"] = function(id) {
562                var attrId = id.replace(runescape, funescape);
563                return function(elem) {
564                  return elem.getAttribute("id") === attrId;
565                };
566              };
567              Expr.find["ID"] = function(id, context) {
568                if (typeof context.getElementById !== "undefined" && documentIsHTML) {
569                  var elem = context.getElementById(id);
570                  return elem ? [elem] : [];
571                }
572              };
573            } else {
574              Expr.filter["ID"] = function(id) {
575                var attrId = id.replace(runescape, funescape);
576                return function(elem) {
577                  var node2 = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
578                  return node2 && node2.value === attrId;
579                };
580              };
581              Expr.find["ID"] = function(id, context) {
582                if (typeof context.getElementById !== "undefined" && documentIsHTML) {
583                  var node2, i2, elems, elem = context.getElementById(id);
584                  if (elem) {
585                    node2 = elem.getAttributeNode("id");
586                    if (node2 && node2.value === id) {
587                      return [elem];
588                    }
589                    elems = context.getElementsByName(id);
590                    i2 = 0;
591                    while (elem = elems[i2++]) {
592                      node2 = elem.getAttributeNode("id");
593                      if (node2 && node2.value === id) {
594                        return [elem];
595                      }
596                    }
597                  }
598                  return [];
599                }
600              };
601            }
602            Expr.find["TAG"] = support2.getElementsByTagName ? function(tag, context) {
603              if (typeof context.getElementsByTagName !== "undefined") {
604                return context.getElementsByTagName(tag);
605              } else if (support2.qsa) {
606                return context.querySelectorAll(tag);
607              }
608            } : function(tag, context) {
609              var elem, tmp = [], i2 = 0, results = context.getElementsByTagName(tag);
610              if (tag === "*") {
611                while (elem = results[i2++]) {
612                  if (elem.nodeType === 1) {
613                    tmp.push(elem);
614                  }
615                }
616                return tmp;
617              }
618              return results;
619            };
620            Expr.find["CLASS"] = support2.getElementsByClassName && function(className, context) {
621              if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) {
622                return context.getElementsByClassName(className);
623              }
624            };
625            rbuggyMatches = [];
626            rbuggyQSA = [];
627            if (support2.qsa = rnative.test(document3.querySelectorAll)) {
628              assert(function(el) {
629                var input;
630                docElem.appendChild(el).innerHTML = "<a id='" + expando + "'></a><select id='" + expando + "-\r\\' msallowcapture=''><option selected=''></option></select>";
631                if (el.querySelectorAll("[msallowcapture^='']").length) {
632                  rbuggyQSA.push("[*^$]=" + whitespace + `*(?:''|"")`);
633                }
634                if (!el.querySelectorAll("[selected]").length) {
635                  rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")");
636                }
637                if (!el.querySelectorAll("[id~=" + expando + "-]").length) {
638                  rbuggyQSA.push("~=");
639                }
640                input = document3.createElement("input");
641                input.setAttribute("name", "");
642                el.appendChild(input);
643                if (!el.querySelectorAll("[name='']").length) {
644                  rbuggyQSA.push("\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + `*(?:''|"")`);
645                }
646                if (!el.querySelectorAll(":checked").length) {
647                  rbuggyQSA.push(":checked");
648                }
649                if (!el.querySelectorAll("a#" + expando + "+*").length) {
650                  rbuggyQSA.push(".#.+[+~]");
651                }
652                el.querySelectorAll("\\\f");
653                rbuggyQSA.push("[\\r\\n\\f]");
654              });
655              assert(function(el) {
656                el.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
657                var input = document3.createElement("input");
658                input.setAttribute("type", "hidden");
659                el.appendChild(input).setAttribute("name", "D");
660                if (el.querySelectorAll("[name=d]").length) {
661                  rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?=");
662                }
663                if (el.querySelectorAll(":enabled").length !== 2) {
664                  rbuggyQSA.push(":enabled", ":disabled");
665                }
666                docElem.appendChild(el).disabled = true;
667                if (el.querySelectorAll(":disabled").length !== 2) {
668                  rbuggyQSA.push(":enabled", ":disabled");
669                }
670                el.querySelectorAll("*,:x");
671                rbuggyQSA.push(",.*:");
672              });
673            }
674            if (support2.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {
675              assert(function(el) {
676                support2.disconnectedMatch = matches.call(el, "*");
677                matches.call(el, "[s!='']:x");
678                rbuggyMatches.push("!=", pseudos);
679              });
680            }
681            rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|"));
682            rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|"));
683            hasCompare = rnative.test(docElem.compareDocumentPosition);
684            contains2 = hasCompare || rnative.test(docElem.contains) ? function(a, b) {
685              var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode;
686              return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));
687            } : function(a, b) {
688              if (b) {
689                while (b = b.parentNode) {
690                  if (b === a) {
691                    return true;
692                  }
693                }
694              }
695              return false;
696            };
697            sortOrder = hasCompare ? function(a, b) {
698              if (a === b) {
699                hasDuplicate = true;
700                return 0;
701              }
702              var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
703              if (compare) {
704                return compare;
705              }
706              compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1;
707              if (compare & 1 || !support2.sortDetached && b.compareDocumentPosition(a) === compare) {
708                if (a == document3 || a.ownerDocument == preferredDoc && contains2(preferredDoc, a)) {
709                  return -1;
710                }
711                if (b == document3 || b.ownerDocument == preferredDoc && contains2(preferredDoc, b)) {
712                  return 1;
713                }
714                return sortInput ? indexOf2(sortInput, a) - indexOf2(sortInput, b) : 0;
715              }
716              return compare & 4 ? -1 : 1;
717            } : function(a, b) {
718              if (a === b) {
719                hasDuplicate = true;
720                return 0;
721              }
722              var cur, i2 = 0, aup = a.parentNode, bup = b.parentNode, ap = [a], bp = [b];
723              if (!aup || !bup) {
724                return a == document3 ? -1 : b == document3 ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf2(sortInput, a) - indexOf2(sortInput, b) : 0;
725              } else if (aup === bup) {
726                return siblingCheck(a, b);
727              }
728              cur = a;
729              while (cur = cur.parentNode) {
730                ap.unshift(cur);
731              }
732              cur = b;
733              while (cur = cur.parentNode) {
734                bp.unshift(cur);
735              }
736              while (ap[i2] === bp[i2]) {
737                i2++;
738              }
739              return i2 ? siblingCheck(ap[i2], bp[i2]) : ap[i2] == preferredDoc ? -1 : bp[i2] == preferredDoc ? 1 : 0;
740            };
741            return document3;
742          };
743          Sizzle2.matches = function(expr, elements) {
744            return Sizzle2(expr, null, null, elements);
745          };
746          Sizzle2.matchesSelector = function(elem, expr) {
747            setDocument(elem);
748            if (support2.matchesSelector && documentIsHTML && !nonnativeSelectorCache[expr + " "] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {
749              try {
750                var ret = matches.call(elem, expr);
751                if (ret || support2.disconnectedMatch || elem.document && elem.document.nodeType !== 11) {
752                  return ret;
753                }
754              } catch (e) {
755                nonnativeSelectorCache(expr, true);
756              }
757            }
758            return Sizzle2(expr, document3, null, [elem]).length > 0;
759          };
760          Sizzle2.contains = function(context, elem) {
761            if ((context.ownerDocument || context) != document3) {
762              setDocument(context);
763            }
764            return contains2(context, elem);
765          };
766          Sizzle2.attr = function(elem, name) {
767            if ((elem.ownerDocument || elem) != document3) {
768              setDocument(elem);
769            }
770            var fn2 = Expr.attrHandle[name.toLowerCase()], val = fn2 && hasOwn2.call(Expr.attrHandle, name.toLowerCase()) ? fn2(elem, name, !documentIsHTML) : void 0;
771            return val !== void 0 ? val : support2.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
772          };
773          Sizzle2.escape = function(sel) {
774            return (sel + "").replace(rcssescape, fcssescape);
775          };
776          Sizzle2.error = function(msg) {
777            throw new Error("Syntax error, unrecognized expression: " + msg);
778          };
779          Sizzle2.uniqueSort = function(results) {
780            var elem, duplicates = [], j = 0, i2 = 0;
781            hasDuplicate = !support2.detectDuplicates;
782            sortInput = !support2.sortStable && results.slice(0);
783            results.sort(sortOrder);
784            if (hasDuplicate) {
785              while (elem = results[i2++]) {
786                if (elem === results[i2]) {
787                  j = duplicates.push(i2);
788                }
789              }
790              while (j--) {
791                results.splice(duplicates[j], 1);
792              }
793            }
794            sortInput = null;
795            return results;
796          };
797          getText2 = Sizzle2.getText = function(elem) {
798            var node, ret = "", i2 = 0, nodeType = elem.nodeType;
799            if (!nodeType) {
800              while (node = elem[i2++]) {
801                ret += getText2(node);
802              }
803            } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {
804              if (typeof elem.textContent === "string") {
805                return elem.textContent;
806              } else {
807                for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
808                  ret += getText2(elem);
809                }
810              }
811            } else if (nodeType === 3 || nodeType === 4) {
812              return elem.nodeValue;
813            }
814            return ret;
815          };
816          Expr = Sizzle2.selectors = {
817            cacheLength: 50,
818            createPseudo: markFunction,
819            match: matchExpr,
820            attrHandle: {},
821            find: {},
822            relative: {
823              ">": { dir: "parentNode", first: true },
824              " ": { dir: "parentNode" },
825              "+": { dir: "previousSibling", first: true },
826              "~": { dir: "previousSibling" }
827            },
828            preFilter: {
829              "ATTR": function(match) {
830                match[1] = match[1].replace(runescape, funescape);
831                match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape);
832                if (match[2] === "~=") {
833                  match[3] = " " + match[3] + " ";
834                }
835                return match.slice(0, 4);
836              },
837              "CHILD": function(match) {
838                match[1] = match[1].toLowerCase();
839                if (match[1].slice(0, 3) === "nth") {
840                  if (!match[3]) {
841                    Sizzle2.error(match[0]);
842                  }
843                  match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd"));
844                  match[5] = +(match[7] + match[8] || match[3] === "odd");
845                } else if (match[3]) {
846                  Sizzle2.error(match[0]);
847                }
848                return match;
849              },
850              "PSEUDO": function(match) {
851                var excess, unquoted = !match[6] && match[2];
852                if (matchExpr["CHILD"].test(match[0])) {
853                  return null;
854                }
855                if (match[3]) {
856                  match[2] = match[4] || match[5] || "";
857                } else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) {
858                  match[0] = match[0].slice(0, excess);
859                  match[2] = unquoted.slice(0, excess);
860                }
861                return match.slice(0, 3);
862              }
863            },
864            filter: {
865              "TAG": function(nodeNameSelector) {
866                var nodeName2 = nodeNameSelector.replace(runescape, funescape).toLowerCase();
867                return nodeNameSelector === "*" ? function() {
868                  return true;
869                } : function(elem) {
870                  return elem.nodeName && elem.nodeName.toLowerCase() === nodeName2;
871                };
872              },
873              "CLASS": function(className) {
874                var pattern = classCache[className + " "];
875                return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function(elem) {
876                  return pattern.test(typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "");
877                });
878              },
879              "ATTR": function(name, operator, check) {
880                return function(elem) {
881                  var result = Sizzle2.attr(elem, name);
882                  if (result == null) {
883                    return operator === "!=";
884                  }
885                  if (!operator) {
886                    return true;
887                  }
888                  result += "";
889                  return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf(check) === 0 : operator === "*=" ? check && result.indexOf(check) > -1 : operator === "$=" ? check && result.slice(-check.length) === check : operator === "~=" ? (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1 : operator === "|=" ? result === check || result.slice(0, check.length + 1) === check + "-" : false;
890                };
891              },
892              "CHILD": function(type, what, _argument, first, last) {
893                var simple = type.slice(0, 3) !== "nth", forward = type.slice(-4) !== "last", ofType = what === "of-type";
894                return first === 1 && last === 0 ? function(elem) {
895                  return !!elem.parentNode;
896                } : function(elem, _context, xml) {
897                  var cache, uniqueCache, outerCache, node, nodeIndex, start2, dir2 = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false;
898                  if (parent) {
899                    if (simple) {
900                      while (dir2) {
901                        node = elem;
902                        while (node = node[dir2]) {
903                          if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {
904                            return false;
905                          }
906                        }
907                        start2 = dir2 = type === "only" && !start2 && "nextSibling";
908                      }
909                      return true;
910                    }
911                    start2 = [forward ? parent.firstChild : parent.lastChild];
912                    if (forward && useCache) {
913                      node = parent;
914                      outerCache = node[expando] || (node[expando] = {});
915                      uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
916                      cache = uniqueCache[type] || [];
917                      nodeIndex = cache[0] === dirruns && cache[1];
918                      diff = nodeIndex && cache[2];
919                      node = nodeIndex && parent.childNodes[nodeIndex];
920                      while (node = ++nodeIndex && node && node[dir2] || (diff = nodeIndex = 0) || start2.pop()) {
921                        if (node.nodeType === 1 && ++diff && node === elem) {
922                          uniqueCache[type] = [dirruns, nodeIndex, diff];
923                          break;
924                        }
925                      }
926                    } else {
927                      if (useCache) {
928                        node = elem;
929                        outerCache = node[expando] || (node[expando] = {});
930                        uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
931                        cache = uniqueCache[type] || [];
932                        nodeIndex = cache[0] === dirruns && cache[1];
933                        diff = nodeIndex;
934                      }
935                      if (diff === false) {
936                        while (node = ++nodeIndex && node && node[dir2] || (diff = nodeIndex = 0) || start2.pop()) {
937                          if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {
938                            if (useCache) {
939                              outerCache = node[expando] || (node[expando] = {});
940                              uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
941                              uniqueCache[type] = [dirruns, diff];
942                            }
943                            if (node === elem) {
944                              break;
945                            }
946                          }
947                        }
948                      }
949                    }
950                    diff -= last;
951                    return diff === first || diff % first === 0 && diff / first >= 0;
952                  }
953                };
954              },
955              "PSEUDO": function(pseudo, argument) {
956                var args, fn2 = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle2.error("unsupported pseudo: " + pseudo);
957                if (fn2[expando]) {
958                  return fn2(argument);
959                }
960                if (fn2.length > 1) {
961                  args = [pseudo, pseudo, "", argument];
962                  return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(seed, matches2) {
963                    var idx, matched = fn2(seed, argument), i2 = matched.length;
964                    while (i2--) {
965                      idx = indexOf2(seed, matched[i2]);
966                      seed[idx] = !(matches2[idx] = matched[i2]);
967                    }
968                  }) : function(elem) {
969                    return fn2(elem, 0, args);
970                  };
971                }
972                return fn2;
973              }
974            },
975            pseudos: {
976              "not": markFunction(function(selector3) {
977                var input = [], results = [], matcher = compile(selector3.replace(rtrim2, "$1"));
978                return matcher[expando] ? markFunction(function(seed, matches2, _context, xml) {
979                  var elem, unmatched = matcher(seed, null, xml, []), i2 = seed.length;
980                  while (i2--) {
981                    if (elem = unmatched[i2]) {
982                      seed[i2] = !(matches2[i2] = elem);
983                    }
984                  }
985                }) : function(elem, _context, xml) {
986                  input[0] = elem;
987                  matcher(input, null, xml, results);
988                  input[0] = null;
989                  return !results.pop();
990                };
991              }),
992              "has": markFunction(function(selector3) {
993                return function(elem) {
994                  return Sizzle2(selector3, elem).length > 0;
995                };
996              }),
997              "contains": markFunction(function(text) {
998                text = text.replace(runescape, funescape);
999                return function(elem) {
1000                  return (elem.textContent || getText2(elem)).indexOf(text) > -1;
1001                };
1002              }),
1003              "lang": markFunction(function(lang) {
1004                if (!ridentifier.test(lang || "")) {
1005                  Sizzle2.error("unsupported lang: " + lang);
1006                }
1007                lang = lang.replace(runescape, funescape).toLowerCase();
1008                return function(elem) {
1009                  var elemLang;
1010                  do {
1011                    if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) {
1012                      elemLang = elemLang.toLowerCase();
1013                      return elemLang === lang || elemLang.indexOf(lang + "-") === 0;
1014                    }
1015                  } while ((elem = elem.parentNode) && elem.nodeType === 1);
1016                  return false;
1017                };
1018              }),
1019              "target": function(elem) {
1020                var hash3 = window3.location && window3.location.hash;
1021                return hash3 && hash3.slice(1) === elem.id;
1022              },
1023              "root": function(elem) {
1024                return elem === docElem;
1025              },
1026              "focus": function(elem) {
1027                return elem === document3.activeElement && (!document3.hasFocus || document3.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
1028              },
1029              "enabled": createDisabledPseudo(false),
1030              "disabled": createDisabledPseudo(true),
1031              "checked": function(elem) {
1032                var nodeName2 = elem.nodeName.toLowerCase();
1033                return nodeName2 === "input" && !!elem.checked || nodeName2 === "option" && !!elem.selected;
1034              },
1035              "selected": function(elem) {
1036                if (elem.parentNode) {
1037                  elem.parentNode.selectedIndex;
1038                }
1039                return elem.selected === true;
1040              },
1041              "empty": function(elem) {
1042                for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
1043                  if (elem.nodeType < 6) {
1044                    return false;
1045                  }
1046                }
1047                return true;
1048              },
1049              "parent": function(elem) {
1050                return !Expr.pseudos["empty"](elem);
1051              },
1052              "header": function(elem) {
1053                return rheader.test(elem.nodeName);
1054              },
1055              "input": function(elem) {
1056                return rinputs.test(elem.nodeName);
1057              },
1058              "button": function(elem) {
1059                var name = elem.nodeName.toLowerCase();
1060                return name === "input" && elem.type === "button" || name === "button";
1061              },
1062              "text": function(elem) {
1063                var attr;
1064                return elem.nodeName.toLowerCase() === "input" && elem.type === "text" && ((attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text");
1065              },
1066              "first": createPositionalPseudo(function() {
1067                return [0];
1068              }),
1069              "last": createPositionalPseudo(function(_matchIndexes, length) {
1070                return [length - 1];
1071              }),
1072              "eq": createPositionalPseudo(function(_matchIndexes, length, argument) {
1073                return [argument < 0 ? argument + length : argument];
1074              }),
1075              "even": createPositionalPseudo(function(matchIndexes, length) {
1076                var i2 = 0;
1077                for (; i2 < length; i2 += 2) {
1078                  matchIndexes.push(i2);
1079                }
1080                return matchIndexes;
1081              }),
1082              "odd": createPositionalPseudo(function(matchIndexes, length) {
1083                var i2 = 1;
1084                for (; i2 < length; i2 += 2) {
1085                  matchIndexes.push(i2);
1086                }
1087                return matchIndexes;
1088              }),
1089              "lt": createPositionalPseudo(function(matchIndexes, length, argument) {
1090                var i2 = argument < 0 ? argument + length : argument > length ? length : argument;
1091                for (; --i2 >= 0; ) {
1092                  matchIndexes.push(i2);
1093                }
1094                return matchIndexes;
1095              }),
1096              "gt": createPositionalPseudo(function(matchIndexes, length, argument) {
1097                var i2 = argument < 0 ? argument + length : argument;
1098                for (; ++i2 < length; ) {
1099                  matchIndexes.push(i2);
1100                }
1101                return matchIndexes;
1102              })
1103            }
1104          };
1105          Expr.pseudos["nth"] = Expr.pseudos["eq"];
1106          for (i in { radio: true, checkbox: true, file: true, password: true, image: true }) {
1107            Expr.pseudos[i] = createInputPseudo(i);
1108          }
1109          for (i in { submit: true, reset: true }) {
1110            Expr.pseudos[i] = createButtonPseudo(i);
1111          }
1112          function setFilters() {
1113          }
1114          setFilters.prototype = Expr.filters = Expr.pseudos;
1115          Expr.setFilters = new setFilters();
1116          tokenize = Sizzle2.tokenize = function(selector3, parseOnly) {
1117            var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector3 + " "];
1118            if (cached) {
1119              return parseOnly ? 0 : cached.slice(0);
1120            }
1121            soFar = selector3;
1122            groups = [];
1123            preFilters = Expr.preFilter;
1124            while (soFar) {
1125              if (!matched || (match = rcomma.exec(soFar))) {
1126                if (match) {
1127                  soFar = soFar.slice(match[0].length) || soFar;
1128                }
1129                groups.push(tokens = []);
1130              }
1131              matched = false;
1132              if (match = rcombinators.exec(soFar)) {
1133                matched = match.shift();
1134                tokens.push({
1135                  value: matched,
1136                  type: match[0].replace(rtrim2, " ")
1137                });
1138                soFar = soFar.slice(matched.length);
1139              }
1140              for (type in Expr.filter) {
1141                if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {
1142                  matched = match.shift();
1143                  tokens.push({
1144                    value: matched,
1145                    type,
1146                    matches: match
1147                  });
1148                  soFar = soFar.slice(matched.length);
1149                }
1150              }
1151              if (!matched) {
1152                break;
1153              }
1154            }
1155            return parseOnly ? soFar.length : soFar ? Sizzle2.error(selector3) : tokenCache(selector3, groups).slice(0);
1156          };
1157          function toSelector(tokens) {
1158            var i2 = 0, len = tokens.length, selector3 = "";
1159            for (; i2 < len; i2++) {
1160              selector3 += tokens[i2].value;
1161            }
1162            return selector3;
1163          }
1164          function addCombinator(matcher, combinator, base) {
1165            var dir2 = combinator.dir, skip = combinator.next, key = skip || dir2, checkNonElements = base && key === "parentNode", doneName = done++;
1166            return combinator.first ? function(elem, context, xml) {
1167              while (elem = elem[dir2]) {
1168                if (elem.nodeType === 1 || checkNonElements) {
1169                  return matcher(elem, context, xml);
1170                }
1171              }
1172              return false;
1173            } : function(elem, context, xml) {
1174              var oldCache, uniqueCache, outerCache, newCache = [dirruns, doneName];
1175              if (xml) {
1176                while (elem = elem[dir2]) {
1177                  if (elem.nodeType === 1 || checkNonElements) {
1178                    if (matcher(elem, context, xml)) {
1179                      return true;
1180                    }
1181                  }
1182                }
1183              } else {
1184                while (elem = elem[dir2]) {
1185                  if (elem.nodeType === 1 || checkNonElements) {
1186                    outerCache = elem[expando] || (elem[expando] = {});
1187                    uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});
1188                    if (skip && skip === elem.nodeName.toLowerCase()) {
1189                      elem = elem[dir2] || elem;
1190                    } else if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {
1191                      return newCache[2] = oldCache[2];
1192                    } else {
1193                      uniqueCache[key] = newCache;
1194                      if (newCache[2] = matcher(elem, context, xml)) {
1195                        return true;
1196                      }
1197                    }
1198                  }
1199                }
1200              }
1201              return false;
1202            };
1203          }
1204          function elementMatcher(matchers) {
1205            return matchers.length > 1 ? function(elem, context, xml) {
1206              var i2 = matchers.length;
1207              while (i2--) {
1208                if (!matchers[i2](elem, context, xml)) {
1209                  return false;
1210                }
1211              }
1212              return true;
1213            } : matchers[0];
1214          }
1215          function multipleContexts(selector3, contexts, results) {
1216            var i2 = 0, len = contexts.length;
1217            for (; i2 < len; i2++) {
1218              Sizzle2(selector3, contexts[i2], results);
1219            }
1220            return results;
1221          }
1222          function condense(unmatched, map, filter, context, xml) {
1223            var elem, newUnmatched = [], i2 = 0, len = unmatched.length, mapped = map != null;
1224            for (; i2 < len; i2++) {
1225              if (elem = unmatched[i2]) {
1226                if (!filter || filter(elem, context, xml)) {
1227                  newUnmatched.push(elem);
1228                  if (mapped) {
1229                    map.push(i2);
1230                  }
1231                }
1232              }
1233            }
1234            return newUnmatched;
1235          }
1236          function setMatcher(preFilter, selector3, matcher, postFilter, postFinder, postSelector) {
1237            if (postFilter && !postFilter[expando]) {
1238              postFilter = setMatcher(postFilter);
1239            }
1240            if (postFinder && !postFinder[expando]) {
1241              postFinder = setMatcher(postFinder, postSelector);
1242            }
1243            return markFunction(function(seed, results, context, xml) {
1244              var temp, i2, elem, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts(selector3 || "*", context.nodeType ? [context] : context, []), matcherIn = preFilter && (seed || !selector3) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn;
1245              if (matcher) {
1246                matcher(matcherIn, matcherOut, context, xml);
1247              }
1248              if (postFilter) {
1249                temp = condense(matcherOut, postMap);
1250                postFilter(temp, [], context, xml);
1251                i2 = temp.length;
1252                while (i2--) {
1253                  if (elem = temp[i2]) {
1254                    matcherOut[postMap[i2]] = !(matcherIn[postMap[i2]] = elem);
1255                  }
1256                }
1257              }
1258              if (seed) {
1259                if (postFinder || preFilter) {
1260                  if (postFinder) {
1261                    temp = [];
1262                    i2 = matcherOut.length;
1263                    while (i2--) {
1264                      if (elem = matcherOut[i2]) {
1265                        temp.push(matcherIn[i2] = elem);
1266                      }
1267                    }
1268                    postFinder(null, matcherOut = [], temp, xml);
1269                  }
1270                  i2 = matcherOut.length;
1271                  while (i2--) {
1272                    if ((elem = matcherOut[i2]) && (temp = postFinder ? indexOf2(seed, elem) : preMap[i2]) > -1) {
1273                      seed[temp] = !(results[temp] = elem);
1274                    }
1275                  }
1276                }
1277              } else {
1278                matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);
1279                if (postFinder) {
1280                  postFinder(null, results, matcherOut, xml);
1281                } else {
1282                  push2.apply(results, matcherOut);
1283                }
1284              }
1285            });
1286          }
1287          function matcherFromTokens(tokens) {
1288            var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[" "], i2 = leadingRelative ? 1 : 0, matchContext = addCombinator(function(elem) {
1289              return elem === checkContext;
1290            }, implicitRelative, true), matchAnyContext = addCombinator(function(elem) {
1291              return indexOf2(checkContext, elem) > -1;
1292            }, implicitRelative, true), matchers = [function(elem, context, xml) {
1293              var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
1294              checkContext = null;
1295              return ret;
1296            }];
1297            for (; i2 < len; i2++) {
1298              if (matcher = Expr.relative[tokens[i2].type]) {
1299                matchers = [addCombinator(elementMatcher(matchers), matcher)];
1300              } else {
1301                matcher = Expr.filter[tokens[i2].type].apply(null, tokens[i2].matches);
1302                if (matcher[expando]) {
1303                  j = ++i2;
1304                  for (; j < len; j++) {
1305                    if (Expr.relative[tokens[j].type]) {
1306                      break;
1307                    }
1308                  }
1309                  return setMatcher(i2 > 1 && elementMatcher(matchers), i2 > 1 && toSelector(tokens.slice(0, i2 - 1).concat({ value: tokens[i2 - 2].type === " " ? "*" : "" })).replace(rtrim2, "$1"), matcher, i2 < j && matcherFromTokens(tokens.slice(i2, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));
1310                }
1311                matchers.push(matcher);
1312              }
1313            }
1314            return elementMatcher(matchers);
1315          }
1316          function matcherFromGroupMatchers(elementMatchers, setMatchers) {
1317            var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function(seed, context, xml, results, outermost) {
1318              var elem, j, matcher, matchedCount = 0, i2 = "0", unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find["TAG"]("*", outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length;
1319              if (outermost) {
1320                outermostContext = context == document3 || context || outermost;
1321              }
1322              for (; i2 !== len && (elem = elems[i2]) != null; i2++) {
1323                if (byElement && elem) {
1324                  j = 0;
1325                  if (!context && elem.ownerDocument != document3) {
1326                    setDocument(elem);
1327                    xml = !documentIsHTML;
1328                  }
1329                  while (matcher = elementMatchers[j++]) {
1330                    if (matcher(elem, context || document3, xml)) {
1331                      results.push(elem);
1332                      break;
1333                    }
1334                  }
1335                  if (outermost) {
1336                    dirruns = dirrunsUnique;
1337                  }
1338                }
1339                if (bySet) {
1340                  if (elem = !matcher && elem) {
1341                    matchedCount--;
1342                  }
1343                  if (seed) {
1344                    unmatched.push(elem);
1345                  }
1346                }
1347              }
1348              matchedCount += i2;
1349              if (bySet && i2 !== matchedCount) {
1350                j = 0;
1351                while (matcher = setMatchers[j++]) {
1352                  matcher(unmatched, setMatched, context, xml);
1353                }
1354                if (seed) {
1355                  if (matchedCount > 0) {
1356                    while (i2--) {
1357                      if (!(unmatched[i2] || setMatched[i2])) {
1358                        setMatched[i2] = pop.call(results);
1359                      }
1360                    }
1361                  }
1362                  setMatched = condense(setMatched);
1363                }
1364                push2.apply(results, setMatched);
1365                if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {
1366                  Sizzle2.uniqueSort(results);
1367                }
1368              }
1369              if (outermost) {
1370                dirruns = dirrunsUnique;
1371                outermostContext = contextBackup;
1372              }
1373              return unmatched;
1374            };
1375            return bySet ? markFunction(superMatcher) : superMatcher;
1376          }
1377          compile = Sizzle2.compile = function(selector3, match) {
1378            var i2, setMatchers = [], elementMatchers = [], cached = compilerCache[selector3 + " "];
1379            if (!cached) {
1380              if (!match) {
1381                match = tokenize(selector3);
1382              }
1383              i2 = match.length;
1384              while (i2--) {
1385                cached = matcherFromTokens(match[i2]);
1386                if (cached[expando]) {
1387                  setMatchers.push(cached);
1388                } else {
1389                  elementMatchers.push(cached);
1390                }
1391              }
1392              cached = compilerCache(selector3, matcherFromGroupMatchers(elementMatchers, setMatchers));
1393              cached.selector = selector3;
1394            }
1395            return cached;
1396          };
1397          select = Sizzle2.select = function(selector3, context, results, seed) {
1398            var i2, tokens, token, type, find, compiled = typeof selector3 === "function" && selector3, match = !seed && tokenize(selector3 = compiled.selector || selector3);
1399            results = results || [];
1400            if (match.length === 1) {
1401              tokens = match[0] = match[0].slice(0);
1402              if (tokens.length > 2 && (token = tokens[0]).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {
1403                context = (Expr.find["ID"](token.matches[0].replace(runescape, funescape), context) || [])[0];
1404                if (!context) {
1405                  return results;
1406                } else if (compiled) {
1407                  context = context.parentNode;
1408                }
1409                selector3 = selector3.slice(tokens.shift().value.length);
1410              }
1411              i2 = matchExpr["needsContext"].test(selector3) ? 0 : tokens.length;
1412              while (i2--) {
1413                token = tokens[i2];
1414                if (Expr.relative[type = token.type]) {
1415                  break;
1416                }
1417                if (find = Expr.find[type]) {
1418                  if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {
1419                    tokens.splice(i2, 1);
1420                    selector3 = seed.length && toSelector(tokens);
1421                    if (!selector3) {
1422                      push2.apply(results, seed);
1423                      return results;
1424                    }
1425                    break;
1426                  }
1427                }
1428              }
1429            }
1430            (compiled || compile(selector3, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector3) && testContext(context.parentNode) || context);
1431            return results;
1432          };
1433          support2.sortStable = expando.split("").sort(sortOrder).join("") === expando;
1434          support2.detectDuplicates = !!hasDuplicate;
1435          setDocument();
1436          support2.sortDetached = assert(function(el) {
1437            return el.compareDocumentPosition(document3.createElement("fieldset")) & 1;
1438          });
1439          if (!assert(function(el) {
1440            el.innerHTML = "<a href='#'></a>";
1441            return el.firstChild.getAttribute("href") === "#";
1442          })) {
1443            addHandle("type|href|height|width", function(elem, name, isXML2) {
1444              if (!isXML2) {
1445                return elem.getAttribute(name, name.toLowerCase() === "type" ? 1 : 2);
1446              }
1447            });
1448          }
1449          if (!support2.attributes || !assert(function(el) {
1450            el.innerHTML = "<input/>";
1451            el.firstChild.setAttribute("value", "");
1452            return el.firstChild.getAttribute("value") === "";
1453          })) {
1454            addHandle("value", function(elem, _name, isXML2) {
1455              if (!isXML2 && elem.nodeName.toLowerCase() === "input") {
1456                return elem.defaultValue;
1457              }
1458            });
1459          }
1460          if (!assert(function(el) {
1461            return el.getAttribute("disabled") == null;
1462          })) {
1463            addHandle(booleans, function(elem, name, isXML2) {
1464              var val;
1465              if (!isXML2) {
1466                return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
1467              }
1468            });
1469          }
1470          return Sizzle2;
1471        }(window2);
1472        jQuery2.find = Sizzle;
1473        jQuery2.expr = Sizzle.selectors;
1474        jQuery2.expr[":"] = jQuery2.expr.pseudos;
1475        jQuery2.uniqueSort = jQuery2.unique = Sizzle.uniqueSort;
1476        jQuery2.text = Sizzle.getText;
1477        jQuery2.isXMLDoc = Sizzle.isXML;
1478        jQuery2.contains = Sizzle.contains;
1479        jQuery2.escapeSelector = Sizzle.escape;
1480        var dir = function(elem, dir2, until) {
1481          var matched = [], truncate = until !== void 0;
1482          while ((elem = elem[dir2]) && elem.nodeType !== 9) {
1483            if (elem.nodeType === 1) {
1484              if (truncate && jQuery2(elem).is(until)) {
1485                break;
1486              }
1487              matched.push(elem);
1488            }
1489          }
1490          return matched;
1491        };
1492        var siblings2 = function(n, elem) {
1493          var matched = [];
1494          for (; n; n = n.nextSibling) {
1495            if (n.nodeType === 1 && n !== elem) {
1496              matched.push(n);
1497            }
1498          }
1499          return matched;
1500        };
1501        var rneedsContext = jQuery2.expr.match.needsContext;
1502        function nodeName(elem, name) {
1503          return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
1504        }
1505        var rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
1506        function winnow(elements, qualifier, not) {
1507          if (isFunction2(qualifier)) {
1508            return jQuery2.grep(elements, function(elem, i) {
1509              return !!qualifier.call(elem, i, elem) !== not;
1510            });
1511          }
1512          if (qualifier.nodeType) {
1513            return jQuery2.grep(elements, function(elem) {
1514              return elem === qualifier !== not;
1515            });
1516          }
1517          if (typeof qualifier !== "string") {
1518            return jQuery2.grep(elements, function(elem) {
1519              return indexOf.call(qualifier, elem) > -1 !== not;
1520            });
1521          }
1522          return jQuery2.filter(qualifier, elements, not);
1523        }
1524        jQuery2.filter = function(expr, elems, not) {
1525          var elem = elems[0];
1526          if (not) {
1527            expr = ":not(" + expr + ")";
1528          }
1529          if (elems.length === 1 && elem.nodeType === 1) {
1530            return jQuery2.find.matchesSelector(elem, expr) ? [elem] : [];
1531          }
1532          return jQuery2.find.matches(expr, jQuery2.grep(elems, function(elem2) {
1533            return elem2.nodeType === 1;
1534          }));
1535        };
1536        jQuery2.fn.extend({
1537          find: function(selector3) {
1538            var i, ret, len = this.length, self2 = this;
1539            if (typeof selector3 !== "string") {
1540              return this.pushStack(jQuery2(selector3).filter(function() {
1541                for (i = 0; i < len; i++) {
1542                  if (jQuery2.contains(self2[i], this)) {
1543                    return true;
1544                  }
1545                }
1546              }));
1547            }
1548            ret = this.pushStack([]);
1549            for (i = 0; i < len; i++) {
1550              jQuery2.find(selector3, self2[i], ret);
1551            }
1552            return len > 1 ? jQuery2.uniqueSort(ret) : ret;
1553          },
1554          filter: function(selector3) {
1555            return this.pushStack(winnow(this, selector3 || [], false));
1556          },
1557          not: function(selector3) {
1558            return this.pushStack(winnow(this, selector3 || [], true));
1559          },
1560          is: function(selector3) {
1561            return !!winnow(this, typeof selector3 === "string" && rneedsContext.test(selector3) ? jQuery2(selector3) : selector3 || [], false).length;
1562          }
1563        });
1564        var rootjQuery, rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, init7 = jQuery2.fn.init = function(selector3, context, root) {
1565          var match, elem;
1566          if (!selector3) {
1567            return this;
1568          }
1569          root = root || rootjQuery;
1570          if (typeof selector3 === "string") {
1571            if (selector3[0] === "<" && selector3[selector3.length - 1] === ">" && selector3.length >= 3) {
1572              match = [null, selector3, null];
1573            } else {
1574              match = rquickExpr.exec(selector3);
1575            }
1576            if (match && (match[1] || !context)) {
1577              if (match[1]) {
1578                context = context instanceof jQuery2 ? context[0] : context;
1579                jQuery2.merge(this, jQuery2.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document2, true));
1580                if (rsingleTag.test(match[1]) && jQuery2.isPlainObject(context)) {
1581                  for (match in context) {
1582                    if (isFunction2(this[match])) {
1583                      this[match](context[match]);
1584                    } else {
1585                      this.attr(match, context[match]);
1586                    }
1587                  }
1588                }
1589                return this;
1590              } else {
1591                elem = document2.getElementById(match[2]);
1592                if (elem) {
1593                  this[0] = elem;
1594                  this.length = 1;
1595                }
1596                return this;
1597              }
1598            } else if (!context || context.jquery) {
1599              return (context || root).find(selector3);
1600            } else {
1601              return this.constructor(context).find(selector3);
1602            }
1603          } else if (selector3.nodeType) {
1604            this[0] = selector3;
1605            this.length = 1;
1606            return this;
1607          } else if (isFunction2(selector3)) {
1608            return root.ready !== void 0 ? root.ready(selector3) : selector3(jQuery2);
1609          }
1610          return jQuery2.makeArray(selector3, this);
1611        };
1612        init7.prototype = jQuery2.fn;
1613        rootjQuery = jQuery2(document2);
1614        var rparentsprev = /^(?:parents|prev(?:Until|All))/, guaranteedUnique = {
1615          children: true,
1616          contents: true,
1617          next: true,
1618          prev: true
1619        };
1620        jQuery2.fn.extend({
1621          has: function(target) {
1622            var targets = jQuery2(target, this), l = targets.length;
1623            return this.filter(function() {
1624              var i = 0;
1625              for (; i < l; i++) {
1626                if (jQuery2.contains(this, targets[i])) {
1627                  return true;
1628                }
1629              }
1630            });
1631          },
1632          closest: function(selectors, context) {
1633            var cur, i = 0, l = this.length, matched = [], targets = typeof selectors !== "string" && jQuery2(selectors);
1634            if (!rneedsContext.test(selectors)) {
1635              for (; i < l; i++) {
1636                for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {
1637                  if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : cur.nodeType === 1 && jQuery2.find.matchesSelector(cur, selectors))) {
1638                    matched.push(cur);
1639                    break;
1640                  }
1641                }
1642              }
1643            }
1644            return this.pushStack(matched.length > 1 ? jQuery2.uniqueSort(matched) : matched);
1645          },
1646          index: function(elem) {
1647            if (!elem) {
1648              return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
1649            }
1650            if (typeof elem === "string") {
1651              return indexOf.call(jQuery2(elem), this[0]);
1652            }
1653            return indexOf.call(this, elem.jquery ? elem[0] : elem);
1654          },
1655          add: function(selector3, context) {
1656            return this.pushStack(jQuery2.uniqueSort(jQuery2.merge(this.get(), jQuery2(selector3, context))));
1657          },
1658          addBack: function(selector3) {
1659            return this.add(selector3 == null ? this.prevObject : this.prevObject.filter(selector3));
1660          }
1661        });
1662        function sibling(cur, dir2) {
1663          while ((cur = cur[dir2]) && cur.nodeType !== 1) {
1664          }
1665          return cur;
1666        }
1667        jQuery2.each({
1668          parent: function(elem) {
1669            var parent = elem.parentNode;
1670            return parent && parent.nodeType !== 11 ? parent : null;
1671          },
1672          parents: function(elem) {
1673            return dir(elem, "parentNode");
1674          },
1675          parentsUntil: function(elem, _i2, until) {
1676            return dir(elem, "parentNode", until);
1677          },
1678          next: function(elem) {
1679            return sibling(elem, "nextSibling");
1680          },
1681          prev: function(elem) {
1682            return sibling(elem, "previousSibling");
1683          },
1684          nextAll: function(elem) {
1685            return dir(elem, "nextSibling");
1686          },
1687          prevAll: function(elem) {
1688            return dir(elem, "previousSibling");
1689          },
1690          nextUntil: function(elem, _i2, until) {
1691            return dir(elem, "nextSibling", until);
1692          },
1693          prevUntil: function(elem, _i2, until) {
1694            return dir(elem, "previousSibling", until);
1695          },
1696          siblings: function(elem) {
1697            return siblings2((elem.parentNode || {}).firstChild, elem);
1698          },
1699          children: function(elem) {
1700            return siblings2(elem.firstChild);
1701          },
1702          contents: function(elem) {
1703            if (elem.contentDocument != null && getProto(elem.contentDocument)) {
1704              return elem.contentDocument;
1705            }
1706            if (nodeName(elem, "template")) {
1707              elem = elem.content || elem;
1708            }
1709            return jQuery2.merge([], elem.childNodes);
1710          }
1711        }, function(name, fn2) {
1712          jQuery2.fn[name] = function(until, selector3) {
1713            var matched = jQuery2.map(this, fn2, until);
1714            if (name.slice(-5) !== "Until") {
1715              selector3 = until;
1716            }
1717            if (selector3 && typeof selector3 === "string") {
1718              matched = jQuery2.filter(selector3, matched);
1719            }
1720            if (this.length > 1) {
1721              if (!guaranteedUnique[name]) {
1722                jQuery2.uniqueSort(matched);
1723              }
1724              if (rparentsprev.test(name)) {
1725                matched.reverse();
1726              }
1727            }
1728            return this.pushStack(matched);
1729          };
1730        });
1731        var rnothtmlwhite = /[^\x20\t\r\n\f]+/g;
1732        function createOptions(options) {
1733          var object = {};
1734          jQuery2.each(options.match(rnothtmlwhite) || [], function(_2, flag) {
1735            object[flag] = true;
1736          });
1737          return object;
1738        }
1739        jQuery2.Callbacks = function(options) {
1740          options = typeof options === "string" ? createOptions(options) : jQuery2.extend({}, options);
1741          var firing, memory, fired, locked, list = [], queue = [], firingIndex = -1, fire = function() {
1742            locked = locked || options.once;
1743            fired = firing = true;
1744            for (; queue.length; firingIndex = -1) {
1745              memory = queue.shift();
1746              while (++firingIndex < list.length) {
1747                if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {
1748                  firingIndex = list.length;
1749                  memory = false;
1750                }
1751              }
1752            }
1753            if (!options.memory) {
1754              memory = false;
1755            }
1756            firing = false;
1757            if (locked) {
1758              if (memory) {
1759                list = [];
1760              } else {
1761                list = "";
1762              }
1763            }
1764          }, self2 = {
1765            add: function() {
1766              if (list) {
1767                if (memory && !firing) {
1768                  firingIndex = list.length - 1;
1769                  queue.push(memory);
1770                }
1771                (function add(args) {
1772                  jQuery2.each(args, function(_2, arg) {
1773                    if (isFunction2(arg)) {
1774                      if (!options.unique || !self2.has(arg)) {
1775                        list.push(arg);
1776                      }
1777                    } else if (arg && arg.length && toType(arg) !== "string") {
1778                      add(arg);
1779                    }
1780                  });
1781                })(arguments);
1782                if (memory && !firing) {
1783                  fire();
1784                }
1785              }
1786              return this;
1787            },
1788            remove: function() {
1789              jQuery2.each(arguments, function(_2, arg) {
1790                var index;
1791                while ((index = jQuery2.inArray(arg, list, index)) > -1) {
1792                  list.splice(index, 1);
1793                  if (index <= firingIndex) {
1794                    firingIndex--;
1795                  }
1796                }
1797              });
1798              return this;
1799            },
1800            has: function(fn2) {
1801              return fn2 ? jQuery2.inArray(fn2, list) > -1 : list.length > 0;
1802            },
1803            empty: function() {
1804              if (list) {
1805                list = [];
1806              }
1807              return this;
1808            },
1809            disable: function() {
1810              locked = queue = [];
1811              list = memory = "";
1812              return this;
1813            },
1814            disabled: function() {
1815              return !list;
1816            },
1817            lock: function() {
1818              locked = queue = [];
1819              if (!memory && !firing) {
1820                list = memory = "";
1821              }
1822              return this;
1823            },
1824            locked: function() {
1825              return !!locked;
1826            },
1827            fireWith: function(context, args) {
1828              if (!locked) {
1829                args = args || [];
1830                args = [context, args.slice ? args.slice() : args];
1831                queue.push(args);
1832                if (!firing) {
1833                  fire();
1834                }
1835              }
1836              return this;
1837            },
1838            fire: function() {
1839              self2.fireWith(this, arguments);
1840              return this;
1841            },
1842            fired: function() {
1843              return !!fired;
1844            }
1845          };
1846          return self2;
1847        };
1848        function Identity(v) {
1849          return v;
1850        }
1851        function Thrower(ex) {
1852          throw ex;
1853        }
1854        function adoptValue(value, resolve, reject, noValue) {
1855          var method;
1856          try {
1857            if (value && isFunction2(method = value.promise)) {
1858              method.call(value).done(resolve).fail(reject);
1859            } else if (value && isFunction2(method = value.then)) {
1860              method.call(value, resolve, reject);
1861            } else {
1862              resolve.apply(void 0, [value].slice(noValue));
1863            }
1864          } catch (value2) {
1865            reject.apply(void 0, [value2]);
1866          }
1867        }
1868        jQuery2.extend({
1869          Deferred: function(func) {
1870            var tuples = [
1871              [
1872                "notify",
1873                "progress",
1874                jQuery2.Callbacks("memory"),
1875                jQuery2.Callbacks("memory"),
1876                2
1877              ],
1878              [
1879                "resolve",
1880                "done",
1881                jQuery2.Callbacks("once memory"),
1882                jQuery2.Callbacks("once memory"),
1883                0,
1884                "resolved"
1885              ],
1886              [
1887                "reject",
1888                "fail",
1889                jQuery2.Callbacks("once memory"),
1890                jQuery2.Callbacks("once memory"),
1891                1,
1892                "rejected"
1893              ]
1894            ], state = "pending", promise = {
1895              state: function() {
1896                return state;
1897              },
1898              always: function() {
1899                deferred.done(arguments).fail(arguments);
1900                return this;
1901              },
1902              "catch": function(fn2) {
1903                return promise.then(null, fn2);
1904              },
1905              pipe: function() {
1906                var fns = arguments;
1907                return jQuery2.Deferred(function(newDefer) {
1908                  jQuery2.each(tuples, function(_i2, tuple) {
1909                    var fn2 = isFunction2(fns[tuple[4]]) && fns[tuple[4]];
1910                    deferred[tuple[1]](function() {
1911                      var returned = fn2 && fn2.apply(this, arguments);
1912                      if (returned && isFunction2(returned.promise)) {
1913                        returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);
1914                      } else {
1915                        newDefer[tuple[0] + "With"](this, fn2 ? [returned] : arguments);
1916                      }
1917                    });
1918                  });
1919                  fns = null;
1920                }).promise();
1921              },
1922              then: function(onFulfilled, onRejected, onProgress) {
1923                var maxDepth = 0;
1924                function resolve(depth, deferred2, handler, special) {
1925                  return function() {
1926                    var that = this, args = arguments, mightThrow = function() {
1927                      var returned, then;
1928                      if (depth < maxDepth) {
1929                        return;
1930                      }
1931                      returned = handler.apply(that, args);
1932                      if (returned === deferred2.promise()) {
1933                        throw new TypeError("Thenable self-resolution");
1934                      }
1935                      then = returned && (typeof returned === "object" || typeof returned === "function") && returned.then;
1936                      if (isFunction2(then)) {
1937                        if (special) {
1938                          then.call(returned, resolve(maxDepth, deferred2, Identity, special), resolve(maxDepth, deferred2, Thrower, special));
1939                        } else {
1940                          maxDepth++;
1941                          then.call(returned, resolve(maxDepth, deferred2, Identity, special), resolve(maxDepth, deferred2, Thrower, special), resolve(maxDepth, deferred2, Identity, deferred2.notifyWith));
1942                        }
1943                      } else {
1944                        if (handler !== Identity) {
1945                          that = void 0;
1946                          args = [returned];
1947                        }
1948                        (special || deferred2.resolveWith)(that, args);
1949                      }
1950                    }, process2 = special ? mightThrow : function() {
1951                      try {
1952                        mightThrow();
1953                      } catch (e) {
1954                        if (jQuery2.Deferred.exceptionHook) {
1955                          jQuery2.Deferred.exceptionHook(e, process2.stackTrace);
1956                        }
1957                        if (depth + 1 >= maxDepth) {
1958                          if (handler !== Thrower) {
1959                            that = void 0;
1960                            args = [e];
1961                          }
1962                          deferred2.rejectWith(that, args);
1963                        }
1964                      }
1965                    };
1966                    if (depth) {
1967                      process2();
1968                    } else {
1969                      if (jQuery2.Deferred.getStackHook) {
1970                        process2.stackTrace = jQuery2.Deferred.getStackHook();
1971                      }
1972                      window2.setTimeout(process2);
1973                    }
1974                  };
1975                }
1976                return jQuery2.Deferred(function(newDefer) {
1977                  tuples[0][3].add(resolve(0, newDefer, isFunction2(onProgress) ? onProgress : Identity, newDefer.notifyWith));
1978                  tuples[1][3].add(resolve(0, newDefer, isFunction2(onFulfilled) ? onFulfilled : Identity));
1979                  tuples[2][3].add(resolve(0, newDefer, isFunction2(onRejected) ? onRejected : Thrower));
1980                }).promise();
1981              },
1982              promise: function(obj) {
1983                return obj != null ? jQuery2.extend(obj, promise) : promise;
1984              }
1985            }, deferred = {};
1986            jQuery2.each(tuples, function(i, tuple) {
1987              var list = tuple[2], stateString = tuple[5];
1988              promise[tuple[1]] = list.add;
1989              if (stateString) {
1990                list.add(function() {
1991                  state = stateString;
1992                }, tuples[3 - i][2].disable, tuples[3 - i][3].disable, tuples[0][2].lock, tuples[0][3].lock);
1993              }
1994              list.add(tuple[3].fire);
1995              deferred[tuple[0]] = function() {
1996                deferred[tuple[0] + "With"](this === deferred ? void 0 : this, arguments);
1997                return this;
1998              };
1999              deferred[tuple[0] + "With"] = list.fireWith;
2000            });
2001            promise.promise(deferred);
2002            if (func) {
2003              func.call(deferred, deferred);
2004            }
2005            return deferred;
2006          },
2007          when: function(singleValue) {
2008            var remaining = arguments.length, i = remaining, resolveContexts = Array(i), resolveValues = slice.call(arguments), primary = jQuery2.Deferred(), updateFunc = function(i2) {
2009              return function(value) {
2010                resolveContexts[i2] = this;
2011                resolveValues[i2] = arguments.length > 1 ? slice.call(arguments) : value;
2012                if (!--remaining) {
2013                  primary.resolveWith(resolveContexts, resolveValues);
2014                }
2015              };
2016            };
2017            if (remaining <= 1) {
2018              adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining);
2019              if (primary.state() === "pending" || isFunction2(resolveValues[i] && resolveValues[i].then)) {
2020                return primary.then();
2021              }
2022            }
2023            while (i--) {
2024              adoptValue(resolveValues[i], updateFunc(i), primary.reject);
2025            }
2026            return primary.promise();
2027          }
2028        });
2029        var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
2030        jQuery2.Deferred.exceptionHook = function(error, stack) {
2031          if (window2.console && window2.console.warn && error && rerrorNames.test(error.name)) {
2032            window2.console.warn("jQuery.Deferred exception: " + error.message, error.stack, stack);
2033          }
2034        };
2035        jQuery2.readyException = function(error) {
2036          window2.setTimeout(function() {
2037            throw error;
2038          });
2039        };
2040        var readyList = jQuery2.Deferred();
2041        jQuery2.fn.ready = function(fn2) {
2042          readyList.then(fn2).catch(function(error) {
2043            jQuery2.readyException(error);
2044          });
2045          return this;
2046        };
2047        jQuery2.extend({
2048          isReady: false,
2049          readyWait: 1,
2050          ready: function(wait) {
2051            if (wait === true ? --jQuery2.readyWait : jQuery2.isReady) {
2052              return;
2053            }
2054            jQuery2.isReady = true;
2055            if (wait !== true && --jQuery2.readyWait > 0) {
2056              return;
2057            }
2058            readyList.resolveWith(document2, [jQuery2]);
2059          }
2060        });
2061        jQuery2.ready.then = readyList.then;
2062        function completed() {
2063          document2.removeEventListener("DOMContentLoaded", completed);
2064          window2.removeEventListener("load", completed);
2065          jQuery2.ready();
2066        }
2067        if (document2.readyState === "complete" || document2.readyState !== "loading" && !document2.documentElement.doScroll) {
2068          window2.setTimeout(jQuery2.ready);
2069        } else {
2070          document2.addEventListener("DOMContentLoaded", completed);
2071          window2.addEventListener("load", completed);
2072        }
2073        var access = function(elems, fn2, key, value, chainable, emptyGet, raw) {
2074          var i = 0, len = elems.length, bulk = key == null;
2075          if (toType(key) === "object") {
2076            chainable = true;
2077            for (i in key) {
2078              access(elems, fn2, i, key[i], true, emptyGet, raw);
2079            }
2080          } else if (value !== void 0) {
2081            chainable = true;
2082            if (!isFunction2(value)) {
2083              raw = true;
2084            }
2085            if (bulk) {
2086              if (raw) {
2087                fn2.call(elems, value);
2088                fn2 = null;
2089              } else {
2090                bulk = fn2;
2091                fn2 = function(elem, _key, value2) {
2092                  return bulk.call(jQuery2(elem), value2);
2093                };
2094              }
2095            }
2096            if (fn2) {
2097              for (; i < len; i++) {
2098                fn2(elems[i], key, raw ? value : value.call(elems[i], i, fn2(elems[i], key)));
2099              }
2100            }
2101          }
2102          if (chainable) {
2103            return elems;
2104          }
2105          if (bulk) {
2106            return fn2.call(elems);
2107          }
2108          return len ? fn2(elems[0], key) : emptyGet;
2109        };
2110        var rmsPrefix = /^-ms-/, rdashAlpha = /-([a-z])/g;
2111        function fcamelCase(_all, letter) {
2112          return letter.toUpperCase();
2113        }
2114        function camelCase(string) {
2115          return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
2116        }
2117        var acceptData = function(owner) {
2118          return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;
2119        };
2120        function Data() {
2121          this.expando = jQuery2.expando + Data.uid++;
2122        }
2123        Data.uid = 1;
2124        Data.prototype = {
2125          cache: function(owner) {
2126            var value = owner[this.expando];
2127            if (!value) {
2128              value = {};
2129              if (acceptData(owner)) {
2130                if (owner.nodeType) {
2131                  owner[this.expando] = value;
2132                } else {
2133                  Object.defineProperty(owner, this.expando, {
2134                    value,
2135                    configurable: true
2136                  });
2137                }
2138              }
2139            }
2140            return value;
2141          },
2142          set: function(owner, data, value) {
2143            var prop, cache = this.cache(owner);
2144            if (typeof data === "string") {
2145              cache[camelCase(data)] = value;
2146            } else {
2147              for (prop in data) {
2148                cache[camelCase(prop)] = data[prop];
2149              }
2150            }
2151            return cache;
2152          },
2153          get: function(owner, key) {
2154            return key === void 0 ? this.cache(owner) : owner[this.expando] && owner[this.expando][camelCase(key)];
2155          },
2156          access: function(owner, key, value) {
2157            if (key === void 0 || key && typeof key === "string" && value === void 0) {
2158              return this.get(owner, key);
2159            }
2160            this.set(owner, key, value);
2161            return value !== void 0 ? value : key;
2162          },
2163          remove: function(owner, key) {
2164            var i, cache = owner[this.expando];
2165            if (cache === void 0) {
2166              return;
2167            }
2168            if (key !== void 0) {
2169              if (Array.isArray(key)) {
2170                key = key.map(camelCase);
2171              } else {
2172                key = camelCase(key);
2173                key = key in cache ? [key] : key.match(rnothtmlwhite) || [];
2174              }
2175              i = key.length;
2176              while (i--) {
2177                delete cache[key[i]];
2178              }
2179            }
2180            if (key === void 0 || jQuery2.isEmptyObject(cache)) {
2181              if (owner.nodeType) {
2182                owner[this.expando] = void 0;
2183              } else {
2184                delete owner[this.expando];
2185              }
2186            }
2187          },
2188          hasData: function(owner) {
2189            var cache = owner[this.expando];
2190            return cache !== void 0 && !jQuery2.isEmptyObject(cache);
2191          }
2192        };
2193        var dataPriv = new Data();
2194        var dataUser = new Data();
2195        var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g;
2196        function getData(data) {
2197          if (data === "true") {
2198            return true;
2199          }
2200          if (data === "false") {
2201            return false;
2202          }
2203          if (data === "null") {
2204            return null;
2205          }
2206          if (data === +data + "") {
2207            return +data;
2208          }
2209          if (rbrace.test(data)) {
2210            return JSON.parse(data);
2211          }
2212          return data;
2213        }
2214        function dataAttr(elem, key, data) {
2215          var name;
2216          if (data === void 0 && elem.nodeType === 1) {
2217            name = "data-" + key.replace(rmultiDash, "-$&").toLowerCase();
2218            data = elem.getAttribute(name);
2219            if (typeof data === "string") {
2220              try {
2221                data = getData(data);
2222              } catch (e) {
2223              }
2224              dataUser.set(elem, key, data);
2225            } else {
2226              data = void 0;
2227            }
2228          }
2229          return data;
2230        }
2231        jQuery2.extend({
2232          hasData: function(elem) {
2233            return dataUser.hasData(elem) || dataPriv.hasData(elem);
2234          },
2235          data: function(elem, name, data) {
2236            return dataUser.access(elem, name, data);
2237          },
2238          removeData: function(elem, name) {
2239            dataUser.remove(elem, name);
2240          },
2241          _data: function(elem, name, data) {
2242            return dataPriv.access(elem, name, data);
2243          },
2244          _removeData: function(elem, name) {
2245            dataPriv.remove(elem, name);
2246          }
2247        });
2248        jQuery2.fn.extend({
2249          data: function(key, value) {
2250            var i, name, data, elem = this[0], attrs = elem && elem.attributes;
2251            if (key === void 0) {
2252              if (this.length) {
2253                data = dataUser.get(elem);
2254                if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) {
2255                  i = attrs.length;
2256                  while (i--) {
2257                    if (attrs[i]) {
2258                      name = attrs[i].name;
2259                      if (name.indexOf("data-") === 0) {
2260                        name = camelCase(name.slice(5));
2261                        dataAttr(elem, name, data[name]);
2262                      }
2263                    }
2264                  }
2265                  dataPriv.set(elem, "hasDataAttrs", true);
2266                }
2267              }
2268              return data;
2269            }
2270            if (typeof key === "object") {
2271              return this.each(function() {
2272                dataUser.set(this, key);
2273              });
2274            }
2275            return access(this, function(value2) {
2276              var data2;
2277              if (elem && value2 === void 0) {
2278                data2 = dataUser.get(elem, key);
2279                if (data2 !== void 0) {
2280                  return data2;
2281                }
2282                data2 = dataAttr(elem, key);
2283                if (data2 !== void 0) {
2284                  return data2;
2285                }
2286                return;
2287              }
2288              this.each(function() {
2289                dataUser.set(this, key, value2);
2290              });
2291            }, null, value, arguments.length > 1, null, true);
2292          },
2293          removeData: function(key) {
2294            return this.each(function() {
2295              dataUser.remove(this, key);
2296            });
2297          }
2298        });
2299        jQuery2.extend({
2300          queue: function(elem, type, data) {
2301            var queue;
2302            if (elem) {
2303              type = (type || "fx") + "queue";
2304              queue = dataPriv.get(elem, type);
2305              if (data) {
2306                if (!queue || Array.isArray(data)) {
2307                  queue = dataPriv.access(elem, type, jQuery2.makeArray(data));
2308                } else {
2309                  queue.push(data);
2310                }
2311              }
2312              return queue || [];
2313            }
2314          },
2315          dequeue: function(elem, type) {
2316            type = type || "fx";
2317            var queue = jQuery2.queue(elem, type), startLength = queue.length, fn2 = queue.shift(), hooks = jQuery2._queueHooks(elem, type), next = function() {
2318              jQuery2.dequeue(elem, type);
2319            };
2320            if (fn2 === "inprogress") {
2321              fn2 = queue.shift();
2322              startLength--;
2323            }
2324            if (fn2) {
2325              if (type === "fx") {
2326                queue.unshift("inprogress");
2327              }
2328              delete hooks.stop;
2329              fn2.call(elem, next, hooks);
2330            }
2331            if (!startLength && hooks) {
2332              hooks.empty.fire();
2333            }
2334          },
2335          _queueHooks: function(elem, type) {
2336            var key = type + "queueHooks";
2337            return dataPriv.get(elem, key) || dataPriv.access(elem, key, {
2338              empty: jQuery2.Callbacks("once memory").add(function() {
2339                dataPriv.remove(elem, [type + "queue", key]);
2340              })
2341            });
2342          }
2343        });
2344        jQuery2.fn.extend({
2345          queue: function(type, data) {
2346            var setter = 2;
2347            if (typeof type !== "string") {
2348              data = type;
2349              type = "fx";
2350              setter--;
2351            }
2352            if (arguments.length < setter) {
2353              return jQuery2.queue(this[0], type);
2354            }
2355            return data === void 0 ? this : this.each(function() {
2356              var queue = jQuery2.queue(this, type, data);
2357              jQuery2._queueHooks(this, type);
2358              if (type === "fx" && queue[0] !== "inprogress") {
2359                jQuery2.dequeue(this, type);
2360              }
2361            });
2362          },
2363          dequeue: function(type) {
2364            return this.each(function() {
2365              jQuery2.dequeue(this, type);
2366            });
2367          },
2368          clearQueue: function(type) {
2369            return this.queue(type || "fx", []);
2370          },
2371          promise: function(type, obj) {
2372            var tmp, count = 1, defer = jQuery2.Deferred(), elements = this, i = this.length, resolve = function() {
2373              if (!--count) {
2374                defer.resolveWith(elements, [elements]);
2375              }
2376            };
2377            if (typeof type !== "string") {
2378              obj = type;
2379              type = void 0;
2380            }
2381            type = type || "fx";
2382            while (i--) {
2383              tmp = dataPriv.get(elements[i], type + "queueHooks");
2384              if (tmp && tmp.empty) {
2385                count++;
2386                tmp.empty.add(resolve);
2387              }
2388            }
2389            resolve();
2390            return defer.promise(obj);
2391          }
2392        });
2393        var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;
2394        var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i");
2395        var cssExpand = ["Top", "Right", "Bottom", "Left"];
2396        var documentElement = document2.documentElement;
2397        var isAttached = function(elem) {
2398          return jQuery2.contains(elem.ownerDocument, elem);
2399        }, composed = { composed: true };
2400        if (documentElement.getRootNode) {
2401          isAttached = function(elem) {
2402            return jQuery2.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;
2403          };
2404        }
2405        var isHiddenWithinTree = function(elem, el) {
2406          elem = el || elem;
2407          return elem.style.display === "none" || elem.style.display === "" && isAttached(elem) && jQuery2.css(elem, "display") === "none";
2408        };
2409        function adjustCSS(elem, prop, valueParts, tween) {
2410          var adjusted, scale, maxIterations = 20, currentValue = tween ? function() {
2411            return tween.cur();
2412          } : function() {
2413            return jQuery2.css(elem, prop, "");
2414          }, initial = currentValue(), unit = valueParts && valueParts[3] || (jQuery2.cssNumber[prop] ? "" : "px"), initialInUnit = elem.nodeType && (jQuery2.cssNumber[prop] || unit !== "px" && +initial) && rcssNum.exec(jQuery2.css(elem, prop));
2415          if (initialInUnit && initialInUnit[3] !== unit) {
2416            initial = initial / 2;
2417            unit = unit || initialInUnit[3];
2418            initialInUnit = +initial || 1;
2419            while (maxIterations--) {
2420              jQuery2.style(elem, prop, initialInUnit + unit);
2421              if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {
2422                maxIterations = 0;
2423              }
2424              initialInUnit = initialInUnit / scale;
2425            }
2426            initialInUnit = initialInUnit * 2;
2427            jQuery2.style(elem, prop, initialInUnit + unit);
2428            valueParts = valueParts || [];
2429          }
2430          if (valueParts) {
2431            initialInUnit = +initialInUnit || +initial || 0;
2432            adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];
2433            if (tween) {
2434              tween.unit = unit;
2435              tween.start = initialInUnit;
2436              tween.end = adjusted;
2437            }
2438          }
2439          return adjusted;
2440        }
2441        var defaultDisplayMap = {};
2442        function getDefaultDisplay(elem) {
2443          var temp, doc = elem.ownerDocument, nodeName2 = elem.nodeName, display = defaultDisplayMap[nodeName2];
2444          if (display) {
2445            return display;
2446          }
2447          temp = doc.body.appendChild(doc.createElement(nodeName2));
2448          display = jQuery2.css(temp, "display");
2449          temp.parentNode.removeChild(temp);
2450          if (display === "none") {
2451            display = "block";
2452          }
2453          defaultDisplayMap[nodeName2] = display;
2454          return display;
2455        }
2456        function showHide(elements, show) {
2457          var display, elem, values = [], index = 0, length = elements.length;
2458          for (; index < length; index++) {
2459            elem = elements[index];
2460            if (!elem.style) {
2461              continue;
2462            }
2463            display = elem.style.display;
2464            if (show) {
2465              if (display === "none") {
2466                values[index] = dataPriv.get(elem, "display") || null;
2467                if (!values[index]) {
2468                  elem.style.display = "";
2469                }
2470              }
2471              if (elem.style.display === "" && isHiddenWithinTree(elem)) {
2472                values[index] = getDefaultDisplay(elem);
2473              }
2474            } else {
2475              if (display !== "none") {
2476                values[index] = "none";
2477                dataPriv.set(elem, "display", display);
2478              }
2479            }
2480          }
2481          for (index = 0; index < length; index++) {
2482            if (values[index] != null) {
2483              elements[index].style.display = values[index];
2484            }
2485          }
2486          return elements;
2487        }
2488        jQuery2.fn.extend({
2489          show: function() {
2490            return showHide(this, true);
2491          },
2492          hide: function() {
2493            return showHide(this);
2494          },
2495          toggle: function(state) {
2496            if (typeof state === "boolean") {
2497              return state ? this.show() : this.hide();
2498            }
2499            return this.each(function() {
2500              if (isHiddenWithinTree(this)) {
2501                jQuery2(this).show();
2502              } else {
2503                jQuery2(this).hide();
2504              }
2505            });
2506          }
2507        });
2508        var rcheckableType = /^(?:checkbox|radio)$/i;
2509        var rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i;
2510        var rscriptType = /^$|^module$|\/(?:java|ecma)script/i;
2511        (function() {
2512          var fragment = document2.createDocumentFragment(), div = fragment.appendChild(document2.createElement("div")), input = document2.createElement("input");
2513          input.setAttribute("type", "radio");
2514          input.setAttribute("checked", "checked");
2515          input.setAttribute("name", "t");
2516          div.appendChild(input);
2517          support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;
2518          div.innerHTML = "<textarea>x</textarea>";
2519          support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;
2520          div.innerHTML = "<option></option>";
2521          support.option = !!div.lastChild;
2522        })();
2523        var wrapMap = {
2524          thead: [1, "<table>", "</table>"],
2525          col: [2, "<table><colgroup>", "</colgroup></table>"],
2526          tr: [2, "<table><tbody>", "</tbody></table>"],
2527          td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
2528          _default: [0, "", ""]
2529        };
2530        wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
2531        wrapMap.th = wrapMap.td;
2532        if (!support.option) {
2533          wrapMap.optgroup = wrapMap.option = [1, "<select multiple='multiple'>", "</select>"];
2534        }
2535        function getAll(context, tag) {
2536          var ret;
2537          if (typeof context.getElementsByTagName !== "undefined") {
2538            ret = context.getElementsByTagName(tag || "*");
2539          } else if (typeof context.querySelectorAll !== "undefined") {
2540            ret = context.querySelectorAll(tag || "*");
2541          } else {
2542            ret = [];
2543          }
2544          if (tag === void 0 || tag && nodeName(context, tag)) {
2545            return jQuery2.merge([context], ret);
2546          }
2547          return ret;
2548        }
2549        function setGlobalEval(elems, refElements) {
2550          var i = 0, l = elems.length;
2551          for (; i < l; i++) {
2552            dataPriv.set(elems[i], "globalEval", !refElements || dataPriv.get(refElements[i], "globalEval"));
2553          }
2554        }
2555        var rhtml = /<|&#?\w+;/;
2556        function buildFragment(elems, context, scripts, selection, ignored) {
2557          var elem, tmp, tag, wrap3, attached, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, l = elems.length;
2558          for (; i < l; i++) {
2559            elem = elems[i];
2560            if (elem || elem === 0) {
2561              if (toType(elem) === "object") {
2562                jQuery2.merge(nodes, elem.nodeType ? [elem] : elem);
2563              } else if (!rhtml.test(elem)) {
2564                nodes.push(context.createTextNode(elem));
2565              } else {
2566                tmp = tmp || fragment.appendChild(context.createElement("div"));
2567                tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase();
2568                wrap3 = wrapMap[tag] || wrapMap._default;
2569                tmp.innerHTML = wrap3[1] + jQuery2.htmlPrefilter(elem) + wrap3[2];
2570                j = wrap3[0];
2571                while (j--) {
2572                  tmp = tmp.lastChild;
2573                }
2574                jQuery2.merge(nodes, tmp.childNodes);
2575                tmp = fragment.firstChild;
2576                tmp.textContent = "";
2577              }
2578            }
2579          }
2580          fragment.textContent = "";
2581          i = 0;
2582          while (elem = nodes[i++]) {
2583            if (selection && jQuery2.inArray(elem, selection) > -1) {
2584              if (ignored) {
2585                ignored.push(elem);
2586              }
2587              continue;
2588            }
2589            attached = isAttached(elem);
2590            tmp = getAll(fragment.appendChild(elem), "script");
2591            if (attached) {
2592              setGlobalEval(tmp);
2593            }
2594            if (scripts) {
2595              j = 0;
2596              while (elem = tmp[j++]) {
2597                if (rscriptType.test(elem.type || "")) {
2598                  scripts.push(elem);
2599                }
2600              }
2601            }
2602          }
2603          return fragment;
2604        }
2605        var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
2606        function returnTrue() {
2607          return true;
2608        }
2609        function returnFalse() {
2610          return false;
2611        }
2612        function expectSync(elem, type) {
2613          return elem === safeActiveElement() === (type === "focus");
2614        }
2615        function safeActiveElement() {
2616          try {
2617            return document2.activeElement;
2618          } catch (err) {
2619          }
2620        }
2621        function on(elem, types, selector3, data, fn2, one) {
2622          var origFn, type;
2623          if (typeof types === "object") {
2624            if (typeof selector3 !== "string") {
2625              data = data || selector3;
2626              selector3 = void 0;
2627            }
2628            for (type in types) {
2629              on(elem, type, selector3, data, types[type], one);
2630            }
2631            return elem;
2632          }
2633          if (data == null && fn2 == null) {
2634            fn2 = selector3;
2635            data = selector3 = void 0;
2636          } else if (fn2 == null) {
2637            if (typeof selector3 === "string") {
2638              fn2 = data;
2639              data = void 0;
2640            } else {
2641              fn2 = data;
2642              data = selector3;
2643              selector3 = void 0;
2644            }
2645          }
2646          if (fn2 === false) {
2647            fn2 = returnFalse;
2648          } else if (!fn2) {
2649            return elem;
2650          }
2651          if (one === 1) {
2652            origFn = fn2;
2653            fn2 = function(event) {
2654              jQuery2().off(event);
2655              return origFn.apply(this, arguments);
2656            };
2657            fn2.guid = origFn.guid || (origFn.guid = jQuery2.guid++);
2658          }
2659          return elem.each(function() {
2660            jQuery2.event.add(this, types, fn2, data, selector3);
2661          });
2662        }
2663        jQuery2.event = {
2664          global: {},
2665          add: function(elem, types, handler, data, selector3) {
2666            var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.get(elem);
2667            if (!acceptData(elem)) {
2668              return;
2669            }
2670            if (handler.handler) {
2671              handleObjIn = handler;
2672              handler = handleObjIn.handler;
2673              selector3 = handleObjIn.selector;
2674            }
2675            if (selector3) {
2676              jQuery2.find.matchesSelector(documentElement, selector3);
2677            }
2678            if (!handler.guid) {
2679              handler.guid = jQuery2.guid++;
2680            }
2681            if (!(events = elemData.events)) {
2682              events = elemData.events = Object.create(null);
2683            }
2684            if (!(eventHandle = elemData.handle)) {
2685              eventHandle = elemData.handle = function(e) {
2686                return typeof jQuery2 !== "undefined" && jQuery2.event.triggered !== e.type ? jQuery2.event.dispatch.apply(elem, arguments) : void 0;
2687              };
2688            }
2689            types = (types || "").match(rnothtmlwhite) || [""];
2690            t = types.length;
2691            while (t--) {
2692              tmp = rtypenamespace.exec(types[t]) || [];
2693              type = origType = tmp[1];
2694              namespaces = (tmp[2] || "").split(".").sort();
2695              if (!type) {
2696                continue;
2697              }
2698              special = jQuery2.event.special[type] || {};
2699              type = (selector3 ? special.delegateType : special.bindType) || type;
2700              special = jQuery2.event.special[type] || {};
2701              handleObj = jQuery2.extend({
2702                type,
2703                origType,
2704                data,
2705                handler,
2706                guid: handler.guid,
2707                selector: selector3,
2708                needsContext: selector3 && jQuery2.expr.match.needsContext.test(selector3),
2709                namespace: namespaces.join(".")
2710              }, handleObjIn);
2711              if (!(handlers = events[type])) {
2712                handlers = events[type] = [];
2713                handlers.delegateCount = 0;
2714                if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {
2715                  if (elem.addEventListener) {
2716                    elem.addEventListener(type, eventHandle);
2717                  }
2718                }
2719              }
2720              if (special.add) {
2721                special.add.call(elem, handleObj);
2722                if (!handleObj.handler.guid) {
2723                  handleObj.handler.guid = handler.guid;
2724                }
2725              }
2726              if (selector3) {
2727                handlers.splice(handlers.delegateCount++, 0, handleObj);
2728              } else {
2729                handlers.push(handleObj);
2730              }
2731              jQuery2.event.global[type] = true;
2732            }
2733          },
2734          remove: function(elem, types, handler, selector3, mappedTypes) {
2735            var j, origCount, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.hasData(elem) && dataPriv.get(elem);
2736            if (!elemData || !(events = elemData.events)) {
2737              return;
2738            }
2739            types = (types || "").match(rnothtmlwhite) || [""];
2740            t = types.length;
2741            while (t--) {
2742              tmp = rtypenamespace.exec(types[t]) || [];
2743              type = origType = tmp[1];
2744              namespaces = (tmp[2] || "").split(".").sort();
2745              if (!type) {
2746                for (type in events) {
2747                  jQuery2.event.remove(elem, type + types[t], handler, selector3, true);
2748                }
2749                continue;
2750              }
2751              special = jQuery2.event.special[type] || {};
2752              type = (selector3 ? special.delegateType : special.bindType) || type;
2753              handlers = events[type] || [];
2754              tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)");
2755              origCount = j = handlers.length;
2756              while (j--) {
2757                handleObj = handlers[j];
2758                if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector3 || selector3 === handleObj.selector || selector3 === "**" && handleObj.selector)) {
2759                  handlers.splice(j, 1);
2760                  if (handleObj.selector) {
2761                    handlers.delegateCount--;
2762                  }
2763                  if (special.remove) {
2764                    special.remove.call(elem, handleObj);
2765                  }
2766                }
2767              }
2768              if (origCount && !handlers.length) {
2769                if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {
2770                  jQuery2.removeEvent(elem, type, elemData.handle);
2771                }
2772                delete events[type];
2773              }
2774            }
2775            if (jQuery2.isEmptyObject(events)) {
2776              dataPriv.remove(elem, "handle events");
2777            }
2778          },
2779          dispatch: function(nativeEvent) {
2780            var i, j, ret, matched, handleObj, handlerQueue, args = new Array(arguments.length), event = jQuery2.event.fix(nativeEvent), handlers = (dataPriv.get(this, "events") || Object.create(null))[event.type] || [], special = jQuery2.event.special[event.type] || {};
2781            args[0] = event;
2782            for (i = 1; i < arguments.length; i++) {
2783              args[i] = arguments[i];
2784            }
2785            event.delegateTarget = this;
2786            if (special.preDispatch && special.preDispatch.call(this, event) === false) {
2787              return;
2788            }
2789            handlerQueue = jQuery2.event.handlers.call(this, event, handlers);
2790            i = 0;
2791            while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {
2792              event.currentTarget = matched.elem;
2793              j = 0;
2794              while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {
2795                if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {
2796                  event.handleObj = handleObj;
2797                  event.data = handleObj.data;
2798                  ret = ((jQuery2.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);
2799                  if (ret !== void 0) {
2800                    if ((event.result = ret) === false) {
2801                      event.preventDefault();
2802                      event.stopPropagation();
2803                    }
2804                  }
2805                }
2806              }
2807            }
2808            if (special.postDispatch) {
2809              special.postDispatch.call(this, event);
2810            }
2811            return event.result;
2812          },
2813          handlers: function(event, handlers) {
2814            var i, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target;
2815            if (delegateCount && cur.nodeType && !(event.type === "click" && event.button >= 1)) {
2816              for (; cur !== this; cur = cur.parentNode || this) {
2817                if (cur.nodeType === 1 && !(event.type === "click" && cur.disabled === true)) {
2818                  matchedHandlers = [];
2819                  matchedSelectors = {};
2820                  for (i = 0; i < delegateCount; i++) {
2821                    handleObj = handlers[i];
2822                    sel = handleObj.selector + " ";
2823                    if (matchedSelectors[sel] === void 0) {
2824                      matchedSelectors[sel] = handleObj.needsContext ? jQuery2(sel, this).index(cur) > -1 : jQuery2.find(sel, this, null, [cur]).length;
2825                    }
2826                    if (matchedSelectors[sel]) {
2827                      matchedHandlers.push(handleObj);
2828                    }
2829                  }
2830                  if (matchedHandlers.length) {
2831                    handlerQueue.push({ elem: cur, handlers: matchedHandlers });
2832                  }
2833                }
2834              }
2835            }
2836            cur = this;
2837            if (delegateCount < handlers.length) {
2838              handlerQueue.push({ elem: cur, handlers: handlers.slice(delegateCount) });
2839            }
2840            return handlerQueue;
2841          },
2842          addProp: function(name, hook) {
2843            Object.defineProperty(jQuery2.Event.prototype, name, {
2844              enumerable: true,
2845              configurable: true,
2846              get: isFunction2(hook) ? function() {
2847                if (this.originalEvent) {
2848                  return hook(this.originalEvent);
2849                }
2850              } : function() {
2851                if (this.originalEvent) {
2852                  return this.originalEvent[name];
2853                }
2854              },
2855              set: function(value) {
2856                Object.defineProperty(this, name, {
2857                  enumerable: true,
2858                  configurable: true,
2859                  writable: true,
2860                  value
2861                });
2862              }
2863            });
2864          },
2865          fix: function(originalEvent) {
2866            return originalEvent[jQuery2.expando] ? originalEvent : new jQuery2.Event(originalEvent);
2867          },
2868          special: {
2869            load: {
2870              noBubble: true
2871            },
2872            click: {
2873              setup: function(data) {
2874                var el = this || data;
2875                if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
2876                  leverageNative(el, "click", returnTrue);
2877                }
2878                return false;
2879              },
2880              trigger: function(data) {
2881                var el = this || data;
2882                if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
2883                  leverageNative(el, "click");
2884                }
2885                return true;
2886              },
2887              _default: function(event) {
2888                var target = event.target;
2889                return rcheckableType.test(target.type) && target.click && nodeName(target, "input") && dataPriv.get(target, "click") || nodeName(target, "a");
2890              }
2891            },
2892            beforeunload: {
2893              postDispatch: function(event) {
2894                if (event.result !== void 0 && event.originalEvent) {
2895                  event.originalEvent.returnValue = event.result;
2896                }
2897              }
2898            }
2899          }
2900        };
2901        function leverageNative(el, type, expectSync2) {
2902          if (!expectSync2) {
2903            if (dataPriv.get(el, type) === void 0) {
2904              jQuery2.event.add(el, type, returnTrue);
2905            }
2906            return;
2907          }
2908          dataPriv.set(el, type, false);
2909          jQuery2.event.add(el, type, {
2910            namespace: false,
2911            handler: function(event) {
2912              var notAsync, result, saved = dataPriv.get(this, type);
2913              if (event.isTrigger & 1 && this[type]) {
2914                if (!saved.length) {
2915                  saved = slice.call(arguments);
2916                  dataPriv.set(this, type, saved);
2917                  notAsync = expectSync2(this, type);
2918                  this[type]();
2919                  result = dataPriv.get(this, type);
2920                  if (saved !== result || notAsync) {
2921                    dataPriv.set(this, type, false);
2922                  } else {
2923                    result = {};
2924                  }
2925                  if (saved !== result) {
2926                    event.stopImmediatePropagation();
2927                    event.preventDefault();
2928                    return result && result.value;
2929                  }
2930                } else if ((jQuery2.event.special[type] || {}).delegateType) {
2931                  event.stopPropagation();
2932                }
2933              } else if (saved.length) {
2934                dataPriv.set(this, type, {
2935                  value: jQuery2.event.trigger(jQuery2.extend(saved[0], jQuery2.Event.prototype), saved.slice(1), this)
2936                });
2937                event.stopImmediatePropagation();
2938              }
2939            }
2940          });
2941        }
2942        jQuery2.removeEvent = function(elem, type, handle) {
2943          if (elem.removeEventListener) {
2944            elem.removeEventListener(type, handle);
2945          }
2946        };
2947        jQuery2.Event = function(src, props) {
2948          if (!(this instanceof jQuery2.Event)) {
2949            return new jQuery2.Event(src, props);
2950          }
2951          if (src && src.type) {
2952            this.originalEvent = src;
2953            this.type = src.type;
2954            this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === void 0 && src.returnValue === false ? returnTrue : returnFalse;
2955            this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;
2956            this.currentTarget = src.currentTarget;
2957            this.relatedTarget = src.relatedTarget;
2958          } else {
2959            this.type = src;
2960          }
2961          if (props) {
2962            jQuery2.extend(this, props);
2963          }
2964          this.timeStamp = src && src.timeStamp || Date.now();
2965          this[jQuery2.expando] = true;
2966        };
2967        jQuery2.Event.prototype = {
2968          constructor: jQuery2.Event,
2969          isDefaultPrevented: returnFalse,
2970          isPropagationStopped: returnFalse,
2971          isImmediatePropagationStopped: returnFalse,
2972          isSimulated: false,
2973          preventDefault: function() {
2974            var e = this.originalEvent;
2975            this.isDefaultPrevented = returnTrue;
2976            if (e && !this.isSimulated) {
2977              e.preventDefault();
2978            }
2979          },
2980          stopPropagation: function() {
2981            var e = this.originalEvent;
2982            this.isPropagationStopped = returnTrue;
2983            if (e && !this.isSimulated) {
2984              e.stopPropagation();
2985            }
2986          },
2987          stopImmediatePropagation: function() {
2988            var e = this.originalEvent;
2989            this.isImmediatePropagationStopped = returnTrue;
2990            if (e && !this.isSimulated) {
2991              e.stopImmediatePropagation();
2992            }
2993            this.stopPropagation();
2994          }
2995        };
2996        jQuery2.each({
2997          altKey: true,
2998          bubbles: true,
2999          cancelable: true,
3000          changedTouches: true,
3001          ctrlKey: true,
3002          detail: true,
3003          eventPhase: true,
3004          metaKey: true,
3005          pageX: true,
3006          pageY: true,
3007          shiftKey: true,
3008          view: true,
3009          "char": true,
3010          code: true,
3011          charCode: true,
3012          key: true,
3013          keyCode: true,
3014          button: true,
3015          buttons: true,
3016          clientX: true,
3017          clientY: true,
3018          offsetX: true,
3019          offsetY: true,
3020          pointerId: true,
3021          pointerType: true,
3022          screenX: true,
3023          screenY: true,
3024          targetTouches: true,
3025          toElement: true,
3026          touches: true,
3027          which: true
3028        }, jQuery2.event.addProp);
3029        jQuery2.each({ focus: "focusin", blur: "focusout" }, function(type, delegateType) {
3030          jQuery2.event.special[type] = {
3031            setup: function() {
3032              leverageNative(this, type, expectSync);
3033              return false;
3034            },
3035            trigger: function() {
3036              leverageNative(this, type);
3037              return true;
3038            },
3039            _default: function() {
3040              return true;
3041            },
3042            delegateType
3043          };
3044        });
3045        jQuery2.each({
3046          mouseenter: "mouseover",
3047          mouseleave: "mouseout",
3048          pointerenter: "pointerover",
3049          pointerleave: "pointerout"
3050        }, function(orig, fix) {
3051          jQuery2.event.special[orig] = {
3052            delegateType: fix,
3053            bindType: fix,
3054            handle: function(event) {
3055              var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj;
3056              if (!related || related !== target && !jQuery2.contains(target, related)) {
3057                event.type = handleObj.origType;
3058                ret = handleObj.handler.apply(this, arguments);
3059                event.type = fix;
3060              }
3061              return ret;
3062            }
3063          };
3064        });
3065        jQuery2.fn.extend({
3066          on: function(types, selector3, data, fn2) {
3067            return on(this, types, selector3, data, fn2);
3068          },
3069          one: function(types, selector3, data, fn2) {
3070            return on(this, types, selector3, data, fn2, 1);
3071          },
3072          off: function(types, selector3, fn2) {
3073            var handleObj, type;
3074            if (types && types.preventDefault && types.handleObj) {
3075              handleObj = types.handleObj;
3076              jQuery2(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);
3077              return this;
3078            }
3079            if (typeof types === "object") {
3080              for (type in types) {
3081                this.off(type, selector3, types[type]);
3082              }
3083              return this;
3084            }
3085            if (selector3 === false || typeof selector3 === "function") {
3086              fn2 = selector3;
3087              selector3 = void 0;
3088            }
3089            if (fn2 === false) {
3090              fn2 = returnFalse;
3091            }
3092            return this.each(function() {
3093              jQuery2.event.remove(this, types, fn2, selector3);
3094            });
3095          }
3096        });
3097        var rnoInnerhtml = /<script|<style|<link/i, rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
3098        function manipulationTarget(elem, content) {
3099          if (nodeName(elem, "table") && nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr")) {
3100            return jQuery2(elem).children("tbody")[0] || elem;
3101          }
3102          return elem;
3103        }
3104        function disableScript(elem) {
3105          elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
3106          return elem;
3107        }
3108        function restoreScript(elem) {
3109          if ((elem.type || "").slice(0, 5) === "true/") {
3110            elem.type = elem.type.slice(5);
3111          } else {
3112            elem.removeAttribute("type");
3113          }
3114          return elem;
3115        }
3116        function cloneCopyEvent(src, dest) {
3117          var i, l, type, pdataOld, udataOld, udataCur, events;
3118          if (dest.nodeType !== 1) {
3119            return;
3120          }
3121          if (dataPriv.hasData(src)) {
3122            pdataOld = dataPriv.get(src);
3123            events = pdataOld.events;
3124            if (events) {
3125              dataPriv.remove(dest, "handle events");
3126              for (type in events) {
3127                for (i = 0, l = events[type].length; i < l; i++) {
3128                  jQuery2.event.add(dest, type, events[type][i]);
3129                }
3130              }
3131            }
3132          }
3133          if (dataUser.hasData(src)) {
3134            udataOld = dataUser.access(src);
3135            udataCur = jQuery2.extend({}, udataOld);
3136            dataUser.set(dest, udataCur);
3137          }
3138        }
3139        function fixInput(src, dest) {
3140          var nodeName2 = dest.nodeName.toLowerCase();
3141          if (nodeName2 === "input" && rcheckableType.test(src.type)) {
3142            dest.checked = src.checked;
3143          } else if (nodeName2 === "input" || nodeName2 === "textarea") {
3144            dest.defaultValue = src.defaultValue;
3145          }
3146        }
3147        function domManip(collection, args, callback, ignored) {
3148          args = flat(args);
3149          var fragment, first, scripts, hasScripts, node, doc, i = 0, l = collection.length, iNoClone = l - 1, value = args[0], valueIsFunction = isFunction2(value);
3150          if (valueIsFunction || l > 1 && typeof value === "string" && !support.checkClone && rchecked.test(value)) {
3151            return collection.each(function(index) {
3152              var self2 = collection.eq(index);
3153              if (valueIsFunction) {
3154                args[0] = value.call(this, index, self2.html());
3155              }
3156              domManip(self2, args, callback, ignored);
3157            });
3158          }
3159          if (l) {
3160            fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);
3161            first = fragment.firstChild;
3162            if (fragment.childNodes.length === 1) {
3163              fragment = first;
3164            }
3165            if (first || ignored) {
3166              scripts = jQuery2.map(getAll(fragment, "script"), disableScript);
3167              hasScripts = scripts.length;
3168              for (; i < l; i++) {
3169                node = fragment;
3170                if (i !== iNoClone) {
3171                  node = jQuery2.clone(node, true, true);
3172                  if (hasScripts) {
3173                    jQuery2.merge(scripts, getAll(node, "script"));
3174                  }
3175                }
3176                callback.call(collection[i], node, i);
3177              }
3178              if (hasScripts) {
3179                doc = scripts[scripts.length - 1].ownerDocument;
3180                jQuery2.map(scripts, restoreScript);
3181                for (i = 0; i < hasScripts; i++) {
3182                  node = scripts[i];
3183                  if (rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery2.contains(doc, node)) {
3184                    if (node.src && (node.type || "").toLowerCase() !== "module") {
3185                      if (jQuery2._evalUrl && !node.noModule) {
3186                        jQuery2._evalUrl(node.src, {
3187                          nonce: node.nonce || node.getAttribute("nonce")
3188                        }, doc);
3189                      }
3190                    } else {
3191                      DOMEval(node.textContent.replace(rcleanScript, ""), node, doc);
3192                    }
3193                  }
3194                }
3195              }
3196            }
3197          }
3198          return collection;
3199        }
3200        function remove(elem, selector3, keepData) {
3201          var node, nodes = selector3 ? jQuery2.filter(selector3, elem) : elem, i = 0;
3202          for (; (node = nodes[i]) != null; i++) {
3203            if (!keepData && node.nodeType === 1) {
3204              jQuery2.cleanData(getAll(node));
3205            }
3206            if (node.parentNode) {
3207              if (keepData && isAttached(node)) {
3208                setGlobalEval(getAll(node, "script"));
3209              }
3210              node.parentNode.removeChild(node);
3211            }
3212          }
3213          return elem;
3214        }
3215        jQuery2.extend({
3216          htmlPrefilter: function(html) {
3217            return html;
3218          },
3219          clone: function(elem, dataAndEvents, deepDataAndEvents) {
3220            var i, l, srcElements, destElements, clone = elem.cloneNode(true), inPage = isAttached(elem);
3221            if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery2.isXMLDoc(elem)) {
3222              destElements = getAll(clone);
3223              srcElements = getAll(elem);
3224              for (i = 0, l = srcElements.length; i < l; i++) {
3225                fixInput(srcElements[i], destElements[i]);
3226              }
3227            }
3228            if (dataAndEvents) {
3229              if (deepDataAndEvents) {
3230                srcElements = srcElements || getAll(elem);
3231                destElements = destElements || getAll(clone);
3232                for (i = 0, l = srcElements.length; i < l; i++) {
3233                  cloneCopyEvent(srcElements[i], destElements[i]);
3234                }
3235              } else {
3236                cloneCopyEvent(elem, clone);
3237              }
3238            }
3239            destElements = getAll(clone, "script");
3240            if (destElements.length > 0) {
3241              setGlobalEval(destElements, !inPage && getAll(elem, "script"));
3242            }
3243            return clone;
3244          },
3245          cleanData: function(elems) {
3246            var data, elem, type, special = jQuery2.event.special, i = 0;
3247            for (; (elem = elems[i]) !== void 0; i++) {
3248              if (acceptData(elem)) {
3249                if (data = elem[dataPriv.expando]) {
3250                  if (data.events) {
3251                    for (type in data.events) {
3252                      if (special[type]) {
3253                        jQuery2.event.remove(elem, type);
3254                      } else {
3255                        jQuery2.removeEvent(elem, type, data.handle);
3256                      }
3257                    }
3258                  }
3259                  elem[dataPriv.expando] = void 0;
3260                }
3261                if (elem[dataUser.expando]) {
3262                  elem[dataUser.expando] = void 0;
3263                }
3264              }
3265            }
3266          }
3267        });
3268        jQuery2.fn.extend({
3269          detach: function(selector3) {
3270            return remove(this, selector3, true);
3271          },
3272          remove: function(selector3) {
3273            return remove(this, selector3);
3274          },
3275          text: function(value) {
3276            return access(this, function(value2) {
3277              return value2 === void 0 ? jQuery2.text(this) : this.empty().each(function() {
3278                if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
3279                  this.textContent = value2;
3280                }
3281              });
3282            }, null, value, arguments.length);
3283          },
3284          append: function() {
3285            return domManip(this, arguments, function(elem) {
3286              if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
3287                var target = manipulationTarget(this, elem);
3288                target.appendChild(elem);
3289              }
3290            });
3291          },
3292          prepend: function() {
3293            return domManip(this, arguments, function(elem) {
3294              if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
3295                var target = manipulationTarget(this, elem);
3296                target.insertBefore(elem, target.firstChild);
3297              }
3298            });
3299          },
3300          before: function() {
3301            return domManip(this, arguments, function(elem) {
3302              if (this.parentNode) {
3303                this.parentNode.insertBefore(elem, this);
3304              }
3305            });
3306          },
3307          after: function() {
3308            return domManip(this, arguments, function(elem) {
3309              if (this.parentNode) {
3310                this.parentNode.insertBefore(elem, this.nextSibling);
3311              }
3312            });
3313          },
3314          empty: function() {
3315            var elem, i = 0;
3316            for (; (elem = this[i]) != null; i++) {
3317              if (elem.nodeType === 1) {
3318                jQuery2.cleanData(getAll(elem, false));
3319                elem.textContent = "";
3320              }
3321            }
3322            return this;
3323          },
3324          clone: function(dataAndEvents, deepDataAndEvents) {
3325            dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
3326            deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
3327            return this.map(function() {
3328              return jQuery2.clone(this, dataAndEvents, deepDataAndEvents);
3329            });
3330          },
3331          html: function(value) {
3332            return access(this, function(value2) {
3333              var elem = this[0] || {}, i = 0, l = this.length;
3334              if (value2 === void 0 && elem.nodeType === 1) {
3335                return elem.innerHTML;
3336              }
3337              if (typeof value2 === "string" && !rnoInnerhtml.test(value2) && !wrapMap[(rtagName.exec(value2) || ["", ""])[1].toLowerCase()]) {
3338                value2 = jQuery2.htmlPrefilter(value2);
3339                try {
3340                  for (; i < l; i++) {
3341                    elem = this[i] || {};
3342                    if (elem.nodeType === 1) {
3343                      jQuery2.cleanData(getAll(elem, false));
3344                      elem.innerHTML = value2;
3345                    }
3346                  }
3347                  elem = 0;
3348                } catch (e) {
3349                }
3350              }
3351              if (elem) {
3352                this.empty().append(value2);
3353              }
3354            }, null, value, arguments.length);
3355          },
3356          replaceWith: function() {
3357            var ignored = [];
3358            return domManip(this, arguments, function(elem) {
3359              var parent = this.parentNode;
3360              if (jQuery2.inArray(this, ignored) < 0) {
3361                jQuery2.cleanData(getAll(this));
3362                if (parent) {
3363                  parent.replaceChild(elem, this);
3364                }
3365              }
3366            }, ignored);
3367          }
3368        });
3369        jQuery2.each({
3370          appendTo: "append",
3371          prependTo: "prepend",
3372          insertBefore: "before",
3373          insertAfter: "after",
3374          replaceAll: "replaceWith"
3375        }, function(name, original) {
3376          jQuery2.fn[name] = function(selector3) {
3377            var elems, ret = [], insert = jQuery2(selector3), last = insert.length - 1, i = 0;
3378            for (; i <= last; i++) {
3379              elems = i === last ? this : this.clone(true);
3380              jQuery2(insert[i])[original](elems);
3381              push.apply(ret, elems.get());
3382            }
3383            return this.pushStack(ret);
3384          };
3385        });
3386        var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i");
3387        var getStyles = function(elem) {
3388          var view = elem.ownerDocument.defaultView;
3389          if (!view || !view.opener) {
3390            view = window2;
3391          }
3392          return view.getComputedStyle(elem);
3393        };
3394        var swap = function(elem, options, callback) {
3395          var ret, name, old = {};
3396          for (name in options) {
3397            old[name] = elem.style[name];
3398            elem.style[name] = options[name];
3399          }
3400          ret = callback.call(elem);
3401          for (name in options) {
3402            elem.style[name] = old[name];
3403          }
3404          return ret;
3405        };
3406        var rboxStyle = new RegExp(cssExpand.join("|"), "i");
3407        (function() {
3408          function computeStyleTests() {
3409            if (!div) {
3410              return;
3411            }
3412            container.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0";
3413            div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%";
3414            documentElement.appendChild(container).appendChild(div);
3415            var divStyle = window2.getComputedStyle(div);
3416            pixelPositionVal = divStyle.top !== "1%";
3417            reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12;
3418            div.style.right = "60%";
3419            pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36;
3420            boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36;
3421            div.style.position = "absolute";
3422            scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;
3423            documentElement.removeChild(container);
3424            div = null;
3425          }
3426          function roundPixelMeasures(measure) {
3427            return Math.round(parseFloat(measure));
3428          }
3429          var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, reliableTrDimensionsVal, reliableMarginLeftVal, container = document2.createElement("div"), div = document2.createElement("div");
3430          if (!div.style) {
3431            return;
3432          }
3433          div.style.backgroundClip = "content-box";
3434          div.cloneNode(true).style.backgroundClip = "";
3435          support.clearCloneStyle = div.style.backgroundClip === "content-box";
3436          jQuery2.extend(support, {
3437            boxSizingReliable: function() {
3438              computeStyleTests();
3439              return boxSizingReliableVal;
3440            },
3441            pixelBoxStyles: function() {
3442              computeStyleTests();
3443              return pixelBoxStylesVal;
3444            },
3445            pixelPosition: function() {
3446              computeStyleTests();
3447              return pixelPositionVal;
3448            },
3449            reliableMarginLeft: function() {
3450              computeStyleTests();
3451              return reliableMarginLeftVal;
3452            },
3453            scrollboxSize: function() {
3454              computeStyleTests();
3455              return scrollboxSizeVal;
3456            },
3457            reliableTrDimensions: function() {
3458              var table, tr, trChild, trStyle;
3459              if (reliableTrDimensionsVal == null) {
3460                table = document2.createElement("table");
3461                tr = document2.createElement("tr");
3462                trChild = document2.createElement("div");
3463                table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
3464                tr.style.cssText = "border:1px solid";
3465                tr.style.height = "1px";
3466                trChild.style.height = "9px";
3467                trChild.style.display = "block";
3468                documentElement.appendChild(table).appendChild(tr).appendChild(trChild);
3469                trStyle = window2.getComputedStyle(tr);
3470                reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;
3471                documentElement.removeChild(table);
3472              }
3473              return reliableTrDimensionsVal;
3474            }
3475          });
3476        })();
3477        function curCSS(elem, name, computed) {
3478          var width, minWidth, maxWidth, ret, style = elem.style;
3479          computed = computed || getStyles(elem);
3480          if (computed) {
3481            ret = computed.getPropertyValue(name) || computed[name];
3482            if (ret === "" && !isAttached(elem)) {
3483              ret = jQuery2.style(elem, name);
3484            }
3485            if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {
3486              width = style.width;
3487              minWidth = style.minWidth;
3488              maxWidth = style.maxWidth;
3489              style.minWidth = style.maxWidth = style.width = ret;
3490              ret = computed.width;
3491              style.width = width;
3492              style.minWidth = minWidth;
3493              style.maxWidth = maxWidth;
3494            }
3495          }
3496          return ret !== void 0 ? ret + "" : ret;
3497        }
3498        function addGetHookIf(conditionFn, hookFn) {
3499          return {
3500            get: function() {
3501              if (conditionFn()) {
3502                delete this.get;
3503                return;
3504              }
3505              return (this.get = hookFn).apply(this, arguments);
3506            }
3507          };
3508        }
3509        var cssPrefixes = ["Webkit", "Moz", "ms"], emptyStyle = document2.createElement("div").style, vendorProps = {};
3510        function vendorPropName(name) {
3511          var capName = name[0].toUpperCase() + name.slice(1), i = cssPrefixes.length;
3512          while (i--) {
3513            name = cssPrefixes[i] + capName;
3514            if (name in emptyStyle) {
3515              return name;
3516            }
3517          }
3518        }
3519        function finalPropName(name) {
3520          var final = jQuery2.cssProps[name] || vendorProps[name];
3521          if (final) {
3522            return final;
3523          }
3524          if (name in emptyStyle) {
3525            return name;
3526          }
3527          return vendorProps[name] = vendorPropName(name) || name;
3528        }
3529        var rdisplayswap = /^(none|table(?!-c[ea]).+)/, rcustomProp = /^--/, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssNormalTransform = {
3530          letterSpacing: "0",
3531          fontWeight: "400"
3532        };
3533        function setPositiveNumber(_elem, value, subtract) {
3534          var matches = rcssNum.exec(value);
3535          return matches ? Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px") : value;
3536        }
3537        function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {
3538          var i = dimension === "width" ? 1 : 0, extra = 0, delta = 0;
3539          if (box === (isBorderBox ? "border" : "content")) {
3540            return 0;
3541          }
3542          for (; i < 4; i += 2) {
3543            if (box === "margin") {
3544              delta += jQuery2.css(elem, box + cssExpand[i], true, styles);
3545            }
3546            if (!isBorderBox) {
3547              delta += jQuery2.css(elem, "padding" + cssExpand[i], true, styles);
3548              if (box !== "padding") {
3549                delta += jQuery2.css(elem, "border" + cssExpand[i] + "Width", true, styles);
3550              } else {
3551                extra += jQuery2.css(elem, "border" + cssExpand[i] + "Width", true, styles);
3552              }
3553            } else {
3554              if (box === "content") {
3555                delta -= jQuery2.css(elem, "padding" + cssExpand[i], true, styles);
3556              }
3557              if (box !== "margin") {
3558                delta -= jQuery2.css(elem, "border" + cssExpand[i] + "Width", true, styles);
3559              }
3560            }
3561          }
3562          if (!isBorderBox && computedVal >= 0) {
3563            delta += Math.max(0, Math.ceil(elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5)) || 0;
3564          }
3565          return delta;
3566        }
3567        function getWidthOrHeight(elem, dimension, extra) {
3568          var styles = getStyles(elem), boxSizingNeeded = !support.boxSizingReliable() || extra, isBorderBox = boxSizingNeeded && jQuery2.css(elem, "boxSizing", false, styles) === "border-box", valueIsBorderBox = isBorderBox, val = curCSS(elem, dimension, styles), offsetProp = "offset" + dimension[0].toUpperCase() + dimension.slice(1);
3569          if (rnumnonpx.test(val)) {
3570            if (!extra) {
3571              return val;
3572            }
3573            val = "auto";
3574          }
3575          if ((!support.boxSizingReliable() && isBorderBox || !support.reliableTrDimensions() && nodeName(elem, "tr") || val === "auto" || !parseFloat(val) && jQuery2.css(elem, "display", false, styles) === "inline") && elem.getClientRects().length) {
3576            isBorderBox = jQuery2.css(elem, "boxSizing", false, styles) === "border-box";
3577            valueIsBorderBox = offsetProp in elem;
3578            if (valueIsBorderBox) {
3579              val = elem[offsetProp];
3580            }
3581          }
3582          val = parseFloat(val) || 0;
3583          return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles, val) + "px";
3584        }
3585        jQuery2.extend({
3586          cssHooks: {
3587            opacity: {
3588              get: function(elem, computed) {
3589                if (computed) {
3590                  var ret = curCSS(elem, "opacity");
3591                  return ret === "" ? "1" : ret;
3592                }
3593              }
3594            }
3595          },
3596          cssNumber: {
3597            "animationIterationCount": true,
3598            "columnCount": true,
3599            "fillOpacity": true,
3600            "flexGrow": true,
3601            "flexShrink": true,
3602            "fontWeight": true,
3603            "gridArea": true,
3604            "gridColumn": true,
3605            "gridColumnEnd": true,
3606            "gridColumnStart": true,
3607            "gridRow": true,
3608            "gridRowEnd": true,
3609            "gridRowStart": true,
3610            "lineHeight": true,
3611            "opacity": true,
3612            "order": true,
3613            "orphans": true,
3614            "widows": true,
3615            "zIndex": true,
3616            "zoom": true
3617          },
3618          cssProps: {},
3619          style: function(elem, name, value, extra) {
3620            if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {
3621              return;
3622            }
3623            var ret, type, hooks, origName = camelCase(name), isCustomProp = rcustomProp.test(name), style = elem.style;
3624            if (!isCustomProp) {
3625              name = finalPropName(origName);
3626            }
3627            hooks = jQuery2.cssHooks[name] || jQuery2.cssHooks[origName];
3628            if (value !== void 0) {
3629              type = typeof value;
3630              if (type === "string" && (ret = rcssNum.exec(value)) && ret[1]) {
3631                value = adjustCSS(elem, name, ret);
3632                type = "number";
3633              }
3634              if (value == null || value !== value) {
3635                return;
3636              }
3637              if (type === "number" && !isCustomProp) {
3638                value += ret && ret[3] || (jQuery2.cssNumber[origName] ? "" : "px");
3639              }
3640              if (!support.clearCloneStyle && value === "" && name.indexOf("background") === 0) {
3641                style[name] = "inherit";
3642              }
3643              if (!hooks || !("set" in hooks) || (value = hooks.set(elem, value, extra)) !== void 0) {
3644                if (isCustomProp) {
3645                  style.setProperty(name, value);
3646                } else {
3647                  style[name] = value;
3648                }
3649              }
3650            } else {
3651              if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== void 0) {
3652                return ret;
3653              }
3654              return style[name];
3655            }
3656          },
3657          css: function(elem, name, extra, styles) {
3658            var val, num, hooks, origName = camelCase(name), isCustomProp = rcustomProp.test(name);
3659            if (!isCustomProp) {
3660              name = finalPropName(origName);
3661            }
3662            hooks = jQuery2.cssHooks[name] || jQuery2.cssHooks[origName];
3663            if (hooks && "get" in hooks) {
3664              val = hooks.get(elem, true, extra);
3665            }
3666            if (val === void 0) {
3667              val = curCSS(elem, name, styles);
3668            }
3669            if (val === "normal" && name in cssNormalTransform) {
3670              val = cssNormalTransform[name];
3671            }
3672            if (extra === "" || extra) {
3673              num = parseFloat(val);
3674              return extra === true || isFinite(num) ? num || 0 : val;
3675            }
3676            return val;
3677          }
3678        });
3679        jQuery2.each(["height", "width"], function(_i2, dimension) {
3680          jQuery2.cssHooks[dimension] = {
3681            get: function(elem, computed, extra) {
3682              if (computed) {
3683                return rdisplayswap.test(jQuery2.css(elem, "display")) && (!elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function() {
3684                  return getWidthOrHeight(elem, dimension, extra);
3685                }) : getWidthOrHeight(elem, dimension, extra);
3686              }
3687            },
3688            set: function(elem, value, extra) {
3689              var matches, styles = getStyles(elem), scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === "absolute", boxSizingNeeded = scrollboxSizeBuggy || extra, isBorderBox = boxSizingNeeded && jQuery2.css(elem, "boxSizing", false, styles) === "border-box", subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0;
3690              if (isBorderBox && scrollboxSizeBuggy) {
3691                subtract -= Math.ceil(elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, "border", false, styles) - 0.5);
3692              }
3693              if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || "px") !== "px") {
3694                elem.style[dimension] = value;
3695                value = jQuery2.css(elem, dimension);
3696              }
3697              return setPositiveNumber(elem, value, subtract);
3698            }
3699          };
3700        });
3701        jQuery2.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function(elem, computed) {
3702          if (computed) {
3703            return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, { marginLeft: 0 }, function() {
3704              return elem.getBoundingClientRect().left;
3705            })) + "px";
3706          }
3707        });
3708        jQuery2.each({
3709          margin: "",
3710          padding: "",
3711          border: "Width"
3712        }, function(prefix, suffix) {
3713          jQuery2.cssHooks[prefix + suffix] = {
3714            expand: function(value) {
3715              var i = 0, expanded = {}, parts = typeof value === "string" ? value.split(" ") : [value];
3716              for (; i < 4; i++) {
3717                expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];
3718              }
3719              return expanded;
3720            }
3721          };
3722          if (prefix !== "margin") {
3723            jQuery2.cssHooks[prefix + suffix].set = setPositiveNumber;
3724          }
3725        });
3726        jQuery2.fn.extend({
3727          css: function(name, value) {
3728            return access(this, function(elem, name2, value2) {
3729              var styles, len, map = {}, i = 0;
3730              if (Array.isArray(name2)) {
3731                styles = getStyles(elem);
3732                len = name2.length;
3733                for (; i < len; i++) {
3734                  map[name2[i]] = jQuery2.css(elem, name2[i], false, styles);
3735                }
3736                return map;
3737              }
3738              return value2 !== void 0 ? jQuery2.style(elem, name2, value2) : jQuery2.css(elem, name2);
3739            }, name, value, arguments.length > 1);
3740          }
3741        });
3742        function Tween2(elem, options, prop, end2, easing) {
3743          return new Tween2.prototype.init(elem, options, prop, end2, easing);
3744        }
3745        jQuery2.Tween = Tween2;
3746        Tween2.prototype = {
3747          constructor: Tween2,
3748          init: function(elem, options, prop, end2, easing, unit) {
3749            this.elem = elem;
3750            this.prop = prop;
3751            this.easing = easing || jQuery2.easing._default;
3752            this.options = options;
3753            this.start = this.now = this.cur();
3754            this.end = end2;
3755            this.unit = unit || (jQuery2.cssNumber[prop] ? "" : "px");
3756          },
3757          cur: function() {
3758            var hooks = Tween2.propHooks[this.prop];
3759            return hooks && hooks.get ? hooks.get(this) : Tween2.propHooks._default.get(this);
3760          },
3761          run: function(percent) {
3762            var eased, hooks = Tween2.propHooks[this.prop];
3763            if (this.options.duration) {
3764              this.pos = eased = jQuery2.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);
3765            } else {
3766              this.pos = eased = percent;
3767            }
3768            this.now = (this.end - this.start) * eased + this.start;
3769            if (this.options.step) {
3770              this.options.step.call(this.elem, this.now, this);
3771            }
3772            if (hooks && hooks.set) {
3773              hooks.set(this);
3774            } else {
3775              Tween2.propHooks._default.set(this);
3776            }
3777            return this;
3778          }
3779        };
3780        Tween2.prototype.init.prototype = Tween2.prototype;
3781        Tween2.propHooks = {
3782          _default: {
3783            get: function(tween) {
3784              var result;
3785              if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {
3786                return tween.elem[tween.prop];
3787              }
3788              result = jQuery2.css(tween.elem, tween.prop, "");
3789              return !result || result === "auto" ? 0 : result;
3790            },
3791            set: function(tween) {
3792              if (jQuery2.fx.step[tween.prop]) {
3793                jQuery2.fx.step[tween.prop](tween);
3794              } else if (tween.elem.nodeType === 1 && (jQuery2.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {
3795                jQuery2.style(tween.elem, tween.prop, tween.now + tween.unit);
3796              } else {
3797                tween.elem[tween.prop] = tween.now;
3798              }
3799            }
3800          }
3801        };
3802        Tween2.propHooks.scrollTop = Tween2.propHooks.scrollLeft = {
3803          set: function(tween) {
3804            if (tween.elem.nodeType && tween.elem.parentNode) {
3805              tween.elem[tween.prop] = tween.now;
3806            }
3807          }
3808        };
3809        jQuery2.easing = {
3810          linear: function(p) {
3811            return p;
3812          },
3813          swing: function(p) {
3814            return 0.5 - Math.cos(p * Math.PI) / 2;
3815          },
3816          _default: "swing"
3817        };
3818        jQuery2.fx = Tween2.prototype.init;
3819        jQuery2.fx.step = {};
3820        var fxNow, inProgress, rfxtypes = /^(?:toggle|show|hide)$/, rrun = /queueHooks$/;
3821        function schedule() {
3822          if (inProgress) {
3823            if (document2.hidden === false && window2.requestAnimationFrame) {
3824              window2.requestAnimationFrame(schedule);
3825            } else {
3826              window2.setTimeout(schedule, jQuery2.fx.interval);
3827            }
3828            jQuery2.fx.tick();
3829          }
3830        }
3831        function createFxNow() {
3832          window2.setTimeout(function() {
3833            fxNow = void 0;
3834          });
3835          return fxNow = Date.now();
3836        }
3837        function genFx(type, includeWidth) {
3838          var which, i = 0, attrs = { height: type };
3839          includeWidth = includeWidth ? 1 : 0;
3840          for (; i < 4; i += 2 - includeWidth) {
3841            which = cssExpand[i];
3842            attrs["margin" + which] = attrs["padding" + which] = type;
3843          }
3844          if (includeWidth) {
3845            attrs.opacity = attrs.width = type;
3846          }
3847          return attrs;
3848        }
3849        function createTween(value, prop, animation) {
3850          var tween, collection = (Animation2.tweeners[prop] || []).concat(Animation2.tweeners["*"]), index = 0, length = collection.length;
3851          for (; index < length; index++) {
3852            if (tween = collection[index].call(animation, prop, value)) {
3853              return tween;
3854            }
3855          }
3856        }
3857        function defaultPrefilter(elem, props, opts) {
3858          var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, isBox = "width" in props || "height" in props, anim = this, orig = {}, style = elem.style, hidden = elem.nodeType && isHiddenWithinTree(elem), dataShow = dataPriv.get(elem, "fxshow");
3859          if (!opts.queue) {
3860            hooks = jQuery2._queueHooks(elem, "fx");
3861            if (hooks.unqueued == null) {
3862              hooks.unqueued = 0;
3863              oldfire = hooks.empty.fire;
3864              hooks.empty.fire = function() {
3865                if (!hooks.unqueued) {
3866                  oldfire();
3867                }
3868              };
3869            }
3870            hooks.unqueued++;
3871            anim.always(function() {
3872              anim.always(function() {
3873                hooks.unqueued--;
3874                if (!jQuery2.queue(elem, "fx").length) {
3875                  hooks.empty.fire();
3876                }
3877              });
3878            });
3879          }
3880          for (prop in props) {
3881            value = props[prop];
3882            if (rfxtypes.test(value)) {
3883              delete props[prop];
3884              toggle = toggle || value === "toggle";
3885              if (value === (hidden ? "hide" : "show")) {
3886                if (value === "show" && dataShow && dataShow[prop] !== void 0) {
3887                  hidden = true;
3888                } else {
3889                  continue;
3890                }
3891              }
3892              orig[prop] = dataShow && dataShow[prop] || jQuery2.style(elem, prop);
3893            }
3894          }
3895          propTween = !jQuery2.isEmptyObject(props);
3896          if (!propTween && jQuery2.isEmptyObject(orig)) {
3897            return;
3898          }
3899          if (isBox && elem.nodeType === 1) {
3900            opts.overflow = [style.overflow, style.overflowX, style.overflowY];
3901            restoreDisplay = dataShow && dataShow.display;
3902            if (restoreDisplay == null) {
3903              restoreDisplay = dataPriv.get(elem, "display");
3904            }
3905            display = jQuery2.css(elem, "display");
3906            if (display === "none") {
3907              if (restoreDisplay) {
3908                display = restoreDisplay;
3909              } else {
3910                showHide([elem], true);
3911                restoreDisplay = elem.style.display || restoreDisplay;
3912                display = jQuery2.css(elem, "display");
3913                showHide([elem]);
3914              }
3915            }
3916            if (display === "inline" || display === "inline-block" && restoreDisplay != null) {
3917              if (jQuery2.css(elem, "float") === "none") {
3918                if (!propTween) {
3919                  anim.done(function() {
3920                    style.display = restoreDisplay;
3921                  });
3922                  if (restoreDisplay == null) {
3923                    display = style.display;
3924                    restoreDisplay = display === "none" ? "" : display;
3925                  }
3926                }
3927                style.display = "inline-block";
3928              }
3929            }
3930          }
3931          if (opts.overflow) {
3932            style.overflow = "hidden";
3933            anim.always(function() {
3934              style.overflow = opts.overflow[0];
3935              style.overflowX = opts.overflow[1];
3936              style.overflowY = opts.overflow[2];
3937            });
3938          }
3939          propTween = false;
3940          for (prop in orig) {
3941            if (!propTween) {
3942              if (dataShow) {
3943                if ("hidden" in dataShow) {
3944                  hidden = dataShow.hidden;
3945                }
3946              } else {
3947                dataShow = dataPriv.access(elem, "fxshow", { display: restoreDisplay });
3948              }
3949              if (toggle) {
3950                dataShow.hidden = !hidden;
3951              }
3952              if (hidden) {
3953                showHide([elem], true);
3954              }
3955              anim.done(function() {
3956                if (!hidden) {
3957                  showHide([elem]);
3958                }
3959                dataPriv.remove(elem, "fxshow");
3960                for (prop in orig) {
3961                  jQuery2.style(elem, prop, orig[prop]);
3962                }
3963              });
3964            }
3965            propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);
3966            if (!(prop in dataShow)) {
3967              dataShow[prop] = propTween.start;
3968              if (hidden) {
3969                propTween.end = propTween.start;
3970                propTween.start = 0;
3971              }
3972            }
3973          }
3974        }
3975        function propFilter(props, specialEasing) {
3976          var index, name, easing, value, hooks;
3977          for (index in props) {
3978            name = camelCase(index);
3979            easing = specialEasing[name];
3980            value = props[index];
3981            if (Array.isArray(value)) {
3982              easing = value[1];
3983              value = props[index] = value[0];
3984            }
3985            if (index !== name) {
3986              props[name] = value;
3987              delete props[index];
3988            }
3989            hooks = jQuery2.cssHooks[name];
3990            if (hooks && "expand" in hooks) {
3991              value = hooks.expand(value);
3992              delete props[name];
3993              for (index in value) {
3994                if (!(index in props)) {
3995                  props[index] = value[index];
3996                  specialEasing[index] = easing;
3997                }
3998              }
3999            } else {
4000              specialEasing[name] = easing;
4001            }
4002          }
4003        }
4004        function Animation2(elem, properties, options) {
4005          var result, stopped, index = 0, length = Animation2.prefilters.length, deferred = jQuery2.Deferred().always(function() {
4006            delete tick.elem;
4007          }), tick = function() {
4008            if (stopped) {
4009              return false;
4010            }
4011            var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime), temp = remaining / animation.duration || 0, percent = 1 - temp, index2 = 0, length2 = animation.tweens.length;
4012            for (; index2 < length2; index2++) {
4013              animation.tweens[index2].run(percent);
4014            }
4015            deferred.notifyWith(elem, [animation, percent, remaining]);
4016            if (percent < 1 && length2) {
4017              return remaining;
4018            }
4019            if (!length2) {
4020              deferred.notifyWith(elem, [animation, 1, 0]);
4021            }
4022            deferred.resolveWith(elem, [animation]);
4023            return false;
4024          }, animation = deferred.promise({
4025            elem,
4026            props: jQuery2.extend({}, properties),
4027            opts: jQuery2.extend(true, {
4028              specialEasing: {},
4029              easing: jQuery2.easing._default
4030            }, options),
4031            originalProperties: properties,
4032            originalOptions: options,
4033            startTime: fxNow || createFxNow(),
4034            duration: options.duration,
4035            tweens: [],
4036            createTween: function(prop, end2) {
4037              var tween = jQuery2.Tween(elem, animation.opts, prop, end2, animation.opts.specialEasing[prop] || animation.opts.easing);
4038              animation.tweens.push(tween);
4039              return tween;
4040            },
4041            stop: function(gotoEnd) {
4042              var index2 = 0, length2 = gotoEnd ? animation.tweens.length : 0;
4043              if (stopped) {
4044                return this;
4045              }
4046              stopped = true;
4047              for (; index2 < length2; index2++) {
4048                animation.tweens[index2].run(1);
4049              }
4050              if (gotoEnd) {
4051                deferred.notifyWith(elem, [animation, 1, 0]);
4052                deferred.resolveWith(elem, [animation, gotoEnd]);
4053              } else {
4054                deferred.rejectWith(elem, [animation, gotoEnd]);
4055              }
4056              return this;
4057            }
4058          }), props = animation.props;
4059          propFilter(props, animation.opts.specialEasing);
4060          for (; index < length; index++) {
4061            result = Animation2.prefilters[index].call(animation, elem, props, animation.opts);
4062            if (result) {
4063              if (isFunction2(result.stop)) {
4064                jQuery2._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);
4065              }
4066              return result;
4067            }
4068          }
4069          jQuery2.map(props, createTween, animation);
4070          if (isFunction2(animation.opts.start)) {
4071            animation.opts.start.call(elem, animation);
4072          }
4073          animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);
4074          jQuery2.fx.timer(jQuery2.extend(tick, {
4075            elem,
4076            anim: animation,
4077            queue: animation.opts.queue
4078          }));
4079          return animation;
4080        }
4081        jQuery2.Animation = jQuery2.extend(Animation2, {
4082          tweeners: {
4083            "*": [function(prop, value) {
4084              var tween = this.createTween(prop, value);
4085              adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);
4086              return tween;
4087            }]
4088          },
4089          tweener: function(props, callback) {
4090            if (isFunction2(props)) {
4091              callback = props;
4092              props = ["*"];
4093            } else {
4094              props = props.match(rnothtmlwhite);
4095            }
4096            var prop, index = 0, length = props.length;
4097            for (; index < length; index++) {
4098              prop = props[index];
4099              Animation2.tweeners[prop] = Animation2.tweeners[prop] || [];
4100              Animation2.tweeners[prop].unshift(callback);
4101            }
4102          },
4103          prefilters: [defaultPrefilter],
4104          prefilter: function(callback, prepend) {
4105            if (prepend) {
4106              Animation2.prefilters.unshift(callback);
4107            } else {
4108              Animation2.prefilters.push(callback);
4109            }
4110          }
4111        });
4112        jQuery2.speed = function(speed, easing, fn2) {
4113          var opt = speed && typeof speed === "object" ? jQuery2.extend({}, speed) : {
4114            complete: fn2 || !fn2 && easing || isFunction2(speed) && speed,
4115            duration: speed,
4116            easing: fn2 && easing || easing && !isFunction2(easing) && easing
4117          };
4118          if (jQuery2.fx.off) {
4119            opt.duration = 0;
4120          } else {
4121            if (typeof opt.duration !== "number") {
4122              if (opt.duration in jQuery2.fx.speeds) {
4123                opt.duration = jQuery2.fx.speeds[opt.duration];
4124              } else {
4125                opt.duration = jQuery2.fx.speeds._default;
4126              }
4127            }
4128          }
4129          if (opt.queue == null || opt.queue === true) {
4130            opt.queue = "fx";
4131          }
4132          opt.old = opt.complete;
4133          opt.complete = function() {
4134            if (isFunction2(opt.old)) {
4135              opt.old.call(this);
4136            }
4137            if (opt.queue) {
4138              jQuery2.dequeue(this, opt.queue);
4139            }
4140          };
4141          return opt;
4142        };
4143        jQuery2.fn.extend({
4144          fadeTo: function(speed, to, easing, callback) {
4145            return this.filter(isHiddenWithinTree).css("opacity", 0).show().end().animate({ opacity: to }, speed, easing, callback);
4146          },
4147          animate: function(prop, speed, easing, callback) {
4148            var empty = jQuery2.isEmptyObject(prop), optall = jQuery2.speed(speed, easing, callback), doAnimation = function() {
4149              var anim = Animation2(this, jQuery2.extend({}, prop), optall);
4150              if (empty || dataPriv.get(this, "finish")) {
4151                anim.stop(true);
4152              }
4153            };
4154            doAnimation.finish = doAnimation;
4155            return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
4156          },
4157          stop: function(type, clearQueue, gotoEnd) {
4158            var stopQueue = function(hooks) {
4159              var stop2 = hooks.stop;
4160              delete hooks.stop;
4161              stop2(gotoEnd);
4162            };
4163            if (typeof type !== "string") {
4164              gotoEnd = clearQueue;
4165              clearQueue = type;
4166              type = void 0;
4167            }
4168            if (clearQueue) {
4169              this.queue(type || "fx", []);
4170            }
4171            return this.each(function() {
4172              var dequeue = true, index = type != null && type + "queueHooks", timers = jQuery2.timers, data = dataPriv.get(this);
4173              if (index) {
4174                if (data[index] && data[index].stop) {
4175                  stopQueue(data[index]);
4176                }
4177              } else {
4178                for (index in data) {
4179                  if (data[index] && data[index].stop && rrun.test(index)) {
4180                    stopQueue(data[index]);
4181                  }
4182                }
4183              }
4184              for (index = timers.length; index--; ) {
4185                if (timers[index].elem === this && (type == null || timers[index].queue === type)) {
4186                  timers[index].anim.stop(gotoEnd);
4187                  dequeue = false;
4188                  timers.splice(index, 1);
4189                }
4190              }
4191              if (dequeue || !gotoEnd) {
4192                jQuery2.dequeue(this, type);
4193              }
4194            });
4195          },
4196          finish: function(type) {
4197            if (type !== false) {
4198              type = type || "fx";
4199            }
4200            return this.each(function() {
4201              var index, data = dataPriv.get(this), queue = data[type + "queue"], hooks = data[type + "queueHooks"], timers = jQuery2.timers, length = queue ? queue.length : 0;
4202              data.finish = true;
4203              jQuery2.queue(this, type, []);
4204              if (hooks && hooks.stop) {
4205                hooks.stop.call(this, true);
4206              }
4207              for (index = timers.length; index--; ) {
4208                if (timers[index].elem === this && timers[index].queue === type) {
4209                  timers[index].anim.stop(true);
4210                  timers.splice(index, 1);
4211                }
4212              }
4213              for (index = 0; index < length; index++) {
4214                if (queue[index] && queue[index].finish) {
4215                  queue[index].finish.call(this);
4216                }
4217              }
4218              delete data.finish;
4219            });
4220          }
4221        });
4222        jQuery2.each(["toggle", "show", "hide"], function(_i2, name) {
4223          var cssFn = jQuery2.fn[name];
4224          jQuery2.fn[name] = function(speed, easing, callback) {
4225            return speed == null || typeof speed === "boolean" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);
4226          };
4227        });
4228        jQuery2.each({
4229          slideDown: genFx("show"),
4230          slideUp: genFx("hide"),
4231          slideToggle: genFx("toggle"),
4232          fadeIn: { opacity: "show" },
4233          fadeOut: { opacity: "hide" },
4234          fadeToggle: { opacity: "toggle" }
4235        }, function(name, props) {
4236          jQuery2.fn[name] = function(speed, easing, callback) {
4237            return this.animate(props, speed, easing, callback);
4238          };
4239        });
4240        jQuery2.timers = [];
4241        jQuery2.fx.tick = function() {
4242          var timer, i = 0, timers = jQuery2.timers;
4243          fxNow = Date.now();
4244          for (; i < timers.length; i++) {
4245            timer = timers[i];
4246            if (!timer() && timers[i] === timer) {
4247              timers.splice(i--, 1);
4248            }
4249          }
4250          if (!timers.length) {
4251            jQuery2.fx.stop();
4252          }
4253          fxNow = void 0;
4254        };
4255        jQuery2.fx.timer = function(timer) {
4256          jQuery2.timers.push(timer);
4257          jQuery2.fx.start();
4258        };
4259        jQuery2.fx.interval = 13;
4260        jQuery2.fx.start = function() {
4261          if (inProgress) {
4262            return;
4263          }
4264          inProgress = true;
4265          schedule();
4266        };
4267        jQuery2.fx.stop = function() {
4268          inProgress = null;
4269        };
4270        jQuery2.fx.speeds = {
4271          slow: 600,
4272          fast: 200,
4273          _default: 400
4274        };
4275        jQuery2.fn.delay = function(time, type) {
4276          time = jQuery2.fx ? jQuery2.fx.speeds[time] || time : time;
4277          type = type || "fx";
4278          return this.queue(type, function(next, hooks) {
4279            var timeout = window2.setTimeout(next, time);
4280            hooks.stop = function() {
4281              window2.clearTimeout(timeout);
4282            };
4283          });
4284        };
4285        (function() {
4286          var input = document2.createElement("input"), select = document2.createElement("select"), opt = select.appendChild(document2.createElement("option"));
4287          input.type = "checkbox";
4288          support.checkOn = input.value !== "";
4289          support.optSelected = opt.selected;
4290          input = document2.createElement("input");
4291          input.value = "t";
4292          input.type = "radio";
4293          support.radioValue = input.value === "t";
4294        })();
4295        var boolHook, attrHandle = jQuery2.expr.attrHandle;
4296        jQuery2.fn.extend({
4297          attr: function(name, value) {
4298            return access(this, jQuery2.attr, name, value, arguments.length > 1);
4299          },
4300          removeAttr: function(name) {
4301            return this.each(function() {
4302              jQuery2.removeAttr(this, name);
4303            });
4304          }
4305        });
4306        jQuery2.extend({
4307          attr: function(elem, name, value) {
4308            var ret, hooks, nType = elem.nodeType;
4309            if (nType === 3 || nType === 8 || nType === 2) {
4310              return;
4311            }
4312            if (typeof elem.getAttribute === "undefined") {
4313              return jQuery2.prop(elem, name, value);
4314            }
4315            if (nType !== 1 || !jQuery2.isXMLDoc(elem)) {
4316              hooks = jQuery2.attrHooks[name.toLowerCase()] || (jQuery2.expr.match.bool.test(name) ? boolHook : void 0);
4317            }
4318            if (value !== void 0) {
4319              if (value === null) {
4320                jQuery2.removeAttr(elem, name);
4321                return;
4322              }
4323              if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== void 0) {
4324                return ret;
4325              }
4326              elem.setAttribute(name, value + "");
4327              return value;
4328            }
4329            if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
4330              return ret;
4331            }
4332            ret = jQuery2.find.attr(elem, name);
4333            return ret == null ? void 0 : ret;
4334          },
4335          attrHooks: {
4336            type: {
4337              set: function(elem, value) {
4338                if (!support.radioValue && value === "radio" && nodeName(elem, "input")) {
4339                  var val = elem.value;
4340                  elem.setAttribute("type", value);
4341                  if (val) {
4342                    elem.value = val;
4343                  }
4344                  return value;
4345                }
4346              }
4347            }
4348          },
4349          removeAttr: function(elem, value) {
4350            var name, i = 0, attrNames = value && value.match(rnothtmlwhite);
4351            if (attrNames && elem.nodeType === 1) {
4352              while (name = attrNames[i++]) {
4353                elem.removeAttribute(name);
4354              }
4355            }
4356          }
4357        });
4358        boolHook = {
4359          set: function(elem, value, name) {
4360            if (value === false) {
4361              jQuery2.removeAttr(elem, name);
4362            } else {
4363              elem.setAttribute(name, name);
4364            }
4365            return name;
4366          }
4367        };
4368        jQuery2.each(jQuery2.expr.match.bool.source.match(/\w+/g), function(_i2, name) {
4369          var getter = attrHandle[name] || jQuery2.find.attr;
4370          attrHandle[name] = function(elem, name2, isXML) {
4371            var ret, handle, lowercaseName = name2.toLowerCase();
4372            if (!isXML) {
4373              handle = attrHandle[lowercaseName];
4374              attrHandle[lowercaseName] = ret;
4375              ret = getter(elem, name2, isXML) != null ? lowercaseName : null;
4376              attrHandle[lowercaseName] = handle;
4377            }
4378            return ret;
4379          };
4380        });
4381        var rfocusable = /^(?:input|select|textarea|button)$/i, rclickable = /^(?:a|area)$/i;
4382        jQuery2.fn.extend({
4383          prop: function(name, value) {
4384            return access(this, jQuery2.prop, name, value, arguments.length > 1);
4385          },
4386          removeProp: function(name) {
4387            return this.each(function() {
4388              delete this[jQuery2.propFix[name] || name];
4389            });
4390          }
4391        });
4392        jQuery2.extend({
4393          prop: function(elem, name, value) {
4394            var ret, hooks, nType = elem.nodeType;
4395            if (nType === 3 || nType === 8 || nType === 2) {
4396              return;
4397            }
4398            if (nType !== 1 || !jQuery2.isXMLDoc(elem)) {
4399              name = jQuery2.propFix[name] || name;
4400              hooks = jQuery2.propHooks[name];
4401            }
4402            if (value !== void 0) {
4403              if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== void 0) {
4404                return ret;
4405              }
4406              return elem[name] = value;
4407            }
4408            if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
4409              return ret;
4410            }
4411            return elem[name];
4412          },
4413          propHooks: {
4414            tabIndex: {
4415              get: function(elem) {
4416                var tabindex = jQuery2.find.attr(elem, "tabindex");
4417                if (tabindex) {
4418                  return parseInt(tabindex, 10);
4419                }
4420                if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {
4421                  return 0;
4422                }
4423                return -1;
4424              }
4425            }
4426          },
4427          propFix: {
4428            "for": "htmlFor",
4429            "class": "className"
4430          }
4431        });
4432        if (!support.optSelected) {
4433          jQuery2.propHooks.selected = {
4434            get: function(elem) {
4435              var parent = elem.parentNode;
4436              if (parent && parent.parentNode) {
4437                parent.parentNode.selectedIndex;
4438              }
4439              return null;
4440            },
4441            set: function(elem) {
4442              var parent = elem.parentNode;
4443              if (parent) {
4444                parent.selectedIndex;
4445                if (parent.parentNode) {
4446                  parent.parentNode.selectedIndex;
4447                }
4448              }
4449            }
4450          };
4451        }
4452        jQuery2.each([
4453          "tabIndex",
4454          "readOnly",
4455          "maxLength",
4456          "cellSpacing",
4457          "cellPadding",
4458          "rowSpan",
4459          "colSpan",
4460          "useMap",
4461          "frameBorder",
4462          "contentEditable"
4463        ], function() {
4464          jQuery2.propFix[this.toLowerCase()] = this;
4465        });
4466        function stripAndCollapse(value) {
4467          var tokens = value.match(rnothtmlwhite) || [];
4468          return tokens.join(" ");
4469        }
4470        function getClass(elem) {
4471          return elem.getAttribute && elem.getAttribute("class") || "";
4472        }
4473        function classesToArray(value) {
4474          if (Array.isArray(value)) {
4475            return value;
4476          }
4477          if (typeof value === "string") {
4478            return value.match(rnothtmlwhite) || [];
4479          }
4480          return [];
4481        }
4482        jQuery2.fn.extend({
4483          addClass: function(value) {
4484            var classes, elem, cur, curValue, clazz, j, finalValue, i = 0;
4485            if (isFunction2(value)) {
4486              return this.each(function(j2) {
4487                jQuery2(this).addClass(value.call(this, j2, getClass(this)));
4488              });
4489            }
4490            classes = classesToArray(value);
4491            if (classes.length) {
4492              while (elem = this[i++]) {
4493                curValue = getClass(elem);
4494                cur = elem.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
4495                if (cur) {
4496                  j = 0;
4497                  while (clazz = classes[j++]) {
4498                    if (cur.indexOf(" " + clazz + " ") < 0) {
4499                      cur += clazz + " ";
4500                    }
4501                  }
4502                  finalValue = stripAndCollapse(cur);
4503                  if (curValue !== finalValue) {
4504                    elem.setAttribute("class", finalValue);
4505                  }
4506                }
4507              }
4508            }
4509            return this;
4510          },
4511          removeClass: function(value) {
4512            var classes, elem, cur, curValue, clazz, j, finalValue, i = 0;
4513            if (isFunction2(value)) {
4514              return this.each(function(j2) {
4515                jQuery2(this).removeClass(value.call(this, j2, getClass(this)));
4516              });
4517            }
4518            if (!arguments.length) {
4519              return this.attr("class", "");
4520            }
4521            classes = classesToArray(value);
4522            if (classes.length) {
4523              while (elem = this[i++]) {
4524                curValue = getClass(elem);
4525                cur = elem.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
4526                if (cur) {
4527                  j = 0;
4528                  while (clazz = classes[j++]) {
4529                    while (cur.indexOf(" " + clazz + " ") > -1) {
4530                      cur = cur.replace(" " + clazz + " ", " ");
4531                    }
4532                  }
4533                  finalValue = stripAndCollapse(cur);
4534                  if (curValue !== finalValue) {
4535                    elem.setAttribute("class", finalValue);
4536                  }
4537                }
4538              }
4539            }
4540            return this;
4541          },
4542          toggleClass: function(value, stateVal) {
4543            var type = typeof value, isValidValue = type === "string" || Array.isArray(value);
4544            if (typeof stateVal === "boolean" && isValidValue) {
4545              return stateVal ? this.addClass(value) : this.removeClass(value);
4546            }
4547            if (isFunction2(value)) {
4548              return this.each(function(i) {
4549                jQuery2(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);
4550              });
4551            }
4552            return this.each(function() {
4553              var className, i, self2, classNames;
4554              if (isValidValue) {
4555                i = 0;
4556                self2 = jQuery2(this);
4557                classNames = classesToArray(value);
4558                while (className = classNames[i++]) {
4559                  if (self2.hasClass(className)) {
4560                    self2.removeClass(className);
4561                  } else {
4562                    self2.addClass(className);
4563                  }
4564                }
4565              } else if (value === void 0 || type === "boolean") {
4566                className = getClass(this);
4567                if (className) {
4568                  dataPriv.set(this, "__className__", className);
4569                }
4570                if (this.setAttribute) {
4571                  this.setAttribute("class", className || value === false ? "" : dataPriv.get(this, "__className__") || "");
4572                }
4573              }
4574            });
4575          },
4576          hasClass: function(selector3) {
4577            var className, elem, i = 0;
4578            className = " " + selector3 + " ";
4579            while (elem = this[i++]) {
4580              if (elem.nodeType === 1 && (" " + stripAndCollapse(getClass(elem)) + " ").indexOf(className) > -1) {
4581                return true;
4582              }
4583            }
4584            return false;
4585          }
4586        });
4587        var rreturn = /\r/g;
4588        jQuery2.fn.extend({
4589          val: function(value) {
4590            var hooks, ret, valueIsFunction, elem = this[0];
4591            if (!arguments.length) {
4592              if (elem) {
4593                hooks = jQuery2.valHooks[elem.type] || jQuery2.valHooks[elem.nodeName.toLowerCase()];
4594                if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== void 0) {
4595                  return ret;
4596                }
4597                ret = elem.value;
4598                if (typeof ret === "string") {
4599                  return ret.replace(rreturn, "");
4600                }
4601                return ret == null ? "" : ret;
4602              }
4603              return;
4604            }
4605            valueIsFunction = isFunction2(value);
4606            return this.each(function(i) {
4607              var val;
4608              if (this.nodeType !== 1) {
4609                return;
4610              }
4611              if (valueIsFunction) {
4612                val = value.call(this, i, jQuery2(this).val());
4613              } else {
4614                val = value;
4615              }
4616              if (val == null) {
4617                val = "";
4618              } else if (typeof val === "number") {
4619                val += "";
4620              } else if (Array.isArray(val)) {
4621                val = jQuery2.map(val, function(value2) {
4622                  return value2 == null ? "" : value2 + "";
4623                });
4624              }
4625              hooks = jQuery2.valHooks[this.type] || jQuery2.valHooks[this.nodeName.toLowerCase()];
4626              if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === void 0) {
4627                this.value = val;
4628              }
4629            });
4630          }
4631        });
4632        jQuery2.extend({
4633          valHooks: {
4634            option: {
4635              get: function(elem) {
4636                var val = jQuery2.find.attr(elem, "value");
4637                return val != null ? val : stripAndCollapse(jQuery2.text(elem));
4638              }
4639            },
4640            select: {
4641              get: function(elem) {
4642                var value, option, i, options = elem.options, index = elem.selectedIndex, one = elem.type === "select-one", values = one ? null : [], max2 = one ? index + 1 : options.length;
4643                if (index < 0) {
4644                  i = max2;
4645                } else {
4646                  i = one ? index : 0;
4647                }
4648                for (; i < max2; i++) {
4649                  option = options[i];
4650                  if ((option.selected || i === index) && !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, "optgroup"))) {
4651                    value = jQuery2(option).val();
4652                    if (one) {
4653                      return value;
4654                    }
4655                    values.push(value);
4656                  }
4657                }
4658                return values;
4659              },
4660              set: function(elem, value) {
4661                var optionSet, option, options = elem.options, values = jQuery2.makeArray(value), i = options.length;
4662                while (i--) {
4663                  option = options[i];
4664                  if (option.selected = jQuery2.inArray(jQuery2.valHooks.option.get(option), values) > -1) {
4665                    optionSet = true;
4666                  }
4667                }
4668                if (!optionSet) {
4669                  elem.selectedIndex = -1;
4670                }
4671                return values;
4672              }
4673            }
4674          }
4675        });
4676        jQuery2.each(["radio", "checkbox"], function() {
4677          jQuery2.valHooks[this] = {
4678            set: function(elem, value) {
4679              if (Array.isArray(value)) {
4680                return elem.checked = jQuery2.inArray(jQuery2(elem).val(), value) > -1;
4681              }
4682            }
4683          };
4684          if (!support.checkOn) {
4685            jQuery2.valHooks[this].get = function(elem) {
4686              return elem.getAttribute("value") === null ? "on" : elem.value;
4687            };
4688          }
4689        });
4690        support.focusin = "onfocusin" in window2;
4691        var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, stopPropagationCallback = function(e) {
4692          e.stopPropagation();
4693        };
4694        jQuery2.extend(jQuery2.event, {
4695          trigger: function(event, data, elem, onlyHandlers) {
4696            var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, eventPath = [elem || document2], type = hasOwn.call(event, "type") ? event.type : event, namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
4697            cur = lastElement = tmp = elem = elem || document2;
4698            if (elem.nodeType === 3 || elem.nodeType === 8) {
4699              return;
4700            }
4701            if (rfocusMorph.test(type + jQuery2.event.triggered)) {
4702              return;
4703            }
4704            if (type.indexOf(".") > -1) {
4705              namespaces = type.split(".");
4706              type = namespaces.shift();
4707              namespaces.sort();
4708            }
4709            ontype = type.indexOf(":") < 0 && "on" + type;
4710            event = event[jQuery2.expando] ? event : new jQuery2.Event(type, typeof event === "object" && event);
4711            event.isTrigger = onlyHandlers ? 2 : 3;
4712            event.namespace = namespaces.join(".");
4713            event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
4714            event.result = void 0;
4715            if (!event.target) {
4716              event.target = elem;
4717            }
4718            data = data == null ? [event] : jQuery2.makeArray(data, [event]);
4719            special = jQuery2.event.special[type] || {};
4720            if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {
4721              return;
4722            }
4723            if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {
4724              bubbleType = special.delegateType || type;
4725              if (!rfocusMorph.test(bubbleType + type)) {
4726                cur = cur.parentNode;
4727              }
4728              for (; cur; cur = cur.parentNode) {
4729                eventPath.push(cur);
4730                tmp = cur;
4731              }
4732              if (tmp === (elem.ownerDocument || document2)) {
4733                eventPath.push(tmp.defaultView || tmp.parentWindow || window2);
4734              }
4735            }
4736            i = 0;
4737            while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {
4738              lastElement = cur;
4739              event.type = i > 1 ? bubbleType : special.bindType || type;
4740              handle = (dataPriv.get(cur, "events") || Object.create(null))[event.type] && dataPriv.get(cur, "handle");
4741              if (handle) {
4742                handle.apply(cur, data);
4743              }
4744              handle = ontype && cur[ontype];
4745              if (handle && handle.apply && acceptData(cur)) {
4746                event.result = handle.apply(cur, data);
4747                if (event.result === false) {
4748                  event.preventDefault();
4749                }
4750              }
4751            }
4752            event.type = type;
4753            if (!onlyHandlers && !event.isDefaultPrevented()) {
4754              if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {
4755                if (ontype && isFunction2(elem[type]) && !isWindow(elem)) {
4756                  tmp = elem[ontype];
4757                  if (tmp) {
4758                    elem[ontype] = null;
4759                  }
4760                  jQuery2.event.triggered = type;
4761                  if (event.isPropagationStopped()) {
4762                    lastElement.addEventListener(type, stopPropagationCallback);
4763                  }
4764                  elem[type]();
4765                  if (event.isPropagationStopped()) {
4766                    lastElement.removeEventListener(type, stopPropagationCallback);
4767                  }
4768                  jQuery2.event.triggered = void 0;
4769                  if (tmp) {
4770                    elem[ontype] = tmp;
4771                  }
4772                }
4773              }
4774            }
4775            return event.result;
4776          },
4777          simulate: function(type, elem, event) {
4778            var e = jQuery2.extend(new jQuery2.Event(), event, {
4779              type,
4780              isSimulated: true
4781            });
4782            jQuery2.event.trigger(e, null, elem);
4783          }
4784        });
4785        jQuery2.fn.extend({
4786          trigger: function(type, data) {
4787            return this.each(function() {
4788              jQuery2.event.trigger(type, data, this);
4789            });
4790          },
4791          triggerHandler: function(type, data) {
4792            var elem = this[0];
4793            if (elem) {
4794              return jQuery2.event.trigger(type, data, elem, true);
4795            }
4796          }
4797        });
4798        if (!support.focusin) {
4799          jQuery2.each({ focus: "focusin", blur: "focusout" }, function(orig, fix) {
4800            var handler = function(event) {
4801              jQuery2.event.simulate(fix, event.target, jQuery2.event.fix(event));
4802            };
4803            jQuery2.event.special[fix] = {
4804              setup: function() {
4805                var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access(doc, fix);
4806                if (!attaches) {
4807                  doc.addEventListener(orig, handler, true);
4808                }
4809                dataPriv.access(doc, fix, (attaches || 0) + 1);
4810              },
4811              teardown: function() {
4812                var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access(doc, fix) - 1;
4813                if (!attaches) {
4814                  doc.removeEventListener(orig, handler, true);
4815                  dataPriv.remove(doc, fix);
4816                } else {
4817                  dataPriv.access(doc, fix, attaches);
4818                }
4819              }
4820            };
4821          });
4822        }
4823        var location = window2.location;
4824        var nonce = { guid: Date.now() };
4825        var rquery = /\?/;
4826        jQuery2.parseXML = function(data) {
4827          var xml, parserErrorElem;
4828          if (!data || typeof data !== "string") {
4829            return null;
4830          }
4831          try {
4832            xml = new window2.DOMParser().parseFromString(data, "text/xml");
4833          } catch (e) {
4834          }
4835          parserErrorElem = xml && xml.getElementsByTagName("parsererror")[0];
4836          if (!xml || parserErrorElem) {
4837            jQuery2.error("Invalid XML: " + (parserErrorElem ? jQuery2.map(parserErrorElem.childNodes, function(el) {
4838              return el.textContent;
4839            }).join("\n") : data));
4840          }
4841          return xml;
4842        };
4843        var rbracket = /\[\]$/, rCRLF = /\r?\n/g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i;
4844        function buildParams(prefix, obj, traditional, add) {
4845          var name;
4846          if (Array.isArray(obj)) {
4847            jQuery2.each(obj, function(i, v) {
4848              if (traditional || rbracket.test(prefix)) {
4849                add(prefix, v);
4850              } else {
4851                buildParams(prefix + "[" + (typeof v === "object" && v != null ? i : "") + "]", v, traditional, add);
4852              }
4853            });
4854          } else if (!traditional && toType(obj) === "object") {
4855            for (name in obj) {
4856              buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
4857            }
4858          } else {
4859            add(prefix, obj);
4860          }
4861        }
4862        jQuery2.param = function(a, traditional) {
4863          var prefix, s = [], add = function(key, valueOrFunction) {
4864            var value = isFunction2(valueOrFunction) ? valueOrFunction() : valueOrFunction;
4865            s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value == null ? "" : value);
4866          };
4867          if (a == null) {
4868            return "";
4869          }
4870          if (Array.isArray(a) || a.jquery && !jQuery2.isPlainObject(a)) {
4871            jQuery2.each(a, function() {
4872              add(this.name, this.value);
4873            });
4874          } else {
4875            for (prefix in a) {
4876              buildParams(prefix, a[prefix], traditional, add);
4877            }
4878          }
4879          return s.join("&");
4880        };
4881        jQuery2.fn.extend({
4882          serialize: function() {
4883            return jQuery2.param(this.serializeArray());
4884          },
4885          serializeArray: function() {
4886            return this.map(function() {
4887              var elements = jQuery2.prop(this, "elements");
4888              return elements ? jQuery2.makeArray(elements) : this;
4889            }).filter(function() {
4890              var type = this.type;
4891              return this.name && !jQuery2(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));
4892            }).map(function(_i2, elem) {
4893              var val = jQuery2(this).val();
4894              if (val == null) {
4895                return null;
4896              }
4897              if (Array.isArray(val)) {
4898                return jQuery2.map(val, function(val2) {
4899                  return { name: elem.name, value: val2.replace(rCRLF, "\r\n") };
4900                });
4901              }
4902              return { name: elem.name, value: val.replace(rCRLF, "\r\n") };
4903            }).get();
4904          }
4905        });
4906        var r20 = /%20/g, rhash = /#.*$/, rantiCache = /([?&])_=[^&]*/, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, prefilters = {}, transports = {}, allTypes = "*/".concat("*"), originAnchor = document2.createElement("a");
4907        originAnchor.href = location.href;
4908        function addToPrefiltersOrTransports(structure) {
4909          return function(dataTypeExpression, func) {
4910            if (typeof dataTypeExpression !== "string") {
4911              func = dataTypeExpression;
4912              dataTypeExpression = "*";
4913            }
4914            var dataType, i = 0, dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];
4915            if (isFunction2(func)) {
4916              while (dataType = dataTypes[i++]) {
4917                if (dataType[0] === "+") {
4918                  dataType = dataType.slice(1) || "*";
4919                  (structure[dataType] = structure[dataType] || []).unshift(func);
4920                } else {
4921                  (structure[dataType] = structure[dataType] || []).push(func);
4922                }
4923              }
4924            }
4925          };
4926        }
4927        function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
4928          var inspected = {}, seekingTransport = structure === transports;
4929          function inspect(dataType) {
4930            var selected;
4931            inspected[dataType] = true;
4932            jQuery2.each(structure[dataType] || [], function(_2, prefilterOrFactory) {
4933              var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
4934              if (typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[dataTypeOrTransport]) {
4935                options.dataTypes.unshift(dataTypeOrTransport);
4936                inspect(dataTypeOrTransport);
4937                return false;
4938              } else if (seekingTransport) {
4939                return !(selected = dataTypeOrTransport);
4940              }
4941            });
4942            return selected;
4943          }
4944          return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*");
4945        }
4946        function ajaxExtend(target, src) {
4947          var key, deep, flatOptions = jQuery2.ajaxSettings.flatOptions || {};
4948          for (key in src) {
4949            if (src[key] !== void 0) {
4950              (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];
4951            }
4952          }
4953          if (deep) {
4954            jQuery2.extend(true, target, deep);
4955          }
4956          return target;
4957        }
4958        function ajaxHandleResponses(s, jqXHR, responses) {
4959          var ct, type, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes;
4960          while (dataTypes[0] === "*") {
4961            dataTypes.shift();
4962            if (ct === void 0) {
4963              ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
4964            }
4965          }
4966          if (ct) {
4967            for (type in contents) {
4968              if (contents[type] && contents[type].test(ct)) {
4969                dataTypes.unshift(type);
4970                break;
4971              }
4972            }
4973          }
4974          if (dataTypes[0] in responses) {
4975            finalDataType = dataTypes[0];
4976          } else {
4977            for (type in responses) {
4978              if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
4979                finalDataType = type;
4980                break;
4981              }
4982              if (!firstDataType) {
4983                firstDataType = type;
4984              }
4985            }
4986            finalDataType = finalDataType || firstDataType;
4987          }
4988          if (finalDataType) {
4989            if (finalDataType !== dataTypes[0]) {
4990              dataTypes.unshift(finalDataType);
4991            }
4992            return responses[finalDataType];
4993          }
4994        }
4995        function ajaxConvert(s, response, jqXHR, isSuccess) {
4996          var conv2, current, conv, tmp, prev, converters = {}, dataTypes = s.dataTypes.slice();
4997          if (dataTypes[1]) {
4998            for (conv in s.converters) {
4999              converters[conv.toLowerCase()] = s.converters[conv];
5000            }
5001          }
5002          current = dataTypes.shift();
5003          while (current) {
5004            if (s.responseFields[current]) {
5005              jqXHR[s.responseFields[current]] = response;
5006            }
5007            if (!prev && isSuccess && s.dataFilter) {
5008              response = s.dataFilter(response, s.dataType);
5009            }
5010            prev = current;
5011            current = dataTypes.shift();
5012            if (current) {
5013              if (current === "*") {
5014                current = prev;
5015              } else if (prev !== "*" && prev !== current) {
5016                conv = converters[prev + " " + current] || converters["* " + current];
5017                if (!conv) {
5018                  for (conv2 in converters) {
5019                    tmp = conv2.split(" ");
5020                    if (tmp[1] === current) {
5021                      conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]];
5022                      if (conv) {
5023                        if (conv === true) {
5024                          conv = converters[conv2];
5025                        } else if (converters[conv2] !== true) {
5026                          current = tmp[0];
5027                          dataTypes.unshift(tmp[1]);
5028                        }
5029                        break;
5030                      }
5031                    }
5032                  }
5033                }
5034                if (conv !== true) {
5035                  if (conv && s.throws) {
5036                    response = conv(response);
5037                  } else {
5038                    try {
5039                      response = conv(response);
5040                    } catch (e) {
5041                      return {
5042                        state: "parsererror",
5043                        error: conv ? e : "No conversion from " + prev + " to " + current
5044                      };
5045                    }
5046                  }
5047                }
5048              }
5049            }
5050          }
5051          return { state: "success", data: response };
5052        }
5053        jQuery2.extend({
5054          active: 0,
5055          lastModified: {},
5056          etag: {},
5057          ajaxSettings: {
5058            url: location.href,
5059            type: "GET",
5060            isLocal: rlocalProtocol.test(location.protocol),
5061            global: true,
5062            processData: true,
5063            async: true,
5064            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
5065            accepts: {
5066              "*": allTypes,
5067              text: "text/plain",
5068              html: "text/html",
5069              xml: "application/xml, text/xml",
5070              json: "application/json, text/javascript"
5071            },
5072            contents: {
5073              xml: /\bxml\b/,
5074              html: /\bhtml/,
5075              json: /\bjson\b/
5076            },
5077            responseFields: {
5078              xml: "responseXML",
5079              text: "responseText",
5080              json: "responseJSON"
5081            },
5082            converters: {
5083              "* text": String,
5084              "text html": true,
5085              "text json": JSON.parse,
5086              "text xml": jQuery2.parseXML
5087            },
5088            flatOptions: {
5089              url: true,
5090              context: true
5091            }
5092          },
5093          ajaxSetup: function(target, settings) {
5094            return settings ? ajaxExtend(ajaxExtend(target, jQuery2.ajaxSettings), settings) : ajaxExtend(jQuery2.ajaxSettings, target);
5095          },
5096          ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
5097          ajaxTransport: addToPrefiltersOrTransports(transports),
5098          ajax: function(url, options) {
5099            if (typeof url === "object") {
5100              options = url;
5101              url = void 0;
5102            }
5103            options = options || {};
5104            var transport, cacheURL, responseHeadersString, responseHeaders, timeoutTimer, urlAnchor, completed2, fireGlobals, i, uncached, s = jQuery2.ajaxSetup({}, options), callbackContext = s.context || s, globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery2(callbackContext) : jQuery2.event, deferred = jQuery2.Deferred(), completeDeferred = jQuery2.Callbacks("once memory"), statusCode = s.statusCode || {}, requestHeaders = {}, requestHeadersNames = {}, strAbort = "canceled", jqXHR = {
5105              readyState: 0,
5106              getResponseHeader: function(key) {
5107                var match;
5108                if (completed2) {
5109                  if (!responseHeaders) {
5110                    responseHeaders = {};
5111                    while (match = rheaders.exec(responseHeadersString)) {
5112                      responseHeaders[match[1].toLowerCase() + " "] = (responseHeaders[match[1].toLowerCase() + " "] || []).concat(match[2]);
5113                    }
5114                  }
5115                  match = responseHeaders[key.toLowerCase() + " "];
5116                }
5117                return match == null ? null : match.join(", ");
5118              },
5119              getAllResponseHeaders: function() {
5120                return completed2 ? responseHeadersString : null;
5121              },
5122              setRequestHeader: function(name, value) {
5123                if (completed2 == null) {
5124                  name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;
5125                  requestHeaders[name] = value;
5126                }
5127                return this;
5128              },
5129              overrideMimeType: function(type) {
5130                if (completed2 == null) {
5131                  s.mimeType = type;
5132                }
5133                return this;
5134              },
5135              statusCode: function(map) {
5136                var code;
5137                if (map) {
5138                  if (completed2) {
5139                    jqXHR.always(map[jqXHR.status]);
5140                  } else {
5141                    for (code in map) {
5142                      statusCode[code] = [statusCode[code], map[code]];
5143                    }
5144                  }
5145                }
5146                return this;
5147              },
5148              abort: function(statusText) {
5149                var finalText = statusText || strAbort;
5150                if (transport) {
5151                  transport.abort(finalText);
5152                }
5153                done(0, finalText);
5154                return this;
5155              }
5156            };
5157            deferred.promise(jqXHR);
5158            s.url = ((url || s.url || location.href) + "").replace(rprotocol, location.protocol + "//");
5159            s.type = options.method || options.type || s.method || s.type;
5160            s.dataTypes = (s.dataType || "*").toLowerCase().match(rnothtmlwhite) || [""];
5161            if (s.crossDomain == null) {
5162              urlAnchor = document2.createElement("a");
5163              try {
5164                urlAnchor.href = s.url;
5165                urlAnchor.href = urlAnchor.href;
5166                s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host;
5167              } catch (e) {
5168                s.crossDomain = true;
5169              }
5170            }
5171            if (s.data && s.processData && typeof s.data !== "string") {
5172              s.data = jQuery2.param(s.data, s.traditional);
5173            }
5174            inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);
5175            if (completed2) {
5176              return jqXHR;
5177            }
5178            fireGlobals = jQuery2.event && s.global;
5179            if (fireGlobals && jQuery2.active++ === 0) {
5180              jQuery2.event.trigger("ajaxStart");
5181            }
5182            s.type = s.type.toUpperCase();
5183            s.hasContent = !rnoContent.test(s.type);
5184            cacheURL = s.url.replace(rhash, "");
5185            if (!s.hasContent) {
5186              uncached = s.url.slice(cacheURL.length);
5187              if (s.data && (s.processData || typeof s.data === "string")) {
5188                cacheURL += (rquery.test(cacheURL) ? "&" : "?") + s.data;
5189                delete s.data;
5190              }
5191              if (s.cache === false) {
5192                cacheURL = cacheURL.replace(rantiCache, "$1");
5193                uncached = (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce.guid++ + uncached;
5194              }
5195              s.url = cacheURL + uncached;
5196            } else if (s.data && s.processData && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0) {
5197              s.data = s.data.replace(r20, "+");
5198            }
5199            if (s.ifModified) {
5200              if (jQuery2.lastModified[cacheURL]) {
5201                jqXHR.setRequestHeader("If-Modified-Since", jQuery2.lastModified[cacheURL]);
5202              }
5203              if (jQuery2.etag[cacheURL]) {
5204                jqXHR.setRequestHeader("If-None-Match", jQuery2.etag[cacheURL]);
5205              }
5206            }
5207            if (s.data && s.hasContent && s.contentType !== false || options.contentType) {
5208              jqXHR.setRequestHeader("Content-Type", s.contentType);
5209            }
5210            jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]);
5211            for (i in s.headers) {
5212              jqXHR.setRequestHeader(i, s.headers[i]);
5213            }
5214            if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed2)) {
5215              return jqXHR.abort();
5216            }
5217            strAbort = "abort";
5218            completeDeferred.add(s.complete);
5219            jqXHR.done(s.success);
5220            jqXHR.fail(s.error);
5221            transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);
5222            if (!transport) {
5223              done(-1, "No Transport");
5224            } else {
5225              jqXHR.readyState = 1;
5226              if (fireGlobals) {
5227                globalEventContext.trigger("ajaxSend", [jqXHR, s]);
5228              }
5229              if (completed2) {
5230                return jqXHR;
5231              }
5232              if (s.async && s.timeout > 0) {
5233                timeoutTimer = window2.setTimeout(function() {
5234                  jqXHR.abort("timeout");
5235                }, s.timeout);
5236              }
5237              try {
5238                completed2 = false;
5239                transport.send(requestHeaders, done);
5240              } catch (e) {
5241                if (completed2) {
5242                  throw e;
5243                }
5244                done(-1, e);
5245              }
5246            }
5247            function done(status, nativeStatusText, responses, headers) {
5248              var isSuccess, success, error, response, modified, statusText = nativeStatusText;
5249              if (completed2) {
5250                return;
5251              }
5252              completed2 = true;
5253              if (timeoutTimer) {
5254                window2.clearTimeout(timeoutTimer);
5255              }
5256              transport = void 0;
5257              responseHeadersString = headers || "";
5258              jqXHR.readyState = status > 0 ? 4 : 0;
5259              isSuccess = status >= 200 && status < 300 || status === 304;
5260              if (responses) {
5261                response = ajaxHandleResponses(s, jqXHR, responses);
5262              }
5263              if (!isSuccess && jQuery2.inArray("script", s.dataTypes) > -1 && jQuery2.inArray("json", s.dataTypes) < 0) {
5264                s.converters["text script"] = function() {
5265                };
5266              }
5267              response = ajaxConvert(s, response, jqXHR, isSuccess);
5268              if (isSuccess) {
5269                if (s.ifModified) {
5270                  modified = jqXHR.getResponseHeader("Last-Modified");
5271                  if (modified) {
5272                    jQuery2.lastModified[cacheURL] = modified;
5273                  }
5274                  modified = jqXHR.getResponseHeader("etag");
5275                  if (modified) {
5276                    jQuery2.etag[cacheURL] = modified;
5277                  }
5278                }
5279                if (status === 204 || s.type === "HEAD") {
5280                  statusText = "nocontent";
5281                } else if (status === 304) {
5282                  statusText = "notmodified";
5283                } else {
5284                  statusText = response.state;
5285                  success = response.data;
5286                  error = response.error;
5287                  isSuccess = !error;
5288                }
5289              } else {
5290                error = statusText;
5291                if (status || !statusText) {
5292                  statusText = "error";
5293                  if (status < 0) {
5294                    status = 0;
5295                  }
5296                }
5297              }
5298              jqXHR.status = status;
5299              jqXHR.statusText = (nativeStatusText || statusText) + "";
5300              if (isSuccess) {
5301                deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);
5302              } else {
5303                deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);
5304              }
5305              jqXHR.statusCode(statusCode);
5306              statusCode = void 0;
5307              if (fireGlobals) {
5308                globalEventContext.trigger(isSuccess ? "ajaxSuccess" : "ajaxError", [jqXHR, s, isSuccess ? success : error]);
5309              }
5310              completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);
5311              if (fireGlobals) {
5312                globalEventContext.trigger("ajaxComplete", [jqXHR, s]);
5313                if (!--jQuery2.active) {
5314                  jQuery2.event.trigger("ajaxStop");
5315                }
5316              }
5317            }
5318            return jqXHR;
5319          },
5320          getJSON: function(url, data, callback) {
5321            return jQuery2.get(url, data, callback, "json");
5322          },
5323          getScript: function(url, callback) {
5324            return jQuery2.get(url, void 0, callback, "script");
5325          }
5326        });
5327        jQuery2.each(["get", "post"], function(_i2, method) {
5328          jQuery2[method] = function(url, data, callback, type) {
5329            if (isFunction2(data)) {
5330              type = type || callback;
5331              callback = data;
5332              data = void 0;
5333            }
5334            return jQuery2.ajax(jQuery2.extend({
5335              url,
5336              type: method,
5337              dataType: type,
5338              data,
5339              success: callback
5340            }, jQuery2.isPlainObject(url) && url));
5341          };
5342        });
5343        jQuery2.ajaxPrefilter(function(s) {
5344          var i;
5345          for (i in s.headers) {
5346            if (i.toLowerCase() === "content-type") {
5347              s.contentType = s.headers[i] || "";
5348            }
5349          }
5350        });
5351        jQuery2._evalUrl = function(url, options, doc) {
5352          return jQuery2.ajax({
5353            url,
5354            type: "GET",
5355            dataType: "script",
5356            cache: true,
5357            async: false,
5358            global: false,
5359            converters: {
5360              "text script": function() {
5361              }
5362            },
5363            dataFilter: function(response) {
5364              jQuery2.globalEval(response, options, doc);
5365            }
5366          });
5367        };
5368        jQuery2.fn.extend({
5369          wrapAll: function(html) {
5370            var wrap3;
5371            if (this[0]) {
5372              if (isFunction2(html)) {
5373                html = html.call(this[0]);
5374              }
5375              wrap3 = jQuery2(html, this[0].ownerDocument).eq(0).clone(true);
5376              if (this[0].parentNode) {
5377                wrap3.insertBefore(this[0]);
5378              }
5379              wrap3.map(function() {
5380                var elem = this;
5381                while (elem.firstElementChild) {
5382                  elem = elem.firstElementChild;
5383                }
5384                return elem;
5385              }).append(this);
5386            }
5387            return this;
5388          },
5389          wrapInner: function(html) {
5390            if (isFunction2(html)) {
5391              return this.each(function(i) {
5392                jQuery2(this).wrapInner(html.call(this, i));
5393              });
5394            }
5395            return this.each(function() {
5396              var self2 = jQuery2(this), contents = self2.contents();
5397              if (contents.length) {
5398                contents.wrapAll(html);
5399              } else {
5400                self2.append(html);
5401              }
5402            });
5403          },
5404          wrap: function(html) {
5405            var htmlIsFunction = isFunction2(html);
5406            return this.each(function(i) {
5407              jQuery2(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);
5408            });
5409          },
5410          unwrap: function(selector3) {
5411            this.parent(selector3).not("body").each(function() {
5412              jQuery2(this).replaceWith(this.childNodes);
5413            });
5414            return this;
5415          }
5416        });
5417        jQuery2.expr.pseudos.hidden = function(elem) {
5418          return !jQuery2.expr.pseudos.visible(elem);
5419        };
5420        jQuery2.expr.pseudos.visible = function(elem) {
5421          return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
5422        };
5423        jQuery2.ajaxSettings.xhr = function() {
5424          try {
5425            return new window2.XMLHttpRequest();
5426          } catch (e) {
5427          }
5428        };
5429        var xhrSuccessStatus = {
5430          0: 200,
5431          1223: 204
5432        }, xhrSupported = jQuery2.ajaxSettings.xhr();
5433        support.cors = !!xhrSupported && "withCredentials" in xhrSupported;
5434        support.ajax = xhrSupported = !!xhrSupported;
5435        jQuery2.ajaxTransport(function(options) {
5436          var callback, errorCallback;
5437          if (support.cors || xhrSupported && !options.crossDomain) {
5438            return {
5439              send: function(headers, complete) {
5440                var i, xhr = options.xhr();
5441                xhr.open(options.type, options.url, options.async, options.username, options.password);
5442                if (options.xhrFields) {
5443                  for (i in options.xhrFields) {
5444                    xhr[i] = options.xhrFields[i];
5445                  }
5446                }
5447                if (options.mimeType && xhr.overrideMimeType) {
5448                  xhr.overrideMimeType(options.mimeType);
5449                }
5450                if (!options.crossDomain && !headers["X-Requested-With"]) {
5451                  headers["X-Requested-With"] = "XMLHttpRequest";
5452                }
5453                for (i in headers) {
5454                  xhr.setRequestHeader(i, headers[i]);
5455                }
5456                callback = function(type) {
5457                  return function() {
5458                    if (callback) {
5459                      callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;
5460                      if (type === "abort") {
5461                        xhr.abort();
5462                      } else if (type === "error") {
5463                        if (typeof xhr.status !== "number") {
5464                          complete(0, "error");
5465                        } else {
5466                          complete(xhr.status, xhr.statusText);
5467                        }
5468                      } else {
5469                        complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, (xhr.responseType || "text") !== "text" || typeof xhr.responseText !== "string" ? { binary: xhr.response } : { text: xhr.responseText }, xhr.getAllResponseHeaders());
5470                      }
5471                    }
5472                  };
5473                };
5474                xhr.onload = callback();
5475                errorCallback = xhr.onerror = xhr.ontimeout = callback("error");
5476                if (xhr.onabort !== void 0) {
5477                  xhr.onabort = errorCallback;
5478                } else {
5479                  xhr.onreadystatechange = function() {
5480                    if (xhr.readyState === 4) {
5481                      window2.setTimeout(function() {
5482                        if (callback) {
5483                          errorCallback();
5484                        }
5485                      });
5486                    }
5487                  };
5488                }
5489                callback = callback("abort");
5490                try {
5491                  xhr.send(options.hasContent && options.data || null);
5492                } catch (e) {
5493                  if (callback) {
5494                    throw e;
5495                  }
5496                }
5497              },
5498              abort: function() {
5499                if (callback) {
5500                  callback();
5501                }
5502              }
5503            };
5504          }
5505        });
5506        jQuery2.ajaxPrefilter(function(s) {
5507          if (s.crossDomain) {
5508            s.contents.script = false;
5509          }
5510        });
5511        jQuery2.ajaxSetup({
5512          accepts: {
5513            script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
5514          },
5515          contents: {
5516            script: /\b(?:java|ecma)script\b/
5517          },
5518          converters: {
5519            "text script": function(text) {
5520              jQuery2.globalEval(text);
5521              return text;
5522            }
5523          }
5524        });
5525        jQuery2.ajaxPrefilter("script", function(s) {
5526          if (s.cache === void 0) {
5527            s.cache = false;
5528          }
5529          if (s.crossDomain) {
5530            s.type = "GET";
5531          }
5532        });
5533        jQuery2.ajaxTransport("script", function(s) {
5534          if (s.crossDomain || s.scriptAttrs) {
5535            var script, callback;
5536            return {
5537              send: function(_2, complete) {
5538                script = jQuery2("<script>").attr(s.scriptAttrs || {}).prop({ charset: s.scriptCharset, src: s.url }).on("load error", callback = function(evt) {
5539                  script.remove();
5540                  callback = null;
5541                  if (evt) {
5542                    complete(evt.type === "error" ? 404 : 200, evt.type);
5543                  }
5544                });
5545                document2.head.appendChild(script[0]);
5546              },
5547              abort: function() {
5548                if (callback) {
5549                  callback();
5550                }
5551              }
5552            };
5553          }
5554        });
5555        var oldCallbacks = [], rjsonp = /(=)\?(?=&|$)|\?\?/;
5556        jQuery2.ajaxSetup({
5557          jsonp: "callback",
5558          jsonpCallback: function() {
5559            var callback = oldCallbacks.pop() || jQuery2.expando + "_" + nonce.guid++;
5560            this[callback] = true;
5561            return callback;
5562          }
5563        });
5564        jQuery2.ajaxPrefilter("json jsonp", function(s, originalSettings, jqXHR) {
5565          var callbackName, overwritten, responseContainer, jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? "url" : typeof s.data === "string" && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0 && rjsonp.test(s.data) && "data");
5566          if (jsonProp || s.dataTypes[0] === "jsonp") {
5567            callbackName = s.jsonpCallback = isFunction2(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;
5568            if (jsonProp) {
5569              s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName);
5570            } else if (s.jsonp !== false) {
5571              s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName;
5572            }
5573            s.converters["script json"] = function() {
5574              if (!responseContainer) {
5575                jQuery2.error(callbackName + " was not called");
5576              }
5577              return responseContainer[0];
5578            };
5579            s.dataTypes[0] = "json";
5580            overwritten = window2[callbackName];
5581            window2[callbackName] = function() {
5582              responseContainer = arguments;
5583            };
5584            jqXHR.always(function() {
5585              if (overwritten === void 0) {
5586                jQuery2(window2).removeProp(callbackName);
5587              } else {
5588                window2[callbackName] = overwritten;
5589              }
5590              if (s[callbackName]) {
5591                s.jsonpCallback = originalSettings.jsonpCallback;
5592                oldCallbacks.push(callbackName);
5593              }
5594              if (responseContainer && isFunction2(overwritten)) {
5595                overwritten(responseContainer[0]);
5596              }
5597              responseContainer = overwritten = void 0;
5598            });
5599            return "script";
5600          }
5601        });
5602        support.createHTMLDocument = function() {
5603          var body = document2.implementation.createHTMLDocument("").body;
5604          body.innerHTML = "<form></form><form></form>";
5605          return body.childNodes.length === 2;
5606        }();
5607        jQuery2.parseHTML = function(data, context, keepScripts) {
5608          if (typeof data !== "string") {
5609            return [];
5610          }
5611          if (typeof context === "boolean") {
5612            keepScripts = context;
5613            context = false;
5614          }
5615          var base, parsed, scripts;
5616          if (!context) {
5617            if (support.createHTMLDocument) {
5618              context = document2.implementation.createHTMLDocument("");
5619              base = context.createElement("base");
5620              base.href = document2.location.href;
5621              context.head.appendChild(base);
5622            } else {
5623              context = document2;
5624            }
5625          }
5626          parsed = rsingleTag.exec(data);
5627          scripts = !keepScripts && [];
5628          if (parsed) {
5629            return [context.createElement(parsed[1])];
5630          }
5631          parsed = buildFragment([data], context, scripts);
5632          if (scripts && scripts.length) {
5633            jQuery2(scripts).remove();
5634          }
5635          return jQuery2.merge([], parsed.childNodes);
5636        };
5637        jQuery2.fn.load = function(url, params, callback) {
5638          var selector3, type, response, self2 = this, off = url.indexOf(" ");
5639          if (off > -1) {
5640            selector3 = stripAndCollapse(url.slice(off));
5641            url = url.slice(0, off);
5642          }
5643          if (isFunction2(params)) {
5644            callback = params;
5645            params = void 0;
5646          } else if (params && typeof params === "object") {
5647            type = "POST";
5648          }
5649          if (self2.length > 0) {
5650            jQuery2.ajax({
5651              url,
5652              type: type || "GET",
5653              dataType: "html",
5654              data: params
5655            }).done(function(responseText) {
5656              response = arguments;
5657              self2.html(selector3 ? jQuery2("<div>").append(jQuery2.parseHTML(responseText)).find(selector3) : responseText);
5658            }).always(callback && function(jqXHR, status) {
5659              self2.each(function() {
5660                callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);
5661              });
5662            });
5663          }
5664          return this;
5665        };
5666        jQuery2.expr.pseudos.animated = function(elem) {
5667          return jQuery2.grep(jQuery2.timers, function(fn2) {
5668            return elem === fn2.elem;
5669          }).length;
5670        };
5671        jQuery2.offset = {
5672          setOffset: function(elem, options, i) {
5673            var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, position = jQuery2.css(elem, "position"), curElem = jQuery2(elem), props = {};
5674            if (position === "static") {
5675              elem.style.position = "relative";
5676            }
5677            curOffset = curElem.offset();
5678            curCSSTop = jQuery2.css(elem, "top");
5679            curCSSLeft = jQuery2.css(elem, "left");
5680            calculatePosition = (position === "absolute" || position === "fixed") && (curCSSTop + curCSSLeft).indexOf("auto") > -1;
5681            if (calculatePosition) {
5682              curPosition = curElem.position();
5683              curTop = curPosition.top;
5684              curLeft = curPosition.left;
5685            } else {
5686              curTop = parseFloat(curCSSTop) || 0;
5687              curLeft = parseFloat(curCSSLeft) || 0;
5688            }
5689            if (isFunction2(options)) {
5690              options = options.call(elem, i, jQuery2.extend({}, curOffset));
5691            }
5692            if (options.top != null) {
5693              props.top = options.top - curOffset.top + curTop;
5694            }
5695            if (options.left != null) {
5696              props.left = options.left - curOffset.left + curLeft;
5697            }
5698            if ("using" in options) {
5699              options.using.call(elem, props);
5700            } else {
5701              curElem.css(props);
5702            }
5703          }
5704        };
5705        jQuery2.fn.extend({
5706          offset: function(options) {
5707            if (arguments.length) {
5708              return options === void 0 ? this : this.each(function(i) {
5709                jQuery2.offset.setOffset(this, options, i);
5710              });
5711            }
5712            var rect, win, elem = this[0];
5713            if (!elem) {
5714              return;
5715            }
5716            if (!elem.getClientRects().length) {
5717              return { top: 0, left: 0 };
5718            }
5719            rect = elem.getBoundingClientRect();
5720            win = elem.ownerDocument.defaultView;
5721            return {
5722              top: rect.top + win.pageYOffset,
5723              left: rect.left + win.pageXOffset
5724            };
5725          },
5726          position: function() {
5727            if (!this[0]) {
5728              return;
5729            }
5730            var offsetParent, offset2, doc, elem = this[0], parentOffset = { top: 0, left: 0 };
5731            if (jQuery2.css(elem, "position") === "fixed") {
5732              offset2 = elem.getBoundingClientRect();
5733            } else {
5734              offset2 = this.offset();
5735              doc = elem.ownerDocument;
5736              offsetParent = elem.offsetParent || doc.documentElement;
5737              while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery2.css(offsetParent, "position") === "static") {
5738                offsetParent = offsetParent.parentNode;
5739              }
5740              if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {
5741                parentOffset = jQuery2(offsetParent).offset();
5742                parentOffset.top += jQuery2.css(offsetParent, "borderTopWidth", true);
5743                parentOffset.left += jQuery2.css(offsetParent, "borderLeftWidth", true);
5744              }
5745            }
5746            return {
5747              top: offset2.top - parentOffset.top - jQuery2.css(elem, "marginTop", true),
5748              left: offset2.left - parentOffset.left - jQuery2.css(elem, "marginLeft", true)
5749            };
5750          },
5751          offsetParent: function() {
5752            return this.map(function() {
5753              var offsetParent = this.offsetParent;
5754              while (offsetParent && jQuery2.css(offsetParent, "position") === "static") {
5755                offsetParent = offsetParent.offsetParent;
5756              }
5757              return offsetParent || documentElement;
5758            });
5759          }
5760        });
5761        jQuery2.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(method, prop) {
5762          var top2 = prop === "pageYOffset";
5763          jQuery2.fn[method] = function(val) {
5764            return access(this, function(elem, method2, val2) {
5765              var win;
5766              if (isWindow(elem)) {
5767                win = elem;
5768              } else if (elem.nodeType === 9) {
5769                win = elem.defaultView;
5770              }
5771              if (val2 === void 0) {
5772                return win ? win[prop] : elem[method2];
5773              }
5774              if (win) {
5775                win.scrollTo(!top2 ? val2 : win.pageXOffset, top2 ? val2 : win.pageYOffset);
5776              } else {
5777                elem[method2] = val2;
5778              }
5779            }, method, val, arguments.length);
5780          };
5781        });
5782        jQuery2.each(["top", "left"], function(_i2, prop) {
5783          jQuery2.cssHooks[prop] = addGetHookIf(support.pixelPosition, function(elem, computed) {
5784            if (computed) {
5785              computed = curCSS(elem, prop);
5786              return rnumnonpx.test(computed) ? jQuery2(elem).position()[prop] + "px" : computed;
5787            }
5788          });
5789        });
5790        jQuery2.each({ Height: "height", Width: "width" }, function(name, type) {
5791          jQuery2.each({
5792            padding: "inner" + name,
5793            content: type,
5794            "": "outer" + name
5795          }, function(defaultExtra, funcName) {
5796            jQuery2.fn[funcName] = function(margin, value) {
5797              var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"), extra = defaultExtra || (margin === true || value === true ? "margin" : "border");
5798              return access(this, function(elem, type2, value2) {
5799                var doc;
5800                if (isWindow(elem)) {
5801                  return funcName.indexOf("outer") === 0 ? elem["inner" + name] : elem.document.documentElement["client" + name];
5802                }
5803                if (elem.nodeType === 9) {
5804                  doc = elem.documentElement;
5805                  return Math.max(elem.body["scroll" + name], doc["scroll" + name], elem.body["offset" + name], doc["offset" + name], doc["client" + name]);
5806                }
5807                return value2 === void 0 ? jQuery2.css(elem, type2, extra) : jQuery2.style(elem, type2, value2, extra);
5808              }, type, chainable ? margin : void 0, chainable);
5809            };
5810          });
5811        });
5812        jQuery2.each([
5813          "ajaxStart",
5814          "ajaxStop",
5815          "ajaxComplete",
5816          "ajaxError",
5817          "ajaxSuccess",
5818          "ajaxSend"
5819        ], function(_i2, type) {
5820          jQuery2.fn[type] = function(fn2) {
5821            return this.on(type, fn2);
5822          };
5823        });
5824        jQuery2.fn.extend({
5825          bind: function(types, data, fn2) {
5826            return this.on(types, null, data, fn2);
5827          },
5828          unbind: function(types, fn2) {
5829            return this.off(types, null, fn2);
5830          },
5831          delegate: function(selector3, types, data, fn2) {
5832            return this.on(types, selector3, data, fn2);
5833          },
5834          undelegate: function(selector3, types, fn2) {
5835            return arguments.length === 1 ? this.off(selector3, "**") : this.off(types, selector3 || "**", fn2);
5836          },
5837          hover: function(fnOver, fnOut) {
5838            return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
5839          }
5840        });
5841        jQuery2.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function(_i2, name) {
5842          jQuery2.fn[name] = function(data, fn2) {
5843            return arguments.length > 0 ? this.on(name, null, data, fn2) : this.trigger(name);
5844          };
5845        });
5846        var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
5847        jQuery2.proxy = function(fn2, context) {
5848          var tmp, args, proxy;
5849          if (typeof context === "string") {
5850            tmp = fn2[context];
5851            context = fn2;
5852            fn2 = tmp;
5853          }
5854          if (!isFunction2(fn2)) {
5855            return void 0;
5856          }
5857          args = slice.call(arguments, 2);
5858          proxy = function() {
5859            return fn2.apply(context || this, args.concat(slice.call(arguments)));
5860          };
5861          proxy.guid = fn2.guid = fn2.guid || jQuery2.guid++;
5862          return proxy;
5863        };
5864        jQuery2.holdReady = function(hold) {
5865          if (hold) {
5866            jQuery2.readyWait++;
5867          } else {
5868            jQuery2.ready(true);
5869          }
5870        };
5871        jQuery2.isArray = Array.isArray;
5872        jQuery2.parseJSON = JSON.parse;
5873        jQuery2.nodeName = nodeName;
5874        jQuery2.isFunction = isFunction2;
5875        jQuery2.isWindow = isWindow;
5876        jQuery2.camelCase = camelCase;
5877        jQuery2.type = toType;
5878        jQuery2.now = Date.now;
5879        jQuery2.isNumeric = function(obj) {
5880          var type = jQuery2.type(obj);
5881          return (type === "number" || type === "string") && !isNaN(obj - parseFloat(obj));
5882        };
5883        jQuery2.trim = function(text) {
5884          return text == null ? "" : (text + "").replace(rtrim, "");
5885        };
5886        if (typeof define === "function" && define.amd) {
5887          define("jquery", [], function() {
5888            return jQuery2;
5889          });
5890        }
5891        var _jQuery = window2.jQuery, _$ = window2.$;
5892        jQuery2.noConflict = function(deep) {
5893          if (window2.$ === jQuery2) {
5894            window2.$ = _$;
5895          }
5896          if (deep && window2.jQuery === jQuery2) {
5897            window2.jQuery = _jQuery;
5898          }
5899          return jQuery2;
5900        };
5901        if (typeof noGlobal === "undefined") {
5902          window2.jQuery = window2.$ = jQuery2;
5903        }
5904        return jQuery2;
5905      });
5906    }
5907  });
5908
5909  
vendor: 4,052 bytes, lines 5909-6006
5909// node_modules/Lethargy/lethargy.js
5910  var require_lethargy = __commonJS({
5911    "node_modules/Lethargy/lethargy.js"(exports) {
5912      (function() {
5913        var root;
5914        root = typeof exports !== "undefined" && exports !== null ? exports : this;
5915        root.Lethargy = function() {
5916          function Lethargy2(stability, sensitivity, tolerance, delay) {
5917            this.stability = stability != null ? Math.abs(stability) : 8;
5918            this.sensitivity = sensitivity != null ? 1 + Math.abs(sensitivity) : 100;
5919            this.tolerance = tolerance != null ? 1 + Math.abs(tolerance) : 1.1;
5920            this.delay = delay != null ? delay : 150;
5921            this.lastUpDeltas = function() {
5922              var i, ref2, results;
5923              results = [];
5924              for (i = 1, ref2 = this.stability * 2; 1 <= ref2 ? i <= ref2 : i >= ref2; 1 <= ref2 ? i++ : i--) {
5925                results.push(null);
5926              }
5927              return results;
5928            }.call(this);
5929            this.lastDownDeltas = function() {
5930              var i, ref2, results;
5931              results = [];
5932              for (i = 1, ref2 = this.stability * 2; 1 <= ref2 ? i <= ref2 : i >= ref2; 1 <= ref2 ? i++ : i--) {
5933                results.push(null);
5934              }
5935              return results;
5936            }.call(this);
5937            this.deltasTimestamp = function() {
5938              var i, ref2, results;
5939              results = [];
5940              for (i = 1, ref2 = this.stability * 2; 1 <= ref2 ? i <= ref2 : i >= ref2; 1 <= ref2 ? i++ : i--) {
5941                results.push(null);
5942              }
5943              return results;
5944            }.call(this);
5945          }
5946          Lethargy2.prototype.check = function(e) {
5947            var lastDelta;
5948            e = e.originalEvent || e;
5949            if (e.wheelDelta != null) {
5950              lastDelta = e.wheelDelta;
5951            } else if (e.deltaY != null) {
5952              lastDelta = e.deltaY * -40;
5953            } else if (e.detail != null || e.detail === 0) {
5954              lastDelta = e.detail * -40;
5955            }
5956            this.deltasTimestamp.push(Date.now());
5957            this.deltasTimestamp.shift();
5958            if (lastDelta > 0) {
5959              this.lastUpDeltas.push(lastDelta);
5960              this.lastUpDeltas.shift();
5961              return this.isInertia(1);
5962            } else {
5963              this.lastDownDeltas.push(lastDelta);
5964              this.lastDownDeltas.shift();
5965              return this.isInertia(-1);
5966            }
5967            return false;
5968          };
5969          Lethargy2.prototype.isInertia = function(direction) {
5970            var lastDeltas, lastDeltasNew, lastDeltasOld, newAverage, newSum, oldAverage, oldSum;
5971            lastDeltas = direction === -1 ? this.lastDownDeltas : this.lastUpDeltas;
5972            if (lastDeltas[0] === null) {
5973              return direction;
5974            }
5975            if (this.deltasTimestamp[this.stability * 2 - 2] + this.delay > Date.now() && lastDeltas[0] === lastDeltas[this.stability * 2 - 1]) {
5976              return false;
5977            }
5978            lastDeltasOld = lastDeltas.slice(0, this.stability);
5979            lastDeltasNew = lastDeltas.slice(this.stability, this.stability * 2);
5980            oldSum = lastDeltasOld.reduce(function(t, s) {
5981              return t + s;
5982            });
5983            newSum = lastDeltasNew.reduce(function(t, s) {
5984              return t + s;
5985            });
5986            oldAverage = oldSum / lastDeltasOld.length;
5987            newAverage = newSum / lastDeltasNew.length;
5988            if (Math.abs(oldAverage) < Math.abs(newAverage * this.tolerance) && this.sensitivity < Math.abs(newAverage)) {
5989              return direction;
5990            } else {
5991              return false;
5992            }
5993          };
5994          Lethargy2.prototype.showLastUpDeltas = function() {
5995            return this.lastUpDeltas;
5996          };
5997          Lethargy2.prototype.showLastDownDeltas = function() {
5998            return this.lastDownDeltas;
5999          };
6000          return Lethargy2;
6001        }();
6002      }).call(exports);
6003    }
6004  });
6005
6006  
vendor: 9,778 bytes, lines 6006-6274
6006// node_modules/headroom.js/dist/headroom.js
6007  var require_headroom = __commonJS({
6008    "node_modules/headroom.js/dist/headroom.js"(exports, module) {
6009      (function(global2, factory) {
6010        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global2 = global2 || self, global2.Headroom = factory());
6011      })(exports, function() {
6012        "use strict";
6013        function isBrowser() {
6014          return typeof window !== "undefined";
6015        }
6016        function passiveEventsSupported() {
6017          var supported = false;
6018          try {
6019            var options = {
6020              get passive() {
6021                supported = true;
6022              }
6023            };
6024            window.addEventListener("test", options, options);
6025            window.removeEventListener("test", options, options);
6026          } catch (err) {
6027            supported = false;
6028          }
6029          return supported;
6030        }
6031        function isSupported() {
6032          return !!(isBrowser() && function() {
6033          }.bind && "classList" in document.documentElement && Object.assign && Object.keys && requestAnimationFrame);
6034        }
6035        function isDocument(obj) {
6036          return obj.nodeType === 9;
6037        }
6038        function isWindow(obj) {
6039          return obj && obj.document && isDocument(obj.document);
6040        }
6041        function windowScroller(win) {
6042          var doc = win.document;
6043          var body = doc.body;
6044          var html = doc.documentElement;
6045          return {
6046            scrollHeight: function() {
6047              return Math.max(body.scrollHeight, html.scrollHeight, body.offsetHeight, html.offsetHeight, body.clientHeight, html.clientHeight);
6048            },
6049            height: function() {
6050              return win.innerHeight || html.clientHeight || body.clientHeight;
6051            },
6052            scrollY: function() {
6053              if (win.pageYOffset !== void 0) {
6054                return win.pageYOffset;
6055              }
6056              return (html || body.parentNode || body).scrollTop;
6057            }
6058          };
6059        }
6060        function elementScroller(element) {
6061          return {
6062            scrollHeight: function() {
6063              return Math.max(element.scrollHeight, element.offsetHeight, element.clientHeight);
6064            },
6065            height: function() {
6066              return Math.max(element.offsetHeight, element.clientHeight);
6067            },
6068            scrollY: function() {
6069              return element.scrollTop;
6070            }
6071          };
6072        }
6073        function createScroller(element) {
6074          return isWindow(element) ? windowScroller(element) : elementScroller(element);
6075        }
6076        function trackScroll(element, options, callback) {
6077          var isPassiveSupported = passiveEventsSupported();
6078          var rafId;
6079          var scrolled = false;
6080          var scroller = createScroller(element);
6081          var lastScrollY = scroller.scrollY();
6082          var details = {};
6083          function update() {
6084            var scrollY = Math.round(scroller.scrollY());
6085            var height = scroller.height();
6086            var scrollHeight = scroller.scrollHeight();
6087            details.scrollY = scrollY;
6088            details.lastScrollY = lastScrollY;
6089            details.direction = scrollY > lastScrollY ? "down" : "up";
6090            details.distance = Math.abs(scrollY - lastScrollY);
6091            details.isOutOfBounds = scrollY < 0 || scrollY + height > scrollHeight;
6092            details.top = scrollY <= options.offset[details.direction];
6093            details.bottom = scrollY + height >= scrollHeight;
6094            details.toleranceExceeded = details.distance > options.tolerance[details.direction];
6095            callback(details);
6096            lastScrollY = scrollY;
6097            scrolled = false;
6098          }
6099          function handleScroll() {
6100            if (!scrolled) {
6101              scrolled = true;
6102              rafId = requestAnimationFrame(update);
6103            }
6104          }
6105          var eventOptions = isPassiveSupported ? { passive: true, capture: false } : false;
6106          element.addEventListener("scroll", handleScroll, eventOptions);
6107          update();
6108          return {
6109            destroy: function() {
6110              cancelAnimationFrame(rafId);
6111              element.removeEventListener("scroll", handleScroll, eventOptions);
6112            }
6113          };
6114        }
6115        function normalizeUpDown(t) {
6116          return t === Object(t) ? t : { down: t, up: t };
6117        }
6118        function Headroom2(elem, options) {
6119          options = options || {};
6120          Object.assign(this, Headroom2.options, options);
6121          this.classes = Object.assign({}, Headroom2.options.classes, options.classes);
6122          this.elem = elem;
6123          this.tolerance = normalizeUpDown(this.tolerance);
6124          this.offset = normalizeUpDown(this.offset);
6125          this.initialised = false;
6126          this.frozen = false;
6127        }
6128        Headroom2.prototype = {
6129          constructor: Headroom2,
6130          init: function() {
6131            if (Headroom2.cutsTheMustard && !this.initialised) {
6132              this.addClass("initial");
6133              this.initialised = true;
6134              setTimeout(function(self2) {
6135                self2.scrollTracker = trackScroll(self2.scroller, { offset: self2.offset, tolerance: self2.tolerance }, self2.update.bind(self2));
6136              }, 100, this);
6137            }
6138            return this;
6139          },
6140          destroy: function() {
6141            this.initialised = false;
6142            Object.keys(this.classes).forEach(this.removeClass, this);
6143            this.scrollTracker.destroy();
6144          },
6145          unpin: function() {
6146            if (this.hasClass("pinned") || !this.hasClass("unpinned")) {
6147              this.addClass("unpinned");
6148              this.removeClass("pinned");
6149              if (this.onUnpin) {
6150                this.onUnpin.call(this);
6151              }
6152            }
6153          },
6154          pin: function() {
6155            if (this.hasClass("unpinned")) {
6156              this.addClass("pinned");
6157              this.removeClass("unpinned");
6158              if (this.onPin) {
6159                this.onPin.call(this);
6160              }
6161            }
6162          },
6163          freeze: function() {
6164            this.frozen = true;
6165            this.addClass("frozen");
6166          },
6167          unfreeze: function() {
6168            this.frozen = false;
6169            this.removeClass("frozen");
6170          },
6171          top: function() {
6172            if (!this.hasClass("top")) {
6173              this.addClass("top");
6174              this.removeClass("notTop");
6175              if (this.onTop) {
6176                this.onTop.call(this);
6177              }
6178            }
6179          },
6180          notTop: function() {
6181            if (!this.hasClass("notTop")) {
6182              this.addClass("notTop");
6183              this.removeClass("top");
6184              if (this.onNotTop) {
6185                this.onNotTop.call(this);
6186              }
6187            }
6188          },
6189          bottom: function() {
6190            if (!this.hasClass("bottom")) {
6191              this.addClass("bottom");
6192              this.removeClass("notBottom");
6193              if (this.onBottom) {
6194                this.onBottom.call(this);
6195              }
6196            }
6197          },
6198          notBottom: function() {
6199            if (!this.hasClass("notBottom")) {
6200              this.addClass("notBottom");
6201              this.removeClass("bottom");
6202              if (this.onNotBottom) {
6203                this.onNotBottom.call(this);
6204              }
6205            }
6206          },
6207          shouldUnpin: function(details) {
6208            var scrollingDown = details.direction === "down";
6209            return scrollingDown && !details.top && details.toleranceExceeded;
6210          },
6211          shouldPin: function(details) {
6212            var scrollingUp = details.direction === "up";
6213            return scrollingUp && details.toleranceExceeded || details.top;
6214          },
6215          addClass: function(className) {
6216            this.elem.classList.add.apply(this.elem.classList, this.classes[className].split(" "));
6217          },
6218          removeClass: function(className) {
6219            this.elem.classList.remove.apply(this.elem.classList, this.classes[className].split(" "));
6220          },
6221          hasClass: function(className) {
6222            return this.classes[className].split(" ").every(function(cls) {
6223              return this.classList.contains(cls);
6224            }, this.elem);
6225          },
6226          update: function(details) {
6227            if (details.isOutOfBounds) {
6228              return;
6229            }
6230            if (this.frozen === true) {
6231              return;
6232            }
6233            if (details.top) {
6234              this.top();
6235            } else {
6236              this.notTop();
6237            }
6238            if (details.bottom) {
6239              this.bottom();
6240            } else {
6241              this.notBottom();
6242            }
6243            if (this.shouldUnpin(details)) {
6244              this.unpin();
6245            } else if (this.shouldPin(details)) {
6246              this.pin();
6247            }
6248          }
6249        };
6250        Headroom2.options = {
6251          tolerance: {
6252            up: 0,
6253            down: 0
6254          },
6255          offset: 0,
6256          scroller: isBrowser() ? window : null,
6257          classes: {
6258            frozen: "headroom--frozen",
6259            pinned: "headroom--pinned",
6260            unpinned: "headroom--unpinned",
6261            top: "headroom--top",
6262            notTop: "headroom--not-top",
6263            bottom: "headroom--bottom",
6264            notBottom: "headroom--not-bottom",
6265            initial: "headroom"
6266          }
6267        };
6268        Headroom2.cutsTheMustard = isSupported();
6269        return Headroom2;
6270      });
6271    }
6272  });
6273
6274  
vendor: 233,359 bytes, lines 6274-11685
6274// node_modules/lodash/lodash.js
6275  var require_lodash = __commonJS({
6276    "node_modules/lodash/lodash.js"(exports, module) {
6277      (function() {
6278        var undefined2;
6279        var VERSION = "4.17.21";
6280        var LARGE_ARRAY_SIZE = 200;
6281        var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`";
6282        var HASH_UNDEFINED = "__lodash_hash_undefined__";
6283        var MAX_MEMOIZE_SIZE = 500;
6284        var PLACEHOLDER = "__lodash_placeholder__";
6285        var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
6286        var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
6287        var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512;
6288        var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "...";
6289        var HOT_COUNT = 800, HOT_SPAN = 16;
6290        var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3;
6291        var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0;
6292        var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
6293        var wrapFlags = [
6294          ["ary", WRAP_ARY_FLAG],
6295          ["bind", WRAP_BIND_FLAG],
6296          ["bindKey", WRAP_BIND_KEY_FLAG],
6297          ["curry", WRAP_CURRY_FLAG],
6298          ["curryRight", WRAP_CURRY_RIGHT_FLAG],
6299          ["flip", WRAP_FLIP_FLAG],
6300          ["partial", WRAP_PARTIAL_FLAG],
6301          ["partialRight", WRAP_PARTIAL_RIGHT_FLAG],
6302          ["rearg", WRAP_REARG_FLAG]
6303        ];
6304        var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]";
6305        var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
6306        var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
6307        var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
6308        var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g;
6309        var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
6310        var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source);
6311        var reTrimStart = /^\s+/;
6312        var reWhitespace = /\s/;
6313        var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /;
6314        var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
6315        var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
6316        var reEscapeChar = /\\(\\)?/g;
6317        var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
6318        var reFlags = /\w*$/;
6319        var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
6320        var reIsBinary = /^0b[01]+$/i;
6321        var reIsHostCtor = /^\[object .+?Constructor\]$/;
6322        var reIsOctal = /^0o[0-7]+$/i;
6323        var reIsUint = /^(?:0|[1-9]\d*)$/;
6324        var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
6325        var reNoMatch = /($^)/;
6326        var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
6327        var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
6328        var rsApos = "['\u2019]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d";
6329        var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")";
6330        var reApos = RegExp(rsApos, "g");
6331        var reComboMark = RegExp(rsCombo, "g");
6332        var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
6333        var reUnicodeWord = RegExp([
6334          rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")",
6335          rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")",
6336          rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower,
6337          rsUpper + "+" + rsOptContrUpper,
6338          rsOrdUpper,
6339          rsOrdLower,
6340          rsDigits,
6341          rsEmoji
6342        ].join("|"), "g");
6343        var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]");
6344        var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
6345        var contextProps = [
6346          "Array",
6347          "Buffer",
6348          "DataView",
6349          "Date",
6350          "Error",
6351          "Float32Array",
6352          "Float64Array",
6353          "Function",
6354          "Int8Array",
6355          "Int16Array",
6356          "Int32Array",
6357          "Map",
6358          "Math",
6359          "Object",
6360          "Promise",
6361          "RegExp",
6362          "Set",
6363          "String",
6364          "Symbol",
6365          "TypeError",
6366          "Uint8Array",
6367          "Uint8ClampedArray",
6368          "Uint16Array",
6369          "Uint32Array",
6370          "WeakMap",
6371          "_",
6372          "clearTimeout",
6373          "isFinite",
6374          "parseInt",
6375          "setTimeout"
6376        ];
6377        var templateCounter = -1;
6378        var typedArrayTags = {};
6379        typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
6380        typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
6381        var cloneableTags = {};
6382        cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
6383        cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
6384        var deburredLetters = {
6385          "\xC0": "A",
6386          "\xC1": "A",
6387          "\xC2": "A",
6388          "\xC3": "A",
6389          "\xC4": "A",
6390          "\xC5": "A",
6391          "\xE0": "a",
6392          "\xE1": "a",
6393          "\xE2": "a",
6394          "\xE3": "a",
6395          "\xE4": "a",
6396          "\xE5": "a",
6397          "\xC7": "C",
6398          "\xE7": "c",
6399          "\xD0": "D",
6400          "\xF0": "d",
6401          "\xC8": "E",
6402          "\xC9": "E",
6403          "\xCA": "E",
6404          "\xCB": "E",
6405          "\xE8": "e",
6406          "\xE9": "e",
6407          "\xEA": "e",
6408          "\xEB": "e",
6409          "\xCC": "I",
6410          "\xCD": "I",
6411          "\xCE": "I",
6412          "\xCF": "I",
6413          "\xEC": "i",
6414          "\xED": "i",
6415          "\xEE": "i",
6416          "\xEF": "i",
6417          "\xD1": "N",
6418          "\xF1": "n",
6419          "\xD2": "O",
6420          "\xD3": "O",
6421          "\xD4": "O",
6422          "\xD5": "O",
6423          "\xD6": "O",
6424          "\xD8": "O",
6425          "\xF2": "o",
6426          "\xF3": "o",
6427          "\xF4": "o",
6428          "\xF5": "o",
6429          "\xF6": "o",
6430          "\xF8": "o",
6431          "\xD9": "U",
6432          "\xDA": "U",
6433          "\xDB": "U",
6434          "\xDC": "U",
6435          "\xF9": "u",
6436          "\xFA": "u",
6437          "\xFB": "u",
6438          "\xFC": "u",
6439          "\xDD": "Y",
6440          "\xFD": "y",
6441          "\xFF": "y",
6442          "\xC6": "Ae",
6443          "\xE6": "ae",
6444          "\xDE": "Th",
6445          "\xFE": "th",
6446          "\xDF": "ss",
6447          "\u0100": "A",
6448          "\u0102": "A",
6449          "\u0104": "A",
6450          "\u0101": "a",
6451          "\u0103": "a",
6452          "\u0105": "a",
6453          "\u0106": "C",
6454          "\u0108": "C",
6455          "\u010A": "C",
6456          "\u010C": "C",
6457          "\u0107": "c",
6458          "\u0109": "c",
6459          "\u010B": "c",
6460          "\u010D": "c",
6461          "\u010E": "D",
6462          "\u0110": "D",
6463          "\u010F": "d",
6464          "\u0111": "d",
6465          "\u0112": "E",
6466          "\u0114": "E",
6467          "\u0116": "E",
6468          "\u0118": "E",
6469          "\u011A": "E",
6470          "\u0113": "e",
6471          "\u0115": "e",
6472          "\u0117": "e",
6473          "\u0119": "e",
6474          "\u011B": "e",
6475          "\u011C": "G",
6476          "\u011E": "G",
6477          "\u0120": "G",
6478          "\u0122": "G",
6479          "\u011D": "g",
6480          "\u011F": "g",
6481          "\u0121": "g",
6482          "\u0123": "g",
6483          "\u0124": "H",
6484          "\u0126": "H",
6485          "\u0125": "h",
6486          "\u0127": "h",
6487          "\u0128": "I",
6488          "\u012A": "I",
6489          "\u012C": "I",
6490          "\u012E": "I",
6491          "\u0130": "I",
6492          "\u0129": "i",
6493          "\u012B": "i",
6494          "\u012D": "i",
6495          "\u012F": "i",
6496          "\u0131": "i",
6497          "\u0134": "J",
6498          "\u0135": "j",
6499          "\u0136": "K",
6500          "\u0137": "k",
6501          "\u0138": "k",
6502          "\u0139": "L",
6503          "\u013B": "L",
6504          "\u013D": "L",
6505          "\u013F": "L",
6506          "\u0141": "L",
6507          "\u013A": "l",
6508          "\u013C": "l",
6509          "\u013E": "l",
6510          "\u0140": "l",
6511          "\u0142": "l",
6512          "\u0143": "N",
6513          "\u0145": "N",
6514          "\u0147": "N",
6515          "\u014A": "N",
6516          "\u0144": "n",
6517          "\u0146": "n",
6518          "\u0148": "n",
6519          "\u014B": "n",
6520          "\u014C": "O",
6521          "\u014E": "O",
6522          "\u0150": "O",
6523          "\u014D": "o",
6524          "\u014F": "o",
6525          "\u0151": "o",
6526          "\u0154": "R",
6527          "\u0156": "R",
6528          "\u0158": "R",
6529          "\u0155": "r",
6530          "\u0157": "r",
6531          "\u0159": "r",
6532          "\u015A": "S",
6533          "\u015C": "S",
6534          "\u015E": "S",
6535          "\u0160": "S",
6536          "\u015B": "s",
6537          "\u015D": "s",
6538          "\u015F": "s",
6539          "\u0161": "s",
6540          "\u0162": "T",
6541          "\u0164": "T",
6542          "\u0166": "T",
6543          "\u0163": "t",
6544          "\u0165": "t",
6545          "\u0167": "t",
6546          "\u0168": "U",
6547          "\u016A": "U",
6548          "\u016C": "U",
6549          "\u016E": "U",
6550          "\u0170": "U",
6551          "\u0172": "U",
6552          "\u0169": "u",
6553          "\u016B": "u",
6554          "\u016D": "u",
6555          "\u016F": "u",
6556          "\u0171": "u",
6557          "\u0173": "u",
6558          "\u0174": "W",
6559          "\u0175": "w",
6560          "\u0176": "Y",
6561          "\u0177": "y",
6562          "\u0178": "Y",
6563          "\u0179": "Z",
6564          "\u017B": "Z",
6565          "\u017D": "Z",
6566          "\u017A": "z",
6567          "\u017C": "z",
6568          "\u017E": "z",
6569          "\u0132": "IJ",
6570          "\u0133": "ij",
6571          "\u0152": "Oe",
6572          "\u0153": "oe",
6573          "\u0149": "'n",
6574          "\u017F": "s"
6575        };
6576        var htmlEscapes = {
6577          "&": "&amp;",
6578          "<": "&lt;",
6579          ">": "&gt;",
6580          '"': "&quot;",
6581          "'": "&#39;"
6582        };
6583        var htmlUnescapes = {
6584          "&amp;": "&",
6585          "&lt;": "<",
6586          "&gt;": ">",
6587          "&quot;": '"',
6588          "&#39;": "'"
6589        };
6590        var stringEscapes = {
6591          "\\": "\\",
6592          "'": "'",
6593          "\n": "n",
6594          "\r": "r",
6595          "\u2028": "u2028",
6596          "\u2029": "u2029"
6597        };
6598        var freeParseFloat = parseFloat, freeParseInt = parseInt;
6599        var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
6600        var freeSelf = typeof self == "object" && self && self.Object === Object && self;
6601        var root = freeGlobal || freeSelf || Function("return this")();
6602        var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
6603        var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
6604        var moduleExports = freeModule && freeModule.exports === freeExports;
6605        var freeProcess = moduleExports && freeGlobal.process;
6606        var nodeUtil = function() {
6607          try {
6608            var types = freeModule && freeModule.require && freeModule.require("util").types;
6609            if (types) {
6610              return types;
6611            }
6612            return freeProcess && freeProcess.binding && freeProcess.binding("util");
6613          } catch (e) {
6614          }
6615        }();
6616        var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
6617        function apply(func, thisArg, args) {
6618          switch (args.length) {
6619            case 0:
6620              return func.call(thisArg);
6621            case 1:
6622              return func.call(thisArg, args[0]);
6623            case 2:
6624              return func.call(thisArg, args[0], args[1]);
6625            case 3:
6626              return func.call(thisArg, args[0], args[1], args[2]);
6627          }
6628          return func.apply(thisArg, args);
6629        }
6630        function arrayAggregator(array, setter, iteratee, accumulator) {
6631          var index = -1, length = array == null ? 0 : array.length;
6632          while (++index < length) {
6633            var value = array[index];
6634            setter(accumulator, value, iteratee(value), array);
6635          }
6636          return accumulator;
6637        }
6638        function arrayEach(array, iteratee) {
6639          var index = -1, length = array == null ? 0 : array.length;
6640          while (++index < length) {
6641            if (iteratee(array[index], index, array) === false) {
6642              break;
6643            }
6644          }
6645          return array;
6646        }
6647        function arrayEachRight(array, iteratee) {
6648          var length = array == null ? 0 : array.length;
6649          while (length--) {
6650            if (iteratee(array[length], length, array) === false) {
6651              break;
6652            }
6653          }
6654          return array;
6655        }
6656        function arrayEvery(array, predicate) {
6657          var index = -1, length = array == null ? 0 : array.length;
6658          while (++index < length) {
6659            if (!predicate(array[index], index, array)) {
6660              return false;
6661            }
6662          }
6663          return true;
6664        }
6665        function arrayFilter(array, predicate) {
6666          var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];
6667          while (++index < length) {
6668            var value = array[index];
6669            if (predicate(value, index, array)) {
6670              result[resIndex++] = value;
6671            }
6672          }
6673          return result;
6674        }
6675        function arrayIncludes(array, value) {
6676          var length = array == null ? 0 : array.length;
6677          return !!length && baseIndexOf(array, value, 0) > -1;
6678        }
6679        function arrayIncludesWith(array, value, comparator) {
6680          var index = -1, length = array == null ? 0 : array.length;
6681          while (++index < length) {
6682            if (comparator(value, array[index])) {
6683              return true;
6684            }
6685          }
6686          return false;
6687        }
6688        function arrayMap(array, iteratee) {
6689          var index = -1, length = array == null ? 0 : array.length, result = Array(length);
6690          while (++index < length) {
6691            result[index] = iteratee(array[index], index, array);
6692          }
6693          return result;
6694        }
6695        function arrayPush(array, values) {
6696          var index = -1, length = values.length, offset2 = array.length;
6697          while (++index < length) {
6698            array[offset2 + index] = values[index];
6699          }
6700          return array;
6701        }
6702        function arrayReduce(array, iteratee, accumulator, initAccum) {
6703          var index = -1, length = array == null ? 0 : array.length;
6704          if (initAccum && length) {
6705            accumulator = array[++index];
6706          }
6707          while (++index < length) {
6708            accumulator = iteratee(accumulator, array[index], index, array);
6709          }
6710          return accumulator;
6711        }
6712        function arrayReduceRight(array, iteratee, accumulator, initAccum) {
6713          var length = array == null ? 0 : array.length;
6714          if (initAccum && length) {
6715            accumulator = array[--length];
6716          }
6717          while (length--) {
6718            accumulator = iteratee(accumulator, array[length], length, array);
6719          }
6720          return accumulator;
6721        }
6722        function arraySome(array, predicate) {
6723          var index = -1, length = array == null ? 0 : array.length;
6724          while (++index < length) {
6725            if (predicate(array[index], index, array)) {
6726              return true;
6727            }
6728          }
6729          return false;
6730        }
6731        var asciiSize = baseProperty("length");
6732        function asciiToArray(string) {
6733          return string.split("");
6734        }
6735        function asciiWords(string) {
6736          return string.match(reAsciiWord) || [];
6737        }
6738        function baseFindKey(collection, predicate, eachFunc) {
6739          var result;
6740          eachFunc(collection, function(value, key, collection2) {
6741            if (predicate(value, key, collection2)) {
6742              result = key;
6743              return false;
6744            }
6745          });
6746          return result;
6747        }
6748        function baseFindIndex(array, predicate, fromIndex, fromRight) {
6749          var length = array.length, index = fromIndex + (fromRight ? 1 : -1);
6750          while (fromRight ? index-- : ++index < length) {
6751            if (predicate(array[index], index, array)) {
6752              return index;
6753            }
6754          }
6755          return -1;
6756        }
6757        function baseIndexOf(array, value, fromIndex) {
6758          return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);
6759        }
6760        function baseIndexOfWith(array, value, fromIndex, comparator) {
6761          var index = fromIndex - 1, length = array.length;
6762          while (++index < length) {
6763            if (comparator(array[index], value)) {
6764              return index;
6765            }
6766          }
6767          return -1;
6768        }
6769        function baseIsNaN(value) {
6770          return value !== value;
6771        }
6772        function baseMean(array, iteratee) {
6773          var length = array == null ? 0 : array.length;
6774          return length ? baseSum(array, iteratee) / length : NAN;
6775        }
6776        function baseProperty(key) {
6777          return function(object) {
6778            return object == null ? undefined2 : object[key];
6779          };
6780        }
6781        function basePropertyOf(object) {
6782          return function(key) {
6783            return object == null ? undefined2 : object[key];
6784          };
6785        }
6786        function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
6787          eachFunc(collection, function(value, index, collection2) {
6788            accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection2);
6789          });
6790          return accumulator;
6791        }
6792        function baseSortBy(array, comparer) {
6793          var length = array.length;
6794          array.sort(comparer);
6795          while (length--) {
6796            array[length] = array[length].value;
6797          }
6798          return array;
6799        }
6800        function baseSum(array, iteratee) {
6801          var result, index = -1, length = array.length;
6802          while (++index < length) {
6803            var current = iteratee(array[index]);
6804            if (current !== undefined2) {
6805              result = result === undefined2 ? current : result + current;
6806            }
6807          }
6808          return result;
6809        }
6810        function baseTimes(n, iteratee) {
6811          var index = -1, result = Array(n);
6812          while (++index < n) {
6813            result[index] = iteratee(index);
6814          }
6815          return result;
6816        }
6817        function baseToPairs(object, props) {
6818          return arrayMap(props, function(key) {
6819            return [key, object[key]];
6820          });
6821        }
6822        function baseTrim(string) {
6823          return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string;
6824        }
6825        function baseUnary(func) {
6826          return function(value) {
6827            return func(value);
6828          };
6829        }
6830        function baseValues(object, props) {
6831          return arrayMap(props, function(key) {
6832            return object[key];
6833          });
6834        }
6835        function cacheHas(cache, key) {
6836          return cache.has(key);
6837        }
6838        function charsStartIndex(strSymbols, chrSymbols) {
6839          var index = -1, length = strSymbols.length;
6840          while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {
6841          }
6842          return index;
6843        }
6844        function charsEndIndex(strSymbols, chrSymbols) {
6845          var index = strSymbols.length;
6846          while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {
6847          }
6848          return index;
6849        }
6850        function countHolders(array, placeholder) {
6851          var length = array.length, result = 0;
6852          while (length--) {
6853            if (array[length] === placeholder) {
6854              ++result;
6855            }
6856          }
6857          return result;
6858        }
6859        var deburrLetter = basePropertyOf(deburredLetters);
6860        var escapeHtmlChar = basePropertyOf(htmlEscapes);
6861        function escapeStringChar(chr) {
6862          return "\\" + stringEscapes[chr];
6863        }
6864        function getValue(object, key) {
6865          return object == null ? undefined2 : object[key];
6866        }
6867        function hasUnicode(string) {
6868          return reHasUnicode.test(string);
6869        }
6870        function hasUnicodeWord(string) {
6871          return reHasUnicodeWord.test(string);
6872        }
6873        function iteratorToArray(iterator) {
6874          var data, result = [];
6875          while (!(data = iterator.next()).done) {
6876            result.push(data.value);
6877          }
6878          return result;
6879        }
6880        function mapToArray(map) {
6881          var index = -1, result = Array(map.size);
6882          map.forEach(function(value, key) {
6883            result[++index] = [key, value];
6884          });
6885          return result;
6886        }
6887        function overArg(func, transform) {
6888          return function(arg) {
6889            return func(transform(arg));
6890          };
6891        }
6892        function replaceHolders(array, placeholder) {
6893          var index = -1, length = array.length, resIndex = 0, result = [];
6894          while (++index < length) {
6895            var value = array[index];
6896            if (value === placeholder || value === PLACEHOLDER) {
6897              array[index] = PLACEHOLDER;
6898              result[resIndex++] = index;
6899            }
6900          }
6901          return result;
6902        }
6903        function setToArray(set) {
6904          var index = -1, result = Array(set.size);
6905          set.forEach(function(value) {
6906            result[++index] = value;
6907          });
6908          return result;
6909        }
6910        function setToPairs(set) {
6911          var index = -1, result = Array(set.size);
6912          set.forEach(function(value) {
6913            result[++index] = [value, value];
6914          });
6915          return result;
6916        }
6917        function strictIndexOf(array, value, fromIndex) {
6918          var index = fromIndex - 1, length = array.length;
6919          while (++index < length) {
6920            if (array[index] === value) {
6921              return index;
6922            }
6923          }
6924          return -1;
6925        }
6926        function strictLastIndexOf(array, value, fromIndex) {
6927          var index = fromIndex + 1;
6928          while (index--) {
6929            if (array[index] === value) {
6930              return index;
6931            }
6932          }
6933          return index;
6934        }
6935        function stringSize(string) {
6936          return hasUnicode(string) ? unicodeSize(string) : asciiSize(string);
6937        }
6938        function stringToArray(string) {
6939          return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);
6940        }
6941        function trimmedEndIndex(string) {
6942          var index = string.length;
6943          while (index-- && reWhitespace.test(string.charAt(index))) {
6944          }
6945          return index;
6946        }
6947        var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
6948        function unicodeSize(string) {
6949          var result = reUnicode.lastIndex = 0;
6950          while (reUnicode.test(string)) {
6951            ++result;
6952          }
6953          return result;
6954        }
6955        function unicodeToArray(string) {
6956          return string.match(reUnicode) || [];
6957        }
6958        function unicodeWords(string) {
6959          return string.match(reUnicodeWord) || [];
6960        }
6961        var runInContext = function runInContext2(context) {
6962          context = context == null ? root : _2.defaults(root.Object(), context, _2.pick(root, contextProps));
6963          var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError;
6964          var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype;
6965          var coreJsData = context["__core-js_shared__"];
6966          var funcToString = funcProto.toString;
6967          var hasOwnProperty = objectProto.hasOwnProperty;
6968          var idCounter = 0;
6969          var maskSrcKey = function() {
6970            var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
6971            return uid ? "Symbol(src)_1." + uid : "";
6972          }();
6973          var nativeObjectToString = objectProto.toString;
6974          var objectCtorString = funcToString.call(Object2);
6975          var oldDash = root._;
6976          var reIsNative = RegExp2("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
6977          var Buffer2 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2;
6978          var defineProperty = function() {
6979            try {
6980              var func = getNative(Object2, "defineProperty");
6981              func({}, "", {});
6982              return func;
6983            } catch (e) {
6984            }
6985          }();
6986          var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
6987          var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined2, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse;
6988          var DataView = getNative(context, "DataView"), Map2 = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set2 = getNative(context, "Set"), WeakMap = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create");
6989          var metaMap = WeakMap && new WeakMap();
6990          var realNames = {};
6991          var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap);
6992          var symbolProto = Symbol2 ? Symbol2.prototype : undefined2, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined2, symbolToString = symbolProto ? symbolProto.toString : undefined2;
6993          function lodash(value) {
6994            if (isObjectLike(value) && !isArray2(value) && !(value instanceof LazyWrapper)) {
6995              if (value instanceof LodashWrapper) {
6996                return value;
6997              }
6998              if (hasOwnProperty.call(value, "__wrapped__")) {
6999                return wrapperClone(value);
7000              }
7001            }
7002            return new LodashWrapper(value);
7003          }
7004          var baseCreate = function() {
7005            function object() {
7006            }
7007            return function(proto) {
7008              if (!isObject2(proto)) {
7009                return {};
7010              }
7011              if (objectCreate) {
7012                return objectCreate(proto);
7013              }
7014              object.prototype = proto;
7015              var result2 = new object();
7016              object.prototype = undefined2;
7017              return result2;
7018            };
7019          }();
7020          function baseLodash() {
7021          }
7022          function LodashWrapper(value, chainAll) {
7023            this.__wrapped__ = value;
7024            this.__actions__ = [];
7025            this.__chain__ = !!chainAll;
7026            this.__index__ = 0;
7027            this.__values__ = undefined2;
7028          }
7029          lodash.templateSettings = {
7030            "escape": reEscape,
7031            "evaluate": reEvaluate,
7032            "interpolate": reInterpolate,
7033            "variable": "",
7034            "imports": {
7035              "_": lodash
7036            }
7037          };
7038          lodash.prototype = baseLodash.prototype;
7039          lodash.prototype.constructor = lodash;
7040          LodashWrapper.prototype = baseCreate(baseLodash.prototype);
7041          LodashWrapper.prototype.constructor = LodashWrapper;
7042          function LazyWrapper(value) {
7043            this.__wrapped__ = value;
7044            this.__actions__ = [];
7045            this.__dir__ = 1;
7046            this.__filtered__ = false;
7047            this.__iteratees__ = [];
7048            this.__takeCount__ = MAX_ARRAY_LENGTH;
7049            this.__views__ = [];
7050          }
7051          function lazyClone() {
7052            var result2 = new LazyWrapper(this.__wrapped__);
7053            result2.__actions__ = copyArray(this.__actions__);
7054            result2.__dir__ = this.__dir__;
7055            result2.__filtered__ = this.__filtered__;
7056            result2.__iteratees__ = copyArray(this.__iteratees__);
7057            result2.__takeCount__ = this.__takeCount__;
7058            result2.__views__ = copyArray(this.__views__);
7059            return result2;
7060          }
7061          function lazyReverse() {
7062            if (this.__filtered__) {
7063              var result2 = new LazyWrapper(this);
7064              result2.__dir__ = -1;
7065              result2.__filtered__ = true;
7066            } else {
7067              result2 = this.clone();
7068              result2.__dir__ *= -1;
7069            }
7070            return result2;
7071          }
7072          function lazyValue() {
7073            var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray2(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start2 = view.start, end2 = view.end, length = end2 - start2, index = isRight ? end2 : start2 - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__);
7074            if (!isArr || !isRight && arrLength == length && takeCount == length) {
7075              return baseWrapperValue(array, this.__actions__);
7076            }
7077            var result2 = [];
7078            outer:
7079              while (length-- && resIndex < takeCount) {
7080                index += dir;
7081                var iterIndex = -1, value = array[index];
7082                while (++iterIndex < iterLength) {
7083                  var data = iteratees[iterIndex], iteratee2 = data.iteratee, type = data.type, computed = iteratee2(value);
7084                  if (type == LAZY_MAP_FLAG) {
7085                    value = computed;
7086                  } else if (!computed) {
7087                    if (type == LAZY_FILTER_FLAG) {
7088                      continue outer;
7089                    } else {
7090                      break outer;
7091                    }
7092                  }
7093                }
7094                result2[resIndex++] = value;
7095              }
7096            return result2;
7097          }
7098          LazyWrapper.prototype = baseCreate(baseLodash.prototype);
7099          LazyWrapper.prototype.constructor = LazyWrapper;
7100          function Hash(entries) {
7101            var index = -1, length = entries == null ? 0 : entries.length;
7102            this.clear();
7103            while (++index < length) {
7104              var entry = entries[index];
7105              this.set(entry[0], entry[1]);
7106            }
7107          }
7108          function hashClear() {
7109            this.__data__ = nativeCreate ? nativeCreate(null) : {};
7110            this.size = 0;
7111          }
7112          function hashDelete(key) {
7113            var result2 = this.has(key) && delete this.__data__[key];
7114            this.size -= result2 ? 1 : 0;
7115            return result2;
7116          }
7117          function hashGet(key) {
7118            var data = this.__data__;
7119            if (nativeCreate) {
7120              var result2 = data[key];
7121              return result2 === HASH_UNDEFINED ? undefined2 : result2;
7122            }
7123            return hasOwnProperty.call(data, key) ? data[key] : undefined2;
7124          }
7125          function hashHas(key) {
7126            var data = this.__data__;
7127            return nativeCreate ? data[key] !== undefined2 : hasOwnProperty.call(data, key);
7128          }
7129          function hashSet(key, value) {
7130            var data = this.__data__;
7131            this.size += this.has(key) ? 0 : 1;
7132            data[key] = nativeCreate && value === undefined2 ? HASH_UNDEFINED : value;
7133            return this;
7134          }
7135          Hash.prototype.clear = hashClear;
7136          Hash.prototype["delete"] = hashDelete;
7137          Hash.prototype.get = hashGet;
7138          Hash.prototype.has = hashHas;
7139          Hash.prototype.set = hashSet;
7140          function ListCache(entries) {
7141            var index = -1, length = entries == null ? 0 : entries.length;
7142            this.clear();
7143            while (++index < length) {
7144              var entry = entries[index];
7145              this.set(entry[0], entry[1]);
7146            }
7147          }
7148          function listCacheClear() {
7149            this.__data__ = [];
7150            this.size = 0;
7151          }
7152          function listCacheDelete(key) {
7153            var data = this.__data__, index = assocIndexOf(data, key);
7154            if (index < 0) {
7155              return false;
7156            }
7157            var lastIndex = data.length - 1;
7158            if (index == lastIndex) {
7159              data.pop();
7160            } else {
7161              splice.call(data, index, 1);
7162            }
7163            --this.size;
7164            return true;
7165          }
7166          function listCacheGet(key) {
7167            var data = this.__data__, index = assocIndexOf(data, key);
7168            return index < 0 ? undefined2 : data[index][1];
7169          }
7170          function listCacheHas(key) {
7171            return assocIndexOf(this.__data__, key) > -1;
7172          }
7173          function listCacheSet(key, value) {
7174            var data = this.__data__, index = assocIndexOf(data, key);
7175            if (index < 0) {
7176              ++this.size;
7177              data.push([key, value]);
7178            } else {
7179              data[index][1] = value;
7180            }
7181            return this;
7182          }
7183          ListCache.prototype.clear = listCacheClear;
7184          ListCache.prototype["delete"] = listCacheDelete;
7185          ListCache.prototype.get = listCacheGet;
7186          ListCache.prototype.has = listCacheHas;
7187          ListCache.prototype.set = listCacheSet;
7188          function MapCache(entries) {
7189            var index = -1, length = entries == null ? 0 : entries.length;
7190            this.clear();
7191            while (++index < length) {
7192              var entry = entries[index];
7193              this.set(entry[0], entry[1]);
7194            }
7195          }
7196          function mapCacheClear() {
7197            this.size = 0;
7198            this.__data__ = {
7199              "hash": new Hash(),
7200              "map": new (Map2 || ListCache)(),
7201              "string": new Hash()
7202            };
7203          }
7204          function mapCacheDelete(key) {
7205            var result2 = getMapData(this, key)["delete"](key);
7206            this.size -= result2 ? 1 : 0;
7207            return result2;
7208          }
7209          function mapCacheGet(key) {
7210            return getMapData(this, key).get(key);
7211          }
7212          function mapCacheHas(key) {
7213            return getMapData(this, key).has(key);
7214          }
7215          function mapCacheSet(key, value) {
7216            var data = getMapData(this, key), size2 = data.size;
7217            data.set(key, value);
7218            this.size += data.size == size2 ? 0 : 1;
7219            return this;
7220          }
7221          MapCache.prototype.clear = mapCacheClear;
7222          MapCache.prototype["delete"] = mapCacheDelete;
7223          MapCache.prototype.get = mapCacheGet;
7224          MapCache.prototype.has = mapCacheHas;
7225          MapCache.prototype.set = mapCacheSet;
7226          function SetCache(values2) {
7227            var index = -1, length = values2 == null ? 0 : values2.length;
7228            this.__data__ = new MapCache();
7229            while (++index < length) {
7230              this.add(values2[index]);
7231            }
7232          }
7233          function setCacheAdd(value) {
7234            this.__data__.set(value, HASH_UNDEFINED);
7235            return this;
7236          }
7237          function setCacheHas(value) {
7238            return this.__data__.has(value);
7239          }
7240          SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
7241          SetCache.prototype.has = setCacheHas;
7242          function Stack(entries) {
7243            var data = this.__data__ = new ListCache(entries);
7244            this.size = data.size;
7245          }
7246          function stackClear() {
7247            this.__data__ = new ListCache();
7248            this.size = 0;
7249          }
7250          function stackDelete(key) {
7251            var data = this.__data__, result2 = data["delete"](key);
7252            this.size = data.size;
7253            return result2;
7254          }
7255          function stackGet(key) {
7256            return this.__data__.get(key);
7257          }
7258          function stackHas(key) {
7259            return this.__data__.has(key);
7260          }
7261          function stackSet(key, value) {
7262            var data = this.__data__;
7263            if (data instanceof ListCache) {
7264              var pairs = data.__data__;
7265              if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
7266                pairs.push([key, value]);
7267                this.size = ++data.size;
7268                return this;
7269              }
7270              data = this.__data__ = new MapCache(pairs);
7271            }
7272            data.set(key, value);
7273            this.size = data.size;
7274            return this;
7275          }
7276          Stack.prototype.clear = stackClear;
7277          Stack.prototype["delete"] = stackDelete;
7278          Stack.prototype.get = stackGet;
7279          Stack.prototype.has = stackHas;
7280          Stack.prototype.set = stackSet;
7281          function arrayLikeKeys(value, inherited) {
7282            var isArr = isArray2(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length = result2.length;
7283            for (var key in value) {
7284              if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length)))) {
7285                result2.push(key);
7286              }
7287            }
7288            return result2;
7289          }
7290          function arraySample(array) {
7291            var length = array.length;
7292            return length ? array[baseRandom(0, length - 1)] : undefined2;
7293          }
7294          function arraySampleSize(array, n) {
7295            return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
7296          }
7297          function arrayShuffle(array) {
7298            return shuffleSelf(copyArray(array));
7299          }
7300          function assignMergeValue(object, key, value) {
7301            if (value !== undefined2 && !eq(object[key], value) || value === undefined2 && !(key in object)) {
7302              baseAssignValue(object, key, value);
7303            }
7304          }
7305          function assignValue(object, key, value) {
7306            var objValue = object[key];
7307            if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined2 && !(key in object)) {
7308              baseAssignValue(object, key, value);
7309            }
7310          }
7311          function assocIndexOf(array, key) {
7312            var length = array.length;
7313            while (length--) {
7314              if (eq(array[length][0], key)) {
7315                return length;
7316              }
7317            }
7318            return -1;
7319          }
7320          function baseAggregator(collection, setter, iteratee2, accumulator) {
7321            baseEach(collection, function(value, key, collection2) {
7322              setter(accumulator, value, iteratee2(value), collection2);
7323            });
7324            return accumulator;
7325          }
7326          function baseAssign(object, source) {
7327            return object && copyObject(source, keys(source), object);
7328          }
7329          function baseAssignIn(object, source) {
7330            return object && copyObject(source, keysIn(source), object);
7331          }
7332          function baseAssignValue(object, key, value) {
7333            if (key == "__proto__" && defineProperty) {
7334              defineProperty(object, key, {
7335                "configurable": true,
7336                "enumerable": true,
7337                "value": value,
7338                "writable": true
7339              });
7340            } else {
7341              object[key] = value;
7342            }
7343          }
7344          function baseAt(object, paths) {
7345            var index = -1, length = paths.length, result2 = Array2(length), skip = object == null;
7346            while (++index < length) {
7347              result2[index] = skip ? undefined2 : get(object, paths[index]);
7348            }
7349            return result2;
7350          }
7351          function baseClamp(number, lower, upper) {
7352            if (number === number) {
7353              if (upper !== undefined2) {
7354                number = number <= upper ? number : upper;
7355              }
7356              if (lower !== undefined2) {
7357                number = number >= lower ? number : lower;
7358              }
7359            }
7360            return number;
7361          }
7362          function baseClone(value, bitmask, customizer, key, object, stack) {
7363            var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG;
7364            if (customizer) {
7365              result2 = object ? customizer(value, key, object, stack) : customizer(value);
7366            }
7367            if (result2 !== undefined2) {
7368              return result2;
7369            }
7370            if (!isObject2(value)) {
7371              return value;
7372            }
7373            var isArr = isArray2(value);
7374            if (isArr) {
7375              result2 = initCloneArray(value);
7376              if (!isDeep) {
7377                return copyArray(value, result2);
7378              }
7379            } else {
7380              var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;
7381              if (isBuffer(value)) {
7382                return cloneBuffer(value, isDeep);
7383              }
7384              if (tag == objectTag || tag == argsTag || isFunc && !object) {
7385                result2 = isFlat || isFunc ? {} : initCloneObject(value);
7386                if (!isDeep) {
7387                  return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value));
7388                }
7389              } else {
7390                if (!cloneableTags[tag]) {
7391                  return object ? value : {};
7392                }
7393                result2 = initCloneByTag(value, tag, isDeep);
7394              }
7395            }
7396            stack || (stack = new Stack());
7397            var stacked = stack.get(value);
7398            if (stacked) {
7399              return stacked;
7400            }
7401            stack.set(value, result2);
7402            if (isSet(value)) {
7403              value.forEach(function(subValue) {
7404                result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
7405              });
7406            } else if (isMap(value)) {
7407              value.forEach(function(subValue, key2) {
7408                result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
7409              });
7410            }
7411            var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
7412            var props = isArr ? undefined2 : keysFunc(value);
7413            arrayEach(props || value, function(subValue, key2) {
7414              if (props) {
7415                key2 = subValue;
7416                subValue = value[key2];
7417              }
7418              assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
7419            });
7420            return result2;
7421          }
7422          function baseConforms(source) {
7423            var props = keys(source);
7424            return function(object) {
7425              return baseConformsTo(object, source, props);
7426            };
7427          }
7428          function baseConformsTo(object, source, props) {
7429            var length = props.length;
7430            if (object == null) {
7431              return !length;
7432            }
7433            object = Object2(object);
7434            while (length--) {
7435              var key = props[length], predicate = source[key], value = object[key];
7436              if (value === undefined2 && !(key in object) || !predicate(value)) {
7437                return false;
7438              }
7439            }
7440            return true;
7441          }
7442          function baseDelay(func, wait, args) {
7443            if (typeof func != "function") {
7444              throw new TypeError2(FUNC_ERROR_TEXT);
7445            }
7446            return setTimeout2(function() {
7447              func.apply(undefined2, args);
7448            }, wait);
7449          }
7450          function baseDifference(array, values2, iteratee2, comparator) {
7451            var index = -1, includes2 = arrayIncludes, isCommon = true, length = array.length, result2 = [], valuesLength = values2.length;
7452            if (!length) {
7453              return result2;
7454            }
7455            if (iteratee2) {
7456              values2 = arrayMap(values2, baseUnary(iteratee2));
7457            }
7458            if (comparator) {
7459              includes2 = arrayIncludesWith;
7460              isCommon = false;
7461            } else if (values2.length >= LARGE_ARRAY_SIZE) {
7462              includes2 = cacheHas;
7463              isCommon = false;
7464              values2 = new SetCache(values2);
7465            }
7466            outer:
7467              while (++index < length) {
7468                var value = array[index], computed = iteratee2 == null ? value : iteratee2(value);
7469                value = comparator || value !== 0 ? value : 0;
7470                if (isCommon && computed === computed) {
7471                  var valuesIndex = valuesLength;
7472                  while (valuesIndex--) {
7473                    if (values2[valuesIndex] === computed) {
7474                      continue outer;
7475                    }
7476                  }
7477                  result2.push(value);
7478                } else if (!includes2(values2, computed, comparator)) {
7479                  result2.push(value);
7480                }
7481              }
7482            return result2;
7483          }
7484          var baseEach = createBaseEach(baseForOwn);
7485          var baseEachRight = createBaseEach(baseForOwnRight, true);
7486          function baseEvery(collection, predicate) {
7487            var result2 = true;
7488            baseEach(collection, function(value, index, collection2) {
7489              result2 = !!predicate(value, index, collection2);
7490              return result2;
7491            });
7492            return result2;
7493          }
7494          function baseExtremum(array, iteratee2, comparator) {
7495            var index = -1, length = array.length;
7496            while (++index < length) {
7497              var value = array[index], current = iteratee2(value);
7498              if (current != null && (computed === undefined2 ? current === current && !isSymbol(current) : comparator(current, computed))) {
7499                var computed = current, result2 = value;
7500              }
7501            }
7502            return result2;
7503          }
7504          function baseFill(array, value, start2, end2) {
7505            var length = array.length;
7506            start2 = toInteger(start2);
7507            if (start2 < 0) {
7508              start2 = -start2 > length ? 0 : length + start2;
7509            }
7510            end2 = end2 === undefined2 || end2 > length ? length : toInteger(end2);
7511            if (end2 < 0) {
7512              end2 += length;
7513            }
7514            end2 = start2 > end2 ? 0 : toLength(end2);
7515            while (start2 < end2) {
7516              array[start2++] = value;
7517            }
7518            return array;
7519          }
7520          function baseFilter(collection, predicate) {
7521            var result2 = [];
7522            baseEach(collection, function(value, index, collection2) {
7523              if (predicate(value, index, collection2)) {
7524                result2.push(value);
7525              }
7526            });
7527            return result2;
7528          }
7529          function baseFlatten(array, depth, predicate, isStrict, result2) {
7530            var index = -1, length = array.length;
7531            predicate || (predicate = isFlattenable);
7532            result2 || (result2 = []);
7533            while (++index < length) {
7534              var value = array[index];
7535              if (depth > 0 && predicate(value)) {
7536                if (depth > 1) {
7537                  baseFlatten(value, depth - 1, predicate, isStrict, result2);
7538                } else {
7539                  arrayPush(result2, value);
7540                }
7541              } else if (!isStrict) {
7542                result2[result2.length] = value;
7543              }
7544            }
7545            return result2;
7546          }
7547          var baseFor = createBaseFor();
7548          var baseForRight = createBaseFor(true);
7549          function baseForOwn(object, iteratee2) {
7550            return object && baseFor(object, iteratee2, keys);
7551          }
7552          function baseForOwnRight(object, iteratee2) {
7553            return object && baseForRight(object, iteratee2, keys);
7554          }
7555          function baseFunctions(object, props) {
7556            return arrayFilter(props, function(key) {
7557              return isFunction2(object[key]);
7558            });
7559          }
7560          function baseGet(object, path) {
7561            path = castPath(path, object);
7562            var index = 0, length = path.length;
7563            while (object != null && index < length) {
7564              object = object[toKey(path[index++])];
7565            }
7566            return index && index == length ? object : undefined2;
7567          }
7568          function baseGetAllKeys(object, keysFunc, symbolsFunc) {
7569            var result2 = keysFunc(object);
7570            return isArray2(object) ? result2 : arrayPush(result2, symbolsFunc(object));
7571          }
7572          function baseGetTag(value) {
7573            if (value == null) {
7574              return value === undefined2 ? undefinedTag : nullTag;
7575            }
7576            return symToStringTag && symToStringTag in Object2(value) ? getRawTag(value) : objectToString(value);
7577          }
7578          function baseGt(value, other) {
7579            return value > other;
7580          }
7581          function baseHas(object, key) {
7582            return object != null && hasOwnProperty.call(object, key);
7583          }
7584          function baseHasIn(object, key) {
7585            return object != null && key in Object2(object);
7586          }
7587          function baseInRange(number, start2, end2) {
7588            return number >= nativeMin(start2, end2) && number < nativeMax(start2, end2);
7589          }
7590          function baseIntersection(arrays, iteratee2, comparator) {
7591            var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = [];
7592            while (othIndex--) {
7593              var array = arrays[othIndex];
7594              if (othIndex && iteratee2) {
7595                array = arrayMap(array, baseUnary(iteratee2));
7596              }
7597              maxLength = nativeMin(array.length, maxLength);
7598              caches[othIndex] = !comparator && (iteratee2 || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined2;
7599            }
7600            array = arrays[0];
7601            var index = -1, seen = caches[0];
7602            outer:
7603              while (++index < length && result2.length < maxLength) {
7604                var value = array[index], computed = iteratee2 ? iteratee2(value) : value;
7605                value = comparator || value !== 0 ? value : 0;
7606                if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) {
7607                  othIndex = othLength;
7608                  while (--othIndex) {
7609                    var cache = caches[othIndex];
7610                    if (!(cache ? cacheHas(cache, computed) : includes2(arrays[othIndex], computed, comparator))) {
7611                      continue outer;
7612                    }
7613                  }
7614                  if (seen) {
7615                    seen.push(computed);
7616                  }
7617                  result2.push(value);
7618                }
7619              }
7620            return result2;
7621          }
7622          function baseInverter(object, setter, iteratee2, accumulator) {
7623            baseForOwn(object, function(value, key, object2) {
7624              setter(accumulator, iteratee2(value), key, object2);
7625            });
7626            return accumulator;
7627          }
7628          function baseInvoke(object, path, args) {
7629            path = castPath(path, object);
7630            object = parent(object, path);
7631            var func = object == null ? object : object[toKey(last(path))];
7632            return func == null ? undefined2 : apply(func, object, args);
7633          }
7634          function baseIsArguments(value) {
7635            return isObjectLike(value) && baseGetTag(value) == argsTag;
7636          }
7637          function baseIsArrayBuffer(value) {
7638            return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
7639          }
7640          function baseIsDate(value) {
7641            return isObjectLike(value) && baseGetTag(value) == dateTag;
7642          }
7643          function baseIsEqual(value, other, bitmask, customizer, stack) {
7644            if (value === other) {
7645              return true;
7646            }
7647            if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {
7648              return value !== value && other !== other;
7649            }
7650            return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
7651          }
7652          function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
7653            var objIsArr = isArray2(object), othIsArr = isArray2(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other);
7654            objTag = objTag == argsTag ? objectTag : objTag;
7655            othTag = othTag == argsTag ? objectTag : othTag;
7656            var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
7657            if (isSameTag && isBuffer(object)) {
7658              if (!isBuffer(other)) {
7659                return false;
7660              }
7661              objIsArr = true;
7662              objIsObj = false;
7663            }
7664            if (isSameTag && !objIsObj) {
7665              stack || (stack = new Stack());
7666              return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
7667            }
7668            if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
7669              var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
7670              if (objIsWrapped || othIsWrapped) {
7671                var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
7672                stack || (stack = new Stack());
7673                return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
7674              }
7675            }
7676            if (!isSameTag) {
7677              return false;
7678            }
7679            stack || (stack = new Stack());
7680            return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
7681          }
7682          function baseIsMap(value) {
7683            return isObjectLike(value) && getTag(value) == mapTag;
7684          }
7685          function baseIsMatch(object, source, matchData, customizer) {
7686            var index = matchData.length, length = index, noCustomizer = !customizer;
7687            if (object == null) {
7688              return !length;
7689            }
7690            object = Object2(object);
7691            while (index--) {
7692              var data = matchData[index];
7693              if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
7694                return false;
7695              }
7696            }
7697            while (++index < length) {
7698              data = matchData[index];
7699              var key = data[0], objValue = object[key], srcValue = data[1];
7700              if (noCustomizer && data[2]) {
7701                if (objValue === undefined2 && !(key in object)) {
7702                  return false;
7703                }
7704              } else {
7705                var stack = new Stack();
7706                if (customizer) {
7707                  var result2 = customizer(objValue, srcValue, key, object, source, stack);
7708                }
7709                if (!(result2 === undefined2 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) {
7710                  return false;
7711                }
7712              }
7713            }
7714            return true;
7715          }
7716          function baseIsNative(value) {
7717            if (!isObject2(value) || isMasked(value)) {
7718              return false;
7719            }
7720            var pattern = isFunction2(value) ? reIsNative : reIsHostCtor;
7721            return pattern.test(toSource(value));
7722          }
7723          function baseIsRegExp(value) {
7724            return isObjectLike(value) && baseGetTag(value) == regexpTag;
7725          }
7726          function baseIsSet(value) {
7727            return isObjectLike(value) && getTag(value) == setTag;
7728          }
7729          function baseIsTypedArray(value) {
7730            return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
7731          }
7732          function baseIteratee(value) {
7733            if (typeof value == "function") {
7734              return value;
7735            }
7736            if (value == null) {
7737              return identity;
7738            }
7739            if (typeof value == "object") {
7740              return isArray2(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
7741            }
7742            return property(value);
7743          }
7744          function baseKeys(object) {
7745            if (!isPrototype(object)) {
7746              return nativeKeys(object);
7747            }
7748            var result2 = [];
7749            for (var key in Object2(object)) {
7750              if (hasOwnProperty.call(object, key) && key != "constructor") {
7751                result2.push(key);
7752              }
7753            }
7754            return result2;
7755          }
7756          function baseKeysIn(object) {
7757            if (!isObject2(object)) {
7758              return nativeKeysIn(object);
7759            }
7760            var isProto = isPrototype(object), result2 = [];
7761            for (var key in object) {
7762              if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) {
7763                result2.push(key);
7764              }
7765            }
7766            return result2;
7767          }
7768          function baseLt(value, other) {
7769            return value < other;
7770          }
7771          function baseMap(collection, iteratee2) {
7772            var index = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : [];
7773            baseEach(collection, function(value, key, collection2) {
7774              result2[++index] = iteratee2(value, key, collection2);
7775            });
7776            return result2;
7777          }
7778          function baseMatches(source) {
7779            var matchData = getMatchData(source);
7780            if (matchData.length == 1 && matchData[0][2]) {
7781              return matchesStrictComparable(matchData[0][0], matchData[0][1]);
7782            }
7783            return function(object) {
7784              return object === source || baseIsMatch(object, source, matchData);
7785            };
7786          }
7787          function baseMatchesProperty(path, srcValue) {
7788            if (isKey(path) && isStrictComparable(srcValue)) {
7789              return matchesStrictComparable(toKey(path), srcValue);
7790            }
7791            return function(object) {
7792              var objValue = get(object, path);
7793              return objValue === undefined2 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
7794            };
7795          }
7796          function baseMerge(object, source, srcIndex, customizer, stack) {
7797            if (object === source) {
7798              return;
7799            }
7800            baseFor(source, function(srcValue, key) {
7801              stack || (stack = new Stack());
7802              if (isObject2(srcValue)) {
7803                baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
7804              } else {
7805                var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : undefined2;
7806                if (newValue === undefined2) {
7807                  newValue = srcValue;
7808                }
7809                assignMergeValue(object, key, newValue);
7810              }
7811            }, keysIn);
7812          }
7813          function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
7814            var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue);
7815            if (stacked) {
7816              assignMergeValue(object, key, stacked);
7817              return;
7818            }
7819            var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined2;
7820            var isCommon = newValue === undefined2;
7821            if (isCommon) {
7822              var isArr = isArray2(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);
7823              newValue = srcValue;
7824              if (isArr || isBuff || isTyped) {
7825                if (isArray2(objValue)) {
7826                  newValue = objValue;
7827                } else if (isArrayLikeObject(objValue)) {
7828                  newValue = copyArray(objValue);
7829                } else if (isBuff) {
7830                  isCommon = false;
7831                  newValue = cloneBuffer(srcValue, true);
7832                } else if (isTyped) {
7833                  isCommon = false;
7834                  newValue = cloneTypedArray(srcValue, true);
7835                } else {
7836                  newValue = [];
7837                }
7838              } else if (isPlainObject(srcValue) || isArguments(srcValue)) {
7839                newValue = objValue;
7840                if (isArguments(objValue)) {
7841                  newValue = toPlainObject(objValue);
7842                } else if (!isObject2(objValue) || isFunction2(objValue)) {
7843                  newValue = initCloneObject(srcValue);
7844                }
7845              } else {
7846                isCommon = false;
7847              }
7848            }
7849            if (isCommon) {
7850              stack.set(srcValue, newValue);
7851              mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
7852              stack["delete"](srcValue);
7853            }
7854            assignMergeValue(object, key, newValue);
7855          }
7856          function baseNth(array, n) {
7857            var length = array.length;
7858            if (!length) {
7859              return;
7860            }
7861            n += n < 0 ? length : 0;
7862            return isIndex(n, length) ? array[n] : undefined2;
7863          }
7864          function baseOrderBy(collection, iteratees, orders) {
7865            if (iteratees.length) {
7866              iteratees = arrayMap(iteratees, function(iteratee2) {
7867                if (isArray2(iteratee2)) {
7868                  return function(value) {
7869                    return baseGet(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2);
7870                  };
7871                }
7872                return iteratee2;
7873              });
7874            } else {
7875              iteratees = [identity];
7876            }
7877            var index = -1;
7878            iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
7879            var result2 = baseMap(collection, function(value, key, collection2) {
7880              var criteria = arrayMap(iteratees, function(iteratee2) {
7881                return iteratee2(value);
7882              });
7883              return { "criteria": criteria, "index": ++index, "value": value };
7884            });
7885            return baseSortBy(result2, function(object, other) {
7886              return compareMultiple(object, other, orders);
7887            });
7888          }
7889          function basePick(object, paths) {
7890            return basePickBy(object, paths, function(value, path) {
7891              return hasIn(object, path);
7892            });
7893          }
7894          function basePickBy(object, paths, predicate) {
7895            var index = -1, length = paths.length, result2 = {};
7896            while (++index < length) {
7897              var path = paths[index], value = baseGet(object, path);
7898              if (predicate(value, path)) {
7899                baseSet(result2, castPath(path, object), value);
7900              }
7901            }
7902            return result2;
7903          }
7904          function basePropertyDeep(path) {
7905            return function(object) {
7906              return baseGet(object, path);
7907            };
7908          }
7909          function basePullAll(array, values2, iteratee2, comparator) {
7910            var indexOf2 = comparator ? baseIndexOfWith : baseIndexOf, index = -1, length = values2.length, seen = array;
7911            if (array === values2) {
7912              values2 = copyArray(values2);
7913            }
7914            if (iteratee2) {
7915              seen = arrayMap(array, baseUnary(iteratee2));
7916            }
7917            while (++index < length) {
7918              var fromIndex = 0, value = values2[index], computed = iteratee2 ? iteratee2(value) : value;
7919              while ((fromIndex = indexOf2(seen, computed, fromIndex, comparator)) > -1) {
7920                if (seen !== array) {
7921                  splice.call(seen, fromIndex, 1);
7922                }
7923                splice.call(array, fromIndex, 1);
7924              }
7925            }
7926            return array;
7927          }
7928          function basePullAt(array, indexes) {
7929            var length = array ? indexes.length : 0, lastIndex = length - 1;
7930            while (length--) {
7931              var index = indexes[length];
7932              if (length == lastIndex || index !== previous) {
7933                var previous = index;
7934                if (isIndex(index)) {
7935                  splice.call(array, index, 1);
7936                } else {
7937                  baseUnset(array, index);
7938                }
7939              }
7940            }
7941            return array;
7942          }
7943          function baseRandom(lower, upper) {
7944            return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
7945          }
7946          function baseRange(start2, end2, step, fromRight) {
7947            var index = -1, length = nativeMax(nativeCeil((end2 - start2) / (step || 1)), 0), result2 = Array2(length);
7948            while (length--) {
7949              result2[fromRight ? length : ++index] = start2;
7950              start2 += step;
7951            }
7952            return result2;
7953          }
7954          function baseRepeat(string, n) {
7955            var result2 = "";
7956            if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
7957              return result2;
7958            }
7959            do {
7960              if (n % 2) {
7961                result2 += string;
7962              }
7963              n = nativeFloor(n / 2);
7964              if (n) {
7965                string += string;
7966              }
7967            } while (n);
7968            return result2;
7969          }
7970          function baseRest(func, start2) {
7971            return setToString(overRest(func, start2, identity), func + "");
7972          }
7973          function baseSample(collection) {
7974            return arraySample(values(collection));
7975          }
7976          function baseSampleSize(collection, n) {
7977            var array = values(collection);
7978            return shuffleSelf(array, baseClamp(n, 0, array.length));
7979          }
7980          function baseSet(object, path, value, customizer) {
7981            if (!isObject2(object)) {
7982              return object;
7983            }
7984            path = castPath(path, object);
7985            var index = -1, length = path.length, lastIndex = length - 1, nested = object;
7986            while (nested != null && ++index < length) {
7987              var key = toKey(path[index]), newValue = value;
7988              if (key === "__proto__" || key === "constructor" || key === "prototype") {
7989                return object;
7990              }
7991              if (index != lastIndex) {
7992                var objValue = nested[key];
7993                newValue = customizer ? customizer(objValue, key, nested) : undefined2;
7994                if (newValue === undefined2) {
7995                  newValue = isObject2(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};
7996                }
7997              }
7998              assignValue(nested, key, newValue);
7999              nested = nested[key];
8000            }
8001            return object;
8002          }
8003          var baseSetData = !metaMap ? identity : function(func, data) {
8004            metaMap.set(func, data);
8005            return func;
8006          };
8007          var baseSetToString = !defineProperty ? identity : function(func, string) {
8008            return defineProperty(func, "toString", {
8009              "configurable": true,
8010              "enumerable": false,
8011              "value": constant(string),
8012              "writable": true
8013            });
8014          };
8015          function baseShuffle(collection) {
8016            return shuffleSelf(values(collection));
8017          }
8018          function baseSlice(array, start2, end2) {
8019            var index = -1, length = array.length;
8020            if (start2 < 0) {
8021              start2 = -start2 > length ? 0 : length + start2;
8022            }
8023            end2 = end2 > length ? length : end2;
8024            if (end2 < 0) {
8025              end2 += length;
8026            }
8027            length = start2 > end2 ? 0 : end2 - start2 >>> 0;
8028            start2 >>>= 0;
8029            var result2 = Array2(length);
8030            while (++index < length) {
8031              result2[index] = array[index + start2];
8032            }
8033            return result2;
8034          }
8035          function baseSome(collection, predicate) {
8036            var result2;
8037            baseEach(collection, function(value, index, collection2) {
8038              result2 = predicate(value, index, collection2);
8039              return !result2;
8040            });
8041            return !!result2;
8042          }
8043          function baseSortedIndex(array, value, retHighest) {
8044            var low = 0, high = array == null ? low : array.length;
8045            if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
8046              while (low < high) {
8047                var mid = low + high >>> 1, computed = array[mid];
8048                if (computed !== null && !isSymbol(computed) && (retHighest ? computed <= value : computed < value)) {
8049                  low = mid + 1;
8050                } else {
8051                  high = mid;
8052                }
8053              }
8054              return high;
8055            }
8056            return baseSortedIndexBy(array, value, identity, retHighest);
8057          }
8058          function baseSortedIndexBy(array, value, iteratee2, retHighest) {
8059            var low = 0, high = array == null ? 0 : array.length;
8060            if (high === 0) {
8061              return 0;
8062            }
8063            value = iteratee2(value);
8064            var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol(value), valIsUndefined = value === undefined2;
8065            while (low < high) {
8066              var mid = nativeFloor((low + high) / 2), computed = iteratee2(array[mid]), othIsDefined = computed !== undefined2, othIsNull = computed === null, othIsReflexive = computed === computed, othIsSymbol = isSymbol(computed);
8067              if (valIsNaN) {
8068                var setLow = retHighest || othIsReflexive;
8069              } else if (valIsUndefined) {
8070                setLow = othIsReflexive && (retHighest || othIsDefined);
8071              } else if (valIsNull) {
8072                setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
8073              } else if (valIsSymbol) {
8074                setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
8075              } else if (othIsNull || othIsSymbol) {
8076                setLow = false;
8077              } else {
8078                setLow = retHighest ? computed <= value : computed < value;
8079              }
8080              if (setLow) {
8081                low = mid + 1;
8082              } else {
8083                high = mid;
8084              }
8085            }
8086            return nativeMin(high, MAX_ARRAY_INDEX);
8087          }
8088          function baseSortedUniq(array, iteratee2) {
8089            var index = -1, length = array.length, resIndex = 0, result2 = [];
8090            while (++index < length) {
8091              var value = array[index], computed = iteratee2 ? iteratee2(value) : value;
8092              if (!index || !eq(computed, seen)) {
8093                var seen = computed;
8094                result2[resIndex++] = value === 0 ? 0 : value;
8095              }
8096            }
8097            return result2;
8098          }
8099          function baseToNumber(value) {
8100            if (typeof value == "number") {
8101              return value;
8102            }
8103            if (isSymbol(value)) {
8104              return NAN;
8105            }
8106            return +value;
8107          }
8108          function baseToString(value) {
8109            if (typeof value == "string") {
8110              return value;
8111            }
8112            if (isArray2(value)) {
8113              return arrayMap(value, baseToString) + "";
8114            }
8115            if (isSymbol(value)) {
8116              return symbolToString ? symbolToString.call(value) : "";
8117            }
8118            var result2 = value + "";
8119            return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2;
8120          }
8121          function baseUniq(array, iteratee2, comparator) {
8122            var index = -1, includes2 = arrayIncludes, length = array.length, isCommon = true, result2 = [], seen = result2;
8123            if (comparator) {
8124              isCommon = false;
8125              includes2 = arrayIncludesWith;
8126            } else if (length >= LARGE_ARRAY_SIZE) {
8127              var set2 = iteratee2 ? null : createSet(array);
8128              if (set2) {
8129                return setToArray(set2);
8130              }
8131              isCommon = false;
8132              includes2 = cacheHas;
8133              seen = new SetCache();
8134            } else {
8135              seen = iteratee2 ? [] : result2;
8136            }
8137            outer:
8138              while (++index < length) {
8139                var value = array[index], computed = iteratee2 ? iteratee2(value) : value;
8140                value = comparator || value !== 0 ? value : 0;
8141                if (isCommon && computed === computed) {
8142                  var seenIndex = seen.length;
8143                  while (seenIndex--) {
8144                    if (seen[seenIndex] === computed) {
8145                      continue outer;
8146                    }
8147                  }
8148                  if (iteratee2) {
8149                    seen.push(computed);
8150                  }
8151                  result2.push(value);
8152                } else if (!includes2(seen, computed, comparator)) {
8153                  if (seen !== result2) {
8154                    seen.push(computed);
8155                  }
8156                  result2.push(value);
8157                }
8158              }
8159            return result2;
8160          }
8161          function baseUnset(object, path) {
8162            path = castPath(path, object);
8163            object = parent(object, path);
8164            return object == null || delete object[toKey(last(path))];
8165          }
8166          function baseUpdate(object, path, updater, customizer) {
8167            return baseSet(object, path, updater(baseGet(object, path)), customizer);
8168          }
8169          function baseWhile(array, predicate, isDrop, fromRight) {
8170            var length = array.length, index = fromRight ? length : -1;
8171            while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {
8172            }
8173            return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index);
8174          }
8175          function baseWrapperValue(value, actions) {
8176            var result2 = value;
8177            if (result2 instanceof LazyWrapper) {
8178              result2 = result2.value();
8179            }
8180            return arrayReduce(actions, function(result3, action) {
8181              return action.func.apply(action.thisArg, arrayPush([result3], action.args));
8182            }, result2);
8183          }
8184          function baseXor(arrays, iteratee2, comparator) {
8185            var length = arrays.length;
8186            if (length < 2) {
8187              return length ? baseUniq(arrays[0]) : [];
8188            }
8189            var index = -1, result2 = Array2(length);
8190            while (++index < length) {
8191              var array = arrays[index], othIndex = -1;
8192              while (++othIndex < length) {
8193                if (othIndex != index) {
8194                  result2[index] = baseDifference(result2[index] || array, arrays[othIndex], iteratee2, comparator);
8195                }
8196              }
8197            }
8198            return baseUniq(baseFlatten(result2, 1), iteratee2, comparator);
8199          }
8200          function baseZipObject(props, values2, assignFunc) {
8201            var index = -1, length = props.length, valsLength = values2.length, result2 = {};
8202            while (++index < length) {
8203              var value = index < valsLength ? values2[index] : undefined2;
8204              assignFunc(result2, props[index], value);
8205            }
8206            return result2;
8207          }
8208          function castArrayLikeObject(value) {
8209            return isArrayLikeObject(value) ? value : [];
8210          }
8211          function castFunction(value) {
8212            return typeof value == "function" ? value : identity;
8213          }
8214          function castPath(value, object) {
8215            if (isArray2(value)) {
8216              return value;
8217            }
8218            return isKey(value, object) ? [value] : stringToPath(toString(value));
8219          }
8220          var castRest = baseRest;
8221          function castSlice(array, start2, end2) {
8222            var length = array.length;
8223            end2 = end2 === undefined2 ? length : end2;
8224            return !start2 && end2 >= length ? array : baseSlice(array, start2, end2);
8225          }
8226          var clearTimeout2 = ctxClearTimeout || function(id) {
8227            return root.clearTimeout(id);
8228          };
8229          function cloneBuffer(buffer, isDeep) {
8230            if (isDeep) {
8231              return buffer.slice();
8232            }
8233            var length = buffer.length, result2 = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
8234            buffer.copy(result2);
8235            return result2;
8236          }
8237          function cloneArrayBuffer(arrayBuffer) {
8238            var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength);
8239            new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer));
8240            return result2;
8241          }
8242          function cloneDataView(dataView, isDeep) {
8243            var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
8244            return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
8245          }
8246          function cloneRegExp(regexp) {
8247            var result2 = new regexp.constructor(regexp.source, reFlags.exec(regexp));
8248            result2.lastIndex = regexp.lastIndex;
8249            return result2;
8250          }
8251          function cloneSymbol(symbol) {
8252            return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {};
8253          }
8254          function cloneTypedArray(typedArray, isDeep) {
8255            var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
8256            return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
8257          }
8258          function compareAscending(value, other) {
8259            if (value !== other) {
8260              var valIsDefined = value !== undefined2, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol(value);
8261              var othIsDefined = other !== undefined2, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol(other);
8262              if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {
8263                return 1;
8264              }
8265              if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {
8266                return -1;
8267              }
8268            }
8269            return 0;
8270          }
8271          function compareMultiple(object, other, orders) {
8272            var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length;
8273            while (++index < length) {
8274              var result2 = compareAscending(objCriteria[index], othCriteria[index]);
8275              if (result2) {
8276                if (index >= ordersLength) {
8277                  return result2;
8278                }
8279                var order2 = orders[index];
8280                return result2 * (order2 == "desc" ? -1 : 1);
8281              }
8282            }
8283            return object.index - other.index;
8284          }
8285          function composeArgs(args, partials, holders, isCurried) {
8286            var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried;
8287            while (++leftIndex < leftLength) {
8288              result2[leftIndex] = partials[leftIndex];
8289            }
8290            while (++argsIndex < holdersLength) {
8291              if (isUncurried || argsIndex < argsLength) {
8292                result2[holders[argsIndex]] = args[argsIndex];
8293              }
8294            }
8295            while (rangeLength--) {
8296              result2[leftIndex++] = args[argsIndex++];
8297            }
8298            return result2;
8299          }
8300          function composeArgsRight(args, partials, holders, isCurried) {
8301            var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried;
8302            while (++argsIndex < rangeLength) {
8303              result2[argsIndex] = args[argsIndex];
8304            }
8305            var offset2 = argsIndex;
8306            while (++rightIndex < rightLength) {
8307              result2[offset2 + rightIndex] = partials[rightIndex];
8308            }
8309            while (++holdersIndex < holdersLength) {
8310              if (isUncurried || argsIndex < argsLength) {
8311                result2[offset2 + holders[holdersIndex]] = args[argsIndex++];
8312              }
8313            }
8314            return result2;
8315          }
8316          function copyArray(source, array) {
8317            var index = -1, length = source.length;
8318            array || (array = Array2(length));
8319            while (++index < length) {
8320              array[index] = source[index];
8321            }
8322            return array;
8323          }
8324          function copyObject(source, props, object, customizer) {
8325            var isNew = !object;
8326            object || (object = {});
8327            var index = -1, length = props.length;
8328            while (++index < length) {
8329              var key = props[index];
8330              var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined2;
8331              if (newValue === undefined2) {
8332                newValue = source[key];
8333              }
8334              if (isNew) {
8335                baseAssignValue(object, key, newValue);
8336              } else {
8337                assignValue(object, key, newValue);
8338              }
8339            }
8340            return object;
8341          }
8342          function copySymbols(source, object) {
8343            return copyObject(source, getSymbols(source), object);
8344          }
8345          function copySymbolsIn(source, object) {
8346            return copyObject(source, getSymbolsIn(source), object);
8347          }
8348          function createAggregator(setter, initializer) {
8349            return function(collection, iteratee2) {
8350              var func = isArray2(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {};
8351              return func(collection, setter, getIteratee(iteratee2, 2), accumulator);
8352            };
8353          }
8354          function createAssigner(assigner) {
8355            return baseRest(function(object, sources) {
8356              var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : undefined2, guard = length > 2 ? sources[2] : undefined2;
8357              customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : undefined2;
8358              if (guard && isIterateeCall(sources[0], sources[1], guard)) {
8359                customizer = length < 3 ? undefined2 : customizer;
8360                length = 1;
8361              }
8362              object = Object2(object);
8363              while (++index < length) {
8364                var source = sources[index];
8365                if (source) {
8366                  assigner(object, source, index, customizer);
8367                }
8368              }
8369              return object;
8370            });
8371          }
8372          function createBaseEach(eachFunc, fromRight) {
8373            return function(collection, iteratee2) {
8374              if (collection == null) {
8375                return collection;
8376              }
8377              if (!isArrayLike(collection)) {
8378                return eachFunc(collection, iteratee2);
8379              }
8380              var length = collection.length, index = fromRight ? length : -1, iterable = Object2(collection);
8381              while (fromRight ? index-- : ++index < length) {
8382                if (iteratee2(iterable[index], index, iterable) === false) {
8383                  break;
8384                }
8385              }
8386              return collection;
8387            };
8388          }
8389          function createBaseFor(fromRight) {
8390            return function(object, iteratee2, keysFunc) {
8391              var index = -1, iterable = Object2(object), props = keysFunc(object), length = props.length;
8392              while (length--) {
8393                var key = props[fromRight ? length : ++index];
8394                if (iteratee2(iterable[key], key, iterable) === false) {
8395                  break;
8396                }
8397              }
8398              return object;
8399            };
8400          }
8401          function createBind(func, bitmask, thisArg) {
8402            var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
8403            function wrapper() {
8404              var fn2 = this && this !== root && this instanceof wrapper ? Ctor : func;
8405              return fn2.apply(isBind ? thisArg : this, arguments);
8406            }
8407            return wrapper;
8408          }
8409          function createCaseFirst(methodName) {
8410            return function(string) {
8411              string = toString(string);
8412              var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined2;
8413              var chr = strSymbols ? strSymbols[0] : string.charAt(0);
8414              var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1);
8415              return chr[methodName]() + trailing;
8416            };
8417          }
8418          function createCompounder(callback) {
8419            return function(string) {
8420              return arrayReduce(words(deburr(string).replace(reApos, "")), callback, "");
8421            };
8422          }
8423          function createCtor(Ctor) {
8424            return function() {
8425              var args = arguments;
8426              switch (args.length) {
8427                case 0:
8428                  return new Ctor();
8429                case 1:
8430                  return new Ctor(args[0]);
8431                case 2:
8432                  return new Ctor(args[0], args[1]);
8433                case 3:
8434                  return new Ctor(args[0], args[1], args[2]);
8435                case 4:
8436                  return new Ctor(args[0], args[1], args[2], args[3]);
8437                case 5:
8438                  return new Ctor(args[0], args[1], args[2], args[3], args[4]);
8439                case 6:
8440                  return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
8441                case 7:
8442                  return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
8443              }
8444              var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args);
8445              return isObject2(result2) ? result2 : thisBinding;
8446            };
8447          }
8448          function createCurry(func, bitmask, arity) {
8449            var Ctor = createCtor(func);
8450            function wrapper() {
8451              var length = arguments.length, args = Array2(length), index = length, placeholder = getHolder(wrapper);
8452              while (index--) {
8453                args[index] = arguments[index];
8454              }
8455              var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder);
8456              length -= holders.length;
8457              if (length < arity) {
8458                return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, undefined2, args, holders, undefined2, undefined2, arity - length);
8459              }
8460              var fn2 = this && this !== root && this instanceof wrapper ? Ctor : func;
8461              return apply(fn2, this, args);
8462            }
8463            return wrapper;
8464          }
8465          function createFind(findIndexFunc) {
8466            return function(collection, predicate, fromIndex) {
8467              var iterable = Object2(collection);
8468              if (!isArrayLike(collection)) {
8469                var iteratee2 = getIteratee(predicate, 3);
8470                collection = keys(collection);
8471                predicate = function(key) {
8472                  return iteratee2(iterable[key], key, iterable);
8473                };
8474              }
8475              var index = findIndexFunc(collection, predicate, fromIndex);
8476              return index > -1 ? iterable[iteratee2 ? collection[index] : index] : undefined2;
8477            };
8478          }
8479          function createFlow(fromRight) {
8480            return flatRest(function(funcs) {
8481              var length = funcs.length, index = length, prereq = LodashWrapper.prototype.thru;
8482              if (fromRight) {
8483                funcs.reverse();
8484              }
8485              while (index--) {
8486                var func = funcs[index];
8487                if (typeof func != "function") {
8488                  throw new TypeError2(FUNC_ERROR_TEXT);
8489                }
8490                if (prereq && !wrapper && getFuncName(func) == "wrapper") {
8491                  var wrapper = new LodashWrapper([], true);
8492                }
8493              }
8494              index = wrapper ? index : length;
8495              while (++index < length) {
8496                func = funcs[index];
8497                var funcName = getFuncName(func), data = funcName == "wrapper" ? getData(func) : undefined2;
8498                if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) {
8499                  wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
8500                } else {
8501                  wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func);
8502                }
8503              }
8504              return function() {
8505                var args = arguments, value = args[0];
8506                if (wrapper && args.length == 1 && isArray2(value)) {
8507                  return wrapper.plant(value).value();
8508                }
8509                var index2 = 0, result2 = length ? funcs[index2].apply(this, args) : value;
8510                while (++index2 < length) {
8511                  result2 = funcs[index2].call(this, result2);
8512                }
8513                return result2;
8514              };
8515            });
8516          }
8517          function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) {
8518            var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined2 : createCtor(func);
8519            function wrapper() {
8520              var length = arguments.length, args = Array2(length), index = length;
8521              while (index--) {
8522                args[index] = arguments[index];
8523              }
8524              if (isCurried) {
8525                var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder);
8526              }
8527              if (partials) {
8528                args = composeArgs(args, partials, holders, isCurried);
8529              }
8530              if (partialsRight) {
8531                args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
8532              }
8533              length -= holdersCount;
8534              if (isCurried && length < arity) {
8535                var newHolders = replaceHolders(args, placeholder);
8536                return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, thisArg, args, newHolders, argPos, ary2, arity - length);
8537              }
8538              var thisBinding = isBind ? thisArg : this, fn2 = isBindKey ? thisBinding[func] : func;
8539              length = args.length;
8540              if (argPos) {
8541                args = reorder(args, argPos);
8542              } else if (isFlip && length > 1) {
8543                args.reverse();
8544              }
8545              if (isAry && ary2 < length) {
8546                args.length = ary2;
8547              }
8548              if (this && this !== root && this instanceof wrapper) {
8549                fn2 = Ctor || createCtor(fn2);
8550              }
8551              return fn2.apply(thisBinding, args);
8552            }
8553            return wrapper;
8554          }
8555          function createInverter(setter, toIteratee) {
8556            return function(object, iteratee2) {
8557              return baseInverter(object, setter, toIteratee(iteratee2), {});
8558            };
8559          }
8560          function createMathOperation(operator, defaultValue) {
8561            return function(value, other) {
8562              var result2;
8563              if (value === undefined2 && other === undefined2) {
8564                return defaultValue;
8565              }
8566              if (value !== undefined2) {
8567                result2 = value;
8568              }
8569              if (other !== undefined2) {
8570                if (result2 === undefined2) {
8571                  return other;
8572                }
8573                if (typeof value == "string" || typeof other == "string") {
8574                  value = baseToString(value);
8575                  other = baseToString(other);
8576                } else {
8577                  value = baseToNumber(value);
8578                  other = baseToNumber(other);
8579                }
8580                result2 = operator(value, other);
8581              }
8582              return result2;
8583            };
8584          }
8585          function createOver(arrayFunc) {
8586            return flatRest(function(iteratees) {
8587              iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
8588              return baseRest(function(args) {
8589                var thisArg = this;
8590                return arrayFunc(iteratees, function(iteratee2) {
8591                  return apply(iteratee2, thisArg, args);
8592                });
8593              });
8594            });
8595          }
8596          function createPadding(length, chars) {
8597            chars = chars === undefined2 ? " " : baseToString(chars);
8598            var charsLength = chars.length;
8599            if (charsLength < 2) {
8600              return charsLength ? baseRepeat(chars, length) : chars;
8601            }
8602            var result2 = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
8603            return hasUnicode(chars) ? castSlice(stringToArray(result2), 0, length).join("") : result2.slice(0, length);
8604          }
8605          function createPartial(func, bitmask, thisArg, partials) {
8606            var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
8607            function wrapper() {
8608              var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn2 = this && this !== root && this instanceof wrapper ? Ctor : func;
8609              while (++leftIndex < leftLength) {
8610                args[leftIndex] = partials[leftIndex];
8611              }
8612              while (argsLength--) {
8613                args[leftIndex++] = arguments[++argsIndex];
8614              }
8615              return apply(fn2, isBind ? thisArg : this, args);
8616            }
8617            return wrapper;
8618          }
8619          function createRange(fromRight) {
8620            return function(start2, end2, step) {
8621              if (step && typeof step != "number" && isIterateeCall(start2, end2, step)) {
8622                end2 = step = undefined2;
8623              }
8624              start2 = toFinite(start2);
8625              if (end2 === undefined2) {
8626                end2 = start2;
8627                start2 = 0;
8628              } else {
8629                end2 = toFinite(end2);
8630              }
8631              step = step === undefined2 ? start2 < end2 ? 1 : -1 : toFinite(step);
8632              return baseRange(start2, end2, step, fromRight);
8633            };
8634          }
8635          function createRelationalOperation(operator) {
8636            return function(value, other) {
8637              if (!(typeof value == "string" && typeof other == "string")) {
8638                value = toNumber(value);
8639                other = toNumber(other);
8640              }
8641              return operator(value, other);
8642            };
8643          }
8644          function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) {
8645            var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined2, newHoldersRight = isCurry ? undefined2 : holders, newPartials = isCurry ? partials : undefined2, newPartialsRight = isCurry ? undefined2 : partials;
8646            bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG;
8647            bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
8648            if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
8649              bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
8650            }
8651            var newData = [
8652              func,
8653              bitmask,
8654              thisArg,
8655              newPartials,
8656              newHolders,
8657              newPartialsRight,
8658              newHoldersRight,
8659              argPos,
8660              ary2,
8661              arity
8662            ];
8663            var result2 = wrapFunc.apply(undefined2, newData);
8664            if (isLaziable(func)) {
8665              setData(result2, newData);
8666            }
8667            result2.placeholder = placeholder;
8668            return setWrapToString(result2, func, bitmask);
8669          }
8670          function createRound(methodName) {
8671            var func = Math2[methodName];
8672            return function(number, precision) {
8673              number = toNumber(number);
8674              precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
8675              if (precision && nativeIsFinite(number)) {
8676                var pair = (toString(number) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision));
8677                pair = (toString(value) + "e").split("e");
8678                return +(pair[0] + "e" + (+pair[1] - precision));
8679              }
8680              return func(number);
8681            };
8682          }
8683          var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop : function(values2) {
8684            return new Set2(values2);
8685          };
8686          function createToPairs(keysFunc) {
8687            return function(object) {
8688              var tag = getTag(object);
8689              if (tag == mapTag) {
8690                return mapToArray(object);
8691              }
8692              if (tag == setTag) {
8693                return setToPairs(object);
8694              }
8695              return baseToPairs(object, keysFunc(object));
8696            };
8697          }
8698          function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) {
8699            var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
8700            if (!isBindKey && typeof func != "function") {
8701              throw new TypeError2(FUNC_ERROR_TEXT);
8702            }
8703            var length = partials ? partials.length : 0;
8704            if (!length) {
8705              bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
8706              partials = holders = undefined2;
8707            }
8708            ary2 = ary2 === undefined2 ? ary2 : nativeMax(toInteger(ary2), 0);
8709            arity = arity === undefined2 ? arity : toInteger(arity);
8710            length -= holders ? holders.length : 0;
8711            if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
8712              var partialsRight = partials, holdersRight = holders;
8713              partials = holders = undefined2;
8714            }
8715            var data = isBindKey ? undefined2 : getData(func);
8716            var newData = [
8717              func,
8718              bitmask,
8719              thisArg,
8720              partials,
8721              holders,
8722              partialsRight,
8723              holdersRight,
8724              argPos,
8725              ary2,
8726              arity
8727            ];
8728            if (data) {
8729              mergeData(newData, data);
8730            }
8731            func = newData[0];
8732            bitmask = newData[1];
8733            thisArg = newData[2];
8734            partials = newData[3];
8735            holders = newData[4];
8736            arity = newData[9] = newData[9] === undefined2 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0);
8737            if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
8738              bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
8739            }
8740            if (!bitmask || bitmask == WRAP_BIND_FLAG) {
8741              var result2 = createBind(func, bitmask, thisArg);
8742            } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
8743              result2 = createCurry(func, bitmask, arity);
8744            } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
8745              result2 = createPartial(func, bitmask, thisArg, partials);
8746            } else {
8747              result2 = createHybrid.apply(undefined2, newData);
8748            }
8749            var setter = data ? baseSetData : setData;
8750            return setWrapToString(setter(result2, newData), func, bitmask);
8751          }
8752          function customDefaultsAssignIn(objValue, srcValue, key, object) {
8753            if (objValue === undefined2 || eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key)) {
8754              return srcValue;
8755            }
8756            return objValue;
8757          }
8758          function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
8759            if (isObject2(objValue) && isObject2(srcValue)) {
8760              stack.set(srcValue, objValue);
8761              baseMerge(objValue, srcValue, undefined2, customDefaultsMerge, stack);
8762              stack["delete"](srcValue);
8763            }
8764            return objValue;
8765          }
8766          function customOmitClone(value) {
8767            return isPlainObject(value) ? undefined2 : value;
8768          }
8769          function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
8770            var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length;
8771            if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
8772              return false;
8773            }
8774            var arrStacked = stack.get(array);
8775            var othStacked = stack.get(other);
8776            if (arrStacked && othStacked) {
8777              return arrStacked == other && othStacked == array;
8778            }
8779            var index = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined2;
8780            stack.set(array, other);
8781            stack.set(other, array);
8782            while (++index < arrLength) {
8783              var arrValue = array[index], othValue = other[index];
8784              if (customizer) {
8785                var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
8786              }
8787              if (compared !== undefined2) {
8788                if (compared) {
8789                  continue;
8790                }
8791                result2 = false;
8792                break;
8793              }
8794              if (seen) {
8795                if (!arraySome(other, function(othValue2, othIndex) {
8796                  if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
8797                    return seen.push(othIndex);
8798                  }
8799                })) {
8800                  result2 = false;
8801                  break;
8802                }
8803              } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
8804                result2 = false;
8805                break;
8806              }
8807            }
8808            stack["delete"](array);
8809            stack["delete"](other);
8810            return result2;
8811          }
8812          function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
8813            switch (tag) {
8814              case dataViewTag:
8815                if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
8816                  return false;
8817                }
8818                object = object.buffer;
8819                other = other.buffer;
8820              case arrayBufferTag:
8821                if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {
8822                  return false;
8823                }
8824                return true;
8825              case boolTag:
8826              case dateTag:
8827              case numberTag:
8828                return eq(+object, +other);
8829              case errorTag:
8830                return object.name == other.name && object.message == other.message;
8831              case regexpTag:
8832              case stringTag:
8833                return object == other + "";
8834              case mapTag:
8835                var convert = mapToArray;
8836              case setTag:
8837                var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
8838                convert || (convert = setToArray);
8839                if (object.size != other.size && !isPartial) {
8840                  return false;
8841                }
8842                var stacked = stack.get(object);
8843                if (stacked) {
8844                  return stacked == other;
8845                }
8846                bitmask |= COMPARE_UNORDERED_FLAG;
8847                stack.set(object, other);
8848                var result2 = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
8849                stack["delete"](object);
8850                return result2;
8851              case symbolTag:
8852                if (symbolValueOf) {
8853                  return symbolValueOf.call(object) == symbolValueOf.call(other);
8854                }
8855            }
8856            return false;
8857          }
8858          function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
8859            var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;
8860            if (objLength != othLength && !isPartial) {
8861              return false;
8862            }
8863            var index = objLength;
8864            while (index--) {
8865              var key = objProps[index];
8866              if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
8867                return false;
8868              }
8869            }
8870            var objStacked = stack.get(object);
8871            var othStacked = stack.get(other);
8872            if (objStacked && othStacked) {
8873              return objStacked == other && othStacked == object;
8874            }
8875            var result2 = true;
8876            stack.set(object, other);
8877            stack.set(other, object);
8878            var skipCtor = isPartial;
8879            while (++index < objLength) {
8880              key = objProps[index];
8881              var objValue = object[key], othValue = other[key];
8882              if (customizer) {
8883                var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
8884              }
8885              if (!(compared === undefined2 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
8886                result2 = false;
8887                break;
8888              }
8889              skipCtor || (skipCtor = key == "constructor");
8890            }
8891            if (result2 && !skipCtor) {
8892              var objCtor = object.constructor, othCtor = other.constructor;
8893              if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
8894                result2 = false;
8895              }
8896            }
8897            stack["delete"](object);
8898            stack["delete"](other);
8899            return result2;
8900          }
8901          function flatRest(func) {
8902            return setToString(overRest(func, undefined2, flatten), func + "");
8903          }
8904          function getAllKeys(object) {
8905            return baseGetAllKeys(object, keys, getSymbols);
8906          }
8907          function getAllKeysIn(object) {
8908            return baseGetAllKeys(object, keysIn, getSymbolsIn);
8909          }
8910          var getData = !metaMap ? noop : function(func) {
8911            return metaMap.get(func);
8912          };
8913          function getFuncName(func) {
8914            var result2 = func.name + "", array = realNames[result2], length = hasOwnProperty.call(realNames, result2) ? array.length : 0;
8915            while (length--) {
8916              var data = array[length], otherFunc = data.func;
8917              if (otherFunc == null || otherFunc == func) {
8918                return data.name;
8919              }
8920            }
8921            return result2;
8922          }
8923          function getHolder(func) {
8924            var object = hasOwnProperty.call(lodash, "placeholder") ? lodash : func;
8925            return object.placeholder;
8926          }
8927          function getIteratee() {
8928            var result2 = lodash.iteratee || iteratee;
8929            result2 = result2 === iteratee ? baseIteratee : result2;
8930            return arguments.length ? result2(arguments[0], arguments[1]) : result2;
8931          }
8932          function getMapData(map2, key) {
8933            var data = map2.__data__;
8934            return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
8935          }
8936          function getMatchData(object) {
8937            var result2 = keys(object), length = result2.length;
8938            while (length--) {
8939              var key = result2[length], value = object[key];
8940              result2[length] = [key, value, isStrictComparable(value)];
8941            }
8942            return result2;
8943          }
8944          function getNative(object, key) {
8945            var value = getValue(object, key);
8946            return baseIsNative(value) ? value : undefined2;
8947          }
8948          function getRawTag(value) {
8949            var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
8950            try {
8951              value[symToStringTag] = undefined2;
8952              var unmasked = true;
8953            } catch (e) {
8954            }
8955            var result2 = nativeObjectToString.call(value);
8956            if (unmasked) {
8957              if (isOwn) {
8958                value[symToStringTag] = tag;
8959              } else {
8960                delete value[symToStringTag];
8961              }
8962            }
8963            return result2;
8964          }
8965          var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
8966            if (object == null) {
8967              return [];
8968            }
8969            object = Object2(object);
8970            return arrayFilter(nativeGetSymbols(object), function(symbol) {
8971              return propertyIsEnumerable.call(object, symbol);
8972            });
8973          };
8974          var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
8975            var result2 = [];
8976            while (object) {
8977              arrayPush(result2, getSymbols(object));
8978              object = getPrototype(object);
8979            }
8980            return result2;
8981          };
8982          var getTag = baseGetTag;
8983          if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {
8984            getTag = function(value) {
8985              var result2 = baseGetTag(value), Ctor = result2 == objectTag ? value.constructor : undefined2, ctorString = Ctor ? toSource(Ctor) : "";
8986              if (ctorString) {
8987                switch (ctorString) {
8988                  case dataViewCtorString:
8989                    return dataViewTag;
8990                  case mapCtorString:
8991                    return mapTag;
8992                  case promiseCtorString:
8993                    return promiseTag;
8994                  case setCtorString:
8995                    return setTag;
8996                  case weakMapCtorString:
8997                    return weakMapTag;
8998                }
8999              }
9000              return result2;
9001            };
9002          }
9003          function getView(start2, end2, transforms) {
9004            var index = -1, length = transforms.length;
9005            while (++index < length) {
9006              var data = transforms[index], size2 = data.size;
9007              switch (data.type) {
9008                case "drop":
9009                  start2 += size2;
9010                  break;
9011                case "dropRight":
9012                  end2 -= size2;
9013                  break;
9014                case "take":
9015                  end2 = nativeMin(end2, start2 + size2);
9016                  break;
9017                case "takeRight":
9018                  start2 = nativeMax(start2, end2 - size2);
9019                  break;
9020              }
9021            }
9022            return { "start": start2, "end": end2 };
9023          }
9024          function getWrapDetails(source) {
9025            var match = source.match(reWrapDetails);
9026            return match ? match[1].split(reSplitDetails) : [];
9027          }
9028          function hasPath(object, path, hasFunc) {
9029            path = castPath(path, object);
9030            var index = -1, length = path.length, result2 = false;
9031            while (++index < length) {
9032              var key = toKey(path[index]);
9033              if (!(result2 = object != null && hasFunc(object, key))) {
9034                break;
9035              }
9036              object = object[key];
9037            }
9038            if (result2 || ++index != length) {
9039              return result2;
9040            }
9041            length = object == null ? 0 : object.length;
9042            return !!length && isLength(length) && isIndex(key, length) && (isArray2(object) || isArguments(object));
9043          }
9044          function initCloneArray(array) {
9045            var length = array.length, result2 = new array.constructor(length);
9046            if (length && typeof array[0] == "string" && hasOwnProperty.call(array, "index")) {
9047              result2.index = array.index;
9048              result2.input = array.input;
9049            }
9050            return result2;
9051          }
9052          function initCloneObject(object) {
9053            return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};
9054          }
9055          function initCloneByTag(object, tag, isDeep) {
9056            var Ctor = object.constructor;
9057            switch (tag) {
9058              case arrayBufferTag:
9059                return cloneArrayBuffer(object);
9060              case boolTag:
9061              case dateTag:
9062                return new Ctor(+object);
9063              case dataViewTag:
9064                return cloneDataView(object, isDeep);
9065              case float32Tag:
9066              case float64Tag:
9067              case int8Tag:
9068              case int16Tag:
9069              case int32Tag:
9070              case uint8Tag:
9071              case uint8ClampedTag:
9072              case uint16Tag:
9073              case uint32Tag:
9074                return cloneTypedArray(object, isDeep);
9075              case mapTag:
9076                return new Ctor();
9077              case numberTag:
9078              case stringTag:
9079                return new Ctor(object);
9080              case regexpTag:
9081                return cloneRegExp(object);
9082              case setTag:
9083                return new Ctor();
9084              case symbolTag:
9085                return cloneSymbol(object);
9086            }
9087          }
9088          function insertWrapDetails(source, details) {
9089            var length = details.length;
9090            if (!length) {
9091              return source;
9092            }
9093            var lastIndex = length - 1;
9094            details[lastIndex] = (length > 1 ? "& " : "") + details[lastIndex];
9095            details = details.join(length > 2 ? ", " : " ");
9096            return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n");
9097          }
9098          function isFlattenable(value) {
9099            return isArray2(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
9100          }
9101          function isIndex(value, length) {
9102            var type = typeof value;
9103            length = length == null ? MAX_SAFE_INTEGER : length;
9104            return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
9105          }
9106          function isIterateeCall(value, index, object) {
9107            if (!isObject2(object)) {
9108              return false;
9109            }
9110            var type = typeof index;
9111            if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) {
9112              return eq(object[index], value);
9113            }
9114            return false;
9115          }
9116          function isKey(value, object) {
9117            if (isArray2(value)) {
9118              return false;
9119            }
9120            var type = typeof value;
9121            if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) {
9122              return true;
9123            }
9124            return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object2(object);
9125          }
9126          function isKeyable(value) {
9127            var type = typeof value;
9128            return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
9129          }
9130          function isLaziable(func) {
9131            var funcName = getFuncName(func), other = lodash[funcName];
9132            if (typeof other != "function" || !(funcName in LazyWrapper.prototype)) {
9133              return false;
9134            }
9135            if (func === other) {
9136              return true;
9137            }
9138            var data = getData(other);
9139            return !!data && func === data[0];
9140          }
9141          function isMasked(func) {
9142            return !!maskSrcKey && maskSrcKey in func;
9143          }
9144          var isMaskable = coreJsData ? isFunction2 : stubFalse;
9145          function isPrototype(value) {
9146            var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
9147            return value === proto;
9148          }
9149          function isStrictComparable(value) {
9150            return value === value && !isObject2(value);
9151          }
9152          function matchesStrictComparable(key, srcValue) {
9153            return function(object) {
9154              if (object == null) {
9155                return false;
9156              }
9157              return object[key] === srcValue && (srcValue !== undefined2 || key in Object2(object));
9158            };
9159          }
9160          function memoizeCapped(func) {
9161            var result2 = memoize(func, function(key) {
9162              if (cache.size === MAX_MEMOIZE_SIZE) {
9163                cache.clear();
9164              }
9165              return key;
9166            });
9167            var cache = result2.cache;
9168            return result2;
9169          }
9170          function mergeData(data, source) {
9171            var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
9172            var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG;
9173            if (!(isCommon || isCombo)) {
9174              return data;
9175            }
9176            if (srcBitmask & WRAP_BIND_FLAG) {
9177              data[2] = source[2];
9178              newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
9179            }
9180            var value = source[3];
9181            if (value) {
9182              var partials = data[3];
9183              data[3] = partials ? composeArgs(partials, value, source[4]) : value;
9184              data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
9185            }
9186            value = source[5];
9187            if (value) {
9188              partials = data[5];
9189              data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
9190              data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
9191            }
9192            value = source[7];
9193            if (value) {
9194              data[7] = value;
9195            }
9196            if (srcBitmask & WRAP_ARY_FLAG) {
9197              data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
9198            }
9199            if (data[9] == null) {
9200              data[9] = source[9];
9201            }
9202            data[0] = source[0];
9203            data[1] = newBitmask;
9204            return data;
9205          }
9206          function nativeKeysIn(object) {
9207            var result2 = [];
9208            if (object != null) {
9209              for (var key in Object2(object)) {
9210                result2.push(key);
9211              }
9212            }
9213            return result2;
9214          }
9215          function objectToString(value) {
9216            return nativeObjectToString.call(value);
9217          }
9218          function overRest(func, start2, transform2) {
9219            start2 = nativeMax(start2 === undefined2 ? func.length - 1 : start2, 0);
9220            return function() {
9221              var args = arguments, index = -1, length = nativeMax(args.length - start2, 0), array = Array2(length);
9222              while (++index < length) {
9223                array[index] = args[start2 + index];
9224              }
9225              index = -1;
9226              var otherArgs = Array2(start2 + 1);
9227              while (++index < start2) {
9228                otherArgs[index] = args[index];
9229              }
9230              otherArgs[start2] = transform2(array);
9231              return apply(func, this, otherArgs);
9232            };
9233          }
9234          function parent(object, path) {
9235            return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
9236          }
9237          function reorder(array, indexes) {
9238            var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = copyArray(array);
9239            while (length--) {
9240              var index = indexes[length];
9241              array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined2;
9242            }
9243            return array;
9244          }
9245          function safeGet(object, key) {
9246            if (key === "constructor" && typeof object[key] === "function") {
9247              return;
9248            }
9249            if (key == "__proto__") {
9250              return;
9251            }
9252            return object[key];
9253          }
9254          var setData = shortOut(baseSetData);
9255          var setTimeout2 = ctxSetTimeout || function(func, wait) {
9256            return root.setTimeout(func, wait);
9257          };
9258          var setToString = shortOut(baseSetToString);
9259          function setWrapToString(wrapper, reference2, bitmask) {
9260            var source = reference2 + "";
9261            return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
9262          }
9263          function shortOut(func) {
9264            var count = 0, lastCalled = 0;
9265            return function() {
9266              var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
9267              lastCalled = stamp;
9268              if (remaining > 0) {
9269                if (++count >= HOT_COUNT) {
9270                  return arguments[0];
9271                }
9272              } else {
9273                count = 0;
9274              }
9275              return func.apply(undefined2, arguments);
9276            };
9277          }
9278          function shuffleSelf(array, size2) {
9279            var index = -1, length = array.length, lastIndex = length - 1;
9280            size2 = size2 === undefined2 ? length : size2;
9281            while (++index < size2) {
9282              var rand = baseRandom(index, lastIndex), value = array[rand];
9283              array[rand] = array[index];
9284              array[index] = value;
9285            }
9286            array.length = size2;
9287            return array;
9288          }
9289          var stringToPath = memoizeCapped(function(string) {
9290            var result2 = [];
9291            if (string.charCodeAt(0) === 46) {
9292              result2.push("");
9293            }
9294            string.replace(rePropName, function(match, number, quote, subString) {
9295              result2.push(quote ? subString.replace(reEscapeChar, "$1") : number || match);
9296            });
9297            return result2;
9298          });
9299          function toKey(value) {
9300            if (typeof value == "string" || isSymbol(value)) {
9301              return value;
9302            }
9303            var result2 = value + "";
9304            return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2;
9305          }
9306          function toSource(func) {
9307            if (func != null) {
9308              try {
9309                return funcToString.call(func);
9310              } catch (e) {
9311              }
9312              try {
9313                return func + "";
9314              } catch (e) {
9315              }
9316            }
9317            return "";
9318          }
9319          function updateWrapDetails(details, bitmask) {
9320            arrayEach(wrapFlags, function(pair) {
9321              var value = "_." + pair[0];
9322              if (bitmask & pair[1] && !arrayIncludes(details, value)) {
9323                details.push(value);
9324              }
9325            });
9326            return details.sort();
9327          }
9328          function wrapperClone(wrapper) {
9329            if (wrapper instanceof LazyWrapper) {
9330              return wrapper.clone();
9331            }
9332            var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
9333            result2.__actions__ = copyArray(wrapper.__actions__);
9334            result2.__index__ = wrapper.__index__;
9335            result2.__values__ = wrapper.__values__;
9336            return result2;
9337          }
9338          function chunk(array, size2, guard) {
9339            if (guard ? isIterateeCall(array, size2, guard) : size2 === undefined2) {
9340              size2 = 1;
9341            } else {
9342              size2 = nativeMax(toInteger(size2), 0);
9343            }
9344            var length = array == null ? 0 : array.length;
9345            if (!length || size2 < 1) {
9346              return [];
9347            }
9348            var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size2));
9349            while (index < length) {
9350              result2[resIndex++] = baseSlice(array, index, index += size2);
9351            }
9352            return result2;
9353          }
9354          function compact(array) {
9355            var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result2 = [];
9356            while (++index < length) {
9357              var value = array[index];
9358              if (value) {
9359                result2[resIndex++] = value;
9360              }
9361            }
9362            return result2;
9363          }
9364          function concat() {
9365            var length = arguments.length;
9366            if (!length) {
9367              return [];
9368            }
9369            var args = Array2(length - 1), array = arguments[0], index = length;
9370            while (index--) {
9371              args[index - 1] = arguments[index];
9372            }
9373            return arrayPush(isArray2(array) ? copyArray(array) : [array], baseFlatten(args, 1));
9374          }
9375          var difference = baseRest(function(array, values2) {
9376            return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true)) : [];
9377          });
9378          var differenceBy = baseRest(function(array, values2) {
9379            var iteratee2 = last(values2);
9380            if (isArrayLikeObject(iteratee2)) {
9381              iteratee2 = undefined2;
9382            }
9383            return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : [];
9384          });
9385          var differenceWith = baseRest(function(array, values2) {
9386            var comparator = last(values2);
9387            if (isArrayLikeObject(comparator)) {
9388              comparator = undefined2;
9389            }
9390            return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), undefined2, comparator) : [];
9391          });
9392          function drop(array, n, guard) {
9393            var length = array == null ? 0 : array.length;
9394            if (!length) {
9395              return [];
9396            }
9397            n = guard || n === undefined2 ? 1 : toInteger(n);
9398            return baseSlice(array, n < 0 ? 0 : n, length);
9399          }
9400          function dropRight(array, n, guard) {
9401            var length = array == null ? 0 : array.length;
9402            if (!length) {
9403              return [];
9404            }
9405            n = guard || n === undefined2 ? 1 : toInteger(n);
9406            n = length - n;
9407            return baseSlice(array, 0, n < 0 ? 0 : n);
9408          }
9409          function dropRightWhile(array, predicate) {
9410            return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : [];
9411          }
9412          function dropWhile(array, predicate) {
9413            return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : [];
9414          }
9415          function fill(array, value, start2, end2) {
9416            var length = array == null ? 0 : array.length;
9417            if (!length) {
9418              return [];
9419            }
9420            if (start2 && typeof start2 != "number" && isIterateeCall(array, value, start2)) {
9421              start2 = 0;
9422              end2 = length;
9423            }
9424            return baseFill(array, value, start2, end2);
9425          }
9426          function findIndex(array, predicate, fromIndex) {
9427            var length = array == null ? 0 : array.length;
9428            if (!length) {
9429              return -1;
9430            }
9431            var index = fromIndex == null ? 0 : toInteger(fromIndex);
9432            if (index < 0) {
9433              index = nativeMax(length + index, 0);
9434            }
9435            return baseFindIndex(array, getIteratee(predicate, 3), index);
9436          }
9437          function findLastIndex(array, predicate, fromIndex) {
9438            var length = array == null ? 0 : array.length;
9439            if (!length) {
9440              return -1;
9441            }
9442            var index = length - 1;
9443            if (fromIndex !== undefined2) {
9444              index = toInteger(fromIndex);
9445              index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
9446            }
9447            return baseFindIndex(array, getIteratee(predicate, 3), index, true);
9448          }
9449          function flatten(array) {
9450            var length = array == null ? 0 : array.length;
9451            return length ? baseFlatten(array, 1) : [];
9452          }
9453          function flattenDeep(array) {
9454            var length = array == null ? 0 : array.length;
9455            return length ? baseFlatten(array, INFINITY) : [];
9456          }
9457          function flattenDepth(array, depth) {
9458            var length = array == null ? 0 : array.length;
9459            if (!length) {
9460              return [];
9461            }
9462            depth = depth === undefined2 ? 1 : toInteger(depth);
9463            return baseFlatten(array, depth);
9464          }
9465          function fromPairs(pairs) {
9466            var index = -1, length = pairs == null ? 0 : pairs.length, result2 = {};
9467            while (++index < length) {
9468              var pair = pairs[index];
9469              result2[pair[0]] = pair[1];
9470            }
9471            return result2;
9472          }
9473          function head(array) {
9474            return array && array.length ? array[0] : undefined2;
9475          }
9476          function indexOf(array, value, fromIndex) {
9477            var length = array == null ? 0 : array.length;
9478            if (!length) {
9479              return -1;
9480            }
9481            var index = fromIndex == null ? 0 : toInteger(fromIndex);
9482            if (index < 0) {
9483              index = nativeMax(length + index, 0);
9484            }
9485            return baseIndexOf(array, value, index);
9486          }
9487          function initial(array) {
9488            var length = array == null ? 0 : array.length;
9489            return length ? baseSlice(array, 0, -1) : [];
9490          }
9491          var intersection = baseRest(function(arrays) {
9492            var mapped = arrayMap(arrays, castArrayLikeObject);
9493            return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : [];
9494          });
9495          var intersectionBy = baseRest(function(arrays) {
9496            var iteratee2 = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
9497            if (iteratee2 === last(mapped)) {
9498              iteratee2 = undefined2;
9499            } else {
9500              mapped.pop();
9501            }
9502            return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : [];
9503          });
9504          var intersectionWith = baseRest(function(arrays) {
9505            var comparator = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
9506            comparator = typeof comparator == "function" ? comparator : undefined2;
9507            if (comparator) {
9508              mapped.pop();
9509            }
9510            return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : [];
9511          });
9512          function join(array, separator) {
9513            return array == null ? "" : nativeJoin.call(array, separator);
9514          }
9515          function last(array) {
9516            var length = array == null ? 0 : array.length;
9517            return length ? array[length - 1] : undefined2;
9518          }
9519          function lastIndexOf(array, value, fromIndex) {
9520            var length = array == null ? 0 : array.length;
9521            if (!length) {
9522              return -1;
9523            }
9524            var index = length;
9525            if (fromIndex !== undefined2) {
9526              index = toInteger(fromIndex);
9527              index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
9528            }
9529            return value === value ? strictLastIndexOf(array, value, index) : baseFindIndex(array, baseIsNaN, index, true);
9530          }
9531          function nth(array, n) {
9532            return array && array.length ? baseNth(array, toInteger(n)) : undefined2;
9533          }
9534          var pull = baseRest(pullAll);
9535          function pullAll(array, values2) {
9536            return array && array.length && values2 && values2.length ? basePullAll(array, values2) : array;
9537          }
9538          function pullAllBy(array, values2, iteratee2) {
9539            return array && array.length && values2 && values2.length ? basePullAll(array, values2, getIteratee(iteratee2, 2)) : array;
9540          }
9541          function pullAllWith(array, values2, comparator) {
9542            return array && array.length && values2 && values2.length ? basePullAll(array, values2, undefined2, comparator) : array;
9543          }
9544          var pullAt = flatRest(function(array, indexes) {
9545            var length = array == null ? 0 : array.length, result2 = baseAt(array, indexes);
9546            basePullAt(array, arrayMap(indexes, function(index) {
9547              return isIndex(index, length) ? +index : index;
9548            }).sort(compareAscending));
9549            return result2;
9550          });
9551          function remove(array, predicate) {
9552            var result2 = [];
9553            if (!(array && array.length)) {
9554              return result2;
9555            }
9556            var index = -1, indexes = [], length = array.length;
9557            predicate = getIteratee(predicate, 3);
9558            while (++index < length) {
9559              var value = array[index];
9560              if (predicate(value, index, array)) {
9561                result2.push(value);
9562                indexes.push(index);
9563              }
9564            }
9565            basePullAt(array, indexes);
9566            return result2;
9567          }
9568          function reverse(array) {
9569            return array == null ? array : nativeReverse.call(array);
9570          }
9571          function slice(array, start2, end2) {
9572            var length = array == null ? 0 : array.length;
9573            if (!length) {
9574              return [];
9575            }
9576            if (end2 && typeof end2 != "number" && isIterateeCall(array, start2, end2)) {
9577              start2 = 0;
9578              end2 = length;
9579            } else {
9580              start2 = start2 == null ? 0 : toInteger(start2);
9581              end2 = end2 === undefined2 ? length : toInteger(end2);
9582            }
9583            return baseSlice(array, start2, end2);
9584          }
9585          function sortedIndex(array, value) {
9586            return baseSortedIndex(array, value);
9587          }
9588          function sortedIndexBy(array, value, iteratee2) {
9589            return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2));
9590          }
9591          function sortedIndexOf(array, value) {
9592            var length = array == null ? 0 : array.length;
9593            if (length) {
9594              var index = baseSortedIndex(array, value);
9595              if (index < length && eq(array[index], value)) {
9596                return index;
9597              }
9598            }
9599            return -1;
9600          }
9601          function sortedLastIndex(array, value) {
9602            return baseSortedIndex(array, value, true);
9603          }
9604          function sortedLastIndexBy(array, value, iteratee2) {
9605            return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2), true);
9606          }
9607          function sortedLastIndexOf(array, value) {
9608            var length = array == null ? 0 : array.length;
9609            if (length) {
9610              var index = baseSortedIndex(array, value, true) - 1;
9611              if (eq(array[index], value)) {
9612                return index;
9613              }
9614            }
9615            return -1;
9616          }
9617          function sortedUniq(array) {
9618            return array && array.length ? baseSortedUniq(array) : [];
9619          }
9620          function sortedUniqBy(array, iteratee2) {
9621            return array && array.length ? baseSortedUniq(array, getIteratee(iteratee2, 2)) : [];
9622          }
9623          function tail(array) {
9624            var length = array == null ? 0 : array.length;
9625            return length ? baseSlice(array, 1, length) : [];
9626          }
9627          function take(array, n, guard) {
9628            if (!(array && array.length)) {
9629              return [];
9630            }
9631            n = guard || n === undefined2 ? 1 : toInteger(n);
9632            return baseSlice(array, 0, n < 0 ? 0 : n);
9633          }
9634          function takeRight(array, n, guard) {
9635            var length = array == null ? 0 : array.length;
9636            if (!length) {
9637              return [];
9638            }
9639            n = guard || n === undefined2 ? 1 : toInteger(n);
9640            n = length - n;
9641            return baseSlice(array, n < 0 ? 0 : n, length);
9642          }
9643          function takeRightWhile(array, predicate) {
9644            return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : [];
9645          }
9646          function takeWhile(array, predicate) {
9647            return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : [];
9648          }
9649          var union = baseRest(function(arrays) {
9650            return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
9651          });
9652          var unionBy = baseRest(function(arrays) {
9653            var iteratee2 = last(arrays);
9654            if (isArrayLikeObject(iteratee2)) {
9655              iteratee2 = undefined2;
9656            }
9657            return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2));
9658          });
9659          var unionWith = baseRest(function(arrays) {
9660            var comparator = last(arrays);
9661            comparator = typeof comparator == "function" ? comparator : undefined2;
9662            return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined2, comparator);
9663          });
9664          function uniq(array) {
9665            return array && array.length ? baseUniq(array) : [];
9666          }
9667          function uniqBy(array, iteratee2) {
9668            return array && array.length ? baseUniq(array, getIteratee(iteratee2, 2)) : [];
9669          }
9670          function uniqWith(array, comparator) {
9671            comparator = typeof comparator == "function" ? comparator : undefined2;
9672            return array && array.length ? baseUniq(array, undefined2, comparator) : [];
9673          }
9674          function unzip(array) {
9675            if (!(array && array.length)) {
9676              return [];
9677            }
9678            var length = 0;
9679            array = arrayFilter(array, function(group) {
9680              if (isArrayLikeObject(group)) {
9681                length = nativeMax(group.length, length);
9682                return true;
9683              }
9684            });
9685            return baseTimes(length, function(index) {
9686              return arrayMap(array, baseProperty(index));
9687            });
9688          }
9689          function unzipWith(array, iteratee2) {
9690            if (!(array && array.length)) {
9691              return [];
9692            }
9693            var result2 = unzip(array);
9694            if (iteratee2 == null) {
9695              return result2;
9696            }
9697            return arrayMap(result2, function(group) {
9698              return apply(iteratee2, undefined2, group);
9699            });
9700          }
9701          var without = baseRest(function(array, values2) {
9702            return isArrayLikeObject(array) ? baseDifference(array, values2) : [];
9703          });
9704          var xor = baseRest(function(arrays) {
9705            return baseXor(arrayFilter(arrays, isArrayLikeObject));
9706          });
9707          var xorBy = baseRest(function(arrays) {
9708            var iteratee2 = last(arrays);
9709            if (isArrayLikeObject(iteratee2)) {
9710              iteratee2 = undefined2;
9711            }
9712            return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2));
9713          });
9714          var xorWith = baseRest(function(arrays) {
9715            var comparator = last(arrays);
9716            comparator = typeof comparator == "function" ? comparator : undefined2;
9717            return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined2, comparator);
9718          });
9719          var zip = baseRest(unzip);
9720          function zipObject(props, values2) {
9721            return baseZipObject(props || [], values2 || [], assignValue);
9722          }
9723          function zipObjectDeep(props, values2) {
9724            return baseZipObject(props || [], values2 || [], baseSet);
9725          }
9726          var zipWith = baseRest(function(arrays) {
9727            var length = arrays.length, iteratee2 = length > 1 ? arrays[length - 1] : undefined2;
9728            iteratee2 = typeof iteratee2 == "function" ? (arrays.pop(), iteratee2) : undefined2;
9729            return unzipWith(arrays, iteratee2);
9730          });
9731          function chain(value) {
9732            var result2 = lodash(value);
9733            result2.__chain__ = true;
9734            return result2;
9735          }
9736          function tap(value, interceptor) {
9737            interceptor(value);
9738            return value;
9739          }
9740          function thru(value, interceptor) {
9741            return interceptor(value);
9742          }
9743          var wrapperAt = flatRest(function(paths) {
9744            var length = paths.length, start2 = length ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object) {
9745              return baseAt(object, paths);
9746            };
9747            if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start2)) {
9748              return this.thru(interceptor);
9749            }
9750            value = value.slice(start2, +start2 + (length ? 1 : 0));
9751            value.__actions__.push({
9752              "func": thru,
9753              "args": [interceptor],
9754              "thisArg": undefined2
9755            });
9756            return new LodashWrapper(value, this.__chain__).thru(function(array) {
9757              if (length && !array.length) {
9758                array.push(undefined2);
9759              }
9760              return array;
9761            });
9762          });
9763          function wrapperChain() {
9764            return chain(this);
9765          }
9766          function wrapperCommit() {
9767            return new LodashWrapper(this.value(), this.__chain__);
9768          }
9769          function wrapperNext() {
9770            if (this.__values__ === undefined2) {
9771              this.__values__ = toArray3(this.value());
9772            }
9773            var done = this.__index__ >= this.__values__.length, value = done ? undefined2 : this.__values__[this.__index__++];
9774            return { "done": done, "value": value };
9775          }
9776          function wrapperToIterator() {
9777            return this;
9778          }
9779          function wrapperPlant(value) {
9780            var result2, parent2 = this;
9781            while (parent2 instanceof baseLodash) {
9782              var clone2 = wrapperClone(parent2);
9783              clone2.__index__ = 0;
9784              clone2.__values__ = undefined2;
9785              if (result2) {
9786                previous.__wrapped__ = clone2;
9787              } else {
9788                result2 = clone2;
9789              }
9790              var previous = clone2;
9791              parent2 = parent2.__wrapped__;
9792            }
9793            previous.__wrapped__ = value;
9794            return result2;
9795          }
9796          function wrapperReverse() {
9797            var value = this.__wrapped__;
9798            if (value instanceof LazyWrapper) {
9799              var wrapped = value;
9800              if (this.__actions__.length) {
9801                wrapped = new LazyWrapper(this);
9802              }
9803              wrapped = wrapped.reverse();
9804              wrapped.__actions__.push({
9805                "func": thru,
9806                "args": [reverse],
9807                "thisArg": undefined2
9808              });
9809              return new LodashWrapper(wrapped, this.__chain__);
9810            }
9811            return this.thru(reverse);
9812          }
9813          function wrapperValue() {
9814            return baseWrapperValue(this.__wrapped__, this.__actions__);
9815          }
9816          var countBy = createAggregator(function(result2, value, key) {
9817            if (hasOwnProperty.call(result2, key)) {
9818              ++result2[key];
9819            } else {
9820              baseAssignValue(result2, key, 1);
9821            }
9822          });
9823          function every(collection, predicate, guard) {
9824            var func = isArray2(collection) ? arrayEvery : baseEvery;
9825            if (guard && isIterateeCall(collection, predicate, guard)) {
9826              predicate = undefined2;
9827            }
9828            return func(collection, getIteratee(predicate, 3));
9829          }
9830          function filter(collection, predicate) {
9831            var func = isArray2(collection) ? arrayFilter : baseFilter;
9832            return func(collection, getIteratee(predicate, 3));
9833          }
9834          var find = createFind(findIndex);
9835          var findLast = createFind(findLastIndex);
9836          function flatMap(collection, iteratee2) {
9837            return baseFlatten(map(collection, iteratee2), 1);
9838          }
9839          function flatMapDeep(collection, iteratee2) {
9840            return baseFlatten(map(collection, iteratee2), INFINITY);
9841          }
9842          function flatMapDepth(collection, iteratee2, depth) {
9843            depth = depth === undefined2 ? 1 : toInteger(depth);
9844            return baseFlatten(map(collection, iteratee2), depth);
9845          }
9846          function forEach2(collection, iteratee2) {
9847            var func = isArray2(collection) ? arrayEach : baseEach;
9848            return func(collection, getIteratee(iteratee2, 3));
9849          }
9850          function forEachRight(collection, iteratee2) {
9851            var func = isArray2(collection) ? arrayEachRight : baseEachRight;
9852            return func(collection, getIteratee(iteratee2, 3));
9853          }
9854          var groupBy = createAggregator(function(result2, value, key) {
9855            if (hasOwnProperty.call(result2, key)) {
9856              result2[key].push(value);
9857            } else {
9858              baseAssignValue(result2, key, [value]);
9859            }
9860          });
9861          function includes(collection, value, fromIndex, guard) {
9862            collection = isArrayLike(collection) ? collection : values(collection);
9863            fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;
9864            var length = collection.length;
9865            if (fromIndex < 0) {
9866              fromIndex = nativeMax(length + fromIndex, 0);
9867            }
9868            return isString2(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;
9869          }
9870          var invokeMap = baseRest(function(collection, path, args) {
9871            var index = -1, isFunc = typeof path == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : [];
9872            baseEach(collection, function(value) {
9873              result2[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
9874            });
9875            return result2;
9876          });
9877          var keyBy = createAggregator(function(result2, value, key) {
9878            baseAssignValue(result2, key, value);
9879          });
9880          function map(collection, iteratee2) {
9881            var func = isArray2(collection) ? arrayMap : baseMap;
9882            return func(collection, getIteratee(iteratee2, 3));
9883          }
9884          function orderBy(collection, iteratees, orders, guard) {
9885            if (collection == null) {
9886              return [];
9887            }
9888            if (!isArray2(iteratees)) {
9889              iteratees = iteratees == null ? [] : [iteratees];
9890            }
9891            orders = guard ? undefined2 : orders;
9892            if (!isArray2(orders)) {
9893              orders = orders == null ? [] : [orders];
9894            }
9895            return baseOrderBy(collection, iteratees, orders);
9896          }
9897          var partition = createAggregator(function(result2, value, key) {
9898            result2[key ? 0 : 1].push(value);
9899          }, function() {
9900            return [[], []];
9901          });
9902          function reduce(collection, iteratee2, accumulator) {
9903            var func = isArray2(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3;
9904            return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach);
9905          }
9906          function reduceRight(collection, iteratee2, accumulator) {
9907            var func = isArray2(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3;
9908            return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight);
9909          }
9910          function reject(collection, predicate) {
9911            var func = isArray2(collection) ? arrayFilter : baseFilter;
9912            return func(collection, negate(getIteratee(predicate, 3)));
9913          }
9914          function sample(collection) {
9915            var func = isArray2(collection) ? arraySample : baseSample;
9916            return func(collection);
9917          }
9918          function sampleSize(collection, n, guard) {
9919            if (guard ? isIterateeCall(collection, n, guard) : n === undefined2) {
9920              n = 1;
9921            } else {
9922              n = toInteger(n);
9923            }
9924            var func = isArray2(collection) ? arraySampleSize : baseSampleSize;
9925            return func(collection, n);
9926          }
9927          function shuffle3(collection) {
9928            var func = isArray2(collection) ? arrayShuffle : baseShuffle;
9929            return func(collection);
9930          }
9931          function size(collection) {
9932            if (collection == null) {
9933              return 0;
9934            }
9935            if (isArrayLike(collection)) {
9936              return isString2(collection) ? stringSize(collection) : collection.length;
9937            }
9938            var tag = getTag(collection);
9939            if (tag == mapTag || tag == setTag) {
9940              return collection.size;
9941            }
9942            return baseKeys(collection).length;
9943          }
9944          function some(collection, predicate, guard) {
9945            var func = isArray2(collection) ? arraySome : baseSome;
9946            if (guard && isIterateeCall(collection, predicate, guard)) {
9947              predicate = undefined2;
9948            }
9949            return func(collection, getIteratee(predicate, 3));
9950          }
9951          var sortBy = baseRest(function(collection, iteratees) {
9952            if (collection == null) {
9953              return [];
9954            }
9955            var length = iteratees.length;
9956            if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
9957              iteratees = [];
9958            } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
9959              iteratees = [iteratees[0]];
9960            }
9961            return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
9962          });
9963          var now2 = ctxNow || function() {
9964            return root.Date.now();
9965          };
9966          function after(n, func) {
9967            if (typeof func != "function") {
9968              throw new TypeError2(FUNC_ERROR_TEXT);
9969            }
9970            n = toInteger(n);
9971            return function() {
9972              if (--n < 1) {
9973                return func.apply(this, arguments);
9974              }
9975            };
9976          }
9977          function ary(func, n, guard) {
9978            n = guard ? undefined2 : n;
9979            n = func && n == null ? func.length : n;
9980            return createWrap(func, WRAP_ARY_FLAG, undefined2, undefined2, undefined2, undefined2, n);
9981          }
9982          function before(n, func) {
9983            var result2;
9984            if (typeof func != "function") {
9985              throw new TypeError2(FUNC_ERROR_TEXT);
9986            }
9987            n = toInteger(n);
9988            return function() {
9989              if (--n > 0) {
9990                result2 = func.apply(this, arguments);
9991              }
9992              if (n <= 1) {
9993                func = undefined2;
9994              }
9995              return result2;
9996            };
9997          }
9998          var bind = baseRest(function(func, thisArg, partials) {
9999            var bitmask = WRAP_BIND_FLAG;
10000            if (partials.length) {
10001              var holders = replaceHolders(partials, getHolder(bind));
10002              bitmask |= WRAP_PARTIAL_FLAG;
10003            }
10004            return createWrap(func, bitmask, thisArg, partials, holders);
10005          });
10006          var bindKey = baseRest(function(object, key, partials) {
10007            var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
10008            if (partials.length) {
10009              var holders = replaceHolders(partials, getHolder(bindKey));
10010              bitmask |= WRAP_PARTIAL_FLAG;
10011            }
10012            return createWrap(key, bitmask, object, partials, holders);
10013          });
10014          function curry(func, arity, guard) {
10015            arity = guard ? undefined2 : arity;
10016            var result2 = createWrap(func, WRAP_CURRY_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity);
10017            result2.placeholder = curry.placeholder;
10018            return result2;
10019          }
10020          function curryRight(func, arity, guard) {
10021            arity = guard ? undefined2 : arity;
10022            var result2 = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity);
10023            result2.placeholder = curryRight.placeholder;
10024            return result2;
10025          }
10026          function debounce3(func, wait, options) {
10027            var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
10028            if (typeof func != "function") {
10029              throw new TypeError2(FUNC_ERROR_TEXT);
10030            }
10031            wait = toNumber(wait) || 0;
10032            if (isObject2(options)) {
10033              leading = !!options.leading;
10034              maxing = "maxWait" in options;
10035              maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
10036              trailing = "trailing" in options ? !!options.trailing : trailing;
10037            }
10038            function invokeFunc(time) {
10039              var args = lastArgs, thisArg = lastThis;
10040              lastArgs = lastThis = undefined2;
10041              lastInvokeTime = time;
10042              result2 = func.apply(thisArg, args);
10043              return result2;
10044            }
10045            function leadingEdge(time) {
10046              lastInvokeTime = time;
10047              timerId = setTimeout2(timerExpired, wait);
10048              return leading ? invokeFunc(time) : result2;
10049            }
10050            function remainingWait(time) {
10051              var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
10052              return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
10053            }
10054            function shouldInvoke(time) {
10055              var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
10056              return lastCallTime === undefined2 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
10057            }
10058            function timerExpired() {
10059              var time = now2();
10060              if (shouldInvoke(time)) {
10061                return trailingEdge(time);
10062              }
10063              timerId = setTimeout2(timerExpired, remainingWait(time));
10064            }
10065            function trailingEdge(time) {
10066              timerId = undefined2;
10067              if (trailing && lastArgs) {
10068                return invokeFunc(time);
10069              }
10070              lastArgs = lastThis = undefined2;
10071              return result2;
10072            }
10073            function cancel() {
10074              if (timerId !== undefined2) {
10075                clearTimeout2(timerId);
10076              }
10077              lastInvokeTime = 0;
10078              lastArgs = lastCallTime = lastThis = timerId = undefined2;
10079            }
10080            function flush() {
10081              return timerId === undefined2 ? result2 : trailingEdge(now2());
10082            }
10083            function debounced() {
10084              var time = now2(), isInvoking = shouldInvoke(time);
10085              lastArgs = arguments;
10086              lastThis = this;
10087              lastCallTime = time;
10088              if (isInvoking) {
10089                if (timerId === undefined2) {
10090                  return leadingEdge(lastCallTime);
10091                }
10092                if (maxing) {
10093                  clearTimeout2(timerId);
10094                  timerId = setTimeout2(timerExpired, wait);
10095                  return invokeFunc(lastCallTime);
10096                }
10097              }
10098              if (timerId === undefined2) {
10099                timerId = setTimeout2(timerExpired, wait);
10100              }
10101              return result2;
10102            }
10103            debounced.cancel = cancel;
10104            debounced.flush = flush;
10105            return debounced;
10106          }
10107          var defer = baseRest(function(func, args) {
10108            return baseDelay(func, 1, args);
10109          });
10110          var delay = baseRest(function(func, wait, args) {
10111            return baseDelay(func, toNumber(wait) || 0, args);
10112          });
10113          function flip2(func) {
10114            return createWrap(func, WRAP_FLIP_FLAG);
10115          }
10116          function memoize(func, resolver) {
10117            if (typeof func != "function" || resolver != null && typeof resolver != "function") {
10118              throw new TypeError2(FUNC_ERROR_TEXT);
10119            }
10120            var memoized = function() {
10121              var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
10122              if (cache.has(key)) {
10123                return cache.get(key);
10124              }
10125              var result2 = func.apply(this, args);
10126              memoized.cache = cache.set(key, result2) || cache;
10127              return result2;
10128            };
10129            memoized.cache = new (memoize.Cache || MapCache)();
10130            return memoized;
10131          }
10132          memoize.Cache = MapCache;
10133          function negate(predicate) {
10134            if (typeof predicate != "function") {
10135              throw new TypeError2(FUNC_ERROR_TEXT);
10136            }
10137            return function() {
10138              var args = arguments;
10139              switch (args.length) {
10140                case 0:
10141                  return !predicate.call(this);
10142                case 1:
10143                  return !predicate.call(this, args[0]);
10144                case 2:
10145                  return !predicate.call(this, args[0], args[1]);
10146                case 3:
10147                  return !predicate.call(this, args[0], args[1], args[2]);
10148              }
10149              return !predicate.apply(this, args);
10150            };
10151          }
10152          function once(func) {
10153            return before(2, func);
10154          }
10155          var overArgs = castRest(function(func, transforms) {
10156            transforms = transforms.length == 1 && isArray2(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
10157            var funcsLength = transforms.length;
10158            return baseRest(function(args) {
10159              var index = -1, length = nativeMin(args.length, funcsLength);
10160              while (++index < length) {
10161                args[index] = transforms[index].call(this, args[index]);
10162              }
10163              return apply(func, this, args);
10164            });
10165          });
10166          var partial = baseRest(function(func, partials) {
10167            var holders = replaceHolders(partials, getHolder(partial));
10168            return createWrap(func, WRAP_PARTIAL_FLAG, undefined2, partials, holders);
10169          });
10170          var partialRight = baseRest(function(func, partials) {
10171            var holders = replaceHolders(partials, getHolder(partialRight));
10172            return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined2, partials, holders);
10173          });
10174          var rearg = flatRest(function(func, indexes) {
10175            return createWrap(func, WRAP_REARG_FLAG, undefined2, undefined2, undefined2, indexes);
10176          });
10177          function rest(func, start2) {
10178            if (typeof func != "function") {
10179              throw new TypeError2(FUNC_ERROR_TEXT);
10180            }
10181            start2 = start2 === undefined2 ? start2 : toInteger(start2);
10182            return baseRest(func, start2);
10183          }
10184          function spread(func, start2) {
10185            if (typeof func != "function") {
10186              throw new TypeError2(FUNC_ERROR_TEXT);
10187            }
10188            start2 = start2 == null ? 0 : nativeMax(toInteger(start2), 0);
10189            return baseRest(function(args) {
10190              var array = args[start2], otherArgs = castSlice(args, 0, start2);
10191              if (array) {
10192                arrayPush(otherArgs, array);
10193              }
10194              return apply(func, this, otherArgs);
10195            });
10196          }
10197          function throttle2(func, wait, options) {
10198            var leading = true, trailing = true;
10199            if (typeof func != "function") {
10200              throw new TypeError2(FUNC_ERROR_TEXT);
10201            }
10202            if (isObject2(options)) {
10203              leading = "leading" in options ? !!options.leading : leading;
10204              trailing = "trailing" in options ? !!options.trailing : trailing;
10205            }
10206            return debounce3(func, wait, {
10207              "leading": leading,
10208              "maxWait": wait,
10209              "trailing": trailing
10210            });
10211          }
10212          function unary(func) {
10213            return ary(func, 1);
10214          }
10215          function wrap3(value, wrapper) {
10216            return partial(castFunction(wrapper), value);
10217          }
10218          function castArray() {
10219            if (!arguments.length) {
10220              return [];
10221            }
10222            var value = arguments[0];
10223            return isArray2(value) ? value : [value];
10224          }
10225          function clone(value) {
10226            return baseClone(value, CLONE_SYMBOLS_FLAG);
10227          }
10228          function cloneWith(value, customizer) {
10229            customizer = typeof customizer == "function" ? customizer : undefined2;
10230            return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
10231          }
10232          function cloneDeep(value) {
10233            return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
10234          }
10235          function cloneDeepWith(value, customizer) {
10236            customizer = typeof customizer == "function" ? customizer : undefined2;
10237            return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
10238          }
10239          function conformsTo(object, source) {
10240            return source == null || baseConformsTo(object, source, keys(source));
10241          }
10242          function eq(value, other) {
10243            return value === other || value !== value && other !== other;
10244          }
10245          var gt = createRelationalOperation(baseGt);
10246          var gte = createRelationalOperation(function(value, other) {
10247            return value >= other;
10248          });
10249          var isArguments = baseIsArguments(function() {
10250            return arguments;
10251          }()) ? baseIsArguments : function(value) {
10252            return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
10253          };
10254          var isArray2 = Array2.isArray;
10255          var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
10256          function isArrayLike(value) {
10257            return value != null && isLength(value.length) && !isFunction2(value);
10258          }
10259          function isArrayLikeObject(value) {
10260            return isObjectLike(value) && isArrayLike(value);
10261          }
10262          function isBoolean(value) {
10263            return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag;
10264          }
10265          var isBuffer = nativeIsBuffer || stubFalse;
10266          var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
10267          function isElement2(value) {
10268            return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
10269          }
10270          function isEmpty(value) {
10271            if (value == null) {
10272              return true;
10273            }
10274            if (isArrayLike(value) && (isArray2(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray(value) || isArguments(value))) {
10275              return !value.length;
10276            }
10277            var tag = getTag(value);
10278            if (tag == mapTag || tag == setTag) {
10279              return !value.size;
10280            }
10281            if (isPrototype(value)) {
10282              return !baseKeys(value).length;
10283            }
10284            for (var key in value) {
10285              if (hasOwnProperty.call(value, key)) {
10286                return false;
10287              }
10288            }
10289            return true;
10290          }
10291          function isEqual(value, other) {
10292            return baseIsEqual(value, other);
10293          }
10294          function isEqualWith(value, other, customizer) {
10295            customizer = typeof customizer == "function" ? customizer : undefined2;
10296            var result2 = customizer ? customizer(value, other) : undefined2;
10297            return result2 === undefined2 ? baseIsEqual(value, other, undefined2, customizer) : !!result2;
10298          }
10299          function isError(value) {
10300            if (!isObjectLike(value)) {
10301              return false;
10302            }
10303            var tag = baseGetTag(value);
10304            return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject(value);
10305          }
10306          function isFinite2(value) {
10307            return typeof value == "number" && nativeIsFinite(value);
10308          }
10309          function isFunction2(value) {
10310            if (!isObject2(value)) {
10311              return false;
10312            }
10313            var tag = baseGetTag(value);
10314            return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
10315          }
10316          function isInteger(value) {
10317            return typeof value == "number" && value == toInteger(value);
10318          }
10319          function isLength(value) {
10320            return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
10321          }
10322          function isObject2(value) {
10323            var type = typeof value;
10324            return value != null && (type == "object" || type == "function");
10325          }
10326          function isObjectLike(value) {
10327            return value != null && typeof value == "object";
10328          }
10329          var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
10330          function isMatch(object, source) {
10331            return object === source || baseIsMatch(object, source, getMatchData(source));
10332          }
10333          function isMatchWith(object, source, customizer) {
10334            customizer = typeof customizer == "function" ? customizer : undefined2;
10335            return baseIsMatch(object, source, getMatchData(source), customizer);
10336          }
10337          function isNaN2(value) {
10338            return isNumber(value) && value != +value;
10339          }
10340          function isNative(value) {
10341            if (isMaskable(value)) {
10342              throw new Error2(CORE_ERROR_TEXT);
10343            }
10344            return baseIsNative(value);
10345          }
10346          function isNull(value) {
10347            return value === null;
10348          }
10349          function isNil(value) {
10350            return value == null;
10351          }
10352          function isNumber(value) {
10353            return typeof value == "number" || isObjectLike(value) && baseGetTag(value) == numberTag;
10354          }
10355          function isPlainObject(value) {
10356            if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
10357              return false;
10358            }
10359            var proto = getPrototype(value);
10360            if (proto === null) {
10361              return true;
10362            }
10363            var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor;
10364            return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
10365          }
10366          var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
10367          function isSafeInteger(value) {
10368            return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
10369          }
10370          var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
10371          function isString2(value) {
10372            return typeof value == "string" || !isArray2(value) && isObjectLike(value) && baseGetTag(value) == stringTag;
10373          }
10374          function isSymbol(value) {
10375            return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag;
10376          }
10377          var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
10378          function isUndefined2(value) {
10379            return value === undefined2;
10380          }
10381          function isWeakMap(value) {
10382            return isObjectLike(value) && getTag(value) == weakMapTag;
10383          }
10384          function isWeakSet(value) {
10385            return isObjectLike(value) && baseGetTag(value) == weakSetTag;
10386          }
10387          var lt = createRelationalOperation(baseLt);
10388          var lte = createRelationalOperation(function(value, other) {
10389            return value <= other;
10390          });
10391          function toArray3(value) {
10392            if (!value) {
10393              return [];
10394            }
10395            if (isArrayLike(value)) {
10396              return isString2(value) ? stringToArray(value) : copyArray(value);
10397            }
10398            if (symIterator && value[symIterator]) {
10399              return iteratorToArray(value[symIterator]());
10400            }
10401            var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;
10402            return func(value);
10403          }
10404          function toFinite(value) {
10405            if (!value) {
10406              return value === 0 ? value : 0;
10407            }
10408            value = toNumber(value);
10409            if (value === INFINITY || value === -INFINITY) {
10410              var sign = value < 0 ? -1 : 1;
10411              return sign * MAX_INTEGER;
10412            }
10413            return value === value ? value : 0;
10414          }
10415          function toInteger(value) {
10416            var result2 = toFinite(value), remainder = result2 % 1;
10417            return result2 === result2 ? remainder ? result2 - remainder : result2 : 0;
10418          }
10419          function toLength(value) {
10420            return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
10421          }
10422          function toNumber(value) {
10423            if (typeof value == "number") {
10424              return value;
10425            }
10426            if (isSymbol(value)) {
10427              return NAN;
10428            }
10429            if (isObject2(value)) {
10430              var other = typeof value.valueOf == "function" ? value.valueOf() : value;
10431              value = isObject2(other) ? other + "" : other;
10432            }
10433            if (typeof value != "string") {
10434              return value === 0 ? value : +value;
10435            }
10436            value = baseTrim(value);
10437            var isBinary = reIsBinary.test(value);
10438            return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
10439          }
10440          function toPlainObject(value) {
10441            return copyObject(value, keysIn(value));
10442          }
10443          function toSafeInteger(value) {
10444            return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0;
10445          }
10446          function toString(value) {
10447            return value == null ? "" : baseToString(value);
10448          }
10449          var assign = createAssigner(function(object, source) {
10450            if (isPrototype(source) || isArrayLike(source)) {
10451              copyObject(source, keys(source), object);
10452              return;
10453            }
10454            for (var key in source) {
10455              if (hasOwnProperty.call(source, key)) {
10456                assignValue(object, key, source[key]);
10457              }
10458            }
10459          });
10460          var assignIn = createAssigner(function(object, source) {
10461            copyObject(source, keysIn(source), object);
10462          });
10463          var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
10464            copyObject(source, keysIn(source), object, customizer);
10465          });
10466          var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
10467            copyObject(source, keys(source), object, customizer);
10468          });
10469          var at = flatRest(baseAt);
10470          function create(prototype, properties) {
10471            var result2 = baseCreate(prototype);
10472            return properties == null ? result2 : baseAssign(result2, properties);
10473          }
10474          var defaults3 = baseRest(function(object, sources) {
10475            object = Object2(object);
10476            var index = -1;
10477            var length = sources.length;
10478            var guard = length > 2 ? sources[2] : undefined2;
10479            if (guard && isIterateeCall(sources[0], sources[1], guard)) {
10480              length = 1;
10481            }
10482            while (++index < length) {
10483              var source = sources[index];
10484              var props = keysIn(source);
10485              var propsIndex = -1;
10486              var propsLength = props.length;
10487              while (++propsIndex < propsLength) {
10488                var key = props[propsIndex];
10489                var value = object[key];
10490                if (value === undefined2 || eq(value, objectProto[key]) && !hasOwnProperty.call(object, key)) {
10491                  object[key] = source[key];
10492                }
10493              }
10494            }
10495            return object;
10496          });
10497          var defaultsDeep = baseRest(function(args) {
10498            args.push(undefined2, customDefaultsMerge);
10499            return apply(mergeWith, undefined2, args);
10500          });
10501          function findKey(object, predicate) {
10502            return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
10503          }
10504          function findLastKey(object, predicate) {
10505            return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
10506          }
10507          function forIn(object, iteratee2) {
10508            return object == null ? object : baseFor(object, getIteratee(iteratee2, 3), keysIn);
10509          }
10510          function forInRight(object, iteratee2) {
10511            return object == null ? object : baseForRight(object, getIteratee(iteratee2, 3), keysIn);
10512          }
10513          function forOwn(object, iteratee2) {
10514            return object && baseForOwn(object, getIteratee(iteratee2, 3));
10515          }
10516          function forOwnRight(object, iteratee2) {
10517            return object && baseForOwnRight(object, getIteratee(iteratee2, 3));
10518          }
10519          function functions(object) {
10520            return object == null ? [] : baseFunctions(object, keys(object));
10521          }
10522          function functionsIn(object) {
10523            return object == null ? [] : baseFunctions(object, keysIn(object));
10524          }
10525          function get(object, path, defaultValue) {
10526            var result2 = object == null ? undefined2 : baseGet(object, path);
10527            return result2 === undefined2 ? defaultValue : result2;
10528          }
10529          function has(object, path) {
10530            return object != null && hasPath(object, path, baseHas);
10531          }
10532          function hasIn(object, path) {
10533            return object != null && hasPath(object, path, baseHasIn);
10534          }
10535          var invert = createInverter(function(result2, value, key) {
10536            if (value != null && typeof value.toString != "function") {
10537              value = nativeObjectToString.call(value);
10538            }
10539            result2[value] = key;
10540          }, constant(identity));
10541          var invertBy = createInverter(function(result2, value, key) {
10542            if (value != null && typeof value.toString != "function") {
10543              value = nativeObjectToString.call(value);
10544            }
10545            if (hasOwnProperty.call(result2, value)) {
10546              result2[value].push(key);
10547            } else {
10548              result2[value] = [key];
10549            }
10550          }, getIteratee);
10551          var invoke = baseRest(baseInvoke);
10552          function keys(object) {
10553            return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
10554          }
10555          function keysIn(object) {
10556            return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
10557          }
10558          function mapKeys(object, iteratee2) {
10559            var result2 = {};
10560            iteratee2 = getIteratee(iteratee2, 3);
10561            baseForOwn(object, function(value, key, object2) {
10562              baseAssignValue(result2, iteratee2(value, key, object2), value);
10563            });
10564            return result2;
10565          }
10566          function mapValues(object, iteratee2) {
10567            var result2 = {};
10568            iteratee2 = getIteratee(iteratee2, 3);
10569            baseForOwn(object, function(value, key, object2) {
10570              baseAssignValue(result2, key, iteratee2(value, key, object2));
10571            });
10572            return result2;
10573          }
10574          var merge = createAssigner(function(object, source, srcIndex) {
10575            baseMerge(object, source, srcIndex);
10576          });
10577          var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
10578            baseMerge(object, source, srcIndex, customizer);
10579          });
10580          var omit = flatRest(function(object, paths) {
10581            var result2 = {};
10582            if (object == null) {
10583              return result2;
10584            }
10585            var isDeep = false;
10586            paths = arrayMap(paths, function(path) {
10587              path = castPath(path, object);
10588              isDeep || (isDeep = path.length > 1);
10589              return path;
10590            });
10591            copyObject(object, getAllKeysIn(object), result2);
10592            if (isDeep) {
10593              result2 = baseClone(result2, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
10594            }
10595            var length = paths.length;
10596            while (length--) {
10597              baseUnset(result2, paths[length]);
10598            }
10599            return result2;
10600          });
10601          function omitBy(object, predicate) {
10602            return pickBy(object, negate(getIteratee(predicate)));
10603          }
10604          var pick = flatRest(function(object, paths) {
10605            return object == null ? {} : basePick(object, paths);
10606          });
10607          function pickBy(object, predicate) {
10608            if (object == null) {
10609              return {};
10610            }
10611            var props = arrayMap(getAllKeysIn(object), function(prop) {
10612              return [prop];
10613            });
10614            predicate = getIteratee(predicate);
10615            return basePickBy(object, props, function(value, path) {
10616              return predicate(value, path[0]);
10617            });
10618          }
10619          function result(object, path, defaultValue) {
10620            path = castPath(path, object);
10621            var index = -1, length = path.length;
10622            if (!length) {
10623              length = 1;
10624              object = undefined2;
10625            }
10626            while (++index < length) {
10627              var value = object == null ? undefined2 : object[toKey(path[index])];
10628              if (value === undefined2) {
10629                index = length;
10630                value = defaultValue;
10631              }
10632              object = isFunction2(value) ? value.call(object) : value;
10633            }
10634            return object;
10635          }
10636          function set(object, path, value) {
10637            return object == null ? object : baseSet(object, path, value);
10638          }
10639          function setWith(object, path, value, customizer) {
10640            customizer = typeof customizer == "function" ? customizer : undefined2;
10641            return object == null ? object : baseSet(object, path, value, customizer);
10642          }
10643          var toPairs = createToPairs(keys);
10644          var toPairsIn = createToPairs(keysIn);
10645          function transform(object, iteratee2, accumulator) {
10646            var isArr = isArray2(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object);
10647            iteratee2 = getIteratee(iteratee2, 4);
10648            if (accumulator == null) {
10649              var Ctor = object && object.constructor;
10650              if (isArrLike) {
10651                accumulator = isArr ? new Ctor() : [];
10652              } else if (isObject2(object)) {
10653                accumulator = isFunction2(Ctor) ? baseCreate(getPrototype(object)) : {};
10654              } else {
10655                accumulator = {};
10656              }
10657            }
10658            (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object2) {
10659              return iteratee2(accumulator, value, index, object2);
10660            });
10661            return accumulator;
10662          }
10663          function unset(object, path) {
10664            return object == null ? true : baseUnset(object, path);
10665          }
10666          function update(object, path, updater) {
10667            return object == null ? object : baseUpdate(object, path, castFunction(updater));
10668          }
10669          function updateWith(object, path, updater, customizer) {
10670            customizer = typeof customizer == "function" ? customizer : undefined2;
10671            return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
10672          }
10673          function values(object) {
10674            return object == null ? [] : baseValues(object, keys(object));
10675          }
10676          function valuesIn(object) {
10677            return object == null ? [] : baseValues(object, keysIn(object));
10678          }
10679          function clamp3(number, lower, upper) {
10680            if (upper === undefined2) {
10681              upper = lower;
10682              lower = undefined2;
10683            }
10684            if (upper !== undefined2) {
10685              upper = toNumber(upper);
10686              upper = upper === upper ? upper : 0;
10687            }
10688            if (lower !== undefined2) {
10689              lower = toNumber(lower);
10690              lower = lower === lower ? lower : 0;
10691            }
10692            return baseClamp(toNumber(number), lower, upper);
10693          }
10694          function inRange(number, start2, end2) {
10695            start2 = toFinite(start2);
10696            if (end2 === undefined2) {
10697              end2 = start2;
10698              start2 = 0;
10699            } else {
10700              end2 = toFinite(end2);
10701            }
10702            number = toNumber(number);
10703            return baseInRange(number, start2, end2);
10704          }
10705          function random3(lower, upper, floating) {
10706            if (floating && typeof floating != "boolean" && isIterateeCall(lower, upper, floating)) {
10707              upper = floating = undefined2;
10708            }
10709            if (floating === undefined2) {
10710              if (typeof upper == "boolean") {
10711                floating = upper;
10712                upper = undefined2;
10713              } else if (typeof lower == "boolean") {
10714                floating = lower;
10715                lower = undefined2;
10716              }
10717            }
10718            if (lower === undefined2 && upper === undefined2) {
10719              lower = 0;
10720              upper = 1;
10721            } else {
10722              lower = toFinite(lower);
10723              if (upper === undefined2) {
10724                upper = lower;
10725                lower = 0;
10726              } else {
10727                upper = toFinite(upper);
10728              }
10729            }
10730            if (lower > upper) {
10731              var temp = lower;
10732              lower = upper;
10733              upper = temp;
10734            }
10735            if (floating || lower % 1 || upper % 1) {
10736              var rand = nativeRandom();
10737              return nativeMin(lower + rand * (upper - lower + freeParseFloat("1e-" + ((rand + "").length - 1))), upper);
10738            }
10739            return baseRandom(lower, upper);
10740          }
10741          var camelCase = createCompounder(function(result2, word, index) {
10742            word = word.toLowerCase();
10743            return result2 + (index ? capitalize(word) : word);
10744          });
10745          function capitalize(string) {
10746            return upperFirst(toString(string).toLowerCase());
10747          }
10748          function deburr(string) {
10749            string = toString(string);
10750            return string && string.replace(reLatin, deburrLetter).replace(reComboMark, "");
10751          }
10752          function endsWith(string, target, position) {
10753            string = toString(string);
10754            target = baseToString(target);
10755            var length = string.length;
10756            position = position === undefined2 ? length : baseClamp(toInteger(position), 0, length);
10757            var end2 = position;
10758            position -= target.length;
10759            return position >= 0 && string.slice(position, end2) == target;
10760          }
10761          function escape(string) {
10762            string = toString(string);
10763            return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string;
10764          }
10765          function escapeRegExp(string) {
10766            string = toString(string);
10767            return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string;
10768          }
10769          var kebabCase = createCompounder(function(result2, word, index) {
10770            return result2 + (index ? "-" : "") + word.toLowerCase();
10771          });
10772          var lowerCase = createCompounder(function(result2, word, index) {
10773            return result2 + (index ? " " : "") + word.toLowerCase();
10774          });
10775          var lowerFirst = createCaseFirst("toLowerCase");
10776          function pad(string, length, chars) {
10777            string = toString(string);
10778            length = toInteger(length);
10779            var strLength = length ? stringSize(string) : 0;
10780            if (!length || strLength >= length) {
10781              return string;
10782            }
10783            var mid = (length - strLength) / 2;
10784            return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars);
10785          }
10786          function padEnd(string, length, chars) {
10787            string = toString(string);
10788            length = toInteger(length);
10789            var strLength = length ? stringSize(string) : 0;
10790            return length && strLength < length ? string + createPadding(length - strLength, chars) : string;
10791          }
10792          function padStart(string, length, chars) {
10793            string = toString(string);
10794            length = toInteger(length);
10795            var strLength = length ? stringSize(string) : 0;
10796            return length && strLength < length ? createPadding(length - strLength, chars) + string : string;
10797          }
10798          function parseInt2(string, radix, guard) {
10799            if (guard || radix == null) {
10800              radix = 0;
10801            } else if (radix) {
10802              radix = +radix;
10803            }
10804            return nativeParseInt(toString(string).replace(reTrimStart, ""), radix || 0);
10805          }
10806          function repeat(string, n, guard) {
10807            if (guard ? isIterateeCall(string, n, guard) : n === undefined2) {
10808              n = 1;
10809            } else {
10810              n = toInteger(n);
10811            }
10812            return baseRepeat(toString(string), n);
10813          }
10814          function replace() {
10815            var args = arguments, string = toString(args[0]);
10816            return args.length < 3 ? string : string.replace(args[1], args[2]);
10817          }
10818          var snakeCase = createCompounder(function(result2, word, index) {
10819            return result2 + (index ? "_" : "") + word.toLowerCase();
10820          });
10821          function split2(string, separator, limit) {
10822            if (limit && typeof limit != "number" && isIterateeCall(string, separator, limit)) {
10823              separator = limit = undefined2;
10824            }
10825            limit = limit === undefined2 ? MAX_ARRAY_LENGTH : limit >>> 0;
10826            if (!limit) {
10827              return [];
10828            }
10829            string = toString(string);
10830            if (string && (typeof separator == "string" || separator != null && !isRegExp(separator))) {
10831              separator = baseToString(separator);
10832              if (!separator && hasUnicode(string)) {
10833                return castSlice(stringToArray(string), 0, limit);
10834              }
10835            }
10836            return string.split(separator, limit);
10837          }
10838          var startCase = createCompounder(function(result2, word, index) {
10839            return result2 + (index ? " " : "") + upperFirst(word);
10840          });
10841          function startsWith(string, target, position) {
10842            string = toString(string);
10843            position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length);
10844            target = baseToString(target);
10845            return string.slice(position, position + target.length) == target;
10846          }
10847          function template(string, options, guard) {
10848            var settings = lodash.templateSettings;
10849            if (guard && isIterateeCall(string, options, guard)) {
10850              options = undefined2;
10851            }
10852            string = toString(string);
10853            options = assignInWith({}, options, settings, customDefaultsAssignIn);
10854            var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys);
10855            var isEscaping, isEvaluating, index = 0, interpolate3 = options.interpolate || reNoMatch, source = "__p += '";
10856            var reDelimiters = RegExp2((options.escape || reNoMatch).source + "|" + interpolate3.source + "|" + (interpolate3 === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", "g");
10857            var sourceURL = "//# sourceURL=" + (hasOwnProperty.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n";
10858            string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset2) {
10859              interpolateValue || (interpolateValue = esTemplateValue);
10860              source += string.slice(index, offset2).replace(reUnescapedString, escapeStringChar);
10861              if (escapeValue) {
10862                isEscaping = true;
10863                source += "' +\n__e(" + escapeValue + ") +\n'";
10864              }
10865              if (evaluateValue) {
10866                isEvaluating = true;
10867                source += "';\n" + evaluateValue + ";\n__p += '";
10868              }
10869              if (interpolateValue) {
10870                source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
10871              }
10872              index = offset2 + match.length;
10873              return match;
10874            });
10875            source += "';\n";
10876            var variable = hasOwnProperty.call(options, "variable") && options.variable;
10877            if (!variable) {
10878              source = "with (obj) {\n" + source + "\n}\n";
10879            } else if (reForbiddenIdentifierChars.test(variable)) {
10880              throw new Error2(INVALID_TEMPL_VAR_ERROR_TEXT);
10881            }
10882            source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;");
10883            source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}";
10884            var result2 = attempt(function() {
10885              return Function2(importsKeys, sourceURL + "return " + source).apply(undefined2, importsValues);
10886            });
10887            result2.source = source;
10888            if (isError(result2)) {
10889              throw result2;
10890            }
10891            return result2;
10892          }
10893          function toLower(value) {
10894            return toString(value).toLowerCase();
10895          }
10896          function toUpper(value) {
10897            return toString(value).toUpperCase();
10898          }
10899          function trim(string, chars, guard) {
10900            string = toString(string);
10901            if (string && (guard || chars === undefined2)) {
10902              return baseTrim(string);
10903            }
10904            if (!string || !(chars = baseToString(chars))) {
10905              return string;
10906            }
10907            var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start2 = charsStartIndex(strSymbols, chrSymbols), end2 = charsEndIndex(strSymbols, chrSymbols) + 1;
10908            return castSlice(strSymbols, start2, end2).join("");
10909          }
10910          function trimEnd(string, chars, guard) {
10911            string = toString(string);
10912            if (string && (guard || chars === undefined2)) {
10913              return string.slice(0, trimmedEndIndex(string) + 1);
10914            }
10915            if (!string || !(chars = baseToString(chars))) {
10916              return string;
10917            }
10918            var strSymbols = stringToArray(string), end2 = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
10919            return castSlice(strSymbols, 0, end2).join("");
10920          }
10921          function trimStart(string, chars, guard) {
10922            string = toString(string);
10923            if (string && (guard || chars === undefined2)) {
10924              return string.replace(reTrimStart, "");
10925            }
10926            if (!string || !(chars = baseToString(chars))) {
10927              return string;
10928            }
10929            var strSymbols = stringToArray(string), start2 = charsStartIndex(strSymbols, stringToArray(chars));
10930            return castSlice(strSymbols, start2).join("");
10931          }
10932          function truncate(string, options) {
10933            var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION;
10934            if (isObject2(options)) {
10935              var separator = "separator" in options ? options.separator : separator;
10936              length = "length" in options ? toInteger(options.length) : length;
10937              omission = "omission" in options ? baseToString(options.omission) : omission;
10938            }
10939            string = toString(string);
10940            var strLength = string.length;
10941            if (hasUnicode(string)) {
10942              var strSymbols = stringToArray(string);
10943              strLength = strSymbols.length;
10944            }
10945            if (length >= strLength) {
10946              return string;
10947            }
10948            var end2 = length - stringSize(omission);
10949            if (end2 < 1) {
10950              return omission;
10951            }
10952            var result2 = strSymbols ? castSlice(strSymbols, 0, end2).join("") : string.slice(0, end2);
10953            if (separator === undefined2) {
10954              return result2 + omission;
10955            }
10956            if (strSymbols) {
10957              end2 += result2.length - end2;
10958            }
10959            if (isRegExp(separator)) {
10960              if (string.slice(end2).search(separator)) {
10961                var match, substring = result2;
10962                if (!separator.global) {
10963                  separator = RegExp2(separator.source, toString(reFlags.exec(separator)) + "g");
10964                }
10965                separator.lastIndex = 0;
10966                while (match = separator.exec(substring)) {
10967                  var newEnd = match.index;
10968                }
10969                result2 = result2.slice(0, newEnd === undefined2 ? end2 : newEnd);
10970              }
10971            } else if (string.indexOf(baseToString(separator), end2) != end2) {
10972              var index = result2.lastIndexOf(separator);
10973              if (index > -1) {
10974                result2 = result2.slice(0, index);
10975              }
10976            }
10977            return result2 + omission;
10978          }
10979          function unescape(string) {
10980            string = toString(string);
10981            return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string;
10982          }
10983          var upperCase = createCompounder(function(result2, word, index) {
10984            return result2 + (index ? " " : "") + word.toUpperCase();
10985          });
10986          var upperFirst = createCaseFirst("toUpperCase");
10987          function words(string, pattern, guard) {
10988            string = toString(string);
10989            pattern = guard ? undefined2 : pattern;
10990            if (pattern === undefined2) {
10991              return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
10992            }
10993            return string.match(pattern) || [];
10994          }
10995          var attempt = baseRest(function(func, args) {
10996            try {
10997              return apply(func, undefined2, args);
10998            } catch (e) {
10999              return isError(e) ? e : new Error2(e);
11000            }
11001          });
11002          var bindAll = flatRest(function(object, methodNames) {
11003            arrayEach(methodNames, function(key) {
11004              key = toKey(key);
11005              baseAssignValue(object, key, bind(object[key], object));
11006            });
11007            return object;
11008          });
11009          function cond(pairs) {
11010            var length = pairs == null ? 0 : pairs.length, toIteratee = getIteratee();
11011            pairs = !length ? [] : arrayMap(pairs, function(pair) {
11012              if (typeof pair[1] != "function") {
11013                throw new TypeError2(FUNC_ERROR_TEXT);
11014              }
11015              return [toIteratee(pair[0]), pair[1]];
11016            });
11017            return baseRest(function(args) {
11018              var index = -1;
11019              while (++index < length) {
11020                var pair = pairs[index];
11021                if (apply(pair[0], this, args)) {
11022                  return apply(pair[1], this, args);
11023                }
11024              }
11025            });
11026          }
11027          function conforms(source) {
11028            return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
11029          }
11030          function constant(value) {
11031            return function() {
11032              return value;
11033            };
11034          }
11035          function defaultTo(value, defaultValue) {
11036            return value == null || value !== value ? defaultValue : value;
11037          }
11038          var flow = createFlow();
11039          var flowRight = createFlow(true);
11040          function identity(value) {
11041            return value;
11042          }
11043          function iteratee(func) {
11044            return baseIteratee(typeof func == "function" ? func : baseClone(func, CLONE_DEEP_FLAG));
11045          }
11046          function matches(source) {
11047            return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
11048          }
11049          function matchesProperty(path, srcValue) {
11050            return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
11051          }
11052          var method = baseRest(function(path, args) {
11053            return function(object) {
11054              return baseInvoke(object, path, args);
11055            };
11056          });
11057          var methodOf = baseRest(function(object, args) {
11058            return function(path) {
11059              return baseInvoke(object, path, args);
11060            };
11061          });
11062          function mixin(object, source, options) {
11063            var props = keys(source), methodNames = baseFunctions(source, props);
11064            if (options == null && !(isObject2(source) && (methodNames.length || !props.length))) {
11065              options = source;
11066              source = object;
11067              object = this;
11068              methodNames = baseFunctions(source, keys(source));
11069            }
11070            var chain2 = !(isObject2(options) && "chain" in options) || !!options.chain, isFunc = isFunction2(object);
11071            arrayEach(methodNames, function(methodName) {
11072              var func = source[methodName];
11073              object[methodName] = func;
11074              if (isFunc) {
11075                object.prototype[methodName] = function() {
11076                  var chainAll = this.__chain__;
11077                  if (chain2 || chainAll) {
11078                    var result2 = object(this.__wrapped__), actions = result2.__actions__ = copyArray(this.__actions__);
11079                    actions.push({ "func": func, "args": arguments, "thisArg": object });
11080                    result2.__chain__ = chainAll;
11081                    return result2;
11082                  }
11083                  return func.apply(object, arrayPush([this.value()], arguments));
11084                };
11085              }
11086            });
11087            return object;
11088          }
11089          function noConflict() {
11090            if (root._ === this) {
11091              root._ = oldDash;
11092            }
11093            return this;
11094          }
11095          function noop() {
11096          }
11097          function nthArg(n) {
11098            n = toInteger(n);
11099            return baseRest(function(args) {
11100              return baseNth(args, n);
11101            });
11102          }
11103          var over = createOver(arrayMap);
11104          var overEvery = createOver(arrayEvery);
11105          var overSome = createOver(arraySome);
11106          function property(path) {
11107            return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
11108          }
11109          function propertyOf(object) {
11110            return function(path) {
11111              return object == null ? undefined2 : baseGet(object, path);
11112            };
11113          }
11114          var range = createRange();
11115          var rangeRight = createRange(true);
11116          function stubArray() {
11117            return [];
11118          }
11119          function stubFalse() {
11120            return false;
11121          }
11122          function stubObject() {
11123            return {};
11124          }
11125          function stubString() {
11126            return "";
11127          }
11128          function stubTrue() {
11129            return true;
11130          }
11131          function times(n, iteratee2) {
11132            n = toInteger(n);
11133            if (n < 1 || n > MAX_SAFE_INTEGER) {
11134              return [];
11135            }
11136            var index = MAX_ARRAY_LENGTH, length = nativeMin(n, MAX_ARRAY_LENGTH);
11137            iteratee2 = getIteratee(iteratee2);
11138            n -= MAX_ARRAY_LENGTH;
11139            var result2 = baseTimes(length, iteratee2);
11140            while (++index < n) {
11141              iteratee2(index);
11142            }
11143            return result2;
11144          }
11145          function toPath(value) {
11146            if (isArray2(value)) {
11147              return arrayMap(value, toKey);
11148            }
11149            return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
11150          }
11151          function uniqueId(prefix) {
11152            var id = ++idCounter;
11153            return toString(prefix) + id;
11154          }
11155          var add = createMathOperation(function(augend, addend) {
11156            return augend + addend;
11157          }, 0);
11158          var ceil = createRound("ceil");
11159          var divide = createMathOperation(function(dividend, divisor) {
11160            return dividend / divisor;
11161          }, 1);
11162          var floor = createRound("floor");
11163          function max2(array) {
11164            return array && array.length ? baseExtremum(array, identity, baseGt) : undefined2;
11165          }
11166          function maxBy(array, iteratee2) {
11167            return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined2;
11168          }
11169          function mean(array) {
11170            return baseMean(array, identity);
11171          }
11172          function meanBy(array, iteratee2) {
11173            return baseMean(array, getIteratee(iteratee2, 2));
11174          }
11175          function min2(array) {
11176            return array && array.length ? baseExtremum(array, identity, baseLt) : undefined2;
11177          }
11178          function minBy(array, iteratee2) {
11179            return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseLt) : undefined2;
11180          }
11181          var multiply = createMathOperation(function(multiplier, multiplicand) {
11182            return multiplier * multiplicand;
11183          }, 1);
11184          var round2 = createRound("round");
11185          var subtract = createMathOperation(function(minuend, subtrahend) {
11186            return minuend - subtrahend;
11187          }, 0);
11188          function sum(array) {
11189            return array && array.length ? baseSum(array, identity) : 0;
11190          }
11191          function sumBy(array, iteratee2) {
11192            return array && array.length ? baseSum(array, getIteratee(iteratee2, 2)) : 0;
11193          }
11194          lodash.after = after;
11195          lodash.ary = ary;
11196          lodash.assign = assign;
11197          lodash.assignIn = assignIn;
11198          lodash.assignInWith = assignInWith;
11199          lodash.assignWith = assignWith;
11200          lodash.at = at;
11201          lodash.before = before;
11202          lodash.bind = bind;
11203          lodash.bindAll = bindAll;
11204          lodash.bindKey = bindKey;
11205          lodash.castArray = castArray;
11206          lodash.chain = chain;
11207          lodash.chunk = chunk;
11208          lodash.compact = compact;
11209          lodash.concat = concat;
11210          lodash.cond = cond;
11211          lodash.conforms = conforms;
11212          lodash.constant = constant;
11213          lodash.countBy = countBy;
11214          lodash.create = create;
11215          lodash.curry = curry;
11216          lodash.curryRight = curryRight;
11217          lodash.debounce = debounce3;
11218          lodash.defaults = defaults3;
11219          lodash.defaultsDeep = defaultsDeep;
11220          lodash.defer = defer;
11221          lodash.delay = delay;
11222          lodash.difference = difference;
11223          lodash.differenceBy = differenceBy;
11224          lodash.differenceWith = differenceWith;
11225          lodash.drop = drop;
11226          lodash.dropRight = dropRight;
11227          lodash.dropRightWhile = dropRightWhile;
11228          lodash.dropWhile = dropWhile;
11229          lodash.fill = fill;
11230          lodash.filter = filter;
11231          lodash.flatMap = flatMap;
11232          lodash.flatMapDeep = flatMapDeep;
11233          lodash.flatMapDepth = flatMapDepth;
11234          lodash.flatten = flatten;
11235          lodash.flattenDeep = flattenDeep;
11236          lodash.flattenDepth = flattenDepth;
11237          lodash.flip = flip2;
11238          lodash.flow = flow;
11239          lodash.flowRight = flowRight;
11240          lodash.fromPairs = fromPairs;
11241          lodash.functions = functions;
11242          lodash.functionsIn = functionsIn;
11243          lodash.groupBy = groupBy;
11244          lodash.initial = initial;
11245          lodash.intersection = intersection;
11246          lodash.intersectionBy = intersectionBy;
11247          lodash.intersectionWith = intersectionWith;
11248          lodash.invert = invert;
11249          lodash.invertBy = invertBy;
11250          lodash.invokeMap = invokeMap;
11251          lodash.iteratee = iteratee;
11252          lodash.keyBy = keyBy;
11253          lodash.keys = keys;
11254          lodash.keysIn = keysIn;
11255          lodash.map = map;
11256          lodash.mapKeys = mapKeys;
11257          lodash.mapValues = mapValues;
11258          lodash.matches = matches;
11259          lodash.matchesProperty = matchesProperty;
11260          lodash.memoize = memoize;
11261          lodash.merge = merge;
11262          lodash.mergeWith = mergeWith;
11263          lodash.method = method;
11264          lodash.methodOf = methodOf;
11265          lodash.mixin = mixin;
11266          lodash.negate = negate;
11267          lodash.nthArg = nthArg;
11268          lodash.omit = omit;
11269          lodash.omitBy = omitBy;
11270          lodash.once = once;
11271          lodash.orderBy = orderBy;
11272          lodash.over = over;
11273          lodash.overArgs = overArgs;
11274          lodash.overEvery = overEvery;
11275          lodash.overSome = overSome;
11276          lodash.partial = partial;
11277          lodash.partialRight = partialRight;
11278          lodash.partition = partition;
11279          lodash.pick = pick;
11280          lodash.pickBy = pickBy;
11281          lodash.property = property;
11282          lodash.propertyOf = propertyOf;
11283          lodash.pull = pull;
11284          lodash.pullAll = pullAll;
11285          lodash.pullAllBy = pullAllBy;
11286          lodash.pullAllWith = pullAllWith;
11287          lodash.pullAt = pullAt;
11288          lodash.range = range;
11289          lodash.rangeRight = rangeRight;
11290          lodash.rearg = rearg;
11291          lodash.reject = reject;
11292          lodash.remove = remove;
11293          lodash.rest = rest;
11294          lodash.reverse = reverse;
11295          lodash.sampleSize = sampleSize;
11296          lodash.set = set;
11297          lodash.setWith = setWith;
11298          lodash.shuffle = shuffle3;
11299          lodash.slice = slice;
11300          lodash.sortBy = sortBy;
11301          lodash.sortedUniq = sortedUniq;
11302          lodash.sortedUniqBy = sortedUniqBy;
11303          lodash.split = split2;
11304          lodash.spread = spread;
11305          lodash.tail = tail;
11306          lodash.take = take;
11307          lodash.takeRight = takeRight;
11308          lodash.takeRightWhile = takeRightWhile;
11309          lodash.takeWhile = takeWhile;
11310          lodash.tap = tap;
11311          lodash.throttle = throttle2;
11312          lodash.thru = thru;
11313          lodash.toArray = toArray3;
11314          lodash.toPairs = toPairs;
11315          lodash.toPairsIn = toPairsIn;
11316          lodash.toPath = toPath;
11317          lodash.toPlainObject = toPlainObject;
11318          lodash.transform = transform;
11319          lodash.unary = unary;
11320          lodash.union = union;
11321          lodash.unionBy = unionBy;
11322          lodash.unionWith = unionWith;
11323          lodash.uniq = uniq;
11324          lodash.uniqBy = uniqBy;
11325          lodash.uniqWith = uniqWith;
11326          lodash.unset = unset;
11327          lodash.unzip = unzip;
11328          lodash.unzipWith = unzipWith;
11329          lodash.update = update;
11330          lodash.updateWith = updateWith;
11331          lodash.values = values;
11332          lodash.valuesIn = valuesIn;
11333          lodash.without = without;
11334          lodash.words = words;
11335          lodash.wrap = wrap3;
11336          lodash.xor = xor;
11337          lodash.xorBy = xorBy;
11338          lodash.xorWith = xorWith;
11339          lodash.zip = zip;
11340          lodash.zipObject = zipObject;
11341          lodash.zipObjectDeep = zipObjectDeep;
11342          lodash.zipWith = zipWith;
11343          lodash.entries = toPairs;
11344          lodash.entriesIn = toPairsIn;
11345          lodash.extend = assignIn;
11346          lodash.extendWith = assignInWith;
11347          mixin(lodash, lodash);
11348          lodash.add = add;
11349          lodash.attempt = attempt;
11350          lodash.camelCase = camelCase;
11351          lodash.capitalize = capitalize;
11352          lodash.ceil = ceil;
11353          lodash.clamp = clamp3;
11354          lodash.clone = clone;
11355          lodash.cloneDeep = cloneDeep;
11356          lodash.cloneDeepWith = cloneDeepWith;
11357          lodash.cloneWith = cloneWith;
11358          lodash.conformsTo = conformsTo;
11359          lodash.deburr = deburr;
11360          lodash.defaultTo = defaultTo;
11361          lodash.divide = divide;
11362          lodash.endsWith = endsWith;
11363          lodash.eq = eq;
11364          lodash.escape = escape;
11365          lodash.escapeRegExp = escapeRegExp;
11366          lodash.every = every;
11367          lodash.find = find;
11368          lodash.findIndex = findIndex;
11369          lodash.findKey = findKey;
11370          lodash.findLast = findLast;
11371          lodash.findLastIndex = findLastIndex;
11372          lodash.findLastKey = findLastKey;
11373          lodash.floor = floor;
11374          lodash.forEach = forEach2;
11375          lodash.forEachRight = forEachRight;
11376          lodash.forIn = forIn;
11377          lodash.forInRight = forInRight;
11378          lodash.forOwn = forOwn;
11379          lodash.forOwnRight = forOwnRight;
11380          lodash.get = get;
11381          lodash.gt = gt;
11382          lodash.gte = gte;
11383          lodash.has = has;
11384          lodash.hasIn = hasIn;
11385          lodash.head = head;
11386          lodash.identity = identity;
11387          lodash.includes = includes;
11388          lodash.indexOf = indexOf;
11389          lodash.inRange = inRange;
11390          lodash.invoke = invoke;
11391          lodash.isArguments = isArguments;
11392          lodash.isArray = isArray2;
11393          lodash.isArrayBuffer = isArrayBuffer;
11394          lodash.isArrayLike = isArrayLike;
11395          lodash.isArrayLikeObject = isArrayLikeObject;
11396          lodash.isBoolean = isBoolean;
11397          lodash.isBuffer = isBuffer;
11398          lodash.isDate = isDate;
11399          lodash.isElement = isElement2;
11400          lodash.isEmpty = isEmpty;
11401          lodash.isEqual = isEqual;
11402          lodash.isEqualWith = isEqualWith;
11403          lodash.isError = isError;
11404          lodash.isFinite = isFinite2;
11405          lodash.isFunction = isFunction2;
11406          lodash.isInteger = isInteger;
11407          lodash.isLength = isLength;
11408          lodash.isMap = isMap;
11409          lodash.isMatch = isMatch;
11410          lodash.isMatchWith = isMatchWith;
11411          lodash.isNaN = isNaN2;
11412          lodash.isNative = isNative;
11413          lodash.isNil = isNil;
11414          lodash.isNull = isNull;
11415          lodash.isNumber = isNumber;
11416          lodash.isObject = isObject2;
11417          lodash.isObjectLike = isObjectLike;
11418          lodash.isPlainObject = isPlainObject;
11419          lodash.isRegExp = isRegExp;
11420          lodash.isSafeInteger = isSafeInteger;
11421          lodash.isSet = isSet;
11422          lodash.isString = isString2;
11423          lodash.isSymbol = isSymbol;
11424          lodash.isTypedArray = isTypedArray;
11425          lodash.isUndefined = isUndefined2;
11426          lodash.isWeakMap = isWeakMap;
11427          lodash.isWeakSet = isWeakSet;
11428          lodash.join = join;
11429          lodash.kebabCase = kebabCase;
11430          lodash.last = last;
11431          lodash.lastIndexOf = lastIndexOf;
11432          lodash.lowerCase = lowerCase;
11433          lodash.lowerFirst = lowerFirst;
11434          lodash.lt = lt;
11435          lodash.lte = lte;
11436          lodash.max = max2;
11437          lodash.maxBy = maxBy;
11438          lodash.mean = mean;
11439          lodash.meanBy = meanBy;
11440          lodash.min = min2;
11441          lodash.minBy = minBy;
11442          lodash.stubArray = stubArray;
11443          lodash.stubFalse = stubFalse;
11444          lodash.stubObject = stubObject;
11445          lodash.stubString = stubString;
11446          lodash.stubTrue = stubTrue;
11447          lodash.multiply = multiply;
11448          lodash.nth = nth;
11449          lodash.noConflict = noConflict;
11450          lodash.noop = noop;
11451          lodash.now = now2;
11452          lodash.pad = pad;
11453          lodash.padEnd = padEnd;
11454          lodash.padStart = padStart;
11455          lodash.parseInt = parseInt2;
11456          lodash.random = random3;
11457          lodash.reduce = reduce;
11458          lodash.reduceRight = reduceRight;
11459          lodash.repeat = repeat;
11460          lodash.replace = replace;
11461          lodash.result = result;
11462          lodash.round = round2;
11463          lodash.runInContext = runInContext2;
11464          lodash.sample = sample;
11465          lodash.size = size;
11466          lodash.snakeCase = snakeCase;
11467          lodash.some = some;
11468          lodash.sortedIndex = sortedIndex;
11469          lodash.sortedIndexBy = sortedIndexBy;
11470          lodash.sortedIndexOf = sortedIndexOf;
11471          lodash.sortedLastIndex = sortedLastIndex;
11472          lodash.sortedLastIndexBy = sortedLastIndexBy;
11473          lodash.sortedLastIndexOf = sortedLastIndexOf;
11474          lodash.startCase = startCase;
11475          lodash.startsWith = startsWith;
11476          lodash.subtract = subtract;
11477          lodash.sum = sum;
11478          lodash.sumBy = sumBy;
11479          lodash.template = template;
11480          lodash.times = times;
11481          lodash.toFinite = toFinite;
11482          lodash.toInteger = toInteger;
11483          lodash.toLength = toLength;
11484          lodash.toLower = toLower;
11485          lodash.toNumber = toNumber;
11486          lodash.toSafeInteger = toSafeInteger;
11487          lodash.toString = toString;
11488          lodash.toUpper = toUpper;
11489          lodash.trim = trim;
11490          lodash.trimEnd = trimEnd;
11491          lodash.trimStart = trimStart;
11492          lodash.truncate = truncate;
11493          lodash.unescape = unescape;
11494          lodash.uniqueId = uniqueId;
11495          lodash.upperCase = upperCase;
11496          lodash.upperFirst = upperFirst;
11497          lodash.each = forEach2;
11498          lodash.eachRight = forEachRight;
11499          lodash.first = head;
11500          mixin(lodash, function() {
11501            var source = {};
11502            baseForOwn(lodash, function(func, methodName) {
11503              if (!hasOwnProperty.call(lodash.prototype, methodName)) {
11504                source[methodName] = func;
11505              }
11506            });
11507            return source;
11508          }(), { "chain": false });
11509          lodash.VERSION = VERSION;
11510          arrayEach(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) {
11511            lodash[methodName].placeholder = lodash;
11512          });
11513          arrayEach(["drop", "take"], function(methodName, index) {
11514            LazyWrapper.prototype[methodName] = function(n) {
11515              n = n === undefined2 ? 1 : nativeMax(toInteger(n), 0);
11516              var result2 = this.__filtered__ && !index ? new LazyWrapper(this) : this.clone();
11517              if (result2.__filtered__) {
11518                result2.__takeCount__ = nativeMin(n, result2.__takeCount__);
11519              } else {
11520                result2.__views__.push({
11521                  "size": nativeMin(n, MAX_ARRAY_LENGTH),
11522                  "type": methodName + (result2.__dir__ < 0 ? "Right" : "")
11523                });
11524              }
11525              return result2;
11526            };
11527            LazyWrapper.prototype[methodName + "Right"] = function(n) {
11528              return this.reverse()[methodName](n).reverse();
11529            };
11530          });
11531          arrayEach(["filter", "map", "takeWhile"], function(methodName, index) {
11532            var type = index + 1, isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
11533            LazyWrapper.prototype[methodName] = function(iteratee2) {
11534              var result2 = this.clone();
11535              result2.__iteratees__.push({
11536                "iteratee": getIteratee(iteratee2, 3),
11537                "type": type
11538              });
11539              result2.__filtered__ = result2.__filtered__ || isFilter;
11540              return result2;
11541            };
11542          });
11543          arrayEach(["head", "last"], function(methodName, index) {
11544            var takeName = "take" + (index ? "Right" : "");
11545            LazyWrapper.prototype[methodName] = function() {
11546              return this[takeName](1).value()[0];
11547            };
11548          });
11549          arrayEach(["initial", "tail"], function(methodName, index) {
11550            var dropName = "drop" + (index ? "" : "Right");
11551            LazyWrapper.prototype[methodName] = function() {
11552              return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
11553            };
11554          });
11555          LazyWrapper.prototype.compact = function() {
11556            return this.filter(identity);
11557          };
11558          LazyWrapper.prototype.find = function(predicate) {
11559            return this.filter(predicate).head();
11560          };
11561          LazyWrapper.prototype.findLast = function(predicate) {
11562            return this.reverse().find(predicate);
11563          };
11564          LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
11565            if (typeof path == "function") {
11566              return new LazyWrapper(this);
11567            }
11568            return this.map(function(value) {
11569              return baseInvoke(value, path, args);
11570            });
11571          });
11572          LazyWrapper.prototype.reject = function(predicate) {
11573            return this.filter(negate(getIteratee(predicate)));
11574          };
11575          LazyWrapper.prototype.slice = function(start2, end2) {
11576            start2 = toInteger(start2);
11577            var result2 = this;
11578            if (result2.__filtered__ && (start2 > 0 || end2 < 0)) {
11579              return new LazyWrapper(result2);
11580            }
11581            if (start2 < 0) {
11582              result2 = result2.takeRight(-start2);
11583            } else if (start2) {
11584              result2 = result2.drop(start2);
11585            }
11586            if (end2 !== undefined2) {
11587              end2 = toInteger(end2);
11588              result2 = end2 < 0 ? result2.dropRight(-end2) : result2.take(end2 - start2);
11589            }
11590            return result2;
11591          };
11592          LazyWrapper.prototype.takeRightWhile = function(predicate) {
11593            return this.reverse().takeWhile(predicate).reverse();
11594          };
11595          LazyWrapper.prototype.toArray = function() {
11596            return this.take(MAX_ARRAY_LENGTH);
11597          };
11598          baseForOwn(LazyWrapper.prototype, function(func, methodName) {
11599            var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName);
11600            if (!lodashFunc) {
11601              return;
11602            }
11603            lodash.prototype[methodName] = function() {
11604              var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray2(value);
11605              var interceptor = function(value2) {
11606                var result3 = lodashFunc.apply(lodash, arrayPush([value2], args));
11607                return isTaker && chainAll ? result3[0] : result3;
11608              };
11609              if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) {
11610                isLazy = useLazy = false;
11611              }
11612              var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid;
11613              if (!retUnwrapped && useLazy) {
11614                value = onlyLazy ? value : new LazyWrapper(this);
11615                var result2 = func.apply(value, args);
11616                result2.__actions__.push({ "func": thru, "args": [interceptor], "thisArg": undefined2 });
11617                return new LodashWrapper(result2, chainAll);
11618              }
11619              if (isUnwrapped && onlyLazy) {
11620                return func.apply(this, args);
11621              }
11622              result2 = this.thru(interceptor);
11623              return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2;
11624            };
11625          });
11626          arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) {
11627            var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName);
11628            lodash.prototype[methodName] = function() {
11629              var args = arguments;
11630              if (retUnwrapped && !this.__chain__) {
11631                var value = this.value();
11632                return func.apply(isArray2(value) ? value : [], args);
11633              }
11634              return this[chainName](function(value2) {
11635                return func.apply(isArray2(value2) ? value2 : [], args);
11636              });
11637            };
11638          });
11639          baseForOwn(LazyWrapper.prototype, function(func, methodName) {
11640            var lodashFunc = lodash[methodName];
11641            if (lodashFunc) {
11642              var key = lodashFunc.name + "";
11643              if (!hasOwnProperty.call(realNames, key)) {
11644                realNames[key] = [];
11645              }
11646              realNames[key].push({ "name": methodName, "func": lodashFunc });
11647            }
11648          });
11649          realNames[createHybrid(undefined2, WRAP_BIND_KEY_FLAG).name] = [{
11650            "name": "wrapper",
11651            "func": undefined2
11652          }];
11653          LazyWrapper.prototype.clone = lazyClone;
11654          LazyWrapper.prototype.reverse = lazyReverse;
11655          LazyWrapper.prototype.value = lazyValue;
11656          lodash.prototype.at = wrapperAt;
11657          lodash.prototype.chain = wrapperChain;
11658          lodash.prototype.commit = wrapperCommit;
11659          lodash.prototype.next = wrapperNext;
11660          lodash.prototype.plant = wrapperPlant;
11661          lodash.prototype.reverse = wrapperReverse;
11662          lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
11663          lodash.prototype.first = lodash.prototype.head;
11664          if (symIterator) {
11665            lodash.prototype[symIterator] = wrapperToIterator;
11666          }
11667          return lodash;
11668        };
11669        var _2 = runInContext();
11670        if (typeof define == "function" && typeof define.amd == "object" && define.amd) {
11671          root._ = _2;
11672          define(function() {
11673            return _2;
11674          });
11675        } else if (freeModule) {
11676          (freeModule.exports = _2)._ = _2;
11677          freeExports._ = _2;
11678        } else {
11679          root._ = _2;
11680        }
11681      }).call(exports);
11682    }
11683  });
11684
11685  
11685// resources/js/app.js
11686  var import_jquery3 = __toModule(require_jquery());
11687
11688  
11688// components/page-builder/accordion/index.js
11689  var import_jquery = __toModule(require_jquery());
11690
11691  
vendor: 113,940 bytes, lines 11691-14554
11691// node_modules/gsap/gsap-core.js
11692  function _assertThisInitialized(self2) {
11693    if (self2 === void 0) {
11694      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
11695    }
11696    return self2;
11697  }
11698  function _inheritsLoose(subClass, superClass) {
11699    subClass.prototype = Object.create(superClass.prototype);
11700    subClass.prototype.constructor = subClass;
11701    subClass.__proto__ = superClass;
11702  }
11703  var _config = {
11704    autoSleep: 120,
11705    force3D: "auto",
11706    nullTargetWarn: 1,
11707    units: {
11708      lineHeight: ""
11709    }
11710  };
11711  var _defaults = {
11712    duration: 0.5,
11713    overwrite: false,
11714    delay: 0
11715  };
11716  var _suppressOverwrites;
11717  var _bigNum = 1e8;
11718  var _tinyNum = 1 / _bigNum;
11719  var _2PI = Math.PI * 2;
11720  var _HALF_PI = _2PI / 4;
11721  var _gsID = 0;
11722  var _sqrt = Math.sqrt;
11723  var _cos = Math.cos;
11724  var _sin = Math.sin;
11725  var _isString = function _isString2(value) {
11726    return typeof value === "string";
11727  };
11728  var _isFunction = function _isFunction2(value) {
11729    return typeof value === "function";
11730  };
11731  var _isNumber = function _isNumber2(value) {
11732    return typeof value === "number";
11733  };
11734  var _isUndefined = function _isUndefined2(value) {
11735    return typeof value === "undefined";
11736  };
11737  var _isObject = function _isObject2(value) {
11738    return typeof value === "object";
11739  };
11740  var _isNotFalse = function _isNotFalse2(value) {
11741    return value !== false;
11742  };
11743  var _windowExists = function _windowExists2() {
11744    return typeof window !== "undefined";
11745  };
11746  var _isFuncOrString = function _isFuncOrString2(value) {
11747    return _isFunction(value) || _isString(value);
11748  };
11749  var _isTypedArray = typeof ArrayBuffer === "function" && ArrayBuffer.isView || function() {
11750  };
11751  var _isArray = Array.isArray;
11752  var _strictNumExp = /(?:-?\.?\d|\.)+/gi;
11753  var _numExp = /[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g;
11754  var _numWithUnitExp = /[-+=.]*\d+[.e-]*\d*[a-z%]*/g;
11755  var _complexStringNumExp = /[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi;
11756  var _relExp = /[+-]=-?[.\d]+/;
11757  var _delimitedValueExp = /[^,'"\[\]\s]+/gi;
11758  var _unitExp = /^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i;
11759  var _globalTimeline;
11760  var _win;
11761  var _coreInitted;
11762  var _doc;
11763  var _globals = {};
11764  var _installScope = {};
11765  var _coreReady;
11766  var _install = function _install2(scope) {
11767    return (_installScope = _merge(scope, _globals)) && gsap;
11768  };
11769  var _missingPlugin = function _missingPlugin2(property, value) {
11770    return console.warn("Invalid property", property, "set to", value, "Missing plugin? gsap.registerPlugin()");
11771  };
11772  var _warn = function _warn2(message, suppress) {
11773    return !suppress && console.warn(message);
11774  };
11775  var _addGlobal = function _addGlobal2(name, obj) {
11776    return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;
11777  };
11778  var _emptyFunc = function _emptyFunc2() {
11779    return 0;
11780  };
11781  var _reservedProps = {};
11782  var _lazyTweens = [];
11783  var _lazyLookup = {};
11784  var _lastRenderedFrame;
11785  var _plugins = {};
11786  var _effects = {};
11787  var _nextGCFrame = 30;
11788  var _harnessPlugins = [];
11789  var _callbackNames = "";
11790  var _harness = function _harness2(targets) {
11791    var target = targets[0], harnessPlugin, i;
11792    _isObject(target) || _isFunction(target) || (targets = [targets]);
11793    if (!(harnessPlugin = (target._gsap || {}).harness)) {
11794      i = _harnessPlugins.length;
11795      while (i-- && !_harnessPlugins[i].targetTest(target)) {
11796      }
11797      harnessPlugin = _harnessPlugins[i];
11798    }
11799    i = targets.length;
11800    while (i--) {
11801      targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);
11802    }
11803    return targets;
11804  };
11805  var _getCache = function _getCache2(target) {
11806    return target._gsap || _harness(toArray(target))[0]._gsap;
11807  };
11808  var _getProperty = function _getProperty2(target, property, v) {
11809    return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;
11810  };
11811  var _forEachName = function _forEachName2(names, func) {
11812    return (names = names.split(",")).forEach(func) || names;
11813  };
11814  var _round = function _round2(value) {
11815    return Math.round(value * 1e5) / 1e5 || 0;
11816  };
11817  var _roundPrecise = function _roundPrecise2(value) {
11818    return Math.round(value * 1e7) / 1e7 || 0;
11819  };
11820  var _parseRelative = function _parseRelative2(start2, value) {
11821    var operator = value.charAt(0), end2 = parseFloat(value.substr(2));
11822    start2 = parseFloat(start2);
11823    return operator === "+" ? start2 + end2 : operator === "-" ? start2 - end2 : operator === "*" ? start2 * end2 : start2 / end2;
11824  };
11825  var _arrayContainsAny = function _arrayContainsAny2(toSearch, toFind) {
11826    var l = toFind.length, i = 0;
11827    for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l; ) {
11828    }
11829    return i < l;
11830  };
11831  var _lazyRender = function _lazyRender2() {
11832    var l = _lazyTweens.length, a = _lazyTweens.slice(0), i, tween;
11833    _lazyLookup = {};
11834    _lazyTweens.length = 0;
11835    for (i = 0; i < l; i++) {
11836      tween = a[i];
11837      tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);
11838    }
11839  };
11840  var _lazySafeRender = function _lazySafeRender2(animation, time, suppressEvents, force) {
11841    _lazyTweens.length && _lazyRender();
11842    animation.render(time, suppressEvents, force);
11843    _lazyTweens.length && _lazyRender();
11844  };
11845  var _numericIfPossible = function _numericIfPossible2(value) {
11846    var n = parseFloat(value);
11847    return (n || n === 0) && (value + "").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;
11848  };
11849  var _passThrough = function _passThrough2(p) {
11850    return p;
11851  };
11852  var _setDefaults = function _setDefaults2(obj, defaults3) {
11853    for (var p in defaults3) {
11854      p in obj || (obj[p] = defaults3[p]);
11855    }
11856    return obj;
11857  };
11858  var _setKeyframeDefaults = function _setKeyframeDefaults2(excludeDuration) {
11859    return function(obj, defaults3) {
11860      for (var p in defaults3) {
11861        p in obj || p === "duration" && excludeDuration || p === "ease" || (obj[p] = defaults3[p]);
11862      }
11863    };
11864  };
11865  var _merge = function _merge2(base, toMerge) {
11866    for (var p in toMerge) {
11867      base[p] = toMerge[p];
11868    }
11869    return base;
11870  };
11871  var _mergeDeep = function _mergeDeep2(base, toMerge) {
11872    for (var p in toMerge) {
11873      p !== "__proto__" && p !== "constructor" && p !== "prototype" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep2(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);
11874    }
11875    return base;
11876  };
11877  var _copyExcluding = function _copyExcluding2(obj, excluding) {
11878    var copy = {}, p;
11879    for (p in obj) {
11880      p in excluding || (copy[p] = obj[p]);
11881    }
11882    return copy;
11883  };
11884  var _inheritDefaults = function _inheritDefaults2(vars) {
11885    var parent = vars.parent || _globalTimeline, func = vars.keyframes ? _setKeyframeDefaults(_isArray(vars.keyframes)) : _setDefaults;
11886    if (_isNotFalse(vars.inherit)) {
11887      while (parent) {
11888        func(vars, parent.vars.defaults);
11889        parent = parent.parent || parent._dp;
11890      }
11891    }
11892    return vars;
11893  };
11894  var _arraysMatch = function _arraysMatch2(a1, a2) {
11895    var i = a1.length, match = i === a2.length;
11896    while (match && i-- && a1[i] === a2[i]) {
11897    }
11898    return i < 0;
11899  };
11900  var _addLinkedListItem = function _addLinkedListItem2(parent, child, firstProp, lastProp, sortBy) {
11901    if (firstProp === void 0) {
11902      firstProp = "_first";
11903    }
11904    if (lastProp === void 0) {
11905      lastProp = "_last";
11906    }
11907    var prev = parent[lastProp], t;
11908    if (sortBy) {
11909      t = child[sortBy];
11910      while (prev && prev[sortBy] > t) {
11911        prev = prev._prev;
11912      }
11913    }
11914    if (prev) {
11915      child._next = prev._next;
11916      prev._next = child;
11917    } else {
11918      child._next = parent[firstProp];
11919      parent[firstProp] = child;
11920    }
11921    if (child._next) {
11922      child._next._prev = child;
11923    } else {
11924      parent[lastProp] = child;
11925    }
11926    child._prev = prev;
11927    child.parent = child._dp = parent;
11928    return child;
11929  };
11930  var _removeLinkedListItem = function _removeLinkedListItem2(parent, child, firstProp, lastProp) {
11931    if (firstProp === void 0) {
11932      firstProp = "_first";
11933    }
11934    if (lastProp === void 0) {
11935      lastProp = "_last";
11936    }
11937    var prev = child._prev, next = child._next;
11938    if (prev) {
11939      prev._next = next;
11940    } else if (parent[firstProp] === child) {
11941      parent[firstProp] = next;
11942    }
11943    if (next) {
11944      next._prev = prev;
11945    } else if (parent[lastProp] === child) {
11946      parent[lastProp] = prev;
11947    }
11948    child._next = child._prev = child.parent = null;
11949  };
11950  var _removeFromParent = function _removeFromParent2(child, onlyIfParentHasAutoRemove) {
11951    child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove(child);
11952    child._act = 0;
11953  };
11954  var _uncache = function _uncache2(animation, child) {
11955    if (animation && (!child || child._end > animation._dur || child._start < 0)) {
11956      var a = animation;
11957      while (a) {
11958        a._dirty = 1;
11959        a = a.parent;
11960      }
11961    }
11962    return animation;
11963  };
11964  var _recacheAncestors = function _recacheAncestors2(animation) {
11965    var parent = animation.parent;
11966    while (parent && parent.parent) {
11967      parent._dirty = 1;
11968      parent.totalDuration();
11969      parent = parent.parent;
11970    }
11971    return animation;
11972  };
11973  var _hasNoPausedAncestors = function _hasNoPausedAncestors2(animation) {
11974    return !animation || animation._ts && _hasNoPausedAncestors2(animation.parent);
11975  };
11976  var _elapsedCycleDuration = function _elapsedCycleDuration2(animation) {
11977    return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;
11978  };
11979  var _animationCycle = function _animationCycle2(tTime, cycleDuration) {
11980    var whole = Math.floor(tTime /= cycleDuration);
11981    return tTime && whole === tTime ? whole - 1 : whole;
11982  };
11983  var _parentToChildTotalTime = function _parentToChildTotalTime2(parentTime, child) {
11984    return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);
11985  };
11986  var _setEnd = function _setEnd2(animation) {
11987    return animation._end = _roundPrecise(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));
11988  };
11989  var _alignPlayhead = function _alignPlayhead2(animation, totalTime) {
11990    var parent = animation._dp;
11991    if (parent && parent.smoothChildTiming && animation._ts) {
11992      animation._start = _roundPrecise(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));
11993      _setEnd(animation);
11994      parent._dirty || _uncache(parent, animation);
11995    }
11996    return animation;
11997  };
11998  var _postAddChecks = function _postAddChecks2(timeline2, child) {
11999    var t;
12000    if (child._time || child._initted && !child._dur) {
12001      t = _parentToChildTotalTime(timeline2.rawTime(), child);
12002      if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {
12003        child.render(t, true);
12004      }
12005    }
12006    if (_uncache(timeline2, child)._dp && timeline2._initted && timeline2._time >= timeline2._dur && timeline2._ts) {
12007      if (timeline2._dur < timeline2.duration()) {
12008        t = timeline2;
12009        while (t._dp) {
12010          t.rawTime() >= 0 && t.totalTime(t._tTime);
12011          t = t._dp;
12012        }
12013      }
12014      timeline2._zTime = -_tinyNum;
12015    }
12016  };
12017  var _addToTimeline = function _addToTimeline2(timeline2, child, position, skipChecks) {
12018    child.parent && _removeFromParent(child);
12019    child._start = _roundPrecise((_isNumber(position) ? position : position || timeline2 !== _globalTimeline ? _parsePosition(timeline2, position, child) : timeline2._time) + child._delay);
12020    child._end = _roundPrecise(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));
12021    _addLinkedListItem(timeline2, child, "_first", "_last", timeline2._sort ? "_start" : 0);
12022    _isFromOrFromStart(child) || (timeline2._recent = child);
12023    skipChecks || _postAddChecks(timeline2, child);
12024    return timeline2;
12025  };
12026  var _scrollTrigger = function _scrollTrigger2(animation, trigger) {
12027    return (_globals.ScrollTrigger || _missingPlugin("scrollTrigger", trigger)) && _globals.ScrollTrigger.create(trigger, animation);
12028  };
12029  var _attemptInitTween = function _attemptInitTween2(tween, totalTime, force, suppressEvents) {
12030    _initTween(tween, totalTime);
12031    if (!tween._initted) {
12032      return 1;
12033    }
12034    if (!force && tween._pt && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {
12035      _lazyTweens.push(tween);
12036      tween._lazy = [totalTime, suppressEvents];
12037      return 1;
12038    }
12039  };
12040  var _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart2(_ref) {
12041    var parent = _ref.parent;
12042    return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart2(parent));
12043  };
12044  var _isFromOrFromStart = function _isFromOrFromStart2(_ref2) {
12045    var data = _ref2.data;
12046    return data === "isFromStart" || data === "isStart";
12047  };
12048  var _renderZeroDurationTween = function _renderZeroDurationTween2(tween, totalTime, suppressEvents, force) {
12049    var prevRatio = tween.ratio, ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1, repeatDelay = tween._rDelay, tTime = 0, pt, iteration, prevIteration;
12050    if (repeatDelay && tween._repeat) {
12051      tTime = _clamp(0, tween._tDur, totalTime);
12052      iteration = _animationCycle(tTime, repeatDelay);
12053      tween._yoyo && iteration & 1 && (ratio = 1 - ratio);
12054      if (iteration !== _animationCycle(tween._tTime, repeatDelay)) {
12055        prevRatio = 1 - ratio;
12056        tween.vars.repeatRefresh && tween._initted && tween.invalidate();
12057      }
12058    }
12059    if (ratio !== prevRatio || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {
12060      if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents)) {
12061        return;
12062      }
12063      prevIteration = tween._zTime;
12064      tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0);
12065      suppressEvents || (suppressEvents = totalTime && !prevIteration);
12066      tween.ratio = ratio;
12067      tween._from && (ratio = 1 - ratio);
12068      tween._time = 0;
12069      tween._tTime = tTime;
12070      pt = tween._pt;
12071      while (pt) {
12072        pt.r(ratio, pt.d);
12073        pt = pt._next;
12074      }
12075      tween._startAt && totalTime < 0 && tween._startAt.render(totalTime, true, true);
12076      tween._onUpdate && !suppressEvents && _callback(tween, "onUpdate");
12077      tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, "onRepeat");
12078      if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {
12079        ratio && _removeFromParent(tween, 1);
12080        if (!suppressEvents) {
12081          _callback(tween, ratio ? "onComplete" : "onReverseComplete", true);
12082          tween._prom && tween._prom();
12083        }
12084      }
12085    } else if (!tween._zTime) {
12086      tween._zTime = totalTime;
12087    }
12088  };
12089  var _findNextPauseTween = function _findNextPauseTween2(animation, prevTime, time) {
12090    var child;
12091    if (time > prevTime) {
12092      child = animation._first;
12093      while (child && child._start <= time) {
12094        if (child.data === "isPause" && child._start > prevTime) {
12095          return child;
12096        }
12097        child = child._next;
12098      }
12099    } else {
12100      child = animation._last;
12101      while (child && child._start >= time) {
12102        if (child.data === "isPause" && child._start < prevTime) {
12103          return child;
12104        }
12105        child = child._prev;
12106      }
12107    }
12108  };
12109  var _setDuration = function _setDuration2(animation, duration, skipUncache, leavePlayhead) {
12110    var repeat = animation._repeat, dur = _roundPrecise(duration) || 0, totalProgress = animation._tTime / animation._tDur;
12111    totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);
12112    animation._dur = dur;
12113    animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _roundPrecise(dur * (repeat + 1) + animation._rDelay * repeat);
12114    totalProgress > 0 && !leavePlayhead ? _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress) : animation.parent && _setEnd(animation);
12115    skipUncache || _uncache(animation.parent, animation);
12116    return animation;
12117  };
12118  var _onUpdateTotalDuration = function _onUpdateTotalDuration2(animation) {
12119    return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);
12120  };
12121  var _zeroPosition = {
12122    _start: 0,
12123    endTime: _emptyFunc,
12124    totalDuration: _emptyFunc
12125  };
12126  var _parsePosition = function _parsePosition2(animation, position, percentAnimation) {
12127    var labels = animation.labels, recent = animation._recent || _zeroPosition, clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur, i, offset2, isPercent;
12128    if (_isString(position) && (isNaN(position) || position in labels)) {
12129      offset2 = position.charAt(0);
12130      isPercent = position.substr(-1) === "%";
12131      i = position.indexOf("=");
12132      if (offset2 === "<" || offset2 === ">") {
12133        i >= 0 && (position = position.replace(/=/, ""));
12134        return (offset2 === "<" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);
12135      }
12136      if (i < 0) {
12137        position in labels || (labels[position] = clippedDuration);
12138        return labels[position];
12139      }
12140      offset2 = parseFloat(position.charAt(i - 1) + position.substr(i + 1));
12141      if (isPercent && percentAnimation) {
12142        offset2 = offset2 / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();
12143      }
12144      return i > 1 ? _parsePosition2(animation, position.substr(0, i - 1), percentAnimation) + offset2 : clippedDuration + offset2;
12145    }
12146    return position == null ? clippedDuration : +position;
12147  };
12148  var _createTweenType = function _createTweenType2(type, params, timeline2) {
12149    var isLegacy = _isNumber(params[1]), varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1), vars = params[varsIndex], irVars, parent;
12150    isLegacy && (vars.duration = params[1]);
12151    vars.parent = timeline2;
12152    if (type) {
12153      irVars = vars;
12154      parent = timeline2;
12155      while (parent && !("immediateRender" in irVars)) {
12156        irVars = parent.vars.defaults || {};
12157        parent = _isNotFalse(parent.vars.inherit) && parent.parent;
12158      }
12159      vars.immediateRender = _isNotFalse(irVars.immediateRender);
12160      type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1];
12161    }
12162    return new Tween(params[0], vars, params[varsIndex + 1]);
12163  };
12164  var _conditionalReturn = function _conditionalReturn2(value, func) {
12165    return value || value === 0 ? func(value) : func;
12166  };
12167  var _clamp = function _clamp2(min2, max2, value) {
12168    return value < min2 ? min2 : value > max2 ? max2 : value;
12169  };
12170  var getUnit = function getUnit2(value, v) {
12171    return !_isString(value) || !(v = _unitExp.exec(value)) ? "" : v[1];
12172  };
12173  var clamp = function clamp2(min2, max2, value) {
12174    return _conditionalReturn(value, function(v) {
12175      return _clamp(min2, max2, v);
12176    });
12177  };
12178  var _slice = [].slice;
12179  var _isArrayLike = function _isArrayLike2(value, nonEmpty) {
12180    return value && _isObject(value) && "length" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;
12181  };
12182  var _flatten = function _flatten2(ar, leaveStrings, accumulator) {
12183    if (accumulator === void 0) {
12184      accumulator = [];
12185    }
12186    return ar.forEach(function(value) {
12187      var _accumulator;
12188      return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);
12189    }) || accumulator;
12190  };
12191  var toArray = function toArray2(value, scope, leaveStrings) {
12192    return _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] : [];
12193  };
12194  var selector = function selector2(value) {
12195    value = toArray(value)[0] || _warn("Invalid scope") || {};
12196    return function(v) {
12197      var el = value.current || value.nativeElement || value;
12198      return toArray(v, el.querySelectorAll ? el : el === value ? _warn("Invalid scope") || _doc.createElement("div") : value);
12199    };
12200  };
12201  var shuffle = function shuffle2(a) {
12202    return a.sort(function() {
12203      return 0.5 - Math.random();
12204    });
12205  };
12206  var distribute = function distribute2(v) {
12207    if (_isFunction(v)) {
12208      return v;
12209    }
12210    var vars = _isObject(v) ? v : {
12211      each: v
12212    }, ease = _parseEase(vars.ease), from = vars.from || 0, base = parseFloat(vars.base) || 0, cache = {}, isDecimal = from > 0 && from < 1, ratios = isNaN(from) || isDecimal, axis = vars.axis, ratioX = from, ratioY = from;
12213    if (_isString(from)) {
12214      ratioX = ratioY = {
12215        center: 0.5,
12216        edges: 0.5,
12217        end: 1
12218      }[from] || 0;
12219    } else if (!isDecimal && ratios) {
12220      ratioX = from[0];
12221      ratioY = from[1];
12222    }
12223    return function(i, target, a) {
12224      var l = (a || vars).length, distances = cache[l], originX, originY, x, y, d, j, max2, min2, wrapAt;
12225      if (!distances) {
12226        wrapAt = vars.grid === "auto" ? 0 : (vars.grid || [1, _bigNum])[1];
12227        if (!wrapAt) {
12228          max2 = -_bigNum;
12229          while (max2 < (max2 = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {
12230          }
12231          wrapAt--;
12232        }
12233        distances = cache[l] = [];
12234        originX = ratios ? Math.min(wrapAt, l) * ratioX - 0.5 : from % wrapAt;
12235        originY = wrapAt === _bigNum ? 0 : ratios ? l * ratioY / wrapAt - 0.5 : from / wrapAt | 0;
12236        max2 = 0;
12237        min2 = _bigNum;
12238        for (j = 0; j < l; j++) {
12239          x = j % wrapAt - originX;
12240          y = originY - (j / wrapAt | 0);
12241          distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === "y" ? y : x);
12242          d > max2 && (max2 = d);
12243          d < min2 && (min2 = d);
12244        }
12245        from === "random" && shuffle(distances);
12246        distances.max = max2 - min2;
12247        distances.min = min2;
12248        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);
12249        distances.b = l < 0 ? base - l : base;
12250        distances.u = getUnit(vars.amount || vars.each) || 0;
12251        ease = ease && l < 0 ? _invertEase(ease) : ease;
12252      }
12253      l = (distances[i] - distances.min) / distances.max || 0;
12254      return _roundPrecise(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u;
12255    };
12256  };
12257  var _roundModifier = function _roundModifier2(v) {
12258    var p = Math.pow(10, ((v + "").split(".")[1] || "").length);
12259    return function(raw) {
12260      var n = Math.round(parseFloat(raw) / v) * v * p;
12261      return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw));
12262    };
12263  };
12264  var snap = function snap2(snapTo, value) {
12265    var isArray2 = _isArray(snapTo), radius, is2D;
12266    if (!isArray2 && _isObject(snapTo)) {
12267      radius = isArray2 = snapTo.radius || _bigNum;
12268      if (snapTo.values) {
12269        snapTo = toArray(snapTo.values);
12270        if (is2D = !_isNumber(snapTo[0])) {
12271          radius *= radius;
12272        }
12273      } else {
12274        snapTo = _roundModifier(snapTo.increment);
12275      }
12276    }
12277    return _conditionalReturn(value, !isArray2 ? _roundModifier(snapTo) : _isFunction(snapTo) ? function(raw) {
12278      is2D = snapTo(raw);
12279      return Math.abs(is2D - raw) <= radius ? is2D : raw;
12280    } : function(raw) {
12281      var x = parseFloat(is2D ? raw.x : raw), y = parseFloat(is2D ? raw.y : 0), min2 = _bigNum, closest = 0, i = snapTo.length, dx, dy;
12282      while (i--) {
12283        if (is2D) {
12284          dx = snapTo[i].x - x;
12285          dy = snapTo[i].y - y;
12286          dx = dx * dx + dy * dy;
12287        } else {
12288          dx = Math.abs(snapTo[i] - x);
12289        }
12290        if (dx < min2) {
12291          min2 = dx;
12292          closest = i;
12293        }
12294      }
12295      closest = !radius || min2 <= radius ? snapTo[closest] : raw;
12296      return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);
12297    });
12298  };
12299  var random = function random2(min2, max2, roundingIncrement, returnFunction) {
12300    return _conditionalReturn(_isArray(min2) ? !max2 : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function() {
12301      return _isArray(min2) ? min2[~~(Math.random() * min2.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + "").length - 2) : 1) && Math.floor(Math.round((min2 - roundingIncrement / 2 + Math.random() * (max2 - min2 + roundingIncrement * 0.99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;
12302    });
12303  };
12304  var pipe = function pipe2() {
12305    for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {
12306      functions[_key] = arguments[_key];
12307    }
12308    return function(value) {
12309      return functions.reduce(function(v, f) {
12310        return f(v);
12311      }, value);
12312    };
12313  };
12314  var unitize = function unitize2(func, unit) {
12315    return function(value) {
12316      return func(parseFloat(value)) + (unit || getUnit(value));
12317    };
12318  };
12319  var normalize = function normalize2(min2, max2, value) {
12320    return mapRange(min2, max2, 0, 1, value);
12321  };
12322  var _wrapArray = function _wrapArray2(a, wrapper, value) {
12323    return _conditionalReturn(value, function(index) {
12324      return a[~~wrapper(index)];
12325    });
12326  };
12327  var wrap = function wrap2(min2, max2, value) {
12328    var range = max2 - min2;
12329    return _isArray(min2) ? _wrapArray(min2, wrap2(0, min2.length), max2) : _conditionalReturn(value, function(value2) {
12330      return (range + (value2 - min2) % range) % range + min2;
12331    });
12332  };
12333  var wrapYoyo = function wrapYoyo2(min2, max2, value) {
12334    var range = max2 - min2, total = range * 2;
12335    return _isArray(min2) ? _wrapArray(min2, wrapYoyo2(0, min2.length - 1), max2) : _conditionalReturn(value, function(value2) {
12336      value2 = (total + (value2 - min2) % total) % total || 0;
12337      return min2 + (value2 > range ? total - value2 : value2);
12338    });
12339  };
12340  var _replaceRandom = function _replaceRandom2(value) {
12341    var prev = 0, s = "", i, nums, end2, isArray2;
12342    while (~(i = value.indexOf("random(", prev))) {
12343      end2 = value.indexOf(")", i);
12344      isArray2 = value.charAt(i + 7) === "[";
12345      nums = value.substr(i + 7, end2 - i - 7).match(isArray2 ? _delimitedValueExp : _strictNumExp);
12346      s += value.substr(prev, i - prev) + random(isArray2 ? nums : +nums[0], isArray2 ? 0 : +nums[1], +nums[2] || 1e-5);
12347      prev = end2 + 1;
12348    }
12349    return s + value.substr(prev, value.length - prev);
12350  };
12351  var mapRange = function mapRange2(inMin, inMax, outMin, outMax, value) {
12352    var inRange = inMax - inMin, outRange = outMax - outMin;
12353    return _conditionalReturn(value, function(value2) {
12354      return outMin + ((value2 - inMin) / inRange * outRange || 0);
12355    });
12356  };
12357  var interpolate = function interpolate2(start2, end2, progress, mutate) {
12358    var func = isNaN(start2 + end2) ? 0 : function(p2) {
12359      return (1 - p2) * start2 + p2 * end2;
12360    };
12361    if (!func) {
12362      var isString2 = _isString(start2), master = {}, p, i, interpolators, l, il;
12363      progress === true && (mutate = 1) && (progress = null);
12364      if (isString2) {
12365        start2 = {
12366          p: start2
12367        };
12368        end2 = {
12369          p: end2
12370        };
12371      } else if (_isArray(start2) && !_isArray(end2)) {
12372        interpolators = [];
12373        l = start2.length;
12374        il = l - 2;
12375        for (i = 1; i < l; i++) {
12376          interpolators.push(interpolate2(start2[i - 1], start2[i]));
12377        }
12378        l--;
12379        func = function func2(p2) {
12380          p2 *= l;
12381          var i2 = Math.min(il, ~~p2);
12382          return interpolators[i2](p2 - i2);
12383        };
12384        progress = end2;
12385      } else if (!mutate) {
12386        start2 = _merge(_isArray(start2) ? [] : {}, start2);
12387      }
12388      if (!interpolators) {
12389        for (p in end2) {
12390          _addPropTween.call(master, start2, p, "get", end2[p]);
12391        }
12392        func = function func2(p2) {
12393          return _renderPropTweens(p2, master) || (isString2 ? start2.p : start2);
12394        };
12395      }
12396    }
12397    return _conditionalReturn(progress, func);
12398  };
12399  var _getLabelInDirection = function _getLabelInDirection2(timeline2, fromTime, backward) {
12400    var labels = timeline2.labels, min2 = _bigNum, p, distance, label;
12401    for (p in labels) {
12402      distance = labels[p] - fromTime;
12403      if (distance < 0 === !!backward && distance && min2 > (distance = Math.abs(distance))) {
12404        label = p;
12405        min2 = distance;
12406      }
12407    }
12408    return label;
12409  };
12410  var _callback = function _callback2(animation, type, executeLazyFirst) {
12411    var v = animation.vars, callback = v[type], params, scope;
12412    if (!callback) {
12413      return;
12414    }
12415    params = v[type + "Params"];
12416    scope = v.callbackScope || animation;
12417    executeLazyFirst && _lazyTweens.length && _lazyRender();
12418    return params ? callback.apply(scope, params) : callback.call(scope);
12419  };
12420  var _interrupt = function _interrupt2(animation) {
12421    _removeFromParent(animation);
12422    animation.scrollTrigger && animation.scrollTrigger.kill(false);
12423    animation.progress() < 1 && _callback(animation, "onInterrupt");
12424    return animation;
12425  };
12426  var _quickTween;
12427  var _createPlugin = function _createPlugin2(config3) {
12428    config3 = !config3.name && config3["default"] || config3;
12429    var name = config3.name, isFunc = _isFunction(config3), Plugin = name && !isFunc && config3.init ? function() {
12430      this._props = [];
12431    } : config3, instanceDefaults = {
12432      init: _emptyFunc,
12433      render: _renderPropTweens,
12434      add: _addPropTween,
12435      kill: _killPropTweensOf,
12436      modifier: _addPluginModifier,
12437      rawVars: 0
12438    }, statics = {
12439      targetTest: 0,
12440      get: 0,
12441      getSetter: _getSetter,
12442      aliases: {},
12443      register: 0
12444    };
12445    _wake();
12446    if (config3 !== Plugin) {
12447      if (_plugins[name]) {
12448        return;
12449      }
12450      _setDefaults(Plugin, _setDefaults(_copyExcluding(config3, instanceDefaults), statics));
12451      _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config3, statics)));
12452      _plugins[Plugin.prop = name] = Plugin;
12453      if (config3.targetTest) {
12454        _harnessPlugins.push(Plugin);
12455        _reservedProps[name] = 1;
12456      }
12457      name = (name === "css" ? "CSS" : name.charAt(0).toUpperCase() + name.substr(1)) + "Plugin";
12458    }
12459    _addGlobal(name, Plugin);
12460    config3.register && config3.register(gsap, Plugin, PropTween);
12461  };
12462  var _255 = 255;
12463  var _colorLookup = {
12464    aqua: [0, _255, _255],
12465    lime: [0, _255, 0],
12466    silver: [192, 192, 192],
12467    black: [0, 0, 0],
12468    maroon: [128, 0, 0],
12469    teal: [0, 128, 128],
12470    blue: [0, 0, _255],
12471    navy: [0, 0, 128],
12472    white: [_255, _255, _255],
12473    olive: [128, 128, 0],
12474    yellow: [_255, _255, 0],
12475    orange: [_255, 165, 0],
12476    gray: [128, 128, 128],
12477    purple: [128, 0, 128],
12478    green: [0, 128, 0],
12479    red: [_255, 0, 0],
12480    pink: [_255, 192, 203],
12481    cyan: [0, _255, _255],
12482    transparent: [_255, _255, _255, 0]
12483  };
12484  var _hue = function _hue2(h, m1, m2) {
12485    h += h < 0 ? 1 : h > 1 ? -1 : 0;
12486    return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < 0.5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + 0.5 | 0;
12487  };
12488  var splitColor = function splitColor2(v, toHSL, forceAlpha) {
12489    var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0, r, g, b, h, s, l, max2, min2, d, wasHSL;
12490    if (!a) {
12491      if (v.substr(-1) === ",") {
12492        v = v.substr(0, v.length - 1);
12493      }
12494      if (_colorLookup[v]) {
12495        a = _colorLookup[v];
12496      } else if (v.charAt(0) === "#") {
12497        if (v.length < 6) {
12498          r = v.charAt(1);
12499          g = v.charAt(2);
12500          b = v.charAt(3);
12501          v = "#" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : "");
12502        }
12503        if (v.length === 9) {
12504          a = parseInt(v.substr(1, 6), 16);
12505          return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];
12506        }
12507        v = parseInt(v.substr(1), 16);
12508        a = [v >> 16, v >> 8 & _255, v & _255];
12509      } else if (v.substr(0, 3) === "hsl") {
12510        a = wasHSL = v.match(_strictNumExp);
12511        if (!toHSL) {
12512          h = +a[0] % 360 / 360;
12513          s = +a[1] / 100;
12514          l = +a[2] / 100;
12515          g = l <= 0.5 ? l * (s + 1) : l + s - l * s;
12516          r = l * 2 - g;
12517          a.length > 3 && (a[3] *= 1);
12518          a[0] = _hue(h + 1 / 3, r, g);
12519          a[1] = _hue(h, r, g);
12520          a[2] = _hue(h - 1 / 3, r, g);
12521        } else if (~v.indexOf("=")) {
12522          a = v.match(_numExp);
12523          forceAlpha && a.length < 4 && (a[3] = 1);
12524          return a;
12525        }
12526      } else {
12527        a = v.match(_strictNumExp) || _colorLookup.transparent;
12528      }
12529      a = a.map(Number);
12530    }
12531    if (toHSL && !wasHSL) {
12532      r = a[0] / _255;
12533      g = a[1] / _255;
12534      b = a[2] / _255;
12535      max2 = Math.max(r, g, b);
12536      min2 = Math.min(r, g, b);
12537      l = (max2 + min2) / 2;
12538      if (max2 === min2) {
12539        h = s = 0;
12540      } else {
12541        d = max2 - min2;
12542        s = l > 0.5 ? d / (2 - max2 - min2) : d / (max2 + min2);
12543        h = max2 === r ? (g - b) / d + (g < b ? 6 : 0) : max2 === g ? (b - r) / d + 2 : (r - g) / d + 4;
12544        h *= 60;
12545      }
12546      a[0] = ~~(h + 0.5);
12547      a[1] = ~~(s * 100 + 0.5);
12548      a[2] = ~~(l * 100 + 0.5);
12549    }
12550    forceAlpha && a.length < 4 && (a[3] = 1);
12551    return a;
12552  };
12553  var _colorOrderData = function _colorOrderData2(v) {
12554    var values = [], c = [], i = -1;
12555    v.split(_colorExp).forEach(function(v2) {
12556      var a = v2.match(_numWithUnitExp) || [];
12557      values.push.apply(values, a);
12558      c.push(i += a.length + 1);
12559    });
12560    values.c = c;
12561    return values;
12562  };
12563  var _formatColors = function _formatColors2(s, toHSL, orderMatchData) {
12564    var result = "", colors = (s + result).match(_colorExp), type = toHSL ? "hsla(" : "rgba(", i = 0, c, shell, d, l;
12565    if (!colors) {
12566      return s;
12567    }
12568    colors = colors.map(function(color) {
12569      return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + "," + color[1] + "%," + color[2] + "%," + color[3] : color.join(",")) + ")";
12570    });
12571    if (orderMatchData) {
12572      d = _colorOrderData(s);
12573      c = orderMatchData.c;
12574      if (c.join(result) !== d.c.join(result)) {
12575        shell = s.replace(_colorExp, "1").split(_numWithUnitExp);
12576        l = shell.length - 1;
12577        for (; i < l; i++) {
12578          result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + "0,0,0,0)" : (d.length ? d : colors.length ? colors : orderMatchData).shift());
12579        }
12580      }
12581    }
12582    if (!shell) {
12583      shell = s.split(_colorExp);
12584      l = shell.length - 1;
12585      for (; i < l; i++) {
12586        result += shell[i] + colors[i];
12587      }
12588    }
12589    return result + shell[l];
12590  };
12591  var _colorExp = function() {
12592    var s = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3,4}){1,2}\\b", p;
12593    for (p in _colorLookup) {
12594      s += "|" + p + "\\b";
12595    }
12596    return new RegExp(s + ")", "gi");
12597  }();
12598  var _hslExp = /hsl[a]?\(/;
12599  var _colorStringFilter = function _colorStringFilter2(a) {
12600    var combined = a.join(" "), toHSL;
12601    _colorExp.lastIndex = 0;
12602    if (_colorExp.test(combined)) {
12603      toHSL = _hslExp.test(combined);
12604      a[1] = _formatColors(a[1], toHSL);
12605      a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1]));
12606      return true;
12607    }
12608  };
12609  var _tickerActive;
12610  var _ticker = function() {
12611    var _getTime3 = Date.now, _lagThreshold = 500, _adjustedLag = 33, _startTime = _getTime3(), _lastUpdate = _startTime, _gap = 1e3 / 240, _nextTime = _gap, _listeners2 = [], _id, _req, _raf, _self, _delta, _i2, _tick = function _tick2(v) {
12612      var elapsed = _getTime3() - _lastUpdate, manual = v === true, overlap, dispatch, time, frame;
12613      elapsed > _lagThreshold && (_startTime += elapsed - _adjustedLag);
12614      _lastUpdate += elapsed;
12615      time = _lastUpdate - _startTime;
12616      overlap = time - _nextTime;
12617      if (overlap > 0 || manual) {
12618        frame = ++_self.frame;
12619        _delta = time - _self.time * 1e3;
12620        _self.time = time = time / 1e3;
12621        _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);
12622        dispatch = 1;
12623      }
12624      manual || (_id = _req(_tick2));
12625      if (dispatch) {
12626        for (_i2 = 0; _i2 < _listeners2.length; _i2++) {
12627          _listeners2[_i2](time, _delta, frame, v);
12628        }
12629      }
12630    };
12631    _self = {
12632      time: 0,
12633      frame: 0,
12634      tick: function tick() {
12635        _tick(true);
12636      },
12637      deltaRatio: function deltaRatio(fps) {
12638        return _delta / (1e3 / (fps || 60));
12639      },
12640      wake: function wake() {
12641        if (_coreReady) {
12642          if (!_coreInitted && _windowExists()) {
12643            _win = _coreInitted = window;
12644            _doc = _win.document || {};
12645            _globals.gsap = gsap;
12646            (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);
12647            _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});
12648            _raf = _win.requestAnimationFrame;
12649          }
12650          _id && _self.sleep();
12651          _req = _raf || function(f) {
12652            return setTimeout(f, _nextTime - _self.time * 1e3 + 1 | 0);
12653          };
12654          _tickerActive = 1;
12655          _tick(2);
12656        }
12657      },
12658      sleep: function sleep() {
12659        (_raf ? _win.cancelAnimationFrame : clearTimeout)(_id);
12660        _tickerActive = 0;
12661        _req = _emptyFunc;
12662      },
12663      lagSmoothing: function lagSmoothing(threshold, adjustedLag) {
12664        _lagThreshold = threshold || 1 / _tinyNum;
12665        _adjustedLag = Math.min(adjustedLag, _lagThreshold, 0);
12666      },
12667      fps: function fps(_fps) {
12668        _gap = 1e3 / (_fps || 240);
12669        _nextTime = _self.time * 1e3 + _gap;
12670      },
12671      add: function add(callback, once, prioritize) {
12672        var func = once ? function(t, d, f, v) {
12673          callback(t, d, f, v);
12674          _self.remove(func);
12675        } : callback;
12676        _self.remove(callback);
12677        _listeners2[prioritize ? "unshift" : "push"](func);
12678        _wake();
12679        return func;
12680      },
12681      remove: function remove(callback, i) {
12682        ~(i = _listeners2.indexOf(callback)) && _listeners2.splice(i, 1) && _i2 >= i && _i2--;
12683      },
12684      _listeners: _listeners2
12685    };
12686    return _self;
12687  }();
12688  var _wake = function _wake2() {
12689    return !_tickerActive && _ticker.wake();
12690  };
12691  var _easeMap = {};
12692  var _customEaseExp = /^[\d.\-M][\d.\-,\s]/;
12693  var _quotesExp = /["']/g;
12694  var _parseObjectInString = function _parseObjectInString2(value) {
12695    var obj = {}, split2 = value.substr(1, value.length - 3).split(":"), key = split2[0], i = 1, l = split2.length, index, val, parsedVal;
12696    for (; i < l; i++) {
12697      val = split2[i];
12698      index = i !== l - 1 ? val.lastIndexOf(",") : val.length;
12699      parsedVal = val.substr(0, index);
12700      obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, "").trim() : +parsedVal;
12701      key = val.substr(index + 1).trim();
12702    }
12703    return obj;
12704  };
12705  var _valueInParentheses = function _valueInParentheses2(value) {
12706    var open = value.indexOf("(") + 1, close = value.indexOf(")"), nested = value.indexOf("(", open);
12707    return value.substring(open, ~nested && nested < close ? value.indexOf(")", close + 1) : close);
12708  };
12709  var _configEaseFromString = function _configEaseFromString2(name) {
12710    var split2 = (name + "").split("("), ease = _easeMap[split2[0]];
12711    return ease && split2.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf("{") ? [_parseObjectInString(split2[1])] : _valueInParentheses(name).split(",").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE("", name) : ease;
12712  };
12713  var _invertEase = function _invertEase2(ease) {
12714    return function(p) {
12715      return 1 - ease(1 - p);
12716    };
12717  };
12718  var _propagateYoyoEase = function _propagateYoyoEase2(timeline2, isYoyo) {
12719    var child = timeline2._first, ease;
12720    while (child) {
12721      if (child instanceof Timeline) {
12722        _propagateYoyoEase2(child, isYoyo);
12723      } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {
12724        if (child.timeline) {
12725          _propagateYoyoEase2(child.timeline, isYoyo);
12726        } else {
12727          ease = child._ease;
12728          child._ease = child._yEase;
12729          child._yEase = ease;
12730          child._yoyo = isYoyo;
12731        }
12732      }
12733      child = child._next;
12734    }
12735  };
12736  var _parseEase = function _parseEase2(ease, defaultEase) {
12737    return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;
12738  };
12739  var _insertEase = function _insertEase2(names, easeIn, easeOut, easeInOut) {
12740    if (easeOut === void 0) {
12741      easeOut = function easeOut2(p) {
12742        return 1 - easeIn(1 - p);
12743      };
12744    }
12745    if (easeInOut === void 0) {
12746      easeInOut = function easeInOut2(p) {
12747        return p < 0.5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;
12748      };
12749    }
12750    var ease = {
12751      easeIn,
12752      easeOut,
12753      easeInOut
12754    }, lowercaseName;
12755    _forEachName(names, function(name) {
12756      _easeMap[name] = _globals[name] = ease;
12757      _easeMap[lowercaseName = name.toLowerCase()] = easeOut;
12758      for (var p in ease) {
12759        _easeMap[lowercaseName + (p === "easeIn" ? ".in" : p === "easeOut" ? ".out" : ".inOut")] = _easeMap[name + "." + p] = ease[p];
12760      }
12761    });
12762    return ease;
12763  };
12764  var _easeInOutFromOut = function _easeInOutFromOut2(easeOut) {
12765    return function(p) {
12766      return p < 0.5 ? (1 - easeOut(1 - p * 2)) / 2 : 0.5 + easeOut((p - 0.5) * 2) / 2;
12767    };
12768  };
12769  var _configElastic = function _configElastic2(type, amplitude, period) {
12770    var p1 = amplitude >= 1 ? amplitude : 1, p2 = (period || (type ? 0.3 : 0.45)) / (amplitude < 1 ? amplitude : 1), p3 = p2 / _2PI * (Math.asin(1 / p1) || 0), easeOut = function easeOut2(p) {
12771      return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;
12772    }, ease = type === "out" ? easeOut : type === "in" ? function(p) {
12773      return 1 - easeOut(1 - p);
12774    } : _easeInOutFromOut(easeOut);
12775    p2 = _2PI / p2;
12776    ease.config = function(amplitude2, period2) {
12777      return _configElastic2(type, amplitude2, period2);
12778    };
12779    return ease;
12780  };
12781  var _configBack = function _configBack2(type, overshoot) {
12782    if (overshoot === void 0) {
12783      overshoot = 1.70158;
12784    }
12785    var easeOut = function easeOut2(p) {
12786      return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;
12787    }, ease = type === "out" ? easeOut : type === "in" ? function(p) {
12788      return 1 - easeOut(1 - p);
12789    } : _easeInOutFromOut(easeOut);
12790    ease.config = function(overshoot2) {
12791      return _configBack2(type, overshoot2);
12792    };
12793    return ease;
12794  };
12795  _forEachName("Linear,Quad,Cubic,Quart,Quint,Strong", function(name, i) {
12796    var power = i < 5 ? i + 1 : i;
12797    _insertEase(name + ",Power" + (power - 1), i ? function(p) {
12798      return Math.pow(p, power);
12799    } : function(p) {
12800      return p;
12801    }, function(p) {
12802      return 1 - Math.pow(1 - p, power);
12803    }, function(p) {
12804      return p < 0.5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;
12805    });
12806  });
12807  _easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;
12808  _insertEase("Elastic", _configElastic("in"), _configElastic("out"), _configElastic());
12809  (function(n, c) {
12810    var n1 = 1 / c, n2 = 2 * n1, n3 = 2.5 * n1, easeOut = function easeOut2(p) {
12811      return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + 0.75 : p < n3 ? n * (p -= 2.25 / c) * p + 0.9375 : n * Math.pow(p - 2.625 / c, 2) + 0.984375;
12812    };
12813    _insertEase("Bounce", function(p) {
12814      return 1 - easeOut(1 - p);
12815    }, easeOut);
12816  })(7.5625, 2.75);
12817  _insertEase("Expo", function(p) {
12818    return p ? Math.pow(2, 10 * (p - 1)) : 0;
12819  });
12820  _insertEase("Circ", function(p) {
12821    return -(_sqrt(1 - p * p) - 1);
12822  });
12823  _insertEase("Sine", function(p) {
12824    return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;
12825  });
12826  _insertEase("Back", _configBack("in"), _configBack("out"), _configBack());
12827  _easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {
12828    config: function config(steps, immediateStart) {
12829      if (steps === void 0) {
12830        steps = 1;
12831      }
12832      var p1 = 1 / steps, p2 = steps + (immediateStart ? 0 : 1), p3 = immediateStart ? 1 : 0, max2 = 1 - _tinyNum;
12833      return function(p) {
12834        return ((p2 * _clamp(0, max2, p) | 0) + p3) * p1;
12835      };
12836    }
12837  };
12838  _defaults.ease = _easeMap["quad.out"];
12839  _forEachName("onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt", function(name) {
12840    return _callbackNames += name + "," + name + "Params,";
12841  });
12842  var GSCache = function GSCache2(target, harness) {
12843    this.id = _gsID++;
12844    target._gsap = this;
12845    this.target = target;
12846    this.harness = harness;
12847    this.get = harness ? harness.get : _getProperty;
12848    this.set = harness ? harness.getSetter : _getSetter;
12849  };
12850  var Animation = /* @__PURE__ */ function() {
12851    function Animation2(vars) {
12852      this.vars = vars;
12853      this._delay = +vars.delay || 0;
12854      if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {
12855        this._rDelay = vars.repeatDelay || 0;
12856        this._yoyo = !!vars.yoyo || !!vars.yoyoEase;
12857      }
12858      this._ts = 1;
12859      _setDuration(this, +vars.duration, 1, 1);
12860      this.data = vars.data;
12861      _tickerActive || _ticker.wake();
12862    }
12863    var _proto = Animation2.prototype;
12864    _proto.delay = function delay(value) {
12865      if (value || value === 0) {
12866        this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);
12867        this._delay = value;
12868        return this;
12869      }
12870      return this._delay;
12871    };
12872    _proto.duration = function duration(value) {
12873      return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;
12874    };
12875    _proto.totalDuration = function totalDuration(value) {
12876      if (!arguments.length) {
12877        return this._tDur;
12878      }
12879      this._dirty = 0;
12880      return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));
12881    };
12882    _proto.totalTime = function totalTime(_totalTime, suppressEvents) {
12883      _wake();
12884      if (!arguments.length) {
12885        return this._tTime;
12886      }
12887      var parent = this._dp;
12888      if (parent && parent.smoothChildTiming && this._ts) {
12889        _alignPlayhead(this, _totalTime);
12890        !parent._dp || parent.parent || _postAddChecks(parent, this);
12891        while (parent && parent.parent) {
12892          if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {
12893            parent.totalTime(parent._tTime, true);
12894          }
12895          parent = parent.parent;
12896        }
12897        if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {
12898          _addToTimeline(this._dp, this, this._start - this._delay);
12899        }
12900      }
12901      if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {
12902        this._ts || (this._pTime = _totalTime);
12903        _lazySafeRender(this, _totalTime, suppressEvents);
12904      }
12905      return this;
12906    };
12907    _proto.time = function time(value, suppressEvents) {
12908      return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time;
12909    };
12910    _proto.totalProgress = function totalProgress(value, suppressEvents) {
12911      return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.ratio;
12912    };
12913    _proto.progress = function progress(value, suppressEvents) {
12914      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.ratio;
12915    };
12916    _proto.iteration = function iteration(value, suppressEvents) {
12917      var cycleDuration = this.duration() + this._rDelay;
12918      return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;
12919    };
12920    _proto.timeScale = function timeScale(value) {
12921      if (!arguments.length) {
12922        return this._rts === -_tinyNum ? 0 : this._rts;
12923      }
12924      if (this._rts === value) {
12925        return this;
12926      }
12927      var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime;
12928      this._rts = +value || 0;
12929      this._ts = this._ps || value === -_tinyNum ? 0 : this._rts;
12930      this.totalTime(_clamp(-this._delay, this._tDur, tTime), true);
12931      _setEnd(this);
12932      return _recacheAncestors(this);
12933    };
12934    _proto.paused = function paused(value) {
12935      if (!arguments.length) {
12936        return this._ps;
12937      }
12938      if (this._ps !== value) {
12939        this._ps = value;
12940        if (value) {
12941          this._pTime = this._tTime || Math.max(-this._delay, this.rawTime());
12942          this._ts = this._act = 0;
12943        } else {
12944          _wake();
12945          this._ts = this._rts;
12946          this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum));
12947        }
12948      }
12949      return this;
12950    };
12951    _proto.startTime = function startTime(value) {
12952      if (arguments.length) {
12953        this._start = value;
12954        var parent = this.parent || this._dp;
12955        parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);
12956        return this;
12957      }
12958      return this._start;
12959    };
12960    _proto.endTime = function endTime(includeRepeats) {
12961      return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1);
12962    };
12963    _proto.rawTime = function rawTime(wrapRepeats) {
12964      var parent = this.parent || this._dp;
12965      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);
12966    };
12967    _proto.globalTime = function globalTime(rawTime) {
12968      var animation = this, time = arguments.length ? rawTime : animation.rawTime();
12969      while (animation) {
12970        time = animation._start + time / (animation._ts || 1);
12971        animation = animation._dp;
12972      }
12973      return time;
12974    };
12975    _proto.repeat = function repeat(value) {
12976      if (arguments.length) {
12977        this._repeat = value === Infinity ? -2 : value;
12978        return _onUpdateTotalDuration(this);
12979      }
12980      return this._repeat === -2 ? Infinity : this._repeat;
12981    };
12982    _proto.repeatDelay = function repeatDelay(value) {
12983      if (arguments.length) {
12984        var time = this._time;
12985        this._rDelay = value;
12986        _onUpdateTotalDuration(this);
12987        return time ? this.time(time) : this;
12988      }
12989      return this._rDelay;
12990    };
12991    _proto.yoyo = function yoyo(value) {
12992      if (arguments.length) {
12993        this._yoyo = value;
12994        return this;
12995      }
12996      return this._yoyo;
12997    };
12998    _proto.seek = function seek(position, suppressEvents) {
12999      return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));
13000    };
13001    _proto.restart = function restart(includeDelay, suppressEvents) {
13002      return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));
13003    };
13004    _proto.play = function play(from, suppressEvents) {
13005      from != null && this.seek(from, suppressEvents);
13006      return this.reversed(false).paused(false);
13007    };
13008    _proto.reverse = function reverse(from, suppressEvents) {
13009      from != null && this.seek(from || this.totalDuration(), suppressEvents);
13010      return this.reversed(true).paused(false);
13011    };
13012    _proto.pause = function pause(atTime, suppressEvents) {
13013      atTime != null && this.seek(atTime, suppressEvents);
13014      return this.paused(true);
13015    };
13016    _proto.resume = function resume() {
13017      return this.paused(false);
13018    };
13019    _proto.reversed = function reversed(value) {
13020      if (arguments.length) {
13021        !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0));
13022        return this;
13023      }
13024      return this._rts < 0;
13025    };
13026    _proto.invalidate = function invalidate() {
13027      this._initted = this._act = 0;
13028      this._zTime = -_tinyNum;
13029      return this;
13030    };
13031    _proto.isActive = function isActive() {
13032      var parent = this.parent || this._dp, start2 = this._start, rawTime;
13033      return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start2 && rawTime < this.endTime(true) - _tinyNum);
13034    };
13035    _proto.eventCallback = function eventCallback(type, callback, params) {
13036      var vars = this.vars;
13037      if (arguments.length > 1) {
13038        if (!callback) {
13039          delete vars[type];
13040        } else {
13041          vars[type] = callback;
13042          params && (vars[type + "Params"] = params);
13043          type === "onUpdate" && (this._onUpdate = callback);
13044        }
13045        return this;
13046      }
13047      return vars[type];
13048    };
13049    _proto.then = function then(onFulfilled) {
13050      var self2 = this;
13051      return new Promise(function(resolve) {
13052        var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough, _resolve = function _resolve2() {
13053          var _then = self2.then;
13054          self2.then = null;
13055          _isFunction(f) && (f = f(self2)) && (f.then || f === self2) && (self2.then = _then);
13056          resolve(f);
13057          self2.then = _then;
13058        };
13059        if (self2._initted && self2.totalProgress() === 1 && self2._ts >= 0 || !self2._tTime && self2._ts < 0) {
13060          _resolve();
13061        } else {
13062          self2._prom = _resolve;
13063        }
13064      });
13065    };
13066    _proto.kill = function kill3() {
13067      _interrupt(this);
13068    };
13069    return Animation2;
13070  }();
13071  _setDefaults(Animation.prototype, {
13072    _time: 0,
13073    _start: 0,
13074    _end: 0,
13075    _tTime: 0,
13076    _tDur: 0,
13077    _dirty: 0,
13078    _repeat: 0,
13079    _yoyo: false,
13080    parent: null,
13081    _initted: false,
13082    _rDelay: 0,
13083    _ts: 1,
13084    _dp: 0,
13085    ratio: 0,
13086    _zTime: -_tinyNum,
13087    _prom: 0,
13088    _ps: false,
13089    _rts: 1
13090  });
13091  var Timeline = /* @__PURE__ */ function(_Animation) {
13092    _inheritsLoose(Timeline2, _Animation);
13093    function Timeline2(vars, position) {
13094      var _this;
13095      if (vars === void 0) {
13096        vars = {};
13097      }
13098      _this = _Animation.call(this, vars) || this;
13099      _this.labels = {};
13100      _this.smoothChildTiming = !!vars.smoothChildTiming;
13101      _this.autoRemoveChildren = !!vars.autoRemoveChildren;
13102      _this._sort = _isNotFalse(vars.sortChildren);
13103      _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position);
13104      vars.reversed && _this.reverse();
13105      vars.paused && _this.paused(true);
13106      vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);
13107      return _this;
13108    }
13109    var _proto2 = Timeline2.prototype;
13110    _proto2.to = function to(targets, vars, position) {
13111      _createTweenType(0, arguments, this);
13112      return this;
13113    };
13114    _proto2.from = function from(targets, vars, position) {
13115      _createTweenType(1, arguments, this);
13116      return this;
13117    };
13118    _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {
13119      _createTweenType(2, arguments, this);
13120      return this;
13121    };
13122    _proto2.set = function set(targets, vars, position) {
13123      vars.duration = 0;
13124      vars.parent = this;
13125      _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);
13126      vars.immediateRender = !!vars.immediateRender;
13127      new Tween(targets, vars, _parsePosition(this, position), 1);
13128      return this;
13129    };
13130    _proto2.call = function call(callback, params, position) {
13131      return _addToTimeline(this, Tween.delayedCall(0, callback, params), position);
13132    };
13133    _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {
13134      vars.duration = duration;
13135      vars.stagger = vars.stagger || stagger;
13136      vars.onComplete = onCompleteAll;
13137      vars.onCompleteParams = onCompleteAllParams;
13138      vars.parent = this;
13139      new Tween(targets, vars, _parsePosition(this, position));
13140      return this;
13141    };
13142    _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {
13143      vars.runBackwards = 1;
13144      _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);
13145      return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);
13146    };
13147    _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {
13148      toVars.startAt = fromVars;
13149      _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);
13150      return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);
13151    };
13152    _proto2.render = function render4(totalTime, suppressEvents, force) {
13153      var prevTime = this._time, tDur = this._dirty ? this.totalDuration() : this._tDur, dur = this._dur, tTime = totalTime <= 0 ? 0 : _roundPrecise(totalTime), crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur), time, child, next, iteration, cycleDuration, prevPaused, pauseTween, timeScale, prevStart, prevIteration, yoyo, isYoyo;
13154      this !== _globalTimeline && tTime > tDur && totalTime >= 0 && (tTime = tDur);
13155      if (tTime !== this._tTime || force || crossingStart) {
13156        if (prevTime !== this._time && dur) {
13157          tTime += this._time - prevTime;
13158          totalTime += this._time - prevTime;
13159        }
13160        time = tTime;
13161        prevStart = this._start;
13162        timeScale = this._ts;
13163        prevPaused = !timeScale;
13164        if (crossingStart) {
13165          dur || (prevTime = this._zTime);
13166          (totalTime || !suppressEvents) && (this._zTime = totalTime);
13167        }
13168        if (this._repeat) {
13169          yoyo = this._yoyo;
13170          cycleDuration = dur + this._rDelay;
13171          if (this._repeat < -1 && totalTime < 0) {
13172            return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);
13173          }
13174          time = _roundPrecise(tTime % cycleDuration);
13175          if (tTime === tDur) {
13176            iteration = this._repeat;
13177            time = dur;
13178          } else {
13179            iteration = ~~(tTime / cycleDuration);
13180            if (iteration && iteration === tTime / cycleDuration) {
13181              time = dur;
13182              iteration--;
13183            }
13184            time > dur && (time = dur);
13185          }
13186          prevIteration = _animationCycle(this._tTime, cycleDuration);
13187          !prevTime && this._tTime && prevIteration !== iteration && (prevIteration = iteration);
13188          if (yoyo && iteration & 1) {
13189            time = dur - time;
13190            isYoyo = 1;
13191          }
13192          if (iteration !== prevIteration && !this._lock) {
13193            var rewinding = yoyo && prevIteration & 1, doesWrap = rewinding === (yoyo && iteration & 1);
13194            iteration < prevIteration && (rewinding = !rewinding);
13195            prevTime = rewinding ? 0 : dur;
13196            this._lock = 1;
13197            this.render(prevTime || (isYoyo ? 0 : _roundPrecise(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;
13198            this._tTime = tTime;
13199            !suppressEvents && this.parent && _callback(this, "onRepeat");
13200            this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);
13201            if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {
13202              return this;
13203            }
13204            dur = this._dur;
13205            tDur = this._tDur;
13206            if (doesWrap) {
13207              this._lock = 2;
13208              prevTime = rewinding ? dur : -1e-4;
13209              this.render(prevTime, true);
13210              this.vars.repeatRefresh && !isYoyo && this.invalidate();
13211            }
13212            this._lock = 0;
13213            if (!this._ts && !prevPaused) {
13214              return this;
13215            }
13216            _propagateYoyoEase(this, isYoyo);
13217          }
13218        }
13219        if (this._hasPause && !this._forcing && this._lock < 2) {
13220          pauseTween = _findNextPauseTween(this, _roundPrecise(prevTime), _roundPrecise(time));
13221          if (pauseTween) {
13222            tTime -= time - (time = pauseTween._start);
13223          }
13224        }
13225        this._tTime = tTime;
13226        this._time = time;
13227        this._act = !timeScale;
13228        if (!this._initted) {
13229          this._onUpdate = this.vars.onUpdate;
13230          this._initted = 1;
13231          this._zTime = totalTime;
13232          prevTime = 0;
13233        }
13234        if (!prevTime && time && !suppressEvents) {
13235          _callback(this, "onStart");
13236          if (this._tTime !== tTime) {
13237            return this;
13238          }
13239        }
13240        if (time >= prevTime && totalTime >= 0) {
13241          child = this._first;
13242          while (child) {
13243            next = child._next;
13244            if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {
13245              if (child.parent !== this) {
13246                return this.render(totalTime, suppressEvents, force);
13247              }
13248              child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);
13249              if (time !== this._time || !this._ts && !prevPaused) {
13250                pauseTween = 0;
13251                next && (tTime += this._zTime = -_tinyNum);
13252                break;
13253              }
13254            }
13255            child = next;
13256          }
13257        } else {
13258          child = this._last;
13259          var adjustedTime = totalTime < 0 ? totalTime : time;
13260          while (child) {
13261            next = child._prev;
13262            if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {
13263              if (child.parent !== this) {
13264                return this.render(totalTime, suppressEvents, force);
13265              }
13266              child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force);
13267              if (time !== this._time || !this._ts && !prevPaused) {
13268                pauseTween = 0;
13269                next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum);
13270                break;
13271              }
13272            }
13273            child = next;
13274          }
13275        }
13276        if (pauseTween && !suppressEvents) {
13277          this.pause();
13278          pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;
13279          if (this._ts) {
13280            this._start = prevStart;
13281            _setEnd(this);
13282            return this.render(totalTime, suppressEvents, force);
13283          }
13284        }
13285        this._onUpdate && !suppressEvents && _callback(this, "onUpdate", true);
13286        if (tTime === tDur && this._tTime >= this.totalDuration() || !tTime && prevTime) {
13287          if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) {
13288            if (!this._lock) {
13289              (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1);
13290              if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {
13291                _callback(this, tTime === tDur && totalTime >= 0 ? "onComplete" : "onReverseComplete", true);
13292                this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();
13293              }
13294            }
13295          }
13296        }
13297      }
13298      return this;
13299    };
13300    _proto2.add = function add(child, position) {
13301      var _this2 = this;
13302      _isNumber(position) || (position = _parsePosition(this, position, child));
13303      if (!(child instanceof Animation)) {
13304        if (_isArray(child)) {
13305          child.forEach(function(obj) {
13306            return _this2.add(obj, position);
13307          });
13308          return this;
13309        }
13310        if (_isString(child)) {
13311          return this.addLabel(child, position);
13312        }
13313        if (_isFunction(child)) {
13314          child = Tween.delayedCall(0, child);
13315        } else {
13316          return this;
13317        }
13318      }
13319      return this !== child ? _addToTimeline(this, child, position) : this;
13320    };
13321    _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {
13322      if (nested === void 0) {
13323        nested = true;
13324      }
13325      if (tweens === void 0) {
13326        tweens = true;
13327      }
13328      if (timelines === void 0) {
13329        timelines = true;
13330      }
13331      if (ignoreBeforeTime === void 0) {
13332        ignoreBeforeTime = -_bigNum;
13333      }
13334      var a = [], child = this._first;
13335      while (child) {
13336        if (child._start >= ignoreBeforeTime) {
13337          if (child instanceof Tween) {
13338            tweens && a.push(child);
13339          } else {
13340            timelines && a.push(child);
13341            nested && a.push.apply(a, child.getChildren(true, tweens, timelines));
13342          }
13343        }
13344        child = child._next;
13345      }
13346      return a;
13347    };
13348    _proto2.getById = function getById2(id) {
13349      var animations = this.getChildren(1, 1, 1), i = animations.length;
13350      while (i--) {
13351        if (animations[i].vars.id === id) {
13352          return animations[i];
13353        }
13354      }
13355    };
13356    _proto2.remove = function remove(child) {
13357      if (_isString(child)) {
13358        return this.removeLabel(child);
13359      }
13360      if (_isFunction(child)) {
13361        return this.killTweensOf(child);
13362      }
13363      _removeLinkedListItem(this, child);
13364      if (child === this._recent) {
13365        this._recent = this._last;
13366      }
13367      return _uncache(this);
13368    };
13369    _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {
13370      if (!arguments.length) {
13371        return this._tTime;
13372      }
13373      this._forcing = 1;
13374      if (!this._dp && this._ts) {
13375        this._start = _roundPrecise(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));
13376      }
13377      _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);
13378      this._forcing = 0;
13379      return this;
13380    };
13381    _proto2.addLabel = function addLabel(label, position) {
13382      this.labels[label] = _parsePosition(this, position);
13383      return this;
13384    };
13385    _proto2.removeLabel = function removeLabel(label) {
13386      delete this.labels[label];
13387      return this;
13388    };
13389    _proto2.addPause = function addPause(position, callback, params) {
13390      var t = Tween.delayedCall(0, callback || _emptyFunc, params);
13391      t.data = "isPause";
13392      this._hasPause = 1;
13393      return _addToTimeline(this, t, _parsePosition(this, position));
13394    };
13395    _proto2.removePause = function removePause(position) {
13396      var child = this._first;
13397      position = _parsePosition(this, position);
13398      while (child) {
13399        if (child._start === position && child.data === "isPause") {
13400          _removeFromParent(child);
13401        }
13402        child = child._next;
13403      }
13404    };
13405    _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {
13406      var tweens = this.getTweensOf(targets, onlyActive), i = tweens.length;
13407      while (i--) {
13408        _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);
13409      }
13410      return this;
13411    };
13412    _proto2.getTweensOf = function getTweensOf2(targets, onlyActive) {
13413      var a = [], parsedTargets = toArray(targets), child = this._first, isGlobalTime = _isNumber(onlyActive), children;
13414      while (child) {
13415        if (child instanceof Tween) {
13416          if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {
13417            a.push(child);
13418          }
13419        } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {
13420          a.push.apply(a, children);
13421        }
13422        child = child._next;
13423      }
13424      return a;
13425    };
13426    _proto2.tweenTo = function tweenTo(position, vars) {
13427      vars = vars || {};
13428      var tl = this, endTime = _parsePosition(tl, position), _vars = vars, startAt = _vars.startAt, _onStart = _vars.onStart, onStartParams = _vars.onStartParams, immediateRender = _vars.immediateRender, initted, tween = Tween.to(tl, _setDefaults({
13429        ease: vars.ease || "none",
13430        lazy: false,
13431        immediateRender: false,
13432        time: endTime,
13433        overwrite: "auto",
13434        duration: vars.duration || Math.abs((endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,
13435        onStart: function onStart() {
13436          tl.pause();
13437          if (!initted) {
13438            var duration = vars.duration || Math.abs((endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale());
13439            tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);
13440            initted = 1;
13441          }
13442          _onStart && _onStart.apply(tween, onStartParams || []);
13443        }
13444      }, vars));
13445      return immediateRender ? tween.render(0) : tween;
13446    };
13447    _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {
13448      return this.tweenTo(toPosition, _setDefaults({
13449        startAt: {
13450          time: _parsePosition(this, fromPosition)
13451        }
13452      }, vars));
13453    };
13454    _proto2.recent = function recent() {
13455      return this._recent;
13456    };
13457    _proto2.nextLabel = function nextLabel(afterTime) {
13458      if (afterTime === void 0) {
13459        afterTime = this._time;
13460      }
13461      return _getLabelInDirection(this, _parsePosition(this, afterTime));
13462    };
13463    _proto2.previousLabel = function previousLabel(beforeTime) {
13464      if (beforeTime === void 0) {
13465        beforeTime = this._time;
13466      }
13467      return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);
13468    };
13469    _proto2.currentLabel = function currentLabel(value) {
13470      return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);
13471    };
13472    _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {
13473      if (ignoreBeforeTime === void 0) {
13474        ignoreBeforeTime = 0;
13475      }
13476      var child = this._first, labels = this.labels, p;
13477      while (child) {
13478        if (child._start >= ignoreBeforeTime) {
13479          child._start += amount;
13480          child._end += amount;
13481        }
13482        child = child._next;
13483      }
13484      if (adjustLabels) {
13485        for (p in labels) {
13486          if (labels[p] >= ignoreBeforeTime) {
13487            labels[p] += amount;
13488          }
13489        }
13490      }
13491      return _uncache(this);
13492    };
13493    _proto2.invalidate = function invalidate() {
13494      var child = this._first;
13495      this._lock = 0;
13496      while (child) {
13497        child.invalidate();
13498        child = child._next;
13499      }
13500      return _Animation.prototype.invalidate.call(this);
13501    };
13502    _proto2.clear = function clear(includeLabels) {
13503      if (includeLabels === void 0) {
13504        includeLabels = true;
13505      }
13506      var child = this._first, next;
13507      while (child) {
13508        next = child._next;
13509        this.remove(child);
13510        child = next;
13511      }
13512      this._dp && (this._time = this._tTime = this._pTime = 0);
13513      includeLabels && (this.labels = {});
13514      return _uncache(this);
13515    };
13516    _proto2.totalDuration = function totalDuration(value) {
13517      var max2 = 0, self2 = this, child = self2._last, prevStart = _bigNum, prev, start2, parent;
13518      if (arguments.length) {
13519        return self2.timeScale((self2._repeat < 0 ? self2.duration() : self2.totalDuration()) / (self2.reversed() ? -value : value));
13520      }
13521      if (self2._dirty) {
13522        parent = self2.parent;
13523        while (child) {
13524          prev = child._prev;
13525          child._dirty && child.totalDuration();
13526          start2 = child._start;
13527          if (start2 > prevStart && self2._sort && child._ts && !self2._lock) {
13528            self2._lock = 1;
13529            _addToTimeline(self2, child, start2 - child._delay, 1)._lock = 0;
13530          } else {
13531            prevStart = start2;
13532          }
13533          if (start2 < 0 && child._ts) {
13534            max2 -= start2;
13535            if (!parent && !self2._dp || parent && parent.smoothChildTiming) {
13536              self2._start += start2 / self2._ts;
13537              self2._time -= start2;
13538              self2._tTime -= start2;
13539            }
13540            self2.shiftChildren(-start2, false, -Infinity);
13541            prevStart = 0;
13542          }
13543          child._end > max2 && child._ts && (max2 = child._end);
13544          child = prev;
13545        }
13546        _setDuration(self2, self2 === _globalTimeline && self2._time > max2 ? self2._time : max2, 1, 1);
13547        self2._dirty = 0;
13548      }
13549      return self2._tDur;
13550    };
13551    Timeline2.updateRoot = function updateRoot(time) {
13552      if (_globalTimeline._ts) {
13553        _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));
13554        _lastRenderedFrame = _ticker.frame;
13555      }
13556      if (_ticker.frame >= _nextGCFrame) {
13557        _nextGCFrame += _config.autoSleep || 120;
13558        var child = _globalTimeline._first;
13559        if (!child || !child._ts) {
13560          if (_config.autoSleep && _ticker._listeners.length < 2) {
13561            while (child && !child._ts) {
13562              child = child._next;
13563            }
13564            child || _ticker.sleep();
13565          }
13566        }
13567      }
13568    };
13569    return Timeline2;
13570  }(Animation);
13571  _setDefaults(Timeline.prototype, {
13572    _lock: 0,
13573    _hasPause: 0,
13574    _forcing: 0
13575  });
13576  var _addComplexStringPropTween = function _addComplexStringPropTween2(target, prop, start2, end2, setter, stringFilter, funcParam) {
13577    var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter), index = 0, matchIndex = 0, result, startNums, color, endNum, chunk, startNum, hasRandom, a;
13578    pt.b = start2;
13579    pt.e = end2;
13580    start2 += "";
13581    end2 += "";
13582    if (hasRandom = ~end2.indexOf("random(")) {
13583      end2 = _replaceRandom(end2);
13584    }
13585    if (stringFilter) {
13586      a = [start2, end2];
13587      stringFilter(a, target, prop);
13588      start2 = a[0];
13589      end2 = a[1];
13590    }
13591    startNums = start2.match(_complexStringNumExp) || [];
13592    while (result = _complexStringNumExp.exec(end2)) {
13593      endNum = result[0];
13594      chunk = end2.substring(index, result.index);
13595      if (color) {
13596        color = (color + 1) % 5;
13597      } else if (chunk.substr(-5) === "rgba(") {
13598        color = 1;
13599      }
13600      if (endNum !== startNums[matchIndex++]) {
13601        startNum = parseFloat(startNums[matchIndex - 1]) || 0;
13602        pt._pt = {
13603          _next: pt._pt,
13604          p: chunk || matchIndex === 1 ? chunk : ",",
13605          s: startNum,
13606          c: endNum.charAt(1) === "=" ? _parseRelative(startNum, endNum) - startNum : parseFloat(endNum) - startNum,
13607          m: color && color < 4 ? Math.round : 0
13608        };
13609        index = _complexStringNumExp.lastIndex;
13610      }
13611    }
13612    pt.c = index < end2.length ? end2.substring(index, end2.length) : "";
13613    pt.fp = funcParam;
13614    if (_relExp.test(end2) || hasRandom) {
13615      pt.e = 0;
13616    }
13617    this._pt = pt;
13618    return pt;
13619  };
13620  var _addPropTween = function _addPropTween2(target, prop, start2, end2, index, targets, modifier, stringFilter, funcParam) {
13621    _isFunction(end2) && (end2 = end2(index || 0, target, targets));
13622    var currentValue = target[prop], parsedStart = start2 !== "get" ? start2 : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf("set") || !_isFunction(target["get" + prop.substr(3)]) ? prop : "get" + prop.substr(3)](funcParam) : target[prop](), setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc, pt;
13623    if (_isString(end2)) {
13624      if (~end2.indexOf("random(")) {
13625        end2 = _replaceRandom(end2);
13626      }
13627      if (end2.charAt(1) === "=") {
13628        pt = _parseRelative(parsedStart, end2) + (getUnit(parsedStart) || 0);
13629        if (pt || pt === 0) {
13630          end2 = pt;
13631        }
13632      }
13633    }
13634    if (parsedStart !== end2 || _forceAllPropTweens) {
13635      if (!isNaN(parsedStart * end2) && end2 !== "") {
13636        pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end2 - (parsedStart || 0), typeof currentValue === "boolean" ? _renderBoolean : _renderPlain, 0, setter);
13637        funcParam && (pt.fp = funcParam);
13638        modifier && pt.modifier(modifier, this, target);
13639        return this._pt = pt;
13640      }
13641      !currentValue && !(prop in target) && _missingPlugin(prop, end2);
13642      return _addComplexStringPropTween.call(this, target, prop, parsedStart, end2, setter, stringFilter || _config.stringFilter, funcParam);
13643    }
13644  };
13645  var _processVars = function _processVars2(vars, index, target, targets, tween) {
13646    _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));
13647    if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {
13648      return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;
13649    }
13650    var copy = {}, p;
13651    for (p in vars) {
13652      copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);
13653    }
13654    return copy;
13655  };
13656  var _checkPlugin = function _checkPlugin2(property, vars, tween, index, target, targets) {
13657    var plugin, pt, ptLookup, i;
13658    if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {
13659      tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);
13660      if (tween !== _quickTween) {
13661        ptLookup = tween._ptLookup[tween._targets.indexOf(target)];
13662        i = plugin._props.length;
13663        while (i--) {
13664          ptLookup[plugin._props[i]] = pt;
13665        }
13666      }
13667    }
13668    return plugin;
13669  };
13670  var _overwritingTween;
13671  var _forceAllPropTweens;
13672  var _initTween = function _initTween2(tween, time) {
13673    var vars = tween.vars, ease = vars.ease, startAt = vars.startAt, immediateRender = vars.immediateRender, lazy = vars.lazy, onUpdate = vars.onUpdate, onUpdateParams = vars.onUpdateParams, callbackScope = vars.callbackScope, runBackwards = vars.runBackwards, yoyoEase = vars.yoyoEase, keyframes = vars.keyframes, autoRevert = vars.autoRevert, dur = tween._dur, prevStartAt = tween._startAt, targets = tween._targets, parent = tween.parent, fullTargets = parent && parent.data === "nested" ? parent.parent._targets : targets, autoOverwrite = tween._overwrite === "auto" && !_suppressOverwrites, tl = tween.timeline, cleanVars, i, p, pt, target, hasPriority, gsData, harness, plugin, ptLookup, index, harnessVars, overwritten;
13674    tl && (!keyframes || !ease) && (ease = "none");
13675    tween._ease = _parseEase(ease, _defaults.ease);
13676    tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;
13677    if (yoyoEase && tween._yoyo && !tween._repeat) {
13678      yoyoEase = tween._yEase;
13679      tween._yEase = tween._ease;
13680      tween._ease = yoyoEase;
13681    }
13682    tween._from = !tl && !!vars.runBackwards;
13683    if (!tl || keyframes && !vars.stagger) {
13684      harness = targets[0] ? _getCache(targets[0]).harness : 0;
13685      harnessVars = harness && vars[harness.prop];
13686      cleanVars = _copyExcluding(vars, _reservedProps);
13687      if (prevStartAt) {
13688        _removeFromParent(prevStartAt.render(-1, true));
13689        prevStartAt._lazy = 0;
13690      }
13691      if (startAt) {
13692        _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({
13693          data: "isStart",
13694          overwrite: false,
13695          parent,
13696          immediateRender: true,
13697          lazy: _isNotFalse(lazy),
13698          startAt: null,
13699          delay: 0,
13700          onUpdate,
13701          onUpdateParams,
13702          callbackScope,
13703          stagger: 0
13704        }, startAt)));
13705        time < 0 && !immediateRender && !autoRevert && tween._startAt.render(-1, true);
13706        if (immediateRender) {
13707          time > 0 && !autoRevert && (tween._startAt = 0);
13708          if (dur && time <= 0) {
13709            time && (tween._zTime = time);
13710            return;
13711          }
13712        } else if (autoRevert === false) {
13713          tween._startAt = 0;
13714        }
13715      } else if (runBackwards && dur) {
13716        if (prevStartAt) {
13717          !autoRevert && (tween._startAt = 0);
13718        } else {
13719          time && (immediateRender = false);
13720          p = _setDefaults({
13721            overwrite: false,
13722            data: "isFromStart",
13723            lazy: immediateRender && _isNotFalse(lazy),
13724            immediateRender,
13725            stagger: 0,
13726            parent
13727          }, cleanVars);
13728          harnessVars && (p[harness.prop] = harnessVars);
13729          _removeFromParent(tween._startAt = Tween.set(targets, p));
13730          time < 0 && tween._startAt.render(-1, true);
13731          tween._zTime = time;
13732          if (!immediateRender) {
13733            _initTween2(tween._startAt, _tinyNum);
13734          } else if (!time) {
13735            return;
13736          }
13737        }
13738      }
13739      tween._pt = tween._ptCache = 0;
13740      lazy = dur && _isNotFalse(lazy) || lazy && !dur;
13741      for (i = 0; i < targets.length; i++) {
13742        target = targets[i];
13743        gsData = target._gsap || _harness(targets)[i]._gsap;
13744        tween._ptLookup[i] = ptLookup = {};
13745        _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender();
13746        index = fullTargets === targets ? i : fullTargets.indexOf(target);
13747        if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {
13748          tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);
13749          plugin._props.forEach(function(name) {
13750            ptLookup[name] = pt;
13751          });
13752          plugin.priority && (hasPriority = 1);
13753        }
13754        if (!harness || harnessVars) {
13755          for (p in cleanVars) {
13756            if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {
13757              plugin.priority && (hasPriority = 1);
13758            } else {
13759              ptLookup[p] = pt = _addPropTween.call(tween, target, p, "get", cleanVars[p], index, fullTargets, 0, vars.stringFilter);
13760            }
13761          }
13762        }
13763        tween._op && tween._op[i] && tween.kill(target, tween._op[i]);
13764        if (autoOverwrite && tween._pt) {
13765          _overwritingTween = tween;
13766          _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(time));
13767          overwritten = !tween.parent;
13768          _overwritingTween = 0;
13769        }
13770        tween._pt && lazy && (_lazyLookup[gsData.id] = 1);
13771      }
13772      hasPriority && _sortPropTweensByPriority(tween);
13773      tween._onInit && tween._onInit(tween);
13774    }
13775    tween._onUpdate = onUpdate;
13776    tween._initted = (!tween._op || tween._pt) && !overwritten;
13777    keyframes && time <= 0 && tl.render(_bigNum, true, true);
13778  };
13779  var _updatePropTweens = function _updatePropTweens2(tween, property, value, start2, startIsRelative, ratio, time) {
13780    var ptCache = (tween._pt && tween._ptCache || (tween._ptCache = {}))[property], pt, lookup, i;
13781    if (!ptCache) {
13782      ptCache = tween._ptCache[property] = [];
13783      lookup = tween._ptLookup;
13784      i = tween._targets.length;
13785      while (i--) {
13786        pt = lookup[i][property];
13787        if (pt && pt.d && pt.d._pt) {
13788          pt = pt.d._pt;
13789          while (pt && pt.p !== property) {
13790            pt = pt._next;
13791          }
13792        }
13793        if (!pt) {
13794          _forceAllPropTweens = 1;
13795          tween.vars[property] = "+=0";
13796          _initTween(tween, time);
13797          _forceAllPropTweens = 0;
13798          return 1;
13799        }
13800        ptCache.push(pt);
13801      }
13802    }
13803    i = ptCache.length;
13804    while (i--) {
13805      pt = ptCache[i];
13806      pt.s = (start2 || start2 === 0) && !startIsRelative ? start2 : pt.s + (start2 || 0) + ratio * pt.c;
13807      pt.c = value - pt.s;
13808      pt.e && (pt.e = _round(value) + getUnit(pt.e));
13809      pt.b && (pt.b = pt.s + getUnit(pt.b));
13810    }
13811  };
13812  var _addAliasesToVars = function _addAliasesToVars2(targets, vars) {
13813    var harness = targets[0] ? _getCache(targets[0]).harness : 0, propertyAliases = harness && harness.aliases, copy, p, i, aliases;
13814    if (!propertyAliases) {
13815      return vars;
13816    }
13817    copy = _merge({}, vars);
13818    for (p in propertyAliases) {
13819      if (p in copy) {
13820        aliases = propertyAliases[p].split(",");
13821        i = aliases.length;
13822        while (i--) {
13823          copy[aliases[i]] = copy[p];
13824        }
13825      }
13826    }
13827    return copy;
13828  };
13829  var _parseKeyframe = function _parseKeyframe2(prop, obj, allProps, easeEach) {
13830    var ease = obj.ease || easeEach || "power1.inOut", p, a;
13831    if (_isArray(obj)) {
13832      a = allProps[prop] || (allProps[prop] = []);
13833      obj.forEach(function(value, i) {
13834        return a.push({
13835          t: i / (obj.length - 1) * 100,
13836          v: value,
13837          e: ease
13838        });
13839      });
13840    } else {
13841      for (p in obj) {
13842        a = allProps[p] || (allProps[p] = []);
13843        p === "ease" || a.push({
13844          t: parseFloat(prop),
13845          v: obj[p],
13846          e: ease
13847        });
13848      }
13849    }
13850  };
13851  var _parseFuncOrString = function _parseFuncOrString2(value, tween, i, target, targets) {
13852    return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf("random(") ? _replaceRandom(value) : value;
13853  };
13854  var _staggerTweenProps = _callbackNames + "repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert";
13855  var _staggerPropsToSkip = {};
13856  _forEachName(_staggerTweenProps + ",id,stagger,delay,duration,paused,scrollTrigger", function(name) {
13857    return _staggerPropsToSkip[name] = 1;
13858  });
13859  var Tween = /* @__PURE__ */ function(_Animation2) {
13860    _inheritsLoose(Tween2, _Animation2);
13861    function Tween2(targets, vars, position, skipInherit) {
13862      var _this3;
13863      if (typeof vars === "number") {
13864        position.duration = vars;
13865        vars = position;
13866        position = null;
13867      }
13868      _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this;
13869      var _this3$vars = _this3.vars, duration = _this3$vars.duration, delay = _this3$vars.delay, immediateRender = _this3$vars.immediateRender, stagger = _this3$vars.stagger, overwrite = _this3$vars.overwrite, keyframes = _this3$vars.keyframes, defaults3 = _this3$vars.defaults, scrollTrigger = _this3$vars.scrollTrigger, yoyoEase = _this3$vars.yoyoEase, parent = vars.parent || _globalTimeline, parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : "length" in vars) ? [targets] : toArray(targets), tl, i, copy, l, p, curTarget, staggerFunc, staggerVarsToMerge;
13870      _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn("GSAP target " + targets + " not found. https://greensock.com", !_config.nullTargetWarn) || [];
13871      _this3._ptLookup = [];
13872      _this3._overwrite = overwrite;
13873      if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {
13874        vars = _this3.vars;
13875        tl = _this3.timeline = new Timeline({
13876          data: "nested",
13877          defaults: defaults3 || {}
13878        });
13879        tl.kill();
13880        tl.parent = tl._dp = _assertThisInitialized(_this3);
13881        tl._start = 0;
13882        if (stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {
13883          l = parsedTargets.length;
13884          staggerFunc = stagger && distribute(stagger);
13885          if (_isObject(stagger)) {
13886            for (p in stagger) {
13887              if (~_staggerTweenProps.indexOf(p)) {
13888                staggerVarsToMerge || (staggerVarsToMerge = {});
13889                staggerVarsToMerge[p] = stagger[p];
13890              }
13891            }
13892          }
13893          for (i = 0; i < l; i++) {
13894            copy = _copyExcluding(vars, _staggerPropsToSkip);
13895            copy.stagger = 0;
13896            yoyoEase && (copy.yoyoEase = yoyoEase);
13897            staggerVarsToMerge && _merge(copy, staggerVarsToMerge);
13898            curTarget = parsedTargets[i];
13899            copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);
13900            copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;
13901            if (!stagger && l === 1 && copy.delay) {
13902              _this3._delay = delay = copy.delay;
13903              _this3._start += delay;
13904              copy.delay = 0;
13905            }
13906            tl.to(curTarget, copy, staggerFunc ? staggerFunc(i, curTarget, parsedTargets) : 0);
13907            tl._ease = _easeMap.none;
13908          }
13909          tl.duration() ? duration = delay = 0 : _this3.timeline = 0;
13910        } else if (keyframes) {
13911          _inheritDefaults(_setDefaults(tl.vars.defaults, {
13912            ease: "none"
13913          }));
13914          tl._ease = _parseEase(keyframes.ease || vars.ease || "none");
13915          var time = 0, a, kf, v;
13916          if (_isArray(keyframes)) {
13917            keyframes.forEach(function(frame) {
13918              return tl.to(parsedTargets, frame, ">");
13919            });
13920          } else {
13921            copy = {};
13922            for (p in keyframes) {
13923              p === "ease" || p === "easeEach" || _parseKeyframe(p, keyframes[p], copy, keyframes.easeEach);
13924            }
13925            for (p in copy) {
13926              a = copy[p].sort(function(a2, b) {
13927                return a2.t - b.t;
13928              });
13929              time = 0;
13930              for (i = 0; i < a.length; i++) {
13931                kf = a[i];
13932                v = {
13933                  ease: kf.e,
13934                  duration: (kf.t - (i ? a[i - 1].t : 0)) / 100 * duration
13935                };
13936                v[p] = kf.v;
13937                tl.to(parsedTargets, v, time);
13938                time += v.duration;
13939              }
13940            }
13941            tl.duration() < duration && tl.to({}, {
13942              duration: duration - tl.duration()
13943            });
13944          }
13945        }
13946        duration || _this3.duration(duration = tl.duration());
13947      } else {
13948        _this3.timeline = 0;
13949      }
13950      if (overwrite === true && !_suppressOverwrites) {
13951        _overwritingTween = _assertThisInitialized(_this3);
13952        _globalTimeline.killTweensOf(parsedTargets);
13953        _overwritingTween = 0;
13954      }
13955      _addToTimeline(parent, _assertThisInitialized(_this3), position);
13956      vars.reversed && _this3.reverse();
13957      vars.paused && _this3.paused(true);
13958      if (immediateRender || !duration && !keyframes && _this3._start === _roundPrecise(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== "nested") {
13959        _this3._tTime = -_tinyNum;
13960        _this3.render(Math.max(0, -delay));
13961      }
13962      scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);
13963      return _this3;
13964    }
13965    var _proto3 = Tween2.prototype;
13966    _proto3.render = function render4(totalTime, suppressEvents, force) {
13967      var prevTime = this._time, tDur = this._tDur, dur = this._dur, tTime = totalTime > tDur - _tinyNum && totalTime >= 0 ? tDur : totalTime < _tinyNum ? 0 : totalTime, time, pt, iteration, cycleDuration, prevIteration, isYoyo, ratio, timeline2, yoyoEase;
13968      if (!dur) {
13969        _renderZeroDurationTween(this, totalTime, suppressEvents, force);
13970      } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== totalTime < 0) {
13971        time = tTime;
13972        timeline2 = this.timeline;
13973        if (this._repeat) {
13974          cycleDuration = dur + this._rDelay;
13975          if (this._repeat < -1 && totalTime < 0) {
13976            return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);
13977          }
13978          time = _roundPrecise(tTime % cycleDuration);
13979          if (tTime === tDur) {
13980            iteration = this._repeat;
13981            time = dur;
13982          } else {
13983            iteration = ~~(tTime / cycleDuration);
13984            if (iteration && iteration === tTime / cycleDuration) {
13985              time = dur;
13986              iteration--;
13987            }
13988            time > dur && (time = dur);
13989          }
13990          isYoyo = this._yoyo && iteration & 1;
13991          if (isYoyo) {
13992            yoyoEase = this._yEase;
13993            time = dur - time;
13994          }
13995          prevIteration = _animationCycle(this._tTime, cycleDuration);
13996          if (time === prevTime && !force && this._initted) {
13997            this._tTime = tTime;
13998            return this;
13999          }
14000          if (iteration !== prevIteration) {
14001            timeline2 && this._yEase && _propagateYoyoEase(timeline2, isYoyo);
14002            if (this.vars.repeatRefresh && !isYoyo && !this._lock) {
14003              this._lock = force = 1;
14004              this.render(_roundPrecise(cycleDuration * iteration), true).invalidate()._lock = 0;
14005            }
14006          }
14007        }
14008        if (!this._initted) {
14009          if (_attemptInitTween(this, totalTime < 0 ? totalTime : time, force, suppressEvents)) {
14010            this._tTime = 0;
14011            return this;
14012          }
14013          if (prevTime !== this._time) {
14014            return this;
14015          }
14016          if (dur !== this._dur) {
14017            return this.render(totalTime, suppressEvents, force);
14018          }
14019        }
14020        this._tTime = tTime;
14021        this._time = time;
14022        if (!this._act && this._ts) {
14023          this._act = 1;
14024          this._lazy = 0;
14025        }
14026        this.ratio = ratio = (yoyoEase || this._ease)(time / dur);
14027        if (this._from) {
14028          this.ratio = ratio = 1 - ratio;
14029        }
14030        if (time && !prevTime && !suppressEvents) {
14031          _callback(this, "onStart");
14032          if (this._tTime !== tTime) {
14033            return this;
14034          }
14035        }
14036        pt = this._pt;
14037        while (pt) {
14038          pt.r(ratio, pt.d);
14039          pt = pt._next;
14040        }
14041        timeline2 && timeline2.render(totalTime < 0 ? totalTime : !time && isYoyo ? -_tinyNum : timeline2._dur * timeline2._ease(time / this._dur), suppressEvents, force) || this._startAt && (this._zTime = totalTime);
14042        if (this._onUpdate && !suppressEvents) {
14043          totalTime < 0 && this._startAt && this._startAt.render(totalTime, true, force);
14044          _callback(this, "onUpdate");
14045        }
14046        this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, "onRepeat");
14047        if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {
14048          totalTime < 0 && this._startAt && !this._onUpdate && this._startAt.render(totalTime, true, true);
14049          (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1);
14050          if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime)) {
14051            _callback(this, tTime === tDur ? "onComplete" : "onReverseComplete", true);
14052            this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();
14053          }
14054        }
14055      }
14056      return this;
14057    };
14058    _proto3.targets = function targets() {
14059      return this._targets;
14060    };
14061    _proto3.invalidate = function invalidate() {
14062      this._pt = this._op = this._startAt = this._onUpdate = this._lazy = this.ratio = 0;
14063      this._ptLookup = [];
14064      this.timeline && this.timeline.invalidate();
14065      return _Animation2.prototype.invalidate.call(this);
14066    };
14067    _proto3.resetTo = function resetTo(property, value, start2, startIsRelative) {
14068      _tickerActive || _ticker.wake();
14069      this._ts || this.play();
14070      var time = Math.min(this._dur, (this._dp._time - this._start) * this._ts), ratio;
14071      this._initted || _initTween(this, time);
14072      ratio = this._ease(time / this._dur);
14073      if (_updatePropTweens(this, property, value, start2, startIsRelative, ratio, time)) {
14074        return this.resetTo(property, value, start2, startIsRelative);
14075      }
14076      _alignPlayhead(this, 0);
14077      this.parent || _addLinkedListItem(this._dp, this, "_first", "_last", this._dp._sort ? "_start" : 0);
14078      return this.render(0);
14079    };
14080    _proto3.kill = function kill3(targets, vars) {
14081      if (vars === void 0) {
14082        vars = "all";
14083      }
14084      if (!targets && (!vars || vars === "all")) {
14085        this._lazy = this._pt = 0;
14086        return this.parent ? _interrupt(this) : this;
14087      }
14088      if (this.timeline) {
14089        var tDur = this.timeline.totalDuration();
14090        this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this);
14091        this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1);
14092        return this;
14093      }
14094      var parsedTargets = this._targets, killingTargets = targets ? toArray(targets) : parsedTargets, propTweenLookup = this._ptLookup, firstPT = this._pt, overwrittenProps, curLookup, curOverwriteProps, props, p, pt, i;
14095      if ((!vars || vars === "all") && _arraysMatch(parsedTargets, killingTargets)) {
14096        vars === "all" && (this._pt = 0);
14097        return _interrupt(this);
14098      }
14099      overwrittenProps = this._op = this._op || [];
14100      if (vars !== "all") {
14101        if (_isString(vars)) {
14102          p = {};
14103          _forEachName(vars, function(name) {
14104            return p[name] = 1;
14105          });
14106          vars = p;
14107        }
14108        vars = _addAliasesToVars(parsedTargets, vars);
14109      }
14110      i = parsedTargets.length;
14111      while (i--) {
14112        if (~killingTargets.indexOf(parsedTargets[i])) {
14113          curLookup = propTweenLookup[i];
14114          if (vars === "all") {
14115            overwrittenProps[i] = vars;
14116            props = curLookup;
14117            curOverwriteProps = {};
14118          } else {
14119            curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};
14120            props = vars;
14121          }
14122          for (p in props) {
14123            pt = curLookup && curLookup[p];
14124            if (pt) {
14125              if (!("kill" in pt.d) || pt.d.kill(p) === true) {
14126                _removeLinkedListItem(this, pt, "_pt");
14127              }
14128              delete curLookup[p];
14129            }
14130            if (curOverwriteProps !== "all") {
14131              curOverwriteProps[p] = 1;
14132            }
14133          }
14134        }
14135      }
14136      this._initted && !this._pt && firstPT && _interrupt(this);
14137      return this;
14138    };
14139    Tween2.to = function to(targets, vars) {
14140      return new Tween2(targets, vars, arguments[2]);
14141    };
14142    Tween2.from = function from(targets, vars) {
14143      return _createTweenType(1, arguments);
14144    };
14145    Tween2.delayedCall = function delayedCall(delay, callback, params, scope) {
14146      return new Tween2(callback, 0, {
14147        immediateRender: false,
14148        lazy: false,
14149        overwrite: false,
14150        delay,
14151        onComplete: callback,
14152        onReverseComplete: callback,
14153        onCompleteParams: params,
14154        onReverseCompleteParams: params,
14155        callbackScope: scope
14156      });
14157    };
14158    Tween2.fromTo = function fromTo(targets, fromVars, toVars) {
14159      return _createTweenType(2, arguments);
14160    };
14161    Tween2.set = function set(targets, vars) {
14162      vars.duration = 0;
14163      vars.repeatDelay || (vars.repeat = 0);
14164      return new Tween2(targets, vars);
14165    };
14166    Tween2.killTweensOf = function killTweensOf(targets, props, onlyActive) {
14167      return _globalTimeline.killTweensOf(targets, props, onlyActive);
14168    };
14169    return Tween2;
14170  }(Animation);
14171  _setDefaults(Tween.prototype, {
14172    _targets: [],
14173    _lazy: 0,
14174    _startAt: 0,
14175    _op: 0,
14176    _onInit: 0
14177  });
14178  _forEachName("staggerTo,staggerFrom,staggerFromTo", function(name) {
14179    Tween[name] = function() {
14180      var tl = new Timeline(), params = _slice.call(arguments, 0);
14181      params.splice(name === "staggerFromTo" ? 5 : 4, 0, 0);
14182      return tl[name].apply(tl, params);
14183    };
14184  });
14185  var _setterPlain = function _setterPlain2(target, property, value) {
14186    return target[property] = value;
14187  };
14188  var _setterFunc = function _setterFunc2(target, property, value) {
14189    return target[property](value);
14190  };
14191  var _setterFuncWithParam = function _setterFuncWithParam2(target, property, value, data) {
14192    return target[property](data.fp, value);
14193  };
14194  var _setterAttribute = function _setterAttribute2(target, property, value) {
14195    return target.setAttribute(property, value);
14196  };
14197  var _getSetter = function _getSetter2(target, property) {
14198    return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;
14199  };
14200  var _renderPlain = function _renderPlain2(ratio, data) {
14201    return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1e6) / 1e6, data);
14202  };
14203  var _renderBoolean = function _renderBoolean2(ratio, data) {
14204    return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);
14205  };
14206  var _renderComplexString = function _renderComplexString2(ratio, data) {
14207    var pt = data._pt, s = "";
14208    if (!ratio && data.b) {
14209      s = data.b;
14210    } else if (ratio === 1 && data.e) {
14211      s = data.e;
14212    } else {
14213      while (pt) {
14214        s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 1e4) / 1e4) + s;
14215        pt = pt._next;
14216      }
14217      s += data.c;
14218    }
14219    data.set(data.t, data.p, s, data);
14220  };
14221  var _renderPropTweens = function _renderPropTweens2(ratio, data) {
14222    var pt = data._pt;
14223    while (pt) {
14224      pt.r(ratio, pt.d);
14225      pt = pt._next;
14226    }
14227  };
14228  var _addPluginModifier = function _addPluginModifier2(modifier, tween, target, property) {
14229    var pt = this._pt, next;
14230    while (pt) {
14231      next = pt._next;
14232      pt.p === property && pt.modifier(modifier, tween, target);
14233      pt = next;
14234    }
14235  };
14236  var _killPropTweensOf = function _killPropTweensOf2(property) {
14237    var pt = this._pt, hasNonDependentRemaining, next;
14238    while (pt) {
14239      next = pt._next;
14240      if (pt.p === property && !pt.op || pt.op === property) {
14241        _removeLinkedListItem(this, pt, "_pt");
14242      } else if (!pt.dep) {
14243        hasNonDependentRemaining = 1;
14244      }
14245      pt = next;
14246    }
14247    return !hasNonDependentRemaining;
14248  };
14249  var _setterWithModifier = function _setterWithModifier2(target, property, value, data) {
14250    data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);
14251  };
14252  var _sortPropTweensByPriority = function _sortPropTweensByPriority2(parent) {
14253    var pt = parent._pt, next, pt2, first, last;
14254    while (pt) {
14255      next = pt._next;
14256      pt2 = first;
14257      while (pt2 && pt2.pr > pt.pr) {
14258        pt2 = pt2._next;
14259      }
14260      if (pt._prev = pt2 ? pt2._prev : last) {
14261        pt._prev._next = pt;
14262      } else {
14263        first = pt;
14264      }
14265      if (pt._next = pt2) {
14266        pt2._prev = pt;
14267      } else {
14268        last = pt;
14269      }
14270      pt = next;
14271    }
14272    parent._pt = first;
14273  };
14274  var PropTween = /* @__PURE__ */ function() {
14275    function PropTween2(next, target, prop, start2, change, renderer, data, setter, priority) {
14276      this.t = target;
14277      this.s = start2;
14278      this.c = change;
14279      this.p = prop;
14280      this.r = renderer || _renderPlain;
14281      this.d = data || this;
14282      this.set = setter || _setterPlain;
14283      this.pr = priority || 0;
14284      this._next = next;
14285      if (next) {
14286        next._prev = this;
14287      }
14288    }
14289    var _proto4 = PropTween2.prototype;
14290    _proto4.modifier = function modifier(func, tween, target) {
14291      this.mSet = this.mSet || this.set;
14292      this.set = _setterWithModifier;
14293      this.m = func;
14294      this.mt = target;
14295      this.tween = tween;
14296    };
14297    return PropTween2;
14298  }();
14299  _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) {
14300    return _reservedProps[name] = 1;
14301  });
14302  _globals.TweenMax = _globals.TweenLite = Tween;
14303  _globals.TimelineLite = _globals.TimelineMax = Timeline;
14304  _globalTimeline = new Timeline({
14305    sortChildren: false,
14306    defaults: _defaults,
14307    autoRemoveChildren: true,
14308    id: "root",
14309    smoothChildTiming: true
14310  });
14311  _config.stringFilter = _colorStringFilter;
14312  var _gsap = {
14313    registerPlugin: function registerPlugin() {
14314      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
14315        args[_key2] = arguments[_key2];
14316      }
14317      args.forEach(function(config3) {
14318        return _createPlugin(config3);
14319      });
14320    },
14321    timeline: function timeline(vars) {
14322      return new Timeline(vars);
14323    },
14324    getTweensOf: function getTweensOf(targets, onlyActive) {
14325      return _globalTimeline.getTweensOf(targets, onlyActive);
14326    },
14327    getProperty: function getProperty(target, property, unit, uncache) {
14328      _isString(target) && (target = toArray(target)[0]);
14329      var getter = _getCache(target || {}).get, format2 = unit ? _passThrough : _numericIfPossible;
14330      unit === "native" && (unit = "");
14331      return !target ? target : !property ? function(property2, unit2, uncache2) {
14332        return format2((_plugins[property2] && _plugins[property2].get || getter)(target, property2, unit2, uncache2));
14333      } : format2((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));
14334    },
14335    quickSetter: function quickSetter(target, property, unit) {
14336      target = toArray(target);
14337      if (target.length > 1) {
14338        var setters = target.map(function(t) {
14339          return gsap.quickSetter(t, property, unit);
14340        }), l = setters.length;
14341        return function(value) {
14342          var i = l;
14343          while (i--) {
14344            setters[i](value);
14345          }
14346        };
14347      }
14348      target = target[0] || {};
14349      var Plugin = _plugins[property], cache = _getCache(target), p = cache.harness && (cache.harness.aliases || {})[property] || property, setter = Plugin ? function(value) {
14350        var p2 = new Plugin();
14351        _quickTween._pt = 0;
14352        p2.init(target, unit ? value + unit : value, _quickTween, 0, [target]);
14353        p2.render(1, p2);
14354        _quickTween._pt && _renderPropTweens(1, _quickTween);
14355      } : cache.set(target, p);
14356      return Plugin ? setter : function(value) {
14357        return setter(target, p, unit ? value + unit : value, cache, 1);
14358      };
14359    },
14360    quickTo: function quickTo(target, property, vars) {
14361      var _merge22;
14362      var tween = gsap.to(target, _merge((_merge22 = {}, _merge22[property] = "+=0.1", _merge22.paused = true, _merge22), vars || {})), func = function func2(value, start2, startIsRelative) {
14363        return tween.resetTo(property, value, start2, startIsRelative);
14364      };
14365      func.tween = tween;
14366      return func;
14367    },
14368    isTweening: function isTweening(targets) {
14369      return _globalTimeline.getTweensOf(targets, true).length > 0;
14370    },
14371    defaults: function defaults(value) {
14372      value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));
14373      return _mergeDeep(_defaults, value || {});
14374    },
14375    config: function config2(value) {
14376      return _mergeDeep(_config, value || {});
14377    },
14378    registerEffect: function registerEffect(_ref3) {
14379      var name = _ref3.name, effect4 = _ref3.effect, plugins = _ref3.plugins, defaults3 = _ref3.defaults, extendTimeline = _ref3.extendTimeline;
14380      (plugins || "").split(",").forEach(function(pluginName) {
14381        return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + " effect requires " + pluginName + " plugin.");
14382      });
14383      _effects[name] = function(targets, vars, tl) {
14384        return effect4(toArray(targets), _setDefaults(vars || {}, defaults3), tl);
14385      };
14386      if (extendTimeline) {
14387        Timeline.prototype[name] = function(targets, vars, position) {
14388          return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);
14389        };
14390      }
14391    },
14392    registerEase: function registerEase(name, ease) {
14393      _easeMap[name] = _parseEase(ease);
14394    },
14395    parseEase: function parseEase(ease, defaultEase) {
14396      return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;
14397    },
14398    getById: function getById(id) {
14399      return _globalTimeline.getById(id);
14400    },
14401    exportRoot: function exportRoot(vars, includeDelayedCalls) {
14402      if (vars === void 0) {
14403        vars = {};
14404      }
14405      var tl = new Timeline(vars), child, next;
14406      tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);
14407      _globalTimeline.remove(tl);
14408      tl._dp = 0;
14409      tl._time = tl._tTime = _globalTimeline._time;
14410      child = _globalTimeline._first;
14411      while (child) {
14412        next = child._next;
14413        if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {
14414          _addToTimeline(tl, child, child._start - child._delay);
14415        }
14416        child = next;
14417      }
14418      _addToTimeline(_globalTimeline, tl, 0);
14419      return tl;
14420    },
14421    utils: {
14422      wrap,
14423      wrapYoyo,
14424      distribute,
14425      random,
14426      snap,
14427      normalize,
14428      getUnit,
14429      clamp,
14430      splitColor,
14431      toArray,
14432      selector,
14433      mapRange,
14434      pipe,
14435      unitize,
14436      interpolate,
14437      shuffle
14438    },
14439    install: _install,
14440    effects: _effects,
14441    ticker: _ticker,
14442    updateRoot: Timeline.updateRoot,
14443    plugins: _plugins,
14444    globalTimeline: _globalTimeline,
14445    core: {
14446      PropTween,
14447      globals: _addGlobal,
14448      Tween,
14449      Timeline,
14450      Animation,
14451      getCache: _getCache,
14452      _removeLinkedListItem,
14453      suppressOverwrites: function suppressOverwrites(value) {
14454        return _suppressOverwrites = value;
14455      }
14456    }
14457  };
14458  _forEachName("to,from,fromTo,delayedCall,set,killTweensOf", function(name) {
14459    return _gsap[name] = Tween[name];
14460  });
14461  _ticker.add(Timeline.updateRoot);
14462  _quickTween = _gsap.to({}, {
14463    duration: 0
14464  });
14465  var _getPluginPropTween = function _getPluginPropTween2(plugin, prop) {
14466    var pt = plugin._pt;
14467    while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {
14468      pt = pt._next;
14469    }
14470    return pt;
14471  };
14472  var _addModifiers = function _addModifiers2(tween, modifiers) {
14473    var targets = tween._targets, p, i, pt;
14474    for (p in modifiers) {
14475      i = targets.length;
14476      while (i--) {
14477        pt = tween._ptLookup[i][p];
14478        if (pt && (pt = pt.d)) {
14479          if (pt._pt) {
14480            pt = _getPluginPropTween(pt, p);
14481          }
14482          pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);
14483        }
14484      }
14485    }
14486  };
14487  var _buildModifierPlugin = function _buildModifierPlugin2(name, modifier) {
14488    return {
14489      name,
14490      rawVars: 1,
14491      init: function init7(target, vars, tween) {
14492        tween._onInit = function(tween2) {
14493          var temp, p;
14494          if (_isString(vars)) {
14495            temp = {};
14496            _forEachName(vars, function(name2) {
14497              return temp[name2] = 1;
14498            });
14499            vars = temp;
14500          }
14501          if (modifier) {
14502            temp = {};
14503            for (p in vars) {
14504              temp[p] = modifier(vars[p]);
14505            }
14506            vars = temp;
14507          }
14508          _addModifiers(tween2, vars);
14509        };
14510      }
14511    };
14512  };
14513  var gsap = _gsap.registerPlugin({
14514    name: "attr",
14515    init: function init(target, vars, tween, index, targets) {
14516      var p, pt;
14517      for (p in vars) {
14518        pt = this.add(target, "setAttribute", (target.getAttribute(p) || 0) + "", vars[p], index, targets, 0, 0, p);
14519        pt && (pt.op = p);
14520        this._props.push(p);
14521      }
14522    }
14523  }, {
14524    name: "endArray",
14525    init: function init2(target, value) {
14526      var i = value.length;
14527      while (i--) {
14528        this.add(target, i, target[i] || 0, value[i]);
14529      }
14530    }
14531  }, _buildModifierPlugin("roundProps", _roundModifier), _buildModifierPlugin("modifiers"), _buildModifierPlugin("snap", snap)) || _gsap;
14532  Tween.version = Timeline.version = gsap.version = "3.10.4";
14533  _coreReady = 1;
14534  _windowExists() && _wake();
14535  var Power0 = _easeMap.Power0;
14536  var Power1 = _easeMap.Power1;
14537  var Power2 = _easeMap.Power2;
14538  var Power3 = _easeMap.Power3;
14539  var Power4 = _easeMap.Power4;
14540  var Linear = _easeMap.Linear;
14541  var Quad = _easeMap.Quad;
14542  var Cubic = _easeMap.Cubic;
14543  var Quart = _easeMap.Quart;
14544  var Quint = _easeMap.Quint;
14545  var Strong = _easeMap.Strong;
14546  var Elastic = _easeMap.Elastic;
14547  var Back = _easeMap.Back;
14548  var SteppedEase = _easeMap.SteppedEase;
14549  var Bounce = _easeMap.Bounce;
14550  var Sine = _easeMap.Sine;
14551  var Expo = _easeMap.Expo;
14552  var Circ = _easeMap.Circ;
14553
14554  
vendor: 41,712 bytes, lines 14554-15470
14554// node_modules/gsap/CSSPlugin.js
14555  var _win2;
14556  var _doc2;
14557  var _docElement;
14558  var _pluginInitted;
14559  var _tempDiv;
14560  var _tempDivStyler;
14561  var _recentSetterPlugin;
14562  var _windowExists3 = function _windowExists4() {
14563    return typeof window !== "undefined";
14564  };
14565  var _transformProps = {};
14566  var _RAD2DEG = 180 / Math.PI;
14567  var _DEG2RAD = Math.PI / 180;
14568  var _atan2 = Math.atan2;
14569  var _bigNum2 = 1e8;
14570  var _capsExp = /([A-Z])/g;
14571  var _horizontalExp = /(left|right|width|margin|padding|x)/i;
14572  var _complexExp = /[\s,\(]\S/;
14573  var _propertyAliases = {
14574    autoAlpha: "opacity,visibility",
14575    scale: "scaleX,scaleY",
14576    alpha: "opacity"
14577  };
14578  var _renderCSSProp = function _renderCSSProp2(ratio, data) {
14579    return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1e4) / 1e4 + data.u, data);
14580  };
14581  var _renderPropWithEnd = function _renderPropWithEnd2(ratio, data) {
14582    return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 1e4) / 1e4 + data.u, data);
14583  };
14584  var _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning2(ratio, data) {
14585    return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 1e4) / 1e4 + data.u : data.b, data);
14586  };
14587  var _renderRoundedCSSProp = function _renderRoundedCSSProp2(ratio, data) {
14588    var value = data.s + data.c * ratio;
14589    data.set(data.t, data.p, ~~(value + (value < 0 ? -0.5 : 0.5)) + data.u, data);
14590  };
14591  var _renderNonTweeningValue = function _renderNonTweeningValue2(ratio, data) {
14592    return data.set(data.t, data.p, ratio ? data.e : data.b, data);
14593  };
14594  var _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd2(ratio, data) {
14595    return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);
14596  };
14597  var _setterCSSStyle = function _setterCSSStyle2(target, property, value) {
14598    return target.style[property] = value;
14599  };
14600  var _setterCSSProp = function _setterCSSProp2(target, property, value) {
14601    return target.style.setProperty(property, value);
14602  };
14603  var _setterTransform = function _setterTransform2(target, property, value) {
14604    return target._gsap[property] = value;
14605  };
14606  var _setterScale = function _setterScale2(target, property, value) {
14607    return target._gsap.scaleX = target._gsap.scaleY = value;
14608  };
14609  var _setterScaleWithRender = function _setterScaleWithRender2(target, property, value, data, ratio) {
14610    var cache = target._gsap;
14611    cache.scaleX = cache.scaleY = value;
14612    cache.renderTransform(ratio, cache);
14613  };
14614  var _setterTransformWithRender = function _setterTransformWithRender2(target, property, value, data, ratio) {
14615    var cache = target._gsap;
14616    cache[property] = value;
14617    cache.renderTransform(ratio, cache);
14618  };
14619  var _transformProp = "transform";
14620  var _transformOriginProp = _transformProp + "Origin";
14621  var _supports3D;
14622  var _createElement = function _createElement2(type, ns) {
14623    var e = _doc2.createElementNS ? _doc2.createElementNS((ns || "http://www.w3.org/1999/xhtml").replace(/^https/, "http"), type) : _doc2.createElement(type);
14624    return e.style ? e : _doc2.createElement(type);
14625  };
14626  var _getComputedProperty = function _getComputedProperty2(target, property, skipPrefixFallback) {
14627    var cs = getComputedStyle(target);
14628    return cs[property] || cs.getPropertyValue(property.replace(_capsExp, "-$1").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty2(target, _checkPropPrefix(property) || property, 1) || "";
14629  };
14630  var _prefixes = "O,Moz,ms,Ms,Webkit".split(",");
14631  var _checkPropPrefix = function _checkPropPrefix2(property, element, preferPrefix) {
14632    var e = element || _tempDiv, s = e.style, i = 5;
14633    if (property in s && !preferPrefix) {
14634      return property;
14635    }
14636    property = property.charAt(0).toUpperCase() + property.substr(1);
14637    while (i-- && !(_prefixes[i] + property in s)) {
14638    }
14639    return i < 0 ? null : (i === 3 ? "ms" : i >= 0 ? _prefixes[i] : "") + property;
14640  };
14641  var _initCore = function _initCore2() {
14642    if (_windowExists3() && window.document) {
14643      _win2 = window;
14644      _doc2 = _win2.document;
14645      _docElement = _doc2.documentElement;
14646      _tempDiv = _createElement("div") || {
14647        style: {}
14648      };
14649      _tempDivStyler = _createElement("div");
14650      _transformProp = _checkPropPrefix(_transformProp);
14651      _transformOriginProp = _transformProp + "Origin";
14652      _tempDiv.style.cssText = "border-width:0;line-height:0;position:absolute;padding:0";
14653      _supports3D = !!_checkPropPrefix("perspective");
14654      _pluginInitted = 1;
14655    }
14656  };
14657  var _getBBoxHack = function _getBBoxHack2(swapIfPossible) {
14658    var svg = _createElement("svg", this.ownerSVGElement && this.ownerSVGElement.getAttribute("xmlns") || "http://www.w3.org/2000/svg"), oldParent = this.parentNode, oldSibling = this.nextSibling, oldCSS = this.style.cssText, bbox;
14659    _docElement.appendChild(svg);
14660    svg.appendChild(this);
14661    this.style.display = "block";
14662    if (swapIfPossible) {
14663      try {
14664        bbox = this.getBBox();
14665        this._gsapBBox = this.getBBox;
14666        this.getBBox = _getBBoxHack2;
14667      } catch (e) {
14668      }
14669    } else if (this._gsapBBox) {
14670      bbox = this._gsapBBox();
14671    }
14672    if (oldParent) {
14673      if (oldSibling) {
14674        oldParent.insertBefore(this, oldSibling);
14675      } else {
14676        oldParent.appendChild(this);
14677      }
14678    }
14679    _docElement.removeChild(svg);
14680    this.style.cssText = oldCSS;
14681    return bbox;
14682  };
14683  var _getAttributeFallbacks = function _getAttributeFallbacks2(target, attributesArray) {
14684    var i = attributesArray.length;
14685    while (i--) {
14686      if (target.hasAttribute(attributesArray[i])) {
14687        return target.getAttribute(attributesArray[i]);
14688      }
14689    }
14690  };
14691  var _getBBox = function _getBBox2(target) {
14692    var bounds;
14693    try {
14694      bounds = target.getBBox();
14695    } catch (error) {
14696      bounds = _getBBoxHack.call(target, true);
14697    }
14698    bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true));
14699    return bounds && !bounds.width && !bounds.x && !bounds.y ? {
14700      x: +_getAttributeFallbacks(target, ["x", "cx", "x1"]) || 0,
14701      y: +_getAttributeFallbacks(target, ["y", "cy", "y1"]) || 0,
14702      width: 0,
14703      height: 0
14704    } : bounds;
14705  };
14706  var _isSVG = function _isSVG2(e) {
14707    return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));
14708  };
14709  var _removeProperty = function _removeProperty2(target, property) {
14710    if (property) {
14711      var style = target.style;
14712      if (property in _transformProps && property !== _transformOriginProp) {
14713        property = _transformProp;
14714      }
14715      if (style.removeProperty) {
14716        if (property.substr(0, 2) === "ms" || property.substr(0, 6) === "webkit") {
14717          property = "-" + property;
14718        }
14719        style.removeProperty(property.replace(_capsExp, "-$1").toLowerCase());
14720      } else {
14721        style.removeAttribute(property);
14722      }
14723    }
14724  };
14725  var _addNonTweeningPT = function _addNonTweeningPT2(plugin, target, property, beginning, end2, onlySetAtEnd) {
14726    var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);
14727    plugin._pt = pt;
14728    pt.b = beginning;
14729    pt.e = end2;
14730    plugin._props.push(property);
14731    return pt;
14732  };
14733  var _nonConvertibleUnits = {
14734    deg: 1,
14735    rad: 1,
14736    turn: 1
14737  };
14738  var _convertToUnit = function _convertToUnit2(target, property, value, unit) {
14739    var curValue = parseFloat(value) || 0, curUnit = (value + "").trim().substr((curValue + "").length) || "px", style = _tempDiv.style, horizontal = _horizontalExp.test(property), isRootSVG = target.tagName.toLowerCase() === "svg", measureProperty = (isRootSVG ? "client" : "offset") + (horizontal ? "Width" : "Height"), amount = 100, toPixels = unit === "px", toPercent = unit === "%", px, parent, cache, isSVG;
14740    if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {
14741      return curValue;
14742    }
14743    curUnit !== "px" && !toPixels && (curValue = _convertToUnit2(target, property, value, "px"));
14744    isSVG = target.getCTM && _isSVG(target);
14745    if ((toPercent || curUnit === "%") && (_transformProps[property] || ~property.indexOf("adius"))) {
14746      px = isSVG ? target.getBBox()[horizontal ? "width" : "height"] : target[measureProperty];
14747      return _round(toPercent ? curValue / px * amount : curValue / 100 * px);
14748    }
14749    style[horizontal ? "width" : "height"] = amount + (toPixels ? curUnit : unit);
14750    parent = ~property.indexOf("adius") || unit === "em" && target.appendChild && !isRootSVG ? target : target.parentNode;
14751    if (isSVG) {
14752      parent = (target.ownerSVGElement || {}).parentNode;
14753    }
14754    if (!parent || parent === _doc2 || !parent.appendChild) {
14755      parent = _doc2.body;
14756    }
14757    cache = parent._gsap;
14758    if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time) {
14759      return _round(curValue / cache.width * amount);
14760    } else {
14761      (toPercent || curUnit === "%") && (style.position = _getComputedProperty(target, "position"));
14762      parent === target && (style.position = "static");
14763      parent.appendChild(_tempDiv);
14764      px = _tempDiv[measureProperty];
14765      parent.removeChild(_tempDiv);
14766      style.position = "absolute";
14767      if (horizontal && toPercent) {
14768        cache = _getCache(parent);
14769        cache.time = _ticker.time;
14770        cache.width = parent[measureProperty];
14771      }
14772    }
14773    return _round(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);
14774  };
14775  var _get = function _get2(target, property, unit, uncache) {
14776    var value;
14777    _pluginInitted || _initCore();
14778    if (property in _propertyAliases && property !== "transform") {
14779      property = _propertyAliases[property];
14780      if (~property.indexOf(",")) {
14781        property = property.split(",")[0];
14782      }
14783    }
14784    if (_transformProps[property] && property !== "transform") {
14785      value = _parseTransform(target, uncache);
14786      value = property !== "transformOrigin" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + " " + value.zOrigin + "px";
14787    } else {
14788      value = target.style[property];
14789      if (!value || value === "auto" || uncache || ~(value + "").indexOf("calc(")) {
14790        value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === "opacity" ? 1 : 0);
14791      }
14792    }
14793    return unit && !~(value + "").trim().indexOf(" ") ? _convertToUnit(target, property, value, unit) + unit : value;
14794  };
14795  var _tweenComplexCSSString = function _tweenComplexCSSString2(target, prop, start2, end2) {
14796    if (!start2 || start2 === "none") {
14797      var p = _checkPropPrefix(prop, target, 1), s = p && _getComputedProperty(target, p, 1);
14798      if (s && s !== start2) {
14799        prop = p;
14800        start2 = s;
14801      } else if (prop === "borderColor") {
14802        start2 = _getComputedProperty(target, "borderTopColor");
14803      }
14804    }
14805    var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString), index = 0, matchIndex = 0, a, result, startValues, startNum, color, startValue, endValue, endNum, chunk, endUnit, startUnit, endValues;
14806    pt.b = start2;
14807    pt.e = end2;
14808    start2 += "";
14809    end2 += "";
14810    if (end2 === "auto") {
14811      target.style[prop] = end2;
14812      end2 = _getComputedProperty(target, prop) || end2;
14813      target.style[prop] = start2;
14814    }
14815    a = [start2, end2];
14816    _colorStringFilter(a);
14817    start2 = a[0];
14818    end2 = a[1];
14819    startValues = start2.match(_numWithUnitExp) || [];
14820    endValues = end2.match(_numWithUnitExp) || [];
14821    if (endValues.length) {
14822      while (result = _numWithUnitExp.exec(end2)) {
14823        endValue = result[0];
14824        chunk = end2.substring(index, result.index);
14825        if (color) {
14826          color = (color + 1) % 5;
14827        } else if (chunk.substr(-5) === "rgba(" || chunk.substr(-5) === "hsla(") {
14828          color = 1;
14829        }
14830        if (endValue !== (startValue = startValues[matchIndex++] || "")) {
14831          startNum = parseFloat(startValue) || 0;
14832          startUnit = startValue.substr((startNum + "").length);
14833          endValue.charAt(1) === "=" && (endValue = _parseRelative(startNum, endValue) + startUnit);
14834          endNum = parseFloat(endValue);
14835          endUnit = endValue.substr((endNum + "").length);
14836          index = _numWithUnitExp.lastIndex - endUnit.length;
14837          if (!endUnit) {
14838            endUnit = endUnit || _config.units[prop] || startUnit;
14839            if (index === end2.length) {
14840              end2 += endUnit;
14841              pt.e += endUnit;
14842            }
14843          }
14844          if (startUnit !== endUnit) {
14845            startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;
14846          }
14847          pt._pt = {
14848            _next: pt._pt,
14849            p: chunk || matchIndex === 1 ? chunk : ",",
14850            s: startNum,
14851            c: endNum - startNum,
14852            m: color && color < 4 || prop === "zIndex" ? Math.round : 0
14853          };
14854        }
14855      }
14856      pt.c = index < end2.length ? end2.substring(index, end2.length) : "";
14857    } else {
14858      pt.r = prop === "display" && end2 === "none" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;
14859    }
14860    _relExp.test(end2) && (pt.e = 0);
14861    this._pt = pt;
14862    return pt;
14863  };
14864  var _keywordToPercent = {
14865    top: "0%",
14866    bottom: "100%",
14867    left: "0%",
14868    right: "100%",
14869    center: "50%"
14870  };
14871  var _convertKeywordsToPercentages = function _convertKeywordsToPercentages2(value) {
14872    var split2 = value.split(" "), x = split2[0], y = split2[1] || "50%";
14873    if (x === "top" || x === "bottom" || y === "left" || y === "right") {
14874      value = x;
14875      x = y;
14876      y = value;
14877    }
14878    split2[0] = _keywordToPercent[x] || x;
14879    split2[1] = _keywordToPercent[y] || y;
14880    return split2.join(" ");
14881  };
14882  var _renderClearProps = function _renderClearProps2(ratio, data) {
14883    if (data.tween && data.tween._time === data.tween._dur) {
14884      var target = data.t, style = target.style, props = data.u, cache = target._gsap, prop, clearTransforms, i;
14885      if (props === "all" || props === true) {
14886        style.cssText = "";
14887        clearTransforms = 1;
14888      } else {
14889        props = props.split(",");
14890        i = props.length;
14891        while (--i > -1) {
14892          prop = props[i];
14893          if (_transformProps[prop]) {
14894            clearTransforms = 1;
14895            prop = prop === "transformOrigin" ? _transformOriginProp : _transformProp;
14896          }
14897          _removeProperty(target, prop);
14898        }
14899      }
14900      if (clearTransforms) {
14901        _removeProperty(target, _transformProp);
14902        if (cache) {
14903          cache.svg && target.removeAttribute("transform");
14904          _parseTransform(target, 1);
14905          cache.uncache = 1;
14906        }
14907      }
14908    }
14909  };
14910  var _specialProps = {
14911    clearProps: function clearProps(plugin, target, property, endValue, tween) {
14912      if (tween.data !== "isFromStart") {
14913        var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);
14914        pt.u = endValue;
14915        pt.pr = -10;
14916        pt.tween = tween;
14917        plugin._props.push(property);
14918        return 1;
14919      }
14920    }
14921  };
14922  var _identity2DMatrix = [1, 0, 0, 1, 0, 0];
14923  var _rotationalProperties = {};
14924  var _isNullTransform = function _isNullTransform2(value) {
14925    return value === "matrix(1, 0, 0, 1, 0, 0)" || value === "none" || !value;
14926  };
14927  var _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray2(target) {
14928    var matrixString = _getComputedProperty(target, _transformProp);
14929    return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round);
14930  };
14931  var _getMatrix = function _getMatrix2(target, force2D) {
14932    var cache = target._gsap || _getCache(target), style = target.style, matrix = _getComputedTransformMatrixAsArray(target), parent, nextSibling, temp, addedToDOM;
14933    if (cache.svg && target.getAttribute("transform")) {
14934      temp = target.transform.baseVal.consolidate().matrix;
14935      matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];
14936      return matrix.join(",") === "1,0,0,1,0,0" ? _identity2DMatrix : matrix;
14937    } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {
14938      temp = style.display;
14939      style.display = "block";
14940      parent = target.parentNode;
14941      if (!parent || !target.offsetParent) {
14942        addedToDOM = 1;
14943        nextSibling = target.nextSibling;
14944        _docElement.appendChild(target);
14945      }
14946      matrix = _getComputedTransformMatrixAsArray(target);
14947      temp ? style.display = temp : _removeProperty(target, "display");
14948      if (addedToDOM) {
14949        nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);
14950      }
14951    }
14952    return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;
14953  };
14954  var _applySVGOrigin = function _applySVGOrigin2(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {
14955    var cache = target._gsap, matrix = matrixArray || _getMatrix(target, true), xOriginOld = cache.xOrigin || 0, yOriginOld = cache.yOrigin || 0, xOffsetOld = cache.xOffset || 0, yOffsetOld = cache.yOffset || 0, a = matrix[0], b = matrix[1], c = matrix[2], d = matrix[3], tx = matrix[4], ty = matrix[5], originSplit = origin.split(" "), xOrigin = parseFloat(originSplit[0]) || 0, yOrigin = parseFloat(originSplit[1]) || 0, bounds, determinant, x, y;
14956    if (!originIsAbsolute) {
14957      bounds = _getBBox(target);
14958      xOrigin = bounds.x + (~originSplit[0].indexOf("%") ? xOrigin / 100 * bounds.width : xOrigin);
14959      yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf("%") ? yOrigin / 100 * bounds.height : yOrigin);
14960    } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {
14961      x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;
14962      y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;
14963      xOrigin = x;
14964      yOrigin = y;
14965    }
14966    if (smooth || smooth !== false && cache.smooth) {
14967      tx = xOrigin - xOriginOld;
14968      ty = yOrigin - yOriginOld;
14969      cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;
14970      cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;
14971    } else {
14972      cache.xOffset = cache.yOffset = 0;
14973    }
14974    cache.xOrigin = xOrigin;
14975    cache.yOrigin = yOrigin;
14976    cache.smooth = !!smooth;
14977    cache.origin = origin;
14978    cache.originIsAbsolute = !!originIsAbsolute;
14979    target.style[_transformOriginProp] = "0px 0px";
14980    if (pluginToAddPropTweensTo) {
14981      _addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOrigin", xOriginOld, xOrigin);
14982      _addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOrigin", yOriginOld, yOrigin);
14983      _addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOffset", xOffsetOld, cache.xOffset);
14984      _addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOffset", yOffsetOld, cache.yOffset);
14985    }
14986    target.setAttribute("data-svg-origin", xOrigin + " " + yOrigin);
14987  };
14988  var _parseTransform = function _parseTransform2(target, uncache) {
14989    var cache = target._gsap || new GSCache(target);
14990    if ("x" in cache && !uncache && !cache.uncache) {
14991      return cache;
14992    }
14993    var style = target.style, invertedScaleX = cache.scaleX < 0, px = "px", deg = "deg", origin = _getComputedProperty(target, _transformOriginProp) || "0", x, y, z, scaleX, scaleY, rotation, rotationX, rotationY, skewX, skewY, perspective, xOrigin, yOrigin, matrix, angle, cos, sin, a, b, c, d, a12, a22, t1, t2, t3, a13, a23, a33, a42, a43, a32;
14994    x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;
14995    scaleX = scaleY = 1;
14996    cache.svg = !!(target.getCTM && _isSVG(target));
14997    matrix = _getMatrix(target, cache.svg);
14998    if (cache.svg) {
14999      t1 = (!cache.uncache || origin === "0px 0px") && !uncache && target.getAttribute("data-svg-origin");
15000      _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);
15001    }
15002    xOrigin = cache.xOrigin || 0;
15003    yOrigin = cache.yOrigin || 0;
15004    if (matrix !== _identity2DMatrix) {
15005      a = matrix[0];
15006      b = matrix[1];
15007      c = matrix[2];
15008      d = matrix[3];
15009      x = a12 = matrix[4];
15010      y = a22 = matrix[5];
15011      if (matrix.length === 6) {
15012        scaleX = Math.sqrt(a * a + b * b);
15013        scaleY = Math.sqrt(d * d + c * c);
15014        rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0;
15015        skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;
15016        skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));
15017        if (cache.svg) {
15018          x -= xOrigin - (xOrigin * a + yOrigin * c);
15019          y -= yOrigin - (xOrigin * b + yOrigin * d);
15020        }
15021      } else {
15022        a32 = matrix[6];
15023        a42 = matrix[7];
15024        a13 = matrix[8];
15025        a23 = matrix[9];
15026        a33 = matrix[10];
15027        a43 = matrix[11];
15028        x = matrix[12];
15029        y = matrix[13];
15030        z = matrix[14];
15031        angle = _atan2(a32, a33);
15032        rotationX = angle * _RAD2DEG;
15033        if (angle) {
15034          cos = Math.cos(-angle);
15035          sin = Math.sin(-angle);
15036          t1 = a12 * cos + a13 * sin;
15037          t2 = a22 * cos + a23 * sin;
15038          t3 = a32 * cos + a33 * sin;
15039          a13 = a12 * -sin + a13 * cos;
15040          a23 = a22 * -sin + a23 * cos;
15041          a33 = a32 * -sin + a33 * cos;
15042          a43 = a42 * -sin + a43 * cos;
15043          a12 = t1;
15044          a22 = t2;
15045          a32 = t3;
15046        }
15047        angle = _atan2(-c, a33);
15048        rotationY = angle * _RAD2DEG;
15049        if (angle) {
15050          cos = Math.cos(-angle);
15051          sin = Math.sin(-angle);
15052          t1 = a * cos - a13 * sin;
15053          t2 = b * cos - a23 * sin;
15054          t3 = c * cos - a33 * sin;
15055          a43 = d * sin + a43 * cos;
15056          a = t1;
15057          b = t2;
15058          c = t3;
15059        }
15060        angle = _atan2(b, a);
15061        rotation = angle * _RAD2DEG;
15062        if (angle) {
15063          cos = Math.cos(angle);
15064          sin = Math.sin(angle);
15065          t1 = a * cos + b * sin;
15066          t2 = a12 * cos + a22 * sin;
15067          b = b * cos - a * sin;
15068          a22 = a22 * cos - a12 * sin;
15069          a = t1;
15070          a12 = t2;
15071        }
15072        if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {
15073          rotationX = rotation = 0;
15074          rotationY = 180 - rotationY;
15075        }
15076        scaleX = _round(Math.sqrt(a * a + b * b + c * c));
15077        scaleY = _round(Math.sqrt(a22 * a22 + a32 * a32));
15078        angle = _atan2(a12, a22);
15079        skewX = Math.abs(angle) > 2e-4 ? angle * _RAD2DEG : 0;
15080        perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;
15081      }
15082      if (cache.svg) {
15083        t1 = target.getAttribute("transform");
15084        cache.forceCSS = target.setAttribute("transform", "") || !_isNullTransform(_getComputedProperty(target, _transformProp));
15085        t1 && target.setAttribute("transform", t1);
15086      }
15087    }
15088    if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {
15089      if (invertedScaleX) {
15090        scaleX *= -1;
15091        skewX += rotation <= 0 ? 180 : -180;
15092        rotation += rotation <= 0 ? 180 : -180;
15093      } else {
15094        scaleY *= -1;
15095        skewX += skewX <= 0 ? 180 : -180;
15096      }
15097    }
15098    uncache = uncache || cache.uncache;
15099    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;
15100    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;
15101    cache.z = z + px;
15102    cache.scaleX = _round(scaleX);
15103    cache.scaleY = _round(scaleY);
15104    cache.rotation = _round(rotation) + deg;
15105    cache.rotationX = _round(rotationX) + deg;
15106    cache.rotationY = _round(rotationY) + deg;
15107    cache.skewX = skewX + deg;
15108    cache.skewY = skewY + deg;
15109    cache.transformPerspective = perspective + px;
15110    if (cache.zOrigin = parseFloat(origin.split(" ")[2]) || 0) {
15111      style[_transformOriginProp] = _firstTwoOnly(origin);
15112    }
15113    cache.xOffset = cache.yOffset = 0;
15114    cache.force3D = _config.force3D;
15115    cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;
15116    cache.uncache = 0;
15117    return cache;
15118  };
15119  var _firstTwoOnly = function _firstTwoOnly2(value) {
15120    return (value = value.split(" "))[0] + " " + value[1];
15121  };
15122  var _addPxTranslate = function _addPxTranslate2(target, start2, value) {
15123    var unit = getUnit(start2);
15124    return _round(parseFloat(start2) + parseFloat(_convertToUnit(target, "x", value + "px", unit))) + unit;
15125  };
15126  var _renderNon3DTransforms = function _renderNon3DTransforms2(ratio, cache) {
15127    cache.z = "0px";
15128    cache.rotationY = cache.rotationX = "0deg";
15129    cache.force3D = 0;
15130    _renderCSSTransforms(ratio, cache);
15131  };
15132  var _zeroDeg = "0deg";
15133  var _zeroPx = "0px";
15134  var _endParenthesis = ") ";
15135  var _renderCSSTransforms = function _renderCSSTransforms2(ratio, cache) {
15136    var _ref = cache || this, xPercent = _ref.xPercent, yPercent = _ref.yPercent, x = _ref.x, y = _ref.y, z = _ref.z, rotation = _ref.rotation, rotationY = _ref.rotationY, rotationX = _ref.rotationX, skewX = _ref.skewX, skewY = _ref.skewY, scaleX = _ref.scaleX, scaleY = _ref.scaleY, transformPerspective = _ref.transformPerspective, force3D = _ref.force3D, target = _ref.target, zOrigin = _ref.zOrigin, transforms = "", use3D = force3D === "auto" && ratio && ratio !== 1 || force3D === true;
15137    if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {
15138      var angle = parseFloat(rotationY) * _DEG2RAD, a13 = Math.sin(angle), a33 = Math.cos(angle), cos;
15139      angle = parseFloat(rotationX) * _DEG2RAD;
15140      cos = Math.cos(angle);
15141      x = _addPxTranslate(target, x, a13 * cos * -zOrigin);
15142      y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);
15143      z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);
15144    }
15145    if (transformPerspective !== _zeroPx) {
15146      transforms += "perspective(" + transformPerspective + _endParenthesis;
15147    }
15148    if (xPercent || yPercent) {
15149      transforms += "translate(" + xPercent + "%, " + yPercent + "%) ";
15150    }
15151    if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {
15152      transforms += z !== _zeroPx || use3D ? "translate3d(" + x + ", " + y + ", " + z + ") " : "translate(" + x + ", " + y + _endParenthesis;
15153    }
15154    if (rotation !== _zeroDeg) {
15155      transforms += "rotate(" + rotation + _endParenthesis;
15156    }
15157    if (rotationY !== _zeroDeg) {
15158      transforms += "rotateY(" + rotationY + _endParenthesis;
15159    }
15160    if (rotationX !== _zeroDeg) {
15161      transforms += "rotateX(" + rotationX + _endParenthesis;
15162    }
15163    if (skewX !== _zeroDeg || skewY !== _zeroDeg) {
15164      transforms += "skew(" + skewX + ", " + skewY + _endParenthesis;
15165    }
15166    if (scaleX !== 1 || scaleY !== 1) {
15167      transforms += "scale(" + scaleX + ", " + scaleY + _endParenthesis;
15168    }
15169    target.style[_transformProp] = transforms || "translate(0, 0)";
15170  };
15171  var _renderSVGTransforms = function _renderSVGTransforms2(ratio, cache) {
15172    var _ref2 = cache || this, xPercent = _ref2.xPercent, yPercent = _ref2.yPercent, x = _ref2.x, y = _ref2.y, rotation = _ref2.rotation, skewX = _ref2.skewX, skewY = _ref2.skewY, scaleX = _ref2.scaleX, scaleY = _ref2.scaleY, target = _ref2.target, xOrigin = _ref2.xOrigin, yOrigin = _ref2.yOrigin, xOffset = _ref2.xOffset, yOffset = _ref2.yOffset, forceCSS = _ref2.forceCSS, tx = parseFloat(x), ty = parseFloat(y), a11, a21, a12, a22, temp;
15173    rotation = parseFloat(rotation);
15174    skewX = parseFloat(skewX);
15175    skewY = parseFloat(skewY);
15176    if (skewY) {
15177      skewY = parseFloat(skewY);
15178      skewX += skewY;
15179      rotation += skewY;
15180    }
15181    if (rotation || skewX) {
15182      rotation *= _DEG2RAD;
15183      skewX *= _DEG2RAD;
15184      a11 = Math.cos(rotation) * scaleX;
15185      a21 = Math.sin(rotation) * scaleX;
15186      a12 = Math.sin(rotation - skewX) * -scaleY;
15187      a22 = Math.cos(rotation - skewX) * scaleY;
15188      if (skewX) {
15189        skewY *= _DEG2RAD;
15190        temp = Math.tan(skewX - skewY);
15191        temp = Math.sqrt(1 + temp * temp);
15192        a12 *= temp;
15193        a22 *= temp;
15194        if (skewY) {
15195          temp = Math.tan(skewY);
15196          temp = Math.sqrt(1 + temp * temp);
15197          a11 *= temp;
15198          a21 *= temp;
15199        }
15200      }
15201      a11 = _round(a11);
15202      a21 = _round(a21);
15203      a12 = _round(a12);
15204      a22 = _round(a22);
15205    } else {
15206      a11 = scaleX;
15207      a22 = scaleY;
15208      a21 = a12 = 0;
15209    }
15210    if (tx && !~(x + "").indexOf("px") || ty && !~(y + "").indexOf("px")) {
15211      tx = _convertToUnit(target, "x", x, "px");
15212      ty = _convertToUnit(target, "y", y, "px");
15213    }
15214    if (xOrigin || yOrigin || xOffset || yOffset) {
15215      tx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);
15216      ty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);
15217    }
15218    if (xPercent || yPercent) {
15219      temp = target.getBBox();
15220      tx = _round(tx + xPercent / 100 * temp.width);
15221      ty = _round(ty + yPercent / 100 * temp.height);
15222    }
15223    temp = "matrix(" + a11 + "," + a21 + "," + a12 + "," + a22 + "," + tx + "," + ty + ")";
15224    target.setAttribute("transform", temp);
15225    forceCSS && (target.style[_transformProp] = temp);
15226  };
15227  var _addRotationalPropTween = function _addRotationalPropTween2(plugin, target, property, startNum, endValue) {
15228    var cap = 360, isString2 = _isString(endValue), endNum = parseFloat(endValue) * (isString2 && ~endValue.indexOf("rad") ? _RAD2DEG : 1), change = endNum - startNum, finalValue = startNum + change + "deg", direction, pt;
15229    if (isString2) {
15230      direction = endValue.split("_")[1];
15231      if (direction === "short") {
15232        change %= cap;
15233        if (change !== change % (cap / 2)) {
15234          change += change < 0 ? cap : -cap;
15235        }
15236      }
15237      if (direction === "cw" && change < 0) {
15238        change = (change + cap * _bigNum2) % cap - ~~(change / cap) * cap;
15239      } else if (direction === "ccw" && change > 0) {
15240        change = (change - cap * _bigNum2) % cap - ~~(change / cap) * cap;
15241      }
15242    }
15243    plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);
15244    pt.e = finalValue;
15245    pt.u = "deg";
15246    plugin._props.push(property);
15247    return pt;
15248  };
15249  var _assign = function _assign2(target, source) {
15250    for (var p in source) {
15251      target[p] = source[p];
15252    }
15253    return target;
15254  };
15255  var _addRawTransformPTs = function _addRawTransformPTs2(plugin, transforms, target) {
15256    var startCache = _assign({}, target._gsap), exclude = "perspective,force3D,transformOrigin,svgOrigin", style = target.style, endCache, p, startValue, endValue, startNum, endNum, startUnit, endUnit;
15257    if (startCache.svg) {
15258      startValue = target.getAttribute("transform");
15259      target.setAttribute("transform", "");
15260      style[_transformProp] = transforms;
15261      endCache = _parseTransform(target, 1);
15262      _removeProperty(target, _transformProp);
15263      target.setAttribute("transform", startValue);
15264    } else {
15265      startValue = getComputedStyle(target)[_transformProp];
15266      style[_transformProp] = transforms;
15267      endCache = _parseTransform(target, 1);
15268      style[_transformProp] = startValue;
15269    }
15270    for (p in _transformProps) {
15271      startValue = startCache[p];
15272      endValue = endCache[p];
15273      if (startValue !== endValue && exclude.indexOf(p) < 0) {
15274        startUnit = getUnit(startValue);
15275        endUnit = getUnit(endValue);
15276        startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);
15277        endNum = parseFloat(endValue);
15278        plugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);
15279        plugin._pt.u = endUnit || 0;
15280        plugin._props.push(p);
15281      }
15282    }
15283    _assign(endCache, startCache);
15284  };
15285  _forEachName("padding,margin,Width,Radius", function(name, index) {
15286    var t = "Top", r = "Right", b = "Bottom", l = "Left", props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function(side) {
15287      return index < 2 ? name + side : "border" + side + name;
15288    });
15289    _specialProps[index > 1 ? "border" + name : name] = function(plugin, target, property, endValue, tween) {
15290      var a, vars;
15291      if (arguments.length < 4) {
15292        a = props.map(function(prop) {
15293          return _get(plugin, prop, property);
15294        });
15295        vars = a.join(" ");
15296        return vars.split(a[0]).length === 5 ? a[0] : vars;
15297      }
15298      a = (endValue + "").split(" ");
15299      vars = {};
15300      props.forEach(function(prop, i) {
15301        return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];
15302      });
15303      plugin.init(target, vars, tween);
15304    };
15305  });
15306  var CSSPlugin = {
15307    name: "css",
15308    register: _initCore,
15309    targetTest: function targetTest(target) {
15310      return target.style && target.nodeType;
15311    },
15312    init: function init3(target, vars, tween, index, targets) {
15313      var props = this._props, style = target.style, startAt = tween.vars.startAt, startValue, endValue, endNum, startNum, type, specialProp, p, startUnit, endUnit, relative, isTransformRelated, transformPropTween, cache, smooth, hasPriority;
15314      _pluginInitted || _initCore();
15315      for (p in vars) {
15316        if (p === "autoRound") {
15317          continue;
15318        }
15319        endValue = vars[p];
15320        if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) {
15321          continue;
15322        }
15323        type = typeof endValue;
15324        specialProp = _specialProps[p];
15325        if (type === "function") {
15326          endValue = endValue.call(tween, index, target, targets);
15327          type = typeof endValue;
15328        }
15329        if (type === "string" && ~endValue.indexOf("random(")) {
15330          endValue = _replaceRandom(endValue);
15331        }
15332        if (specialProp) {
15333          specialProp(this, target, p, endValue, tween) && (hasPriority = 1);
15334        } else if (p.substr(0, 2) === "--") {
15335          startValue = (getComputedStyle(target).getPropertyValue(p) + "").trim();
15336          endValue += "";
15337          _colorExp.lastIndex = 0;
15338          if (!_colorExp.test(startValue)) {
15339            startUnit = getUnit(startValue);
15340            endUnit = getUnit(endValue);
15341          }
15342          endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);
15343          this.add(style, "setProperty", startValue, endValue, index, targets, 0, 0, p);
15344          props.push(p);
15345        } else if (type !== "undefined") {
15346          if (startAt && p in startAt) {
15347            startValue = typeof startAt[p] === "function" ? startAt[p].call(tween, index, target, targets) : startAt[p];
15348            _isString(startValue) && ~startValue.indexOf("random(") && (startValue = _replaceRandom(startValue));
15349            getUnit(startValue + "") || (startValue += _config.units[p] || getUnit(_get(target, p)) || "");
15350            (startValue + "").charAt(1) === "=" && (startValue = _get(target, p));
15351          } else {
15352            startValue = _get(target, p);
15353          }
15354          startNum = parseFloat(startValue);
15355          relative = type === "string" && endValue.charAt(1) === "=" && endValue.substr(0, 2);
15356          relative && (endValue = endValue.substr(2));
15357          endNum = parseFloat(endValue);
15358          if (p in _propertyAliases) {
15359            if (p === "autoAlpha") {
15360              if (startNum === 1 && _get(target, "visibility") === "hidden" && endNum) {
15361                startNum = 0;
15362              }
15363              _addNonTweeningPT(this, style, "visibility", startNum ? "inherit" : "hidden", endNum ? "inherit" : "hidden", !endNum);
15364            }
15365            if (p !== "scale" && p !== "transform") {
15366              p = _propertyAliases[p];
15367              ~p.indexOf(",") && (p = p.split(",")[0]);
15368            }
15369          }
15370          isTransformRelated = p in _transformProps;
15371          if (isTransformRelated) {
15372            if (!transformPropTween) {
15373              cache = target._gsap;
15374              cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform);
15375              smooth = vars.smoothOrigin !== false && cache.smooth;
15376              transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1);
15377              transformPropTween.dep = 1;
15378            }
15379            if (p === "scale") {
15380              this._pt = new PropTween(this._pt, cache, "scaleY", cache.scaleY, (relative ? _parseRelative(cache.scaleY, relative + endNum) : endNum) - cache.scaleY || 0);
15381              props.push("scaleY", p);
15382              p += "X";
15383            } else if (p === "transformOrigin") {
15384              endValue = _convertKeywordsToPercentages(endValue);
15385              if (cache.svg) {
15386                _applySVGOrigin(target, endValue, 0, smooth, 0, this);
15387              } else {
15388                endUnit = parseFloat(endValue.split(" ")[2]) || 0;
15389                endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, "zOrigin", cache.zOrigin, endUnit);
15390                _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));
15391              }
15392              continue;
15393            } else if (p === "svgOrigin") {
15394              _applySVGOrigin(target, endValue, 1, smooth, 0, this);
15395              continue;
15396            } else if (p in _rotationalProperties) {
15397              _addRotationalPropTween(this, cache, p, startNum, relative ? _parseRelative(startNum, relative + endValue) : endValue);
15398              continue;
15399            } else if (p === "smoothOrigin") {
15400              _addNonTweeningPT(this, cache, "smooth", cache.smooth, endValue);
15401              continue;
15402            } else if (p === "force3D") {
15403              cache[p] = endValue;
15404              continue;
15405            } else if (p === "transform") {
15406              _addRawTransformPTs(this, endValue, target);
15407              continue;
15408            }
15409          } else if (!(p in style)) {
15410            p = _checkPropPrefix(p) || p;
15411          }
15412          if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {
15413            startUnit = (startValue + "").substr((startNum + "").length);
15414            endNum || (endNum = 0);
15415            endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit);
15416            startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));
15417            this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, (relative ? _parseRelative(startNum, relative + endNum) : endNum) - startNum, !isTransformRelated && (endUnit === "px" || p === "zIndex") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp);
15418            this._pt.u = endUnit || 0;
15419            if (startUnit !== endUnit && endUnit !== "%") {
15420              this._pt.b = startValue;
15421              this._pt.r = _renderCSSPropWithBeginning;
15422            }
15423          } else if (!(p in style)) {
15424            if (p in target) {
15425              this.add(target, p, startValue || target[p], relative ? relative + endValue : endValue, index, targets);
15426            } else {
15427              _missingPlugin(p, endValue);
15428              continue;
15429            }
15430          } else {
15431            _tweenComplexCSSString.call(this, target, p, startValue, relative ? relative + endValue : endValue);
15432          }
15433          props.push(p);
15434        }
15435      }
15436      hasPriority && _sortPropTweensByPriority(this);
15437    },
15438    get: _get,
15439    aliases: _propertyAliases,
15440    getSetter: function getSetter(target, property, plugin) {
15441      var p = _propertyAliases[property];
15442      p && p.indexOf(",") < 0 && (property = p);
15443      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 && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf("-") ? _setterCSSProp : _getSetter(target, property);
15444    },
15445    core: {
15446      _removeProperty,
15447      _getMatrix
15448    }
15449  };
15450  gsap.utils.checkPrefix = _checkPropPrefix;
15451  (function(positionAndScale, rotation, others, aliases) {
15452    var all = _forEachName(positionAndScale + "," + rotation + "," + others, function(name) {
15453      _transformProps[name] = 1;
15454    });
15455    _forEachName(rotation, function(name) {
15456      _config.units[name] = "deg";
15457      _rotationalProperties[name] = 1;
15458    });
15459    _propertyAliases[all[13]] = positionAndScale + "," + rotation;
15460    _forEachName(aliases, function(name) {
15461      var split2 = name.split(":");
15462      _propertyAliases[split2[1]] = all[split2[0]];
15463    });
15464  })("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");
15465  _forEachName("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective", function(name) {
15466    _config.units[name] = "px";
15467  });
15468  gsap.registerPlugin(CSSPlugin);
15469
15470  
vendor: 141 bytes, lines 15470-15474
15470// node_modules/gsap/index.js
15471  var gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap;
15472  var TweenMaxWithCSS = gsapWithCSS.core.Tween;
15473
15474  
vendor: 20,772 bytes, lines 15474-15935
15474// node_modules/gsap/Observer.js
15475  function _defineProperties(target, props) {
15476    for (var i = 0; i < props.length; i++) {
15477      var descriptor = props[i];
15478      descriptor.enumerable = descriptor.enumerable || false;
15479      descriptor.configurable = true;
15480      if ("value" in descriptor)
15481        descriptor.writable = true;
15482      Object.defineProperty(target, descriptor.key, descriptor);
15483    }
15484  }
15485  function _createClass(Constructor, protoProps, staticProps) {
15486    if (protoProps)
15487      _defineProperties(Constructor.prototype, protoProps);
15488    if (staticProps)
15489      _defineProperties(Constructor, staticProps);
15490    return Constructor;
15491  }
15492  var gsap2;
15493  var _coreInitted2;
15494  var _clamp3;
15495  var _win3;
15496  var _doc3;
15497  var _docEl;
15498  var _body;
15499  var _isTouch;
15500  var _pointerType;
15501  var ScrollTrigger;
15502  var _root;
15503  var _normalizer;
15504  var _eventTypes;
15505  var _getGSAP = function _getGSAP2() {
15506    return gsap2 || typeof window !== "undefined" && (gsap2 = window.gsap) && gsap2.registerPlugin && gsap2;
15507  };
15508  var _startup = 1;
15509  var _observers = [];
15510  var _scrollers = [];
15511  var _proxies = [];
15512  var _getTime = Date.now;
15513  var _bridge = function _bridge2(name, value) {
15514    return value;
15515  };
15516  var _integrate = function _integrate2() {
15517    var core = ScrollTrigger.core, data = core.bridge || {}, scrollers = core._scrollers, proxies = core._proxies;
15518    scrollers.push.apply(scrollers, _scrollers);
15519    proxies.push.apply(proxies, _proxies);
15520    _scrollers = scrollers;
15521    _proxies = proxies;
15522    _bridge = function _bridge3(name, value) {
15523      return data[name](value);
15524    };
15525  };
15526  var _getProxyProp = function _getProxyProp2(element, property) {
15527    return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property];
15528  };
15529  var _isViewport = function _isViewport2(el) {
15530    return !!~_root.indexOf(el);
15531  };
15532  var _addListener = function _addListener2(element, type, func, nonPassive, capture) {
15533    return element.addEventListener(type, func, {
15534      passive: !nonPassive,
15535      capture: !!capture
15536    });
15537  };
15538  var _removeListener = function _removeListener2(element, type, func, capture) {
15539    return element.removeEventListener(type, func, !!capture);
15540  };
15541  var _scrollLeft = "scrollLeft";
15542  var _scrollTop = "scrollTop";
15543  var _onScroll = function _onScroll2() {
15544    return _normalizer && _normalizer.isPressed || _scrollers.cache++;
15545  };
15546  var _scrollCacheFunc = function _scrollCacheFunc2(f, doNotCache) {
15547    var cachingFunc = function cachingFunc2(value) {
15548      if (value || value === 0) {
15549        _startup && (_win3.history.scrollRestoration = "manual");
15550        var isNormalizing = _normalizer && _normalizer.isPressed;
15551        value = cachingFunc2.v = Math.round(value) || (_normalizer && _normalizer.iOS ? 1 : 0);
15552        f(value);
15553        cachingFunc2.cacheID = _scrollers.cache;
15554        isNormalizing && _bridge("ss", value);
15555      } else if (doNotCache || _scrollers.cache !== cachingFunc2.cacheID || _bridge("ref")) {
15556        cachingFunc2.cacheID = _scrollers.cache;
15557        cachingFunc2.v = f();
15558      }
15559      return cachingFunc2.v + cachingFunc2.offset;
15560    };
15561    cachingFunc.offset = 0;
15562    return f && cachingFunc;
15563  };
15564  var _horizontal = {
15565    s: _scrollLeft,
15566    p: "left",
15567    p2: "Left",
15568    os: "right",
15569    os2: "Right",
15570    d: "width",
15571    d2: "Width",
15572    a: "x",
15573    sc: _scrollCacheFunc(function(value) {
15574      return arguments.length ? _win3.scrollTo(value, _vertical.sc()) : _win3.pageXOffset || _doc3[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0;
15575    })
15576  };
15577  var _vertical = {
15578    s: _scrollTop,
15579    p: "top",
15580    p2: "Top",
15581    os: "bottom",
15582    os2: "Bottom",
15583    d: "height",
15584    d2: "Height",
15585    a: "y",
15586    op: _horizontal,
15587    sc: _scrollCacheFunc(function(value) {
15588      return arguments.length ? _win3.scrollTo(_horizontal.sc(), value) : _win3.pageYOffset || _doc3[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0;
15589    })
15590  };
15591  var _getTarget = function _getTarget2(t) {
15592    return gsap2.utils.toArray(t)[0] || (typeof t === "string" && gsap2.config().nullTargetWarn !== false ? console.warn("Element not found:", t) : null);
15593  };
15594  var _getScrollFunc = function _getScrollFunc2(element, _ref) {
15595    var s = _ref.s, sc = _ref.sc;
15596    var i = _scrollers.indexOf(element), offset2 = sc === _vertical.sc ? 1 : 2;
15597    !~i && (i = _scrollers.push(element) - 1);
15598    return _scrollers[i + offset2] || (_scrollers[i + offset2] = _scrollCacheFunc(_getProxyProp(element, s), true) || (_isViewport(element) ? sc : _scrollCacheFunc(function(value) {
15599      return arguments.length ? element[s] = value : element[s];
15600    })));
15601  };
15602  var _getVelocityProp = function _getVelocityProp2(value, minTimeRefresh, useDelta) {
15603    var v1 = value, v2 = value, t1 = _getTime(), t2 = t1, min2 = minTimeRefresh || 50, dropToZeroTime = Math.max(500, min2 * 3), update = function update2(value2, force) {
15604      var t = _getTime();
15605      if (force || t - t1 > min2) {
15606        v2 = v1;
15607        v1 = value2;
15608        t2 = t1;
15609        t1 = t;
15610      } else if (useDelta) {
15611        v1 += value2;
15612      } else {
15613        v1 = v2 + (value2 - v2) / (t - t2) * (t1 - t2);
15614      }
15615    }, reset = function reset2() {
15616      v2 = v1 = useDelta ? 0 : v1;
15617      t2 = t1 = 0;
15618    }, getVelocity = function getVelocity2(latestValue) {
15619      var tOld = t2, vOld = v2, t = _getTime();
15620      (latestValue || latestValue === 0) && latestValue !== v1 && update(latestValue);
15621      return t1 === t2 || t - t2 > dropToZeroTime ? 0 : (v1 + (useDelta ? vOld : -vOld)) / ((useDelta ? t : t1) - tOld) * 1e3;
15622    };
15623    return {
15624      update,
15625      reset,
15626      getVelocity
15627    };
15628  };
15629  var _getEvent = function _getEvent2(e, preventDefault) {
15630    preventDefault && !e._gsapAllow && e.preventDefault();
15631    return e.changedTouches ? e.changedTouches[0] : e;
15632  };
15633  var _getAbsoluteMax = function _getAbsoluteMax2(a) {
15634    var max2 = Math.max.apply(Math, a), min2 = Math.min.apply(Math, a);
15635    return Math.abs(max2) >= Math.abs(min2) ? max2 : min2;
15636  };
15637  var _setScrollTrigger = function _setScrollTrigger2() {
15638    ScrollTrigger = gsap2.core.globals().ScrollTrigger;
15639    ScrollTrigger && ScrollTrigger.core && _integrate();
15640  };
15641  var _initCore3 = function _initCore4(core) {
15642    gsap2 = core || _getGSAP();
15643    if (gsap2 && typeof document !== "undefined" && document.body) {
15644      _win3 = window;
15645      _doc3 = document;
15646      _docEl = _doc3.documentElement;
15647      _body = _doc3.body;
15648      _root = [_win3, _doc3, _docEl, _body];
15649      _clamp3 = gsap2.utils.clamp;
15650      _pointerType = "onpointerenter" in _body ? "pointer" : "mouse";
15651      _isTouch = Observer.isTouch = _win3.matchMedia && _win3.matchMedia("(hover: none), (pointer: coarse)").matches ? 1 : "ontouchstart" in _win3 || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 ? 2 : 0;
15652      _eventTypes = Observer.eventTypes = ("ontouchstart" in _docEl ? "touchstart,touchmove,touchcancel,touchend" : !("onpointerdown" in _docEl) ? "mousedown,mousemove,mouseup,mouseup" : "pointerdown,pointermove,pointercancel,pointerup").split(",");
15653      setTimeout(function() {
15654        return _startup = 0;
15655      }, 500);
15656      _setScrollTrigger();
15657      _coreInitted2 = 1;
15658    }
15659    return _coreInitted2;
15660  };
15661  _horizontal.op = _vertical;
15662  _scrollers.cache = 0;
15663  var Observer = /* @__PURE__ */ function() {
15664    function Observer2(vars) {
15665      this.init(vars);
15666    }
15667    var _proto = Observer2.prototype;
15668    _proto.init = function init7(vars) {
15669      _coreInitted2 || _initCore3(gsap2) || console.warn("Please gsap.registerPlugin(Observer)");
15670      ScrollTrigger || _setScrollTrigger();
15671      var tolerance = vars.tolerance, dragMinimum = vars.dragMinimum, type = vars.type, target = vars.target, lineHeight = vars.lineHeight, debounce3 = vars.debounce, preventDefault = vars.preventDefault, onStop = vars.onStop, onStopDelay = vars.onStopDelay, ignore = vars.ignore, wheelSpeed = vars.wheelSpeed, event = vars.event, onDragStart = vars.onDragStart, onDragEnd = vars.onDragEnd, onDrag = vars.onDrag, onPress = vars.onPress, onRelease = vars.onRelease, onRight = vars.onRight, onLeft = vars.onLeft, onUp = vars.onUp, onDown = vars.onDown, onChangeX = vars.onChangeX, onChangeY = vars.onChangeY, onChange = vars.onChange, onToggleX = vars.onToggleX, onToggleY = vars.onToggleY, onHover = vars.onHover, onHoverEnd = vars.onHoverEnd, onMove = vars.onMove, ignoreCheck = vars.ignoreCheck, isNormalizer = vars.isNormalizer, onGestureStart = vars.onGestureStart, onGestureEnd = vars.onGestureEnd, onWheel = vars.onWheel, onEnable = vars.onEnable, onDisable = vars.onDisable, onClick = vars.onClick, scrollSpeed = vars.scrollSpeed, capture = vars.capture, allowClicks = vars.allowClicks, lockAxis = vars.lockAxis, onLockAxis = vars.onLockAxis;
15672      this.target = target = _getTarget(target) || _docEl;
15673      this.vars = vars;
15674      ignore && (ignore = gsap2.utils.toArray(ignore));
15675      tolerance = tolerance || 0;
15676      dragMinimum = dragMinimum || 0;
15677      wheelSpeed = wheelSpeed || 1;
15678      scrollSpeed = scrollSpeed || 1;
15679      type = type || "wheel,touch,pointer";
15680      debounce3 = debounce3 !== false;
15681      lineHeight || (lineHeight = parseFloat(_win3.getComputedStyle(_body).lineHeight) || 22);
15682      var id, onStopDelayedCall, dragged, moved, wheeled, locked, axis, self2 = this, prevDeltaX = 0, prevDeltaY = 0, scrollFuncX = _getScrollFunc(target, _horizontal), scrollFuncY = _getScrollFunc(target, _vertical), scrollX = scrollFuncX(), scrollY = scrollFuncY(), limitToTouch = ~type.indexOf("touch") && !~type.indexOf("pointer") && _eventTypes[0] === "pointerdown", isViewport = _isViewport(target), ownerDoc = target.ownerDocument || _doc3, deltaX = [0, 0, 0], deltaY = [0, 0, 0], onClickTime = 0, clickCapture = function clickCapture2() {
15683        return onClickTime = _getTime();
15684      }, _ignoreCheck = function _ignoreCheck2(e, isPointerOrTouch) {
15685        return (self2.event = e) && ignore && ~ignore.indexOf(e.target) || isPointerOrTouch && limitToTouch && e.pointerType !== "touch" || ignoreCheck && ignoreCheck(e, isPointerOrTouch);
15686      }, onStopFunc = function onStopFunc2() {
15687        self2._vx.reset();
15688        self2._vy.reset();
15689        onStopDelayedCall.pause();
15690        onStop && onStop(self2);
15691      }, update = function update2() {
15692        var dx = self2.deltaX = _getAbsoluteMax(deltaX), dy = self2.deltaY = _getAbsoluteMax(deltaY), changedX = Math.abs(dx) >= tolerance, changedY = Math.abs(dy) >= tolerance;
15693        onChange && (changedX || changedY) && onChange(self2, dx, dy, deltaX, deltaY);
15694        if (changedX) {
15695          onRight && self2.deltaX > 0 && onRight(self2);
15696          onLeft && self2.deltaX < 0 && onLeft(self2);
15697          onChangeX && onChangeX(self2);
15698          onToggleX && self2.deltaX < 0 !== prevDeltaX < 0 && onToggleX(self2);
15699          prevDeltaX = self2.deltaX;
15700          deltaX[0] = deltaX[1] = deltaX[2] = 0;
15701        }
15702        if (changedY) {
15703          onDown && self2.deltaY > 0 && onDown(self2);
15704          onUp && self2.deltaY < 0 && onUp(self2);
15705          onChangeY && onChangeY(self2);
15706          onToggleY && self2.deltaY < 0 !== prevDeltaY < 0 && onToggleY(self2);
15707          prevDeltaY = self2.deltaY;
15708          deltaY[0] = deltaY[1] = deltaY[2] = 0;
15709        }
15710        if (moved || dragged) {
15711          onMove && onMove(self2);
15712          onLockAxis && locked && onLockAxis(self2);
15713          if (dragged) {
15714            onDrag(self2);
15715            dragged = false;
15716          }
15717          moved = locked = false;
15718        }
15719        if (wheeled) {
15720          onWheel(self2);
15721          wheeled = false;
15722        }
15723        id = 0;
15724      }, onDelta = function onDelta2(x, y, index) {
15725        deltaX[index] += x;
15726        deltaY[index] += y;
15727        self2._vx.update(x);
15728        self2._vy.update(y);
15729        debounce3 ? id || (id = requestAnimationFrame(update)) : update();
15730      }, onTouchOrPointerDelta = function onTouchOrPointerDelta2(x, y) {
15731        if (axis !== "y") {
15732          deltaX[2] += x;
15733          self2._vx.update(x, true);
15734        }
15735        if (axis !== "x") {
15736          deltaY[2] += y;
15737          self2._vy.update(y, true);
15738        }
15739        if (lockAxis && !axis) {
15740          self2.axis = axis = Math.abs(x) > Math.abs(y) ? "x" : "y";
15741          locked = true;
15742        }
15743        debounce3 ? id || (id = requestAnimationFrame(update)) : update();
15744      }, _onDrag = function _onDrag2(e) {
15745        if (_ignoreCheck(e, 1)) {
15746          return;
15747        }
15748        e = _getEvent(e, preventDefault);
15749        var x = e.clientX, y = e.clientY, dx = x - self2.x, dy = y - self2.y, isDragging = self2.isDragging;
15750        self2.x = x;
15751        self2.y = y;
15752        if (isDragging || Math.abs(self2.startX - x) >= dragMinimum || Math.abs(self2.startY - y) >= dragMinimum) {
15753          onDrag && (dragged = true);
15754          isDragging || (self2.isDragging = true);
15755          onTouchOrPointerDelta(dx, dy);
15756          isDragging || onDragStart && onDragStart(self2);
15757        }
15758      }, _onPress = self2.onPress = function(e) {
15759        if (_ignoreCheck(e, 1)) {
15760          return;
15761        }
15762        self2.axis = axis = null;
15763        onStopDelayedCall.pause();
15764        self2.isPressed = true;
15765        e = _getEvent(e);
15766        prevDeltaX = prevDeltaY = 0;
15767        self2.startX = self2.x = e.clientX;
15768        self2.startY = self2.y = e.clientY;
15769        self2._vx.reset();
15770        self2._vy.reset();
15771        _addListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, preventDefault, true);
15772        self2.deltaX = self2.deltaY = 0;
15773        onPress && onPress(self2);
15774      }, _onRelease = function _onRelease2(e) {
15775        if (_ignoreCheck(e, 1)) {
15776          return;
15777        }
15778        _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);
15779        var wasDragging = self2.isDragging && (Math.abs(self2.x - self2.startX) > 3 || Math.abs(self2.y - self2.startY) > 3), eventData = _getEvent(e);
15780        if (!wasDragging) {
15781          self2._vx.reset();
15782          self2._vy.reset();
15783          if (preventDefault && allowClicks) {
15784            gsap2.delayedCall(0.08, function() {
15785              if (_getTime() - onClickTime > 300 && !e.defaultPrevented) {
15786                if (e.target.click) {
15787                  e.target.click();
15788                } else if (ownerDoc.createEvent) {
15789                  var syntheticEvent = ownerDoc.createEvent("MouseEvents");
15790                  syntheticEvent.initMouseEvent("click", true, true, _win3, 1, eventData.screenX, eventData.screenY, eventData.clientX, eventData.clientY, false, false, false, false, 0, null);
15791                  e.target.dispatchEvent(syntheticEvent);
15792                }
15793              }
15794            });
15795          }
15796        }
15797        self2.isDragging = self2.isGesturing = self2.isPressed = false;
15798        onStop && !isNormalizer && onStopDelayedCall.restart(true);
15799        onDragEnd && wasDragging && onDragEnd(self2);
15800        onRelease && onRelease(self2, wasDragging);
15801      }, _onGestureStart = function _onGestureStart2(e) {
15802        return e.touches && e.touches.length > 1 && (self2.isGesturing = true) && onGestureStart(e, self2.isDragging);
15803      }, _onGestureEnd = function _onGestureEnd2() {
15804        return (self2.isGesturing = false) || onGestureEnd(self2);
15805      }, onScroll = function onScroll2(e) {
15806        if (_ignoreCheck(e)) {
15807          return;
15808        }
15809        var x = scrollFuncX(), y = scrollFuncY();
15810        onDelta((x - scrollX) * scrollSpeed, (y - scrollY) * scrollSpeed, 1);
15811        scrollX = x;
15812        scrollY = y;
15813        onStop && onStopDelayedCall.restart(true);
15814      }, _onWheel = function _onWheel2(e) {
15815        if (_ignoreCheck(e)) {
15816          return;
15817        }
15818        e = _getEvent(e, preventDefault);
15819        onWheel && (wheeled = true);
15820        var multiplier = (e.deltaMode === 1 ? lineHeight : e.deltaMode === 2 ? _win3.innerHeight : 1) * wheelSpeed;
15821        onDelta(e.deltaX * multiplier, e.deltaY * multiplier, 0);
15822        onStop && !isNormalizer && onStopDelayedCall.restart(true);
15823      }, _onMove = function _onMove2(e) {
15824        if (_ignoreCheck(e)) {
15825          return;
15826        }
15827        var x = e.clientX, y = e.clientY, dx = x - self2.x, dy = y - self2.y;
15828        self2.x = x;
15829        self2.y = y;
15830        moved = true;
15831        (dx || dy) && onTouchOrPointerDelta(dx, dy);
15832      }, _onHover = function _onHover2(e) {
15833        self2.event = e;
15834        onHover(self2);
15835      }, _onHoverEnd = function _onHoverEnd2(e) {
15836        self2.event = e;
15837        onHoverEnd(self2);
15838      }, _onClick = function _onClick2(e) {
15839        return _ignoreCheck(e) || _getEvent(e, preventDefault) && onClick(self2);
15840      };
15841      onStopDelayedCall = self2._dc = gsap2.delayedCall(onStopDelay || 0.25, onStopFunc).pause();
15842      self2.deltaX = self2.deltaY = 0;
15843      self2._vx = _getVelocityProp(0, 50, true);
15844      self2._vy = _getVelocityProp(0, 50, true);
15845      self2.scrollX = scrollFuncX;
15846      self2.scrollY = scrollFuncY;
15847      self2.isDragging = self2.isGesturing = self2.isPressed = false;
15848      self2.enable = function(e) {
15849        if (!self2.isEnabled) {
15850          _addListener(isViewport ? ownerDoc : target, "scroll", _onScroll);
15851          type.indexOf("scroll") >= 0 && _addListener(isViewport ? ownerDoc : target, "scroll", onScroll, preventDefault, capture);
15852          type.indexOf("wheel") >= 0 && _addListener(target, "wheel", _onWheel, preventDefault, capture);
15853          if (type.indexOf("touch") >= 0 && _isTouch || type.indexOf("pointer") >= 0) {
15854            _addListener(target, _eventTypes[0], _onPress, preventDefault, capture);
15855            _addListener(ownerDoc, _eventTypes[2], _onRelease);
15856            _addListener(ownerDoc, _eventTypes[3], _onRelease);
15857            allowClicks && _addListener(target, "click", clickCapture, false, true);
15858            onClick && _addListener(target, "click", _onClick);
15859            onGestureStart && _addListener(ownerDoc, "gesturestart", _onGestureStart);
15860            onGestureEnd && _addListener(ownerDoc, "gestureend", _onGestureEnd);
15861            onHover && _addListener(target, _pointerType + "enter", _onHover);
15862            onHoverEnd && _addListener(target, _pointerType + "leave", _onHoverEnd);
15863            onMove && _addListener(target, _pointerType + "move", _onMove);
15864          }
15865          self2.isEnabled = true;
15866          e && e.type && _onPress(e);
15867          onEnable && onEnable(self2);
15868        }
15869        return self2;
15870      };
15871      self2.disable = function() {
15872        if (self2.isEnabled) {
15873          _observers.filter(function(o) {
15874            return o !== self2 && _isViewport(o.target);
15875          }).length || _removeListener(isViewport ? ownerDoc : target, "scroll", _onScroll);
15876          if (self2.isPressed) {
15877            self2._vx.reset();
15878            self2._vy.reset();
15879            _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);
15880          }
15881          _removeListener(isViewport ? ownerDoc : target, "scroll", onScroll, capture);
15882          _removeListener(target, "wheel", _onWheel, capture);
15883          _removeListener(target, _eventTypes[0], _onPress, capture);
15884          _removeListener(ownerDoc, _eventTypes[2], _onRelease);
15885          _removeListener(ownerDoc, _eventTypes[3], _onRelease);
15886          _removeListener(target, "click", clickCapture, true);
15887          _removeListener(target, "click", _onClick);
15888          _removeListener(ownerDoc, "gesturestart", _onGestureStart);
15889          _removeListener(ownerDoc, "gestureend", _onGestureEnd);
15890          _removeListener(target, _pointerType + "enter", _onHover);
15891          _removeListener(target, _pointerType + "leave", _onHoverEnd);
15892          _removeListener(target, _pointerType + "move", _onMove);
15893          self2.isEnabled = self2.isPressed = self2.isDragging = false;
15894          onDisable && onDisable(self2);
15895        }
15896      };
15897      self2.kill = function() {
15898        self2.disable();
15899        var i = _observers.indexOf(self2);
15900        i >= 0 && _observers.splice(i, 1);
15901        _normalizer === self2 && (_normalizer = 0);
15902      };
15903      _observers.push(self2);
15904      isNormalizer && _isViewport(target) && (_normalizer = self2);
15905      self2.enable(event);
15906    };
15907    _createClass(Observer2, [{
15908      key: "velocityX",
15909      get: function get() {
15910        return this._vx.getVelocity();
15911      }
15912    }, {
15913      key: "velocityY",
15914      get: function get() {
15915        return this._vy.getVelocity();
15916      }
15917    }]);
15918    return Observer2;
15919  }();
15920  Observer.version = "3.10.4";
15921  Observer.create = function(vars) {
15922    return new Observer(vars);
15923  };
15924  Observer.register = _initCore3;
15925  Observer.getAll = function() {
15926    return _observers.slice();
15927  };
15928  Observer.getById = function(id) {
15929    return _observers.filter(function(o) {
15930      return o.vars.id === id;
15931    })[0];
15932  };
15933  _getGSAP() && gsap2.registerPlugin(Observer);
15934
15935  
vendor: 75,219 bytes, lines 15935-17577
15935// node_modules/gsap/ScrollTrigger.js
15936  var gsap3;
15937  var _coreInitted3;
15938  var _win4;
15939  var _doc4;
15940  var _docEl2;
15941  var _body2;
15942  var _root2;
15943  var _resizeDelay;
15944  var _toArray;
15945  var _clamp4;
15946  var _time2;
15947  var _syncInterval;
15948  var _refreshing;
15949  var _pointerIsDown;
15950  var _transformProp2;
15951  var _i;
15952  var _prevWidth;
15953  var _prevHeight;
15954  var _autoRefresh;
15955  var _sort;
15956  var _suppressOverwrites2;
15957  var _ignoreResize;
15958  var _normalizer2;
15959  var _ignoreMobileResize;
15960  var _baseScreenHeight;
15961  var _baseScreenWidth;
15962  var _fixIOSBug;
15963  var _limitCallbacks;
15964  var _startup2 = 1;
15965  var _getTime2 = Date.now;
15966  var _time1 = _getTime2();
15967  var _lastScrollTime = 0;
15968  var _enabled = 0;
15969  var _pointerDownHandler = function _pointerDownHandler2() {
15970    return _pointerIsDown = 1;
15971  };
15972  var _pointerUpHandler = function _pointerUpHandler2() {
15973    return _pointerIsDown = 0;
15974  };
15975  var _passThrough3 = function _passThrough4(v) {
15976    return v;
15977  };
15978  var _round3 = function _round4(value) {
15979    return Math.round(value * 1e5) / 1e5 || 0;
15980  };
15981  var _windowExists5 = function _windowExists6() {
15982    return typeof window !== "undefined";
15983  };
15984  var _getGSAP3 = function _getGSAP4() {
15985    return gsap3 || _windowExists5() && (gsap3 = window.gsap) && gsap3.registerPlugin && gsap3;
15986  };
15987  var _isViewport3 = function _isViewport4(e) {
15988    return !!~_root2.indexOf(e);
15989  };
15990  var _getBoundsFunc = function _getBoundsFunc2(element) {
15991    return _getProxyProp(element, "getBoundingClientRect") || (_isViewport3(element) ? function() {
15992      _winOffsets.width = _win4.innerWidth;
15993      _winOffsets.height = _win4.innerHeight;
15994      return _winOffsets;
15995    } : function() {
15996      return _getBounds(element);
15997    });
15998  };
15999  var _getSizeFunc = function _getSizeFunc2(scroller, isViewport, _ref) {
16000    var d = _ref.d, d2 = _ref.d2, a = _ref.a;
16001    return (a = _getProxyProp(scroller, "getBoundingClientRect")) ? function() {
16002      return a()[d];
16003    } : function() {
16004      return (isViewport ? _win4["inner" + d2] : scroller["client" + d2]) || 0;
16005    };
16006  };
16007  var _getOffsetsFunc = function _getOffsetsFunc2(element, isViewport) {
16008    return !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : function() {
16009      return _winOffsets;
16010    };
16011  };
16012  var _maxScroll = function _maxScroll2(element, _ref2) {
16013    var s = _ref2.s, d2 = _ref2.d2, d = _ref2.d, a = _ref2.a;
16014    return (s = "scroll" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport3(element) ? (_docEl2[s] || _body2[s]) - (_win4["inner" + d2] || _docEl2["client" + d2] || _body2["client" + d2]) : element[s] - element["offset" + d2];
16015  };
16016  var _iterateAutoRefresh = function _iterateAutoRefresh2(func, events) {
16017    for (var i = 0; i < _autoRefresh.length; i += 3) {
16018      (!events || ~events.indexOf(_autoRefresh[i + 1])) && func(_autoRefresh[i], _autoRefresh[i + 1], _autoRefresh[i + 2]);
16019    }
16020  };
16021  var _isString3 = function _isString4(value) {
16022    return typeof value === "string";
16023  };
16024  var _isFunction3 = function _isFunction4(value) {
16025    return typeof value === "function";
16026  };
16027  var _isNumber3 = function _isNumber4(value) {
16028    return typeof value === "number";
16029  };
16030  var _isObject3 = function _isObject4(value) {
16031    return typeof value === "object";
16032  };
16033  var _callIfFunc = function _callIfFunc2(value) {
16034    return _isFunction3(value) && value();
16035  };
16036  var _combineFunc = function _combineFunc2(f1, f2) {
16037    return function() {
16038      var result1 = _callIfFunc(f1), result2 = _callIfFunc(f2);
16039      return function() {
16040        _callIfFunc(result1);
16041        _callIfFunc(result2);
16042      };
16043    };
16044  };
16045  var _endAnimation = function _endAnimation2(animation, reversed, pause) {
16046    return animation && animation.progress(reversed ? 0 : 1) && pause && animation.pause();
16047  };
16048  var _callback3 = function _callback4(self2, func) {
16049    if (self2.enabled) {
16050      var result = func(self2);
16051      result && result.totalTime && (self2.callbackAnimation = result);
16052    }
16053  };
16054  var _abs = Math.abs;
16055  var _left = "left";
16056  var _top = "top";
16057  var _right = "right";
16058  var _bottom = "bottom";
16059  var _width = "width";
16060  var _height = "height";
16061  var _Right = "Right";
16062  var _Left = "Left";
16063  var _Top = "Top";
16064  var _Bottom = "Bottom";
16065  var _padding = "padding";
16066  var _margin = "margin";
16067  var _Width = "Width";
16068  var _Height = "Height";
16069  var _px = "px";
16070  var _getComputedStyle = function _getComputedStyle2(element) {
16071    return _win4.getComputedStyle(element);
16072  };
16073  var _makePositionable = function _makePositionable2(element) {
16074    var position = _getComputedStyle(element).position;
16075    element.style.position = position === "absolute" || position === "fixed" ? position : "relative";
16076  };
16077  var _setDefaults3 = function _setDefaults4(obj, defaults3) {
16078    for (var p in defaults3) {
16079      p in obj || (obj[p] = defaults3[p]);
16080    }
16081    return obj;
16082  };
16083  var _getBounds = function _getBounds2(element, withoutTransforms) {
16084    var tween = withoutTransforms && _getComputedStyle(element)[_transformProp2] !== "matrix(1, 0, 0, 1, 0, 0)" && gsap3.to(element, {
16085      x: 0,
16086      y: 0,
16087      xPercent: 0,
16088      yPercent: 0,
16089      rotation: 0,
16090      rotationX: 0,
16091      rotationY: 0,
16092      scale: 1,
16093      skewX: 0,
16094      skewY: 0
16095    }).progress(1), bounds = element.getBoundingClientRect();
16096    tween && tween.progress(0).kill();
16097    return bounds;
16098  };
16099  var _getSize = function _getSize2(element, _ref3) {
16100    var d2 = _ref3.d2;
16101    return element["offset" + d2] || element["client" + d2] || 0;
16102  };
16103  var _getLabelRatioArray = function _getLabelRatioArray2(timeline2) {
16104    var a = [], labels = timeline2.labels, duration = timeline2.duration(), p;
16105    for (p in labels) {
16106      a.push(labels[p] / duration);
16107    }
16108    return a;
16109  };
16110  var _getClosestLabel = function _getClosestLabel2(animation) {
16111    return function(value) {
16112      return gsap3.utils.snap(_getLabelRatioArray(animation), value);
16113    };
16114  };
16115  var _snapDirectional = function _snapDirectional2(snapIncrementOrArray) {
16116    var snap3 = gsap3.utils.snap(snapIncrementOrArray), a = Array.isArray(snapIncrementOrArray) && snapIncrementOrArray.slice(0).sort(function(a2, b) {
16117      return a2 - b;
16118    });
16119    return a ? function(value, direction, threshold) {
16120      if (threshold === void 0) {
16121        threshold = 1e-3;
16122      }
16123      var i;
16124      if (!direction) {
16125        return snap3(value);
16126      }
16127      if (direction > 0) {
16128        value -= threshold;
16129        for (i = 0; i < a.length; i++) {
16130          if (a[i] >= value) {
16131            return a[i];
16132          }
16133        }
16134        return a[i - 1];
16135      } else {
16136        i = a.length;
16137        value += threshold;
16138        while (i--) {
16139          if (a[i] <= value) {
16140            return a[i];
16141          }
16142        }
16143      }
16144      return a[0];
16145    } : function(value, direction, threshold) {
16146      if (threshold === void 0) {
16147        threshold = 1e-3;
16148      }
16149      var snapped = snap3(value);
16150      return !direction || Math.abs(snapped - value) < threshold || snapped - value < 0 === direction < 0 ? snapped : snap3(direction < 0 ? value - snapIncrementOrArray : value + snapIncrementOrArray);
16151    };
16152  };
16153  var _getLabelAtDirection = function _getLabelAtDirection2(timeline2) {
16154    return function(value, st) {
16155      return _snapDirectional(_getLabelRatioArray(timeline2))(value, st.direction);
16156    };
16157  };
16158  var _multiListener = function _multiListener2(func, element, types, callback) {
16159    return types.split(",").forEach(function(type) {
16160      return func(element, type, callback);
16161    });
16162  };
16163  var _addListener3 = function _addListener4(element, type, func, nonPassive, capture) {
16164    return element.addEventListener(type, func, {
16165      passive: !nonPassive,
16166      capture: !!capture
16167    });
16168  };
16169  var _removeListener3 = function _removeListener4(element, type, func, capture) {
16170    return element.removeEventListener(type, func, !!capture);
16171  };
16172  var _wheelListener = function _wheelListener2(func, el, scrollFunc) {
16173    return scrollFunc && scrollFunc.wheelHandler && func(el, "wheel", scrollFunc);
16174  };
16175  var _markerDefaults = {
16176    startColor: "green",
16177    endColor: "red",
16178    indent: 0,
16179    fontSize: "16px",
16180    fontWeight: "normal"
16181  };
16182  var _defaults2 = {
16183    toggleActions: "play",
16184    anticipatePin: 0
16185  };
16186  var _keywords = {
16187    top: 0,
16188    left: 0,
16189    center: 0.5,
16190    bottom: 1,
16191    right: 1
16192  };
16193  var _offsetToPx = function _offsetToPx2(value, size) {
16194    if (_isString3(value)) {
16195      var eqIndex = value.indexOf("="), relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0;
16196      if (~eqIndex) {
16197        value.indexOf("%") > eqIndex && (relative *= size / 100);
16198        value = value.substr(0, eqIndex - 1);
16199      }
16200      value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf("%") ? parseFloat(value) * size / 100 : parseFloat(value) || 0);
16201    }
16202    return value;
16203  };
16204  var _createMarker = function _createMarker2(type, name, container, direction, _ref4, offset2, matchWidthEl, containerAnimation) {
16205    var startColor = _ref4.startColor, endColor = _ref4.endColor, fontSize = _ref4.fontSize, indent = _ref4.indent, fontWeight = _ref4.fontWeight;
16206    var e = _doc4.createElement("div"), useFixedPosition = _isViewport3(container) || _getProxyProp(container, "pinType") === "fixed", isScroller = type.indexOf("scroller") !== -1, parent = useFixedPosition ? _body2 : container, isStart = type.indexOf("start") !== -1, color = isStart ? startColor : endColor, 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;";
16207    css += "position:" + ((isScroller || containerAnimation) && useFixedPosition ? "fixed;" : "absolute;");
16208    (isScroller || containerAnimation || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + ":" + (offset2 + parseFloat(indent)) + "px;");
16209    matchWidthEl && (css += "box-sizing:border-box;text-align:left;width:" + matchWidthEl.offsetWidth + "px;");
16210    e._isStart = isStart;
16211    e.setAttribute("class", "gsap-marker-" + type + (name ? " marker-" + name : ""));
16212    e.style.cssText = css;
16213    e.innerText = name || name === 0 ? type + "-" + name : type;
16214    parent.children[0] ? parent.insertBefore(e, parent.children[0]) : parent.appendChild(e);
16215    e._offset = e["offset" + direction.op.d2];
16216    _positionMarker(e, 0, direction, isStart);
16217    return e;
16218  };
16219  var _positionMarker = function _positionMarker2(marker, start2, direction, flipped) {
16220    var vars = {
16221      display: "block"
16222    }, side = direction[flipped ? "os2" : "p2"], oppositeSide = direction[flipped ? "p2" : "os2"];
16223    marker._isFlipped = flipped;
16224    vars[direction.a + "Percent"] = flipped ? -100 : 0;
16225    vars[direction.a] = flipped ? "1px" : 0;
16226    vars["border" + side + _Width] = 1;
16227    vars["border" + oppositeSide + _Width] = 0;
16228    vars[direction.p] = start2 + "px";
16229    gsap3.set(marker, vars);
16230  };
16231  var _triggers = [];
16232  var _ids = {};
16233  var _rafID;
16234  var _sync = function _sync2() {
16235    return _getTime2() - _lastScrollTime > 34 && _updateAll();
16236  };
16237  var _onScroll3 = function _onScroll4() {
16238    if (!_normalizer2 || !_normalizer2.isPressed || _normalizer2.startX > _body2.clientWidth) {
16239      _scrollers.cache++;
16240      _rafID || (_rafID = requestAnimationFrame(_updateAll));
16241      _lastScrollTime || _dispatch("scrollStart");
16242      _lastScrollTime = _getTime2();
16243    }
16244  };
16245  var _setBaseDimensions = function _setBaseDimensions2() {
16246    _baseScreenWidth = _win4.innerWidth;
16247    _baseScreenHeight = _win4.innerHeight;
16248  };
16249  var _onResize = function _onResize2() {
16250    _scrollers.cache++;
16251    !_refreshing && !_ignoreResize && !_doc4.fullscreenElement && !_doc4.webkitFullscreenElement && (!_ignoreMobileResize || _baseScreenWidth !== _win4.innerWidth || Math.abs(_win4.innerHeight - _baseScreenHeight) > _win4.innerHeight * 0.25) && _resizeDelay.restart(true);
16252  };
16253  var _listeners = {};
16254  var _emptyArray = [];
16255  var _media = [];
16256  var _creatingMedia;
16257  var _lastMediaTick;
16258  var _onMediaChange = function _onMediaChange2(e) {
16259    var tick = gsap3.ticker.frame, matches = [], i = 0, index;
16260    if (_lastMediaTick !== tick || _startup2) {
16261      _revertAll();
16262      for (; i < _media.length; i += 4) {
16263        index = _win4.matchMedia(_media[i]).matches;
16264        if (index !== _media[i + 3]) {
16265          _media[i + 3] = index;
16266          index ? matches.push(i) : _revertAll(1, _media[i]) || _isFunction3(_media[i + 2]) && _media[i + 2]();
16267        }
16268      }
16269      _revertRecorded();
16270      for (i = 0; i < matches.length; i++) {
16271        index = matches[i];
16272        _creatingMedia = _media[index];
16273        _media[index + 2] = _media[index + 1](e);
16274      }
16275      _creatingMedia = 0;
16276      _coreInitted3 && _refreshAll(0, 1);
16277      _lastMediaTick = tick;
16278      _dispatch("matchMedia");
16279    }
16280  };
16281  var _softRefresh = function _softRefresh2() {
16282    return _removeListener3(ScrollTrigger2, "scrollEnd", _softRefresh2) || _refreshAll(true);
16283  };
16284  var _dispatch = function _dispatch2(type) {
16285    return _listeners[type] && _listeners[type].map(function(f) {
16286      return f();
16287    }) || _emptyArray;
16288  };
16289  var _savedStyles = [];
16290  var _revertRecorded = function _revertRecorded2(media) {
16291    for (var i = 0; i < _savedStyles.length; i += 5) {
16292      if (!media || _savedStyles[i + 4] === media) {
16293        _savedStyles[i].style.cssText = _savedStyles[i + 1];
16294        _savedStyles[i].getBBox && _savedStyles[i].setAttribute("transform", _savedStyles[i + 2] || "");
16295        _savedStyles[i + 3].uncache = 1;
16296      }
16297    }
16298  };
16299  var _revertAll = function _revertAll2(kill3, media) {
16300    var trigger;
16301    for (_i = 0; _i < _triggers.length; _i++) {
16302      trigger = _triggers[_i];
16303      if (!media || trigger.media === media) {
16304        if (kill3) {
16305          trigger.kill(1);
16306        } else {
16307          trigger.revert();
16308        }
16309      }
16310    }
16311    media && _revertRecorded(media);
16312    media || _dispatch("revert");
16313  };
16314  var _clearScrollMemory = function _clearScrollMemory2() {
16315    return _scrollers.cache++ && _scrollers.forEach(function(obj) {
16316      return typeof obj === "function" && (obj.rec = 0);
16317    });
16318  };
16319  var _refreshingAll;
16320  var _refreshID = 0;
16321  var _refreshAll = function _refreshAll2(force, skipRevert) {
16322    if (_lastScrollTime && !force) {
16323      _addListener3(ScrollTrigger2, "scrollEnd", _softRefresh);
16324      return;
16325    }
16326    _refreshingAll = true;
16327    var refreshInits = _dispatch("refreshInit");
16328    _sort && ScrollTrigger2.sort();
16329    skipRevert || _revertAll();
16330    _triggers.slice(0).forEach(function(t) {
16331      return t.refresh();
16332    });
16333    _triggers.forEach(function(t) {
16334      return t.vars.end === "max" && t.setPositions(t.start, _maxScroll(t.scroller, t._dir));
16335    });
16336    refreshInits.forEach(function(result) {
16337      return result && result.render && result.render(-1);
16338    });
16339    _clearScrollMemory();
16340    _resizeDelay.pause();
16341    _refreshID++;
16342    _refreshingAll = false;
16343    _dispatch("refresh");
16344  };
16345  var _lastScroll = 0;
16346  var _direction = 1;
16347  var _primary;
16348  var _updateAll = function _updateAll2() {
16349    if (!_refreshingAll) {
16350      ScrollTrigger2.isUpdating = true;
16351      _primary && _primary.update(0);
16352      var l = _triggers.length, time = _getTime2(), recordVelocity = time - _time1 >= 50, scroll = l && _triggers[0].scroll();
16353      _direction = _lastScroll > scroll ? -1 : 1;
16354      _lastScroll = scroll;
16355      if (recordVelocity) {
16356        if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) {
16357          _lastScrollTime = 0;
16358          _dispatch("scrollEnd");
16359        }
16360        _time2 = _time1;
16361        _time1 = time;
16362      }
16363      if (_direction < 0) {
16364        _i = l;
16365        while (_i-- > 0) {
16366          _triggers[_i] && _triggers[_i].update(0, recordVelocity);
16367        }
16368        _direction = 1;
16369      } else {
16370        for (_i = 0; _i < l; _i++) {
16371          _triggers[_i] && _triggers[_i].update(0, recordVelocity);
16372        }
16373      }
16374      ScrollTrigger2.isUpdating = false;
16375    }
16376    _rafID = 0;
16377  };
16378  var _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"];
16379  var _stateProps = _propNamesToCopy.concat([_width, _height, "boxSizing", "max" + _Width, "max" + _Height, "position", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]);
16380  var _swapPinOut = function _swapPinOut2(pin, spacer, state) {
16381    _setState(state);
16382    var cache = pin._gsap;
16383    if (cache.spacerIsNative) {
16384      _setState(cache.spacerState);
16385    } else if (pin.parentNode === spacer) {
16386      var parent = spacer.parentNode;
16387      if (parent) {
16388        parent.insertBefore(pin, spacer);
16389        parent.removeChild(spacer);
16390      }
16391    }
16392  };
16393  var _swapPinIn = function _swapPinIn2(pin, spacer, cs, spacerState) {
16394    if (pin.parentNode !== spacer) {
16395      var i = _propNamesToCopy.length, spacerStyle = spacer.style, pinStyle = pin.style, p;
16396      while (i--) {
16397        p = _propNamesToCopy[i];
16398        spacerStyle[p] = cs[p];
16399      }
16400      spacerStyle.position = cs.position === "absolute" ? "absolute" : "relative";
16401      cs.display === "inline" && (spacerStyle.display = "inline-block");
16402      pinStyle[_bottom] = pinStyle[_right] = spacerStyle.flexBasis = "auto";
16403      spacerStyle.overflow = "visible";
16404      spacerStyle.boxSizing = "border-box";
16405      spacerStyle[_width] = _getSize(pin, _horizontal) + _px;
16406      spacerStyle[_height] = _getSize(pin, _vertical) + _px;
16407      spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = "0";
16408      _setState(spacerState);
16409      pinStyle[_width] = pinStyle["max" + _Width] = cs[_width];
16410      pinStyle[_height] = pinStyle["max" + _Height] = cs[_height];
16411      pinStyle[_padding] = cs[_padding];
16412      pin.parentNode.insertBefore(spacer, pin);
16413      spacer.appendChild(pin);
16414    }
16415  };
16416  var _capsExp2 = /([A-Z])/g;
16417  var _setState = function _setState2(state) {
16418    if (state) {
16419      var style = state.t.style, l = state.length, i = 0, p, value;
16420      (state.t._gsap || gsap3.core.getCache(state.t)).uncache = 1;
16421      for (; i < l; i += 2) {
16422        value = state[i + 1];
16423        p = state[i];
16424        if (value) {
16425          style[p] = value;
16426        } else if (style[p]) {
16427          style.removeProperty(p.replace(_capsExp2, "-$1").toLowerCase());
16428        }
16429      }
16430    }
16431  };
16432  var _getState = function _getState2(element) {
16433    var l = _stateProps.length, style = element.style, state = [], i = 0;
16434    for (; i < l; i++) {
16435      state.push(_stateProps[i], style[_stateProps[i]]);
16436    }
16437    state.t = element;
16438    return state;
16439  };
16440  var _copyState = function _copyState2(state, override, omitOffsets) {
16441    var result = [], l = state.length, i = omitOffsets ? 8 : 0, p;
16442    for (; i < l; i += 2) {
16443      p = state[i];
16444      result.push(p, p in override ? override[p] : state[i + 1]);
16445    }
16446    result.t = state.t;
16447    return result;
16448  };
16449  var _winOffsets = {
16450    left: 0,
16451    top: 0
16452  };
16453  var _parsePosition3 = function _parsePosition4(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self2, scrollerBounds, borderWidth, useFixedPosition, scrollerMax, containerAnimation) {
16454    _isFunction3(value) && (value = value(self2));
16455    if (_isString3(value) && value.substr(0, 3) === "max") {
16456      value = scrollerMax + (value.charAt(4) === "=" ? _offsetToPx("0" + value.substr(3), scrollerSize) : 0);
16457    }
16458    var time = containerAnimation ? containerAnimation.time() : 0, p1, p2, element;
16459    containerAnimation && containerAnimation.seek(0);
16460    if (!_isNumber3(value)) {
16461      _isFunction3(trigger) && (trigger = trigger(self2));
16462      var offsets = value.split(" "), bounds, localOffset, globalOffset, display;
16463      element = _getTarget(trigger) || _body2;
16464      bounds = _getBounds(element) || {};
16465      if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === "none") {
16466        display = element.style.display;
16467        element.style.display = "block";
16468        bounds = _getBounds(element);
16469        display ? element.style.display = display : element.style.removeProperty("display");
16470      }
16471      localOffset = _offsetToPx(offsets[0], bounds[direction.d]);
16472      globalOffset = _offsetToPx(offsets[1] || "0", scrollerSize);
16473      value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset;
16474      markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20);
16475      scrollerSize -= scrollerSize - globalOffset;
16476    } else if (markerScroller) {
16477      _positionMarker(markerScroller, scrollerSize, direction, true);
16478    }
16479    if (marker) {
16480      var position = value + scrollerSize, isStart = marker._isStart;
16481      p1 = "scroll" + direction.d2;
16482      _positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body2[p1], _docEl2[p1]) : marker.parentNode[p1]) <= position + 1);
16483      if (useFixedPosition) {
16484        scrollerBounds = _getBounds(markerScroller);
16485        useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px);
16486      }
16487    }
16488    if (containerAnimation && element) {
16489      p1 = _getBounds(element);
16490      containerAnimation.seek(scrollerMax);
16491      p2 = _getBounds(element);
16492      containerAnimation._caScrollDist = p1[direction.p] - p2[direction.p];
16493      value = value / containerAnimation._caScrollDist * scrollerMax;
16494    }
16495    containerAnimation && containerAnimation.seek(time);
16496    return containerAnimation ? value : Math.round(value);
16497  };
16498  var _prefixExp = /(webkit|moz|length|cssText|inset)/i;
16499  var _reparent = function _reparent2(element, parent, top2, left2) {
16500    if (element.parentNode !== parent) {
16501      var style = element.style, p, cs;
16502      if (parent === _body2) {
16503        element._stOrig = style.cssText;
16504        cs = _getComputedStyle(element);
16505        for (p in cs) {
16506          if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === "string" && p !== "0") {
16507            style[p] = cs[p];
16508          }
16509        }
16510        style.top = top2;
16511        style.left = left2;
16512      } else {
16513        style.cssText = element._stOrig;
16514      }
16515      gsap3.core.getCache(element).uncache = 1;
16516      parent.appendChild(element);
16517    }
16518  };
16519  var _getTweenCreator = function _getTweenCreator2(scroller, direction) {
16520    var getScroll = _getScrollFunc(scroller, direction), prop = "_scroll" + direction.p2, lastScroll1, lastScroll2, getTween = function getTween2(scrollTo, vars, initialValue, change1, change2) {
16521      var tween = getTween2.tween, onComplete = vars.onComplete, modifiers = {};
16522      initialValue = initialValue || getScroll();
16523      change2 = change1 && change2 || 0;
16524      change1 = change1 || scrollTo - initialValue;
16525      tween && tween.kill();
16526      lastScroll1 = Math.round(initialValue);
16527      vars[prop] = scrollTo;
16528      vars.modifiers = modifiers;
16529      modifiers[prop] = function(value) {
16530        value = _round3(getScroll());
16531        if (value !== lastScroll1 && value !== lastScroll2 && Math.abs(value - lastScroll1) > 2 && Math.abs(value - lastScroll2) > 2) {
16532          tween.kill();
16533          getTween2.tween = 0;
16534        } else {
16535          value = initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio;
16536        }
16537        lastScroll2 = lastScroll1;
16538        return lastScroll1 = _round3(value);
16539      };
16540      vars.onComplete = function() {
16541        getTween2.tween = 0;
16542        onComplete && onComplete.call(tween);
16543      };
16544      tween = getTween2.tween = gsap3.to(scroller, vars);
16545      return tween;
16546    };
16547    scroller[prop] = getScroll;
16548    getScroll.wheelHandler = function() {
16549      return getTween.tween && getTween.tween.kill() && (getTween.tween = 0);
16550    };
16551    _addListener3(scroller, "wheel", getScroll.wheelHandler);
16552    return getTween;
16553  };
16554  var ScrollTrigger2 = /* @__PURE__ */ function() {
16555    function ScrollTrigger3(vars, animation) {
16556      _coreInitted3 || ScrollTrigger3.register(gsap3) || console.warn("Please gsap.registerPlugin(ScrollTrigger)");
16557      this.init(vars, animation);
16558    }
16559    var _proto = ScrollTrigger3.prototype;
16560    _proto.init = function init7(vars, animation) {
16561      this.progress = this.start = 0;
16562      this.vars && this.kill(true, true);
16563      if (!_enabled) {
16564        this.update = this.refresh = this.kill = _passThrough3;
16565        return;
16566      }
16567      vars = _setDefaults3(_isString3(vars) || _isNumber3(vars) || vars.nodeType ? {
16568        trigger: vars
16569      } : vars, _defaults2);
16570      var _vars = vars, onUpdate = _vars.onUpdate, toggleClass = _vars.toggleClass, id = _vars.id, onToggle = _vars.onToggle, onRefresh = _vars.onRefresh, scrub = _vars.scrub, trigger = _vars.trigger, pin = _vars.pin, pinSpacing = _vars.pinSpacing, invalidateOnRefresh = _vars.invalidateOnRefresh, anticipatePin = _vars.anticipatePin, onScrubComplete = _vars.onScrubComplete, onSnapComplete = _vars.onSnapComplete, once = _vars.once, snap3 = _vars.snap, pinReparent = _vars.pinReparent, pinSpacer = _vars.pinSpacer, containerAnimation = _vars.containerAnimation, fastScrollEnd = _vars.fastScrollEnd, preventOverlaps = _vars.preventOverlaps, direction = vars.horizontal || vars.containerAnimation && vars.horizontal !== false ? _horizontal : _vertical, isToggle = !scrub && scrub !== 0, scroller = _getTarget(vars.scroller || _win4), scrollerCache = gsap3.core.getCache(scroller), isViewport = _isViewport3(scroller), useFixedPosition = ("pinType" in vars ? vars.pinType : _getProxyProp(scroller, "pinType") || isViewport && "fixed") === "fixed", callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack], toggleActions = isToggle && vars.toggleActions.split(" "), markers = "markers" in vars ? vars.markers : _defaults2.markers, borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)["border" + direction.p2 + _Width]) || 0, self2 = this, onRefreshInit = vars.onRefreshInit && function() {
16571        return vars.onRefreshInit(self2);
16572      }, getScrollerSize = _getSizeFunc(scroller, isViewport, direction), getScrollerOffsets = _getOffsetsFunc(scroller, isViewport), lastSnap = 0, lastRefresh = 0, scrollFunc = _getScrollFunc(scroller, direction), tweenTo, pinCache, snapFunc, scroll1, scroll2, start2, end2, markerStart, markerEnd, markerStartTrigger, markerEndTrigger, markerVars, change, pinOriginalState, pinActiveState, pinState, spacer, offset2, pinGetter, pinSetter, pinStart, pinChange, spacingStart, spacerState, markerStartSetter, markerEndSetter, cs, snap1, snap22, scrubTween, scrubSmooth, snapDurClamp, snapDelayedCall, prevProgress, prevScroll, prevAnimProgress, caMarkerSetter, customRevertReturn;
16573      self2.media = _creatingMedia;
16574      self2._dir = direction;
16575      anticipatePin *= 45;
16576      self2.scroller = scroller;
16577      self2.scroll = containerAnimation ? containerAnimation.time.bind(containerAnimation) : scrollFunc;
16578      scroll1 = scrollFunc();
16579      self2.vars = vars;
16580      animation = animation || vars.animation;
16581      if ("refreshPriority" in vars) {
16582        _sort = 1;
16583        vars.refreshPriority === -9999 && (_primary = self2);
16584      }
16585      scrollerCache.tweenScroll = scrollerCache.tweenScroll || {
16586        top: _getTweenCreator(scroller, _vertical),
16587        left: _getTweenCreator(scroller, _horizontal)
16588      };
16589      self2.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];
16590      self2.scrubDuration = function(value) {
16591        scrubSmooth = _isNumber3(value) && value;
16592        if (!scrubSmooth) {
16593          scrubTween && scrubTween.progress(1).kill();
16594          scrubTween = 0;
16595        } else {
16596          scrubTween ? scrubTween.duration(value) : scrubTween = gsap3.to(animation, {
16597            ease: "expo",
16598            totalProgress: "+=0.001",
16599            duration: scrubSmooth,
16600            paused: true,
16601            onComplete: function onComplete() {
16602              return onScrubComplete && onScrubComplete(self2);
16603            }
16604          });
16605        }
16606      };
16607      if (animation) {
16608        animation.vars.lazy = false;
16609        animation._initted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.render(0, true, true);
16610        self2.animation = animation.pause();
16611        animation.scrollTrigger = self2;
16612        self2.scrubDuration(scrub);
16613        snap1 = 0;
16614        id || (id = animation.vars.id);
16615      }
16616      _triggers.push(self2);
16617      if (snap3) {
16618        if (!_isObject3(snap3) || snap3.push) {
16619          snap3 = {
16620            snapTo: snap3
16621          };
16622        }
16623        "scrollBehavior" in _body2.style && gsap3.set(isViewport ? [_body2, _docEl2] : scroller, {
16624          scrollBehavior: "auto"
16625        });
16626        snapFunc = _isFunction3(snap3.snapTo) ? snap3.snapTo : snap3.snapTo === "labels" ? _getClosestLabel(animation) : snap3.snapTo === "labelsDirectional" ? _getLabelAtDirection(animation) : snap3.directional !== false ? function(value, st) {
16627          return _snapDirectional(snap3.snapTo)(value, _getTime2() - lastRefresh < 500 ? 0 : st.direction);
16628        } : gsap3.utils.snap(snap3.snapTo);
16629        snapDurClamp = snap3.duration || {
16630          min: 0.1,
16631          max: 2
16632        };
16633        snapDurClamp = _isObject3(snapDurClamp) ? _clamp4(snapDurClamp.min, snapDurClamp.max) : _clamp4(snapDurClamp, snapDurClamp);
16634        snapDelayedCall = gsap3.delayedCall(snap3.delay || scrubSmooth / 2 || 0.1, function() {
16635          var scroll = scrollFunc(), refreshedRecently = _getTime2() - lastRefresh < 500, tween = tweenTo.tween;
16636          if ((refreshedRecently || Math.abs(self2.getVelocity()) < 10) && !tween && !_pointerIsDown && lastSnap !== scroll) {
16637            var progress = (scroll - start2) / change, totalProgress = animation && !isToggle ? animation.totalProgress() : progress, velocity = refreshedRecently ? 0 : (totalProgress - snap22) / (_getTime2() - _time2) * 1e3 || 0, change1 = gsap3.utils.clamp(-progress, 1 - progress, _abs(velocity / 2) * velocity / 0.185), naturalEnd = progress + (snap3.inertia === false ? 0 : change1), endValue = _clamp4(0, 1, snapFunc(naturalEnd, self2)), endScroll = Math.round(start2 + endValue * change), _snap = snap3, onStart = _snap.onStart, _onInterrupt = _snap.onInterrupt, _onComplete = _snap.onComplete;
16638            if (scroll <= end2 && scroll >= start2 && endScroll !== scroll) {
16639              if (tween && !tween._initted && tween.data <= _abs(endScroll - scroll)) {
16640                return;
16641              }
16642              if (snap3.inertia === false) {
16643                change1 = endValue - progress;
16644              }
16645              tweenTo(endScroll, {
16646                duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)),
16647                ease: snap3.ease || "power3",
16648                data: _abs(endScroll - scroll),
16649                onInterrupt: function onInterrupt() {
16650                  return snapDelayedCall.restart(true) && _onInterrupt && _onInterrupt(self2);
16651                },
16652                onComplete: function onComplete() {
16653                  self2.update();
16654                  lastSnap = scrollFunc();
16655                  snap1 = snap22 = animation && !isToggle ? animation.totalProgress() : self2.progress;
16656                  onSnapComplete && onSnapComplete(self2);
16657                  _onComplete && _onComplete(self2);
16658                }
16659              }, scroll, change1 * change, endScroll - scroll - change1 * change);
16660              onStart && onStart(self2, tweenTo.tween);
16661            }
16662          } else if (self2.isActive && lastSnap !== scroll) {
16663            snapDelayedCall.restart(true);
16664          }
16665        }).pause();
16666      }
16667      id && (_ids[id] = self2);
16668      trigger = self2.trigger = _getTarget(trigger || pin);
16669      customRevertReturn = trigger && trigger._gsap && trigger._gsap.stRevert;
16670      customRevertReturn && (customRevertReturn = customRevertReturn(self2));
16671      pin = pin === true ? trigger : _getTarget(pin);
16672      _isString3(toggleClass) && (toggleClass = {
16673        targets: trigger,
16674        className: toggleClass
16675      });
16676      if (pin) {
16677        pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && _getComputedStyle(pin.parentNode).display === "flex" ? false : _padding);
16678        self2.pin = pin;
16679        vars.force3D !== false && gsap3.set(pin, {
16680          force3D: true
16681        });
16682        pinCache = gsap3.core.getCache(pin);
16683        if (!pinCache.spacer) {
16684          if (pinSpacer) {
16685            pinSpacer = _getTarget(pinSpacer);
16686            pinSpacer && !pinSpacer.nodeType && (pinSpacer = pinSpacer.current || pinSpacer.nativeElement);
16687            pinCache.spacerIsNative = !!pinSpacer;
16688            pinSpacer && (pinCache.spacerState = _getState(pinSpacer));
16689          }
16690          pinCache.spacer = spacer = pinSpacer || _doc4.createElement("div");
16691          spacer.classList.add("pin-spacer");
16692          id && spacer.classList.add("pin-spacer-" + id);
16693          pinCache.pinState = pinOriginalState = _getState(pin);
16694        } else {
16695          pinOriginalState = pinCache.pinState;
16696        }
16697        self2.spacer = spacer = pinCache.spacer;
16698        cs = _getComputedStyle(pin);
16699        spacingStart = cs[pinSpacing + direction.os2];
16700        pinGetter = gsap3.getProperty(pin);
16701        pinSetter = gsap3.quickSetter(pin, direction.a, _px);
16702        _swapPinIn(pin, spacer, cs);
16703        pinState = _getState(pin);
16704      }
16705      if (markers) {
16706        markerVars = _isObject3(markers) ? _setDefaults3(markers, _markerDefaults) : _markerDefaults;
16707        markerStartTrigger = _createMarker("scroller-start", id, scroller, direction, markerVars, 0);
16708        markerEndTrigger = _createMarker("scroller-end", id, scroller, direction, markerVars, 0, markerStartTrigger);
16709        offset2 = markerStartTrigger["offset" + direction.op.d2];
16710        var content = _getTarget(_getProxyProp(scroller, "content") || scroller);
16711        markerStart = this.markerStart = _createMarker("start", id, content, direction, markerVars, offset2, 0, containerAnimation);
16712        markerEnd = this.markerEnd = _createMarker("end", id, content, direction, markerVars, offset2, 0, containerAnimation);
16713        containerAnimation && (caMarkerSetter = gsap3.quickSetter([markerStart, markerEnd], direction.a, _px));
16714        if (!useFixedPosition && !(_proxies.length && _getProxyProp(scroller, "fixedMarkers") === true)) {
16715          _makePositionable(isViewport ? _body2 : scroller);
16716          gsap3.set([markerStartTrigger, markerEndTrigger], {
16717            force3D: true
16718          });
16719          markerStartSetter = gsap3.quickSetter(markerStartTrigger, direction.a, _px);
16720          markerEndSetter = gsap3.quickSetter(markerEndTrigger, direction.a, _px);
16721        }
16722      }
16723      if (containerAnimation) {
16724        var oldOnUpdate = containerAnimation.vars.onUpdate, oldParams = containerAnimation.vars.onUpdateParams;
16725        containerAnimation.eventCallback("onUpdate", function() {
16726          self2.update(0, 0, 1);
16727          oldOnUpdate && oldOnUpdate.apply(oldParams || []);
16728        });
16729      }
16730      self2.previous = function() {
16731        return _triggers[_triggers.indexOf(self2) - 1];
16732      };
16733      self2.next = function() {
16734        return _triggers[_triggers.indexOf(self2) + 1];
16735      };
16736      self2.revert = function(revert) {
16737        var r = revert !== false || !self2.enabled, prevRefreshing = _refreshing;
16738        if (r !== self2.isReverted) {
16739          if (r) {
16740            self2.scroll.rec || !_refreshing || !_refreshingAll || (self2.scroll.rec = scrollFunc());
16741            prevScroll = Math.max(scrollFunc(), self2.scroll.rec || 0);
16742            prevProgress = self2.progress;
16743            prevAnimProgress = animation && animation.progress();
16744          }
16745          markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function(m) {
16746            return m.style.display = r ? "none" : "block";
16747          });
16748          r && (_refreshing = 1);
16749          self2.update(r);
16750          _refreshing = prevRefreshing;
16751          pin && (r ? _swapPinOut(pin, spacer, pinOriginalState) : (!pinReparent || !self2.isActive) && _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState));
16752          self2.isReverted = r;
16753        }
16754      };
16755      self2.refresh = function(soft, force) {
16756        if ((_refreshing || !self2.enabled) && !force) {
16757          return;
16758        }
16759        if (pin && soft && _lastScrollTime) {
16760          _addListener3(ScrollTrigger3, "scrollEnd", _softRefresh);
16761          return;
16762        }
16763        !_refreshingAll && onRefreshInit && onRefreshInit(self2);
16764        _refreshing = 1;
16765        lastRefresh = _getTime2();
16766        if (tweenTo.tween) {
16767          tweenTo.tween.kill();
16768          tweenTo.tween = 0;
16769        }
16770        scrubTween && scrubTween.pause();
16771        invalidateOnRefresh && animation && animation.time(-0.01, true).invalidate();
16772        self2.isReverted || self2.revert();
16773        var size = getScrollerSize(), scrollerBounds = getScrollerOffsets(), max2 = containerAnimation ? containerAnimation.duration() : _maxScroll(scroller, direction), offset3 = 0, otherPinOffset = 0, parsedEnd = vars.end, parsedEndTrigger = vars.endTrigger || trigger, parsedStart = vars.start || (vars.start === 0 || !trigger ? 0 : pin ? "0 0" : "0 100%"), pinnedContainer = self2.pinnedContainer = vars.pinnedContainer && _getTarget(vars.pinnedContainer), triggerIndex = trigger && Math.max(0, _triggers.indexOf(self2)) || 0, i = triggerIndex, cs2, bounds, scroll, isVertical, override, curTrigger, curPin, oppositeScroll, initted, revertedPins;
16774        while (i--) {
16775          curTrigger = _triggers[i];
16776          curTrigger.end || curTrigger.refresh(0, 1) || (_refreshing = 1);
16777          curPin = curTrigger.pin;
16778          if (curPin && (curPin === trigger || curPin === pin) && !curTrigger.isReverted) {
16779            revertedPins || (revertedPins = []);
16780            revertedPins.unshift(curTrigger);
16781            curTrigger.revert();
16782          }
16783          if (curTrigger !== _triggers[i]) {
16784            triggerIndex--;
16785            i--;
16786          }
16787        }
16788        _isFunction3(parsedStart) && (parsedStart = parsedStart(self2));
16789        start2 = _parsePosition3(parsedStart, trigger, size, direction, scrollFunc(), markerStart, markerStartTrigger, self2, scrollerBounds, borderWidth, useFixedPosition, max2, containerAnimation) || (pin ? -1e-3 : 0);
16790        _isFunction3(parsedEnd) && (parsedEnd = parsedEnd(self2));
16791        if (_isString3(parsedEnd) && !parsedEnd.indexOf("+=")) {
16792          if (~parsedEnd.indexOf(" ")) {
16793            parsedEnd = (_isString3(parsedStart) ? parsedStart.split(" ")[0] : "") + parsedEnd;
16794          } else {
16795            offset3 = _offsetToPx(parsedEnd.substr(2), size);
16796            parsedEnd = _isString3(parsedStart) ? parsedStart : start2 + offset3;
16797            parsedEndTrigger = trigger;
16798          }
16799        }
16800        end2 = Math.max(start2, _parsePosition3(parsedEnd || (parsedEndTrigger ? "100% 0" : max2), parsedEndTrigger, size, direction, scrollFunc() + offset3, markerEnd, markerEndTrigger, self2, scrollerBounds, borderWidth, useFixedPosition, max2, containerAnimation)) || -1e-3;
16801        change = end2 - start2 || (start2 -= 0.01) && 1e-3;
16802        offset3 = 0;
16803        i = triggerIndex;
16804        while (i--) {
16805          curTrigger = _triggers[i];
16806          curPin = curTrigger.pin;
16807          if (curPin && curTrigger.start - curTrigger._pinPush < start2 && !containerAnimation && curTrigger.end > 0) {
16808            cs2 = curTrigger.end - curTrigger.start;
16809            if ((curPin === trigger || curPin === pinnedContainer) && !_isNumber3(parsedStart)) {
16810              offset3 += cs2 * (1 - curTrigger.progress);
16811            }
16812            curPin === pin && (otherPinOffset += cs2);
16813          }
16814        }
16815        start2 += offset3;
16816        end2 += offset3;
16817        self2._pinPush = otherPinOffset;
16818        if (markerStart && offset3) {
16819          cs2 = {};
16820          cs2[direction.a] = "+=" + offset3;
16821          pinnedContainer && (cs2[direction.p] = "-=" + scrollFunc());
16822          gsap3.set([markerStart, markerEnd], cs2);
16823        }
16824        if (pin) {
16825          cs2 = _getComputedStyle(pin);
16826          isVertical = direction === _vertical;
16827          scroll = scrollFunc();
16828          pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset;
16829          !max2 && end2 > 1 && ((isViewport ? _body2 : scroller).style["overflow-" + direction.a] = "scroll");
16830          _swapPinIn(pin, spacer, cs2);
16831          pinState = _getState(pin);
16832          bounds = _getBounds(pin, true);
16833          oppositeScroll = useFixedPosition && _getScrollFunc(scroller, isVertical ? _horizontal : _vertical)();
16834          if (pinSpacing) {
16835            spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px];
16836            spacerState.t = spacer;
16837            i = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0;
16838            i && spacerState.push(direction.d, i + _px);
16839            _setState(spacerState);
16840            useFixedPosition && scrollFunc(prevScroll);
16841          }
16842          if (useFixedPosition) {
16843            override = {
16844              top: bounds.top + (isVertical ? scroll - start2 : oppositeScroll) + _px,
16845              left: bounds.left + (isVertical ? oppositeScroll : scroll - start2) + _px,
16846              boxSizing: "border-box",
16847              position: "fixed"
16848            };
16849            override[_width] = override["max" + _Width] = Math.ceil(bounds.width) + _px;
16850            override[_height] = override["max" + _Height] = Math.ceil(bounds.height) + _px;
16851            override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = "0";
16852            override[_padding] = cs2[_padding];
16853            override[_padding + _Top] = cs2[_padding + _Top];
16854            override[_padding + _Right] = cs2[_padding + _Right];
16855            override[_padding + _Bottom] = cs2[_padding + _Bottom];
16856            override[_padding + _Left] = cs2[_padding + _Left];
16857            pinActiveState = _copyState(pinOriginalState, override, pinReparent);
16858          }
16859          if (animation) {
16860            initted = animation._initted;
16861            _suppressOverwrites2(1);
16862            animation.render(animation.duration(), true, true);
16863            pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset;
16864            change !== pinChange && useFixedPosition && pinActiveState.splice(pinActiveState.length - 2, 2);
16865            animation.render(0, true, true);
16866            initted || animation.invalidate();
16867            _suppressOverwrites2(0);
16868          } else {
16869            pinChange = change;
16870          }
16871        } else if (trigger && scrollFunc() && !containerAnimation) {
16872          bounds = trigger.parentNode;
16873          while (bounds && bounds !== _body2) {
16874            if (bounds._pinOffset) {
16875              start2 -= bounds._pinOffset;
16876              end2 -= bounds._pinOffset;
16877            }
16878            bounds = bounds.parentNode;
16879          }
16880        }
16881        revertedPins && revertedPins.forEach(function(t) {
16882          return t.revert(false);
16883        });
16884        self2.start = start2;
16885        self2.end = end2;
16886        scroll1 = scroll2 = scrollFunc();
16887        if (!containerAnimation) {
16888          scroll1 < prevScroll && scrollFunc(prevScroll);
16889          self2.scroll.rec = 0;
16890        }
16891        self2.revert(false);
16892        if (snapDelayedCall) {
16893          lastSnap = -1;
16894          self2.isActive && scrollFunc(start2 + change * prevProgress);
16895          snapDelayedCall.restart(true);
16896        }
16897        _refreshing = 0;
16898        animation && isToggle && (animation._initted || prevAnimProgress) && animation.progress() !== prevAnimProgress && animation.progress(prevAnimProgress, true).render(animation.time(), true, true);
16899        if (prevProgress !== self2.progress || containerAnimation) {
16900          animation && !isToggle && animation.totalProgress(prevProgress, true);
16901          self2.progress = prevProgress;
16902          self2.update(0, 0, 1);
16903        }
16904        pin && pinSpacing && (spacer._pinOffset = Math.round(self2.progress * pinChange));
16905        onRefresh && onRefresh(self2);
16906      };
16907      self2.getVelocity = function() {
16908        return (scrollFunc() - scroll2) / (_getTime2() - _time2) * 1e3 || 0;
16909      };
16910      self2.endAnimation = function() {
16911        _endAnimation(self2.callbackAnimation);
16912        if (animation) {
16913          scrubTween ? scrubTween.progress(1) : !animation.paused() ? _endAnimation(animation, animation.reversed()) : isToggle || _endAnimation(animation, self2.direction < 0, 1);
16914        }
16915      };
16916      self2.labelToScroll = function(label) {
16917        return animation && animation.labels && (start2 || self2.refresh() || start2) + animation.labels[label] / animation.duration() * change || 0;
16918      };
16919      self2.getTrailing = function(name) {
16920        var i = _triggers.indexOf(self2), a = self2.direction > 0 ? _triggers.slice(0, i).reverse() : _triggers.slice(i + 1);
16921        return (_isString3(name) ? a.filter(function(t) {
16922          return t.vars.preventOverlaps === name;
16923        }) : a).filter(function(t) {
16924          return self2.direction > 0 ? t.end <= start2 : t.start >= end2;
16925        });
16926      };
16927      self2.update = function(reset, recordVelocity, forceFake) {
16928        if (containerAnimation && !forceFake && !reset) {
16929          return;
16930        }
16931        var scroll = self2.scroll(), p = reset ? 0 : (scroll - start2) / change, clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0, prevProgress2 = self2.progress, isActive, wasActive, toggleState, action, stateChanged, toggled, isAtMax, isTakingAction;
16932        if (recordVelocity) {
16933          scroll2 = scroll1;
16934          scroll1 = containerAnimation ? scrollFunc() : scroll;
16935          if (snap3) {
16936            snap22 = snap1;
16937            snap1 = animation && !isToggle ? animation.totalProgress() : clipped;
16938          }
16939        }
16940        anticipatePin && !clipped && pin && !_refreshing && !_startup2 && _lastScrollTime && start2 < scroll + (scroll - scroll2) / (_getTime2() - _time2) * anticipatePin && (clipped = 1e-4);
16941        if (clipped !== prevProgress2 && self2.enabled) {
16942          isActive = self2.isActive = !!clipped && clipped < 1;
16943          wasActive = !!prevProgress2 && prevProgress2 < 1;
16944          toggled = isActive !== wasActive;
16945          stateChanged = toggled || !!clipped !== !!prevProgress2;
16946          self2.direction = clipped > prevProgress2 ? 1 : -1;
16947          self2.progress = clipped;
16948          if (stateChanged && !_refreshing) {
16949            toggleState = clipped && !prevProgress2 ? 0 : clipped === 1 ? 1 : prevProgress2 === 1 ? 2 : 3;
16950            if (isToggle) {
16951              action = !toggled && toggleActions[toggleState + 1] !== "none" && toggleActions[toggleState + 1] || toggleActions[toggleState];
16952              isTakingAction = animation && (action === "complete" || action === "reset" || action in animation);
16953            }
16954          }
16955          preventOverlaps && (toggled || isTakingAction) && (isTakingAction || scrub || !animation) && (_isFunction3(preventOverlaps) ? preventOverlaps(self2) : self2.getTrailing(preventOverlaps).forEach(function(t) {
16956            return t.endAnimation();
16957          }));
16958          if (!isToggle) {
16959            if (scrubTween && !_refreshing && !_startup2) {
16960              (containerAnimation || _primary && _primary !== self2) && scrubTween.render(scrubTween._dp._time - scrubTween._start);
16961              if (scrubTween.resetTo) {
16962                scrubTween.resetTo("totalProgress", clipped, animation._tTime / animation._tDur);
16963              } else {
16964                scrubTween.vars.totalProgress = clipped;
16965                scrubTween.invalidate().restart();
16966              }
16967            } else if (animation) {
16968              animation.totalProgress(clipped, !!_refreshing);
16969            }
16970          }
16971          if (pin) {
16972            reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart);
16973            if (!useFixedPosition) {
16974              pinSetter(_round3(pinStart + pinChange * clipped));
16975            } else if (stateChanged) {
16976              isAtMax = !reset && clipped > prevProgress2 && end2 + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction);
16977              if (pinReparent) {
16978                if (!reset && (isActive || isAtMax)) {
16979                  var bounds = _getBounds(pin, true), _offset = scroll - start2;
16980                  _reparent(pin, _body2, bounds.top + (direction === _vertical ? _offset : 0) + _px, bounds.left + (direction === _vertical ? 0 : _offset) + _px);
16981                } else {
16982                  _reparent(pin, spacer);
16983                }
16984              }
16985              _setState(isActive || isAtMax ? pinActiveState : pinState);
16986              pinChange !== change && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !isAtMax ? pinChange : 0));
16987            }
16988          }
16989          snap3 && !tweenTo.tween && !_refreshing && !_startup2 && snapDelayedCall.restart(true);
16990          toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function(el) {
16991            return el.classList[isActive || once ? "add" : "remove"](toggleClass.className);
16992          });
16993          onUpdate && !isToggle && !reset && onUpdate(self2);
16994          if (stateChanged && !_refreshing) {
16995            if (isToggle) {
16996              if (isTakingAction) {
16997                if (action === "complete") {
16998                  animation.pause().totalProgress(1);
16999                } else if (action === "reset") {
17000                  animation.restart(true).pause();
17001                } else if (action === "restart") {
17002                  animation.restart(true);
17003                } else {
17004                  animation[action]();
17005                }
17006              }
17007              onUpdate && onUpdate(self2);
17008            }
17009            if (toggled || !_limitCallbacks) {
17010              onToggle && toggled && _callback3(self2, onToggle);
17011              callbacks[toggleState] && _callback3(self2, callbacks[toggleState]);
17012              once && (clipped === 1 ? self2.kill(false, 1) : callbacks[toggleState] = 0);
17013              if (!toggled) {
17014                toggleState = clipped === 1 ? 1 : 3;
17015                callbacks[toggleState] && _callback3(self2, callbacks[toggleState]);
17016              }
17017            }
17018            if (fastScrollEnd && !isActive && Math.abs(self2.getVelocity()) > (_isNumber3(fastScrollEnd) ? fastScrollEnd : 2500)) {
17019              _endAnimation(self2.callbackAnimation);
17020              scrubTween ? scrubTween.progress(1) : _endAnimation(animation, !clipped, 1);
17021            }
17022          } else if (isToggle && onUpdate && !_refreshing) {
17023            onUpdate(self2);
17024          }
17025        }
17026        if (markerEndSetter) {
17027          var n = containerAnimation ? scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0) : scroll;
17028          markerStartSetter(n + (markerStartTrigger._isFlipped ? 1 : 0));
17029          markerEndSetter(n);
17030        }
17031        caMarkerSetter && caMarkerSetter(-scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0));
17032      };
17033      self2.enable = function(reset, refresh) {
17034        if (!self2.enabled) {
17035          self2.enabled = true;
17036          _addListener3(scroller, "resize", _onResize);
17037          _addListener3(isViewport ? _doc4 : scroller, "scroll", _onScroll3);
17038          onRefreshInit && _addListener3(ScrollTrigger3, "refreshInit", onRefreshInit);
17039          if (reset !== false) {
17040            self2.progress = prevProgress = 0;
17041            scroll1 = scroll2 = lastSnap = scrollFunc();
17042          }
17043          refresh !== false && self2.refresh();
17044        }
17045      };
17046      self2.getTween = function(snap4) {
17047        return snap4 && tweenTo ? tweenTo.tween : scrubTween;
17048      };
17049      self2.setPositions = function(newStart, newEnd) {
17050        if (pin) {
17051          pinStart += newStart - start2;
17052          pinChange += newEnd - newStart - change;
17053        }
17054        self2.start = start2 = newStart;
17055        self2.end = end2 = newEnd;
17056        change = newEnd - newStart;
17057        self2.update();
17058      };
17059      self2.disable = function(reset, allowAnimation) {
17060        if (self2.enabled) {
17061          reset !== false && self2.revert();
17062          self2.enabled = self2.isActive = false;
17063          allowAnimation || scrubTween && scrubTween.pause();
17064          prevScroll = 0;
17065          pinCache && (pinCache.uncache = 1);
17066          onRefreshInit && _removeListener3(ScrollTrigger3, "refreshInit", onRefreshInit);
17067          if (snapDelayedCall) {
17068            snapDelayedCall.pause();
17069            tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0);
17070          }
17071          if (!isViewport) {
17072            var i = _triggers.length;
17073            while (i--) {
17074              if (_triggers[i].scroller === scroller && _triggers[i] !== self2) {
17075                return;
17076              }
17077            }
17078            _removeListener3(scroller, "resize", _onResize);
17079            _removeListener3(scroller, "scroll", _onScroll3);
17080          }
17081        }
17082      };
17083      self2.kill = function(revert, allowAnimation) {
17084        self2.disable(revert, allowAnimation);
17085        scrubTween && !allowAnimation && scrubTween.kill();
17086        id && delete _ids[id];
17087        var i = _triggers.indexOf(self2);
17088        i >= 0 && _triggers.splice(i, 1);
17089        i === _i && _direction > 0 && _i--;
17090        i = 0;
17091        _triggers.forEach(function(t) {
17092          return t.scroller === self2.scroller && (i = 1);
17093        });
17094        i || (self2.scroll.rec = 0);
17095        if (animation) {
17096          animation.scrollTrigger = null;
17097          revert && animation.render(-1);
17098          allowAnimation || animation.kill();
17099        }
17100        markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function(m) {
17101          return m.parentNode && m.parentNode.removeChild(m);
17102        });
17103        _primary === self2 && (_primary = 0);
17104        if (pin) {
17105          pinCache && (pinCache.uncache = 1);
17106          i = 0;
17107          _triggers.forEach(function(t) {
17108            return t.pin === pin && i++;
17109          });
17110          i || (pinCache.spacer = 0);
17111        }
17112        vars.onKill && vars.onKill(self2);
17113      };
17114      self2.enable(false, false);
17115      customRevertReturn && customRevertReturn(self2);
17116      !animation || !animation.add || change ? self2.refresh() : gsap3.delayedCall(0.01, function() {
17117        return start2 || end2 || self2.refresh();
17118      }) && (change = 0.01) && (start2 = end2 = 0);
17119    };
17120    ScrollTrigger3.register = function register4(core) {
17121      if (!_coreInitted3) {
17122        gsap3 = core || _getGSAP3();
17123        _windowExists5() && window.document && ScrollTrigger3.enable();
17124        _coreInitted3 = _enabled;
17125      }
17126      return _coreInitted3;
17127    };
17128    ScrollTrigger3.defaults = function defaults3(config3) {
17129      if (config3) {
17130        for (var p in config3) {
17131          _defaults2[p] = config3[p];
17132        }
17133      }
17134      return _defaults2;
17135    };
17136    ScrollTrigger3.disable = function disable(reset, kill3) {
17137      _enabled = 0;
17138      _triggers.forEach(function(trigger) {
17139        return trigger[kill3 ? "kill" : "disable"](reset);
17140      });
17141      _removeListener3(_win4, "wheel", _onScroll3);
17142      _removeListener3(_doc4, "scroll", _onScroll3);
17143      clearInterval(_syncInterval);
17144      _removeListener3(_doc4, "touchcancel", _passThrough3);
17145      _removeListener3(_body2, "touchstart", _passThrough3);
17146      _multiListener(_removeListener3, _doc4, "pointerdown,touchstart,mousedown", _pointerDownHandler);
17147      _multiListener(_removeListener3, _doc4, "pointerup,touchend,mouseup", _pointerUpHandler);
17148      _resizeDelay.kill();
17149      _iterateAutoRefresh(_removeListener3);
17150      for (var i = 0; i < _scrollers.length; i += 3) {
17151        _wheelListener(_removeListener3, _scrollers[i], _scrollers[i + 1]);
17152        _wheelListener(_removeListener3, _scrollers[i], _scrollers[i + 2]);
17153      }
17154    };
17155    ScrollTrigger3.enable = function enable() {
17156      _win4 = window;
17157      _doc4 = document;
17158      _docEl2 = _doc4.documentElement;
17159      _body2 = _doc4.body;
17160      if (gsap3) {
17161        _toArray = gsap3.utils.toArray;
17162        _clamp4 = gsap3.utils.clamp;
17163        _suppressOverwrites2 = gsap3.core.suppressOverwrites || _passThrough3;
17164        gsap3.core.globals("ScrollTrigger", ScrollTrigger3);
17165        if (_body2) {
17166          _enabled = 1;
17167          Observer.register(gsap3);
17168          ScrollTrigger3.isTouch = Observer.isTouch;
17169          _fixIOSBug = Observer.isTouch && /(iPad|iPhone|iPod|Mac)/g.test(navigator.userAgent);
17170          _addListener3(_win4, "wheel", _onScroll3);
17171          _root2 = [_win4, _doc4, _docEl2, _body2];
17172          ScrollTrigger3.matchMedia({
17173            "(orientation: portrait)": function orientationPortrait() {
17174              _setBaseDimensions();
17175              return _setBaseDimensions;
17176            }
17177          });
17178          _addListener3(_doc4, "scroll", _onScroll3);
17179          var bodyStyle = _body2.style, border = bodyStyle.borderTopStyle, bounds, i;
17180          bodyStyle.borderTopStyle = "solid";
17181          bounds = _getBounds(_body2);
17182          _vertical.m = Math.round(bounds.top + _vertical.sc()) || 0;
17183          _horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0;
17184          border ? bodyStyle.borderTopStyle = border : bodyStyle.removeProperty("border-top-style");
17185          _syncInterval = setInterval(_sync, 250);
17186          gsap3.delayedCall(0.5, function() {
17187            return _startup2 = 0;
17188          });
17189          _addListener3(_doc4, "touchcancel", _passThrough3);
17190          _addListener3(_body2, "touchstart", _passThrough3);
17191          _multiListener(_addListener3, _doc4, "pointerdown,touchstart,mousedown", _pointerDownHandler);
17192          _multiListener(_addListener3, _doc4, "pointerup,touchend,mouseup", _pointerUpHandler);
17193          _transformProp2 = gsap3.utils.checkPrefix("transform");
17194          _stateProps.push(_transformProp2);
17195          _coreInitted3 = _getTime2();
17196          _resizeDelay = gsap3.delayedCall(0.2, _refreshAll).pause();
17197          _autoRefresh = [_doc4, "visibilitychange", function() {
17198            var w = _win4.innerWidth, h = _win4.innerHeight;
17199            if (_doc4.hidden) {
17200              _prevWidth = w;
17201              _prevHeight = h;
17202            } else if (_prevWidth !== w || _prevHeight !== h) {
17203              _onResize();
17204            }
17205          }, _doc4, "DOMContentLoaded", _refreshAll, _win4, "load", _refreshAll, _win4, "resize", _onResize];
17206          _iterateAutoRefresh(_addListener3);
17207          _triggers.forEach(function(trigger) {
17208            return trigger.enable(0, 1);
17209          });
17210          for (i = 0; i < _scrollers.length; i += 3) {
17211            _wheelListener(_removeListener3, _scrollers[i], _scrollers[i + 1]);
17212            _wheelListener(_removeListener3, _scrollers[i], _scrollers[i + 2]);
17213          }
17214        }
17215      }
17216    };
17217    ScrollTrigger3.config = function config3(vars) {
17218      "limitCallbacks" in vars && (_limitCallbacks = !!vars.limitCallbacks);
17219      var ms = vars.syncInterval;
17220      ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms);
17221      "ignoreMobileResize" in vars && (_ignoreMobileResize = ScrollTrigger3.isTouch === 1 && vars.ignoreMobileResize);
17222      if ("autoRefreshEvents" in vars) {
17223        _iterateAutoRefresh(_removeListener3) || _iterateAutoRefresh(_addListener3, vars.autoRefreshEvents || "none");
17224        _ignoreResize = (vars.autoRefreshEvents + "").indexOf("resize") === -1;
17225      }
17226    };
17227    ScrollTrigger3.scrollerProxy = function scrollerProxy(target, vars) {
17228      var t = _getTarget(target), i = _scrollers.indexOf(t), isViewport = _isViewport3(t);
17229      if (~i) {
17230        _scrollers.splice(i, isViewport ? 6 : 2);
17231      }
17232      if (vars) {
17233        isViewport ? _proxies.unshift(_win4, vars, _body2, vars, _docEl2, vars) : _proxies.unshift(t, vars);
17234      }
17235    };
17236    ScrollTrigger3.matchMedia = function matchMedia(vars) {
17237      var mq, p, i, func, result;
17238      for (p in vars) {
17239        i = _media.indexOf(p);
17240        func = vars[p];
17241        _creatingMedia = p;
17242        if (p === "all") {
17243          func();
17244        } else {
17245          mq = _win4.matchMedia(p);
17246          if (mq) {
17247            mq.matches && (result = func());
17248            if (~i) {
17249              _media[i + 1] = _combineFunc(_media[i + 1], func);
17250              _media[i + 2] = _combineFunc(_media[i + 2], result);
17251            } else {
17252              i = _media.length;
17253              _media.push(p, func, result);
17254              mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener("change", _onMediaChange);
17255            }
17256            _media[i + 3] = mq.matches;
17257          }
17258        }
17259        _creatingMedia = 0;
17260      }
17261      return _media;
17262    };
17263    ScrollTrigger3.clearMatchMedia = function clearMatchMedia(query) {
17264      query || (_media.length = 0);
17265      query = _media.indexOf(query);
17266      query >= 0 && _media.splice(query, 4);
17267    };
17268    ScrollTrigger3.isInViewport = function isInViewport(element, ratio, horizontal) {
17269      var bounds = (_isString3(element) ? _getTarget(element) : element).getBoundingClientRect(), offset2 = bounds[horizontal ? _width : _height] * ratio || 0;
17270      return horizontal ? bounds.right - offset2 > 0 && bounds.left + offset2 < _win4.innerWidth : bounds.bottom - offset2 > 0 && bounds.top + offset2 < _win4.innerHeight;
17271    };
17272    ScrollTrigger3.positionInViewport = function positionInViewport(element, referencePoint, horizontal) {
17273      _isString3(element) && (element = _getTarget(element));
17274      var bounds = element.getBoundingClientRect(), size = bounds[horizontal ? _width : _height], offset2 = referencePoint == null ? size / 2 : referencePoint in _keywords ? _keywords[referencePoint] * size : ~referencePoint.indexOf("%") ? parseFloat(referencePoint) * size / 100 : parseFloat(referencePoint) || 0;
17275      return horizontal ? (bounds.left + offset2) / _win4.innerWidth : (bounds.top + offset2) / _win4.innerHeight;
17276    };
17277    return ScrollTrigger3;
17278  }();
17279  ScrollTrigger2.version = "3.10.4";
17280  ScrollTrigger2.saveStyles = function(targets) {
17281    return targets ? _toArray(targets).forEach(function(target) {
17282      if (target && target.style) {
17283        var i = _savedStyles.indexOf(target);
17284        i >= 0 && _savedStyles.splice(i, 5);
17285        _savedStyles.push(target, target.style.cssText, target.getBBox && target.getAttribute("transform"), gsap3.core.getCache(target), _creatingMedia);
17286      }
17287    }) : _savedStyles;
17288  };
17289  ScrollTrigger2.revert = function(soft, media) {
17290    return _revertAll(!soft, media);
17291  };
17292  ScrollTrigger2.create = function(vars, animation) {
17293    return new ScrollTrigger2(vars, animation);
17294  };
17295  ScrollTrigger2.refresh = function(safe) {
17296    return safe ? _onResize() : (_coreInitted3 || ScrollTrigger2.register()) && _refreshAll(true);
17297  };
17298  ScrollTrigger2.update = _updateAll;
17299  ScrollTrigger2.clearScrollMemory = _clearScrollMemory;
17300  ScrollTrigger2.maxScroll = function(element, horizontal) {
17301    return _maxScroll(element, horizontal ? _horizontal : _vertical);
17302  };
17303  ScrollTrigger2.getScrollFunc = function(element, horizontal) {
17304    return _getScrollFunc(_getTarget(element), horizontal ? _horizontal : _vertical);
17305  };
17306  ScrollTrigger2.getById = function(id) {
17307    return _ids[id];
17308  };
17309  ScrollTrigger2.getAll = function() {
17310    return _triggers.filter(function(t) {
17311      return t.vars.id !== "ScrollSmoother";
17312    });
17313  };
17314  ScrollTrigger2.isScrolling = function() {
17315    return !!_lastScrollTime;
17316  };
17317  ScrollTrigger2.snapDirectional = _snapDirectional;
17318  ScrollTrigger2.addEventListener = function(type, callback) {
17319    var a = _listeners[type] || (_listeners[type] = []);
17320    ~a.indexOf(callback) || a.push(callback);
17321  };
17322  ScrollTrigger2.removeEventListener = function(type, callback) {
17323    var a = _listeners[type], i = a && a.indexOf(callback);
17324    i >= 0 && a.splice(i, 1);
17325  };
17326  ScrollTrigger2.batch = function(targets, vars) {
17327    var result = [], varsCopy = {}, interval = vars.interval || 0.016, batchMax = vars.batchMax || 1e9, proxyCallback = function proxyCallback2(type, callback) {
17328      var elements = [], triggers = [], delay = gsap3.delayedCall(interval, function() {
17329        callback(elements, triggers);
17330        elements = [];
17331        triggers = [];
17332      }).pause();
17333      return function(self2) {
17334        elements.length || delay.restart(true);
17335        elements.push(self2.trigger);
17336        triggers.push(self2);
17337        batchMax <= elements.length && delay.progress(1);
17338      };
17339    }, p;
17340    for (p in vars) {
17341      varsCopy[p] = p.substr(0, 2) === "on" && _isFunction3(vars[p]) && p !== "onRefreshInit" ? proxyCallback(p, vars[p]) : vars[p];
17342    }
17343    if (_isFunction3(batchMax)) {
17344      batchMax = batchMax();
17345      _addListener3(ScrollTrigger2, "refresh", function() {
17346        return batchMax = vars.batchMax();
17347      });
17348    }
17349    _toArray(targets).forEach(function(target) {
17350      var config3 = {};
17351      for (p in varsCopy) {
17352        config3[p] = varsCopy[p];
17353      }
17354      config3.trigger = target;
17355      result.push(ScrollTrigger2.create(config3));
17356    });
17357    return result;
17358  };
17359  var _clampScrollAndGetDurationMultiplier = function _clampScrollAndGetDurationMultiplier2(scrollFunc, current, end2, max2) {
17360    current > max2 ? scrollFunc(max2) : current < 0 && scrollFunc(0);
17361    return end2 > max2 ? (max2 - current) / (end2 - current) : end2 < 0 ? current / (current - end2) : 1;
17362  };
17363  var _allowNativePanning = function _allowNativePanning2(target, direction) {
17364    if (direction === true) {
17365      target.style.removeProperty("touch-action");
17366    } else {
17367      target.style.touchAction = direction === true ? "auto" : direction ? "pan-" + direction + (Observer.isTouch ? " pinch-zoom" : "") : "none";
17368    }
17369    target === _docEl2 && _allowNativePanning2(_body2, direction);
17370  };
17371  var _overflow = {
17372    auto: 1,
17373    scroll: 1
17374  };
17375  var _nestedScroll = function _nestedScroll2(_ref5) {
17376    var event = _ref5.event, target = _ref5.target, axis = _ref5.axis;
17377    var node = (event.changedTouches ? event.changedTouches[0] : event).target, cache = node._gsap || gsap3.core.getCache(node), time = _getTime2(), cs;
17378    if (!cache._isScrollT || time - cache._isScrollT > 2e3) {
17379      while (node && node.scrollHeight <= node.clientHeight) {
17380        node = node.parentNode;
17381      }
17382      cache._isScroll = node && !_isViewport3(node) && node !== target && (_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]);
17383      cache._isScrollT = time;
17384    }
17385    (cache._isScroll || axis === "x") && (event._gsapAllow = true);
17386  };
17387  var _inputObserver = function _inputObserver2(target, type, inputs, nested) {
17388    return Observer.create({
17389      target,
17390      capture: true,
17391      debounce: false,
17392      lockAxis: true,
17393      type,
17394      onWheel: nested = nested && _nestedScroll,
17395      onPress: nested,
17396      onDrag: nested,
17397      onScroll: nested,
17398      onEnable: function onEnable() {
17399        return inputs && _addListener3(_doc4, Observer.eventTypes[0], _captureInputs, false, true);
17400      },
17401      onDisable: function onDisable() {
17402        return _removeListener3(_doc4, Observer.eventTypes[0], _captureInputs, true);
17403      }
17404    });
17405  };
17406  var _inputExp = /(input|label|select|textarea)/i;
17407  var _inputIsFocused;
17408  var _captureInputs = function _captureInputs2(e) {
17409    var isInput = _inputExp.test(e.target.tagName);
17410    if (isInput || _inputIsFocused) {
17411      e._gsapAllow = true;
17412      _inputIsFocused = isInput;
17413    }
17414  };
17415  var _getScrollNormalizer = function _getScrollNormalizer2(vars) {
17416    _isObject3(vars) || (vars = {});
17417    vars.preventDefault = vars.isNormalizer = vars.allowClicks = true;
17418    vars.type || (vars.type = "wheel,touch");
17419    vars.debounce = !!vars.debounce;
17420    vars.id = vars.id || "normalizer";
17421    var _vars2 = vars, normalizeScrollX = _vars2.normalizeScrollX, momentum = _vars2.momentum, allowNestedScroll = _vars2.allowNestedScroll, self2, maxY, target = _getTarget(vars.target) || _docEl2, smoother = gsap3.core.globals().ScrollSmoother, content = _fixIOSBug && (vars.content && _getTarget(vars.content) || smoother && smoother.get() && smoother.get().content()), scrollFuncY = _getScrollFunc(target, _vertical), scrollFuncX = _getScrollFunc(target, _horizontal), scale = 1, initialScale = (Observer.isTouch && _win4.visualViewport ? _win4.visualViewport.scale * _win4.visualViewport.width : _win4.outerWidth) / _win4.innerWidth, wheelRefresh = 0, resolveMomentumDuration = _isFunction3(momentum) ? function() {
17422      return momentum(self2);
17423    } : function() {
17424      return momentum || 2.8;
17425    }, skipTouchMove, lastRefreshID, inputObserver = _inputObserver(target, vars.type, true, allowNestedScroll), resumeTouchMove = function resumeTouchMove2() {
17426      return skipTouchMove = false;
17427    }, scrollClampX = _passThrough3, scrollClampY = _passThrough3, updateClamps = function updateClamps2() {
17428      maxY = _maxScroll(target, _vertical);
17429      scrollClampY = _clamp4(_fixIOSBug ? 1 : 0, maxY);
17430      normalizeScrollX && (scrollClampX = _clamp4(0, _maxScroll(target, _horizontal)));
17431      lastRefreshID = _refreshID;
17432    }, ignoreDrag = function ignoreDrag2() {
17433      if (skipTouchMove) {
17434        requestAnimationFrame(resumeTouchMove);
17435        var offset2 = _round3(self2.deltaY / 2), scroll = scrollClampY(scrollFuncY.v - offset2);
17436        if (content && scroll !== scrollFuncY.v + scrollFuncY.offset) {
17437          scrollFuncY.offset = scroll - scrollFuncY.v;
17438          content.style.transform = "translateY(" + -scrollFuncY.offset + "px)";
17439          content._gsap && (content._gsap.y = -scrollFuncY.offset + "px");
17440          scrollFuncY.cacheID = _scrollers.cache;
17441          _updateAll();
17442        }
17443        return true;
17444      }
17445      if (content) {
17446        content.style.transform = "translateY(0px)";
17447        scrollFuncY.offset = scrollFuncY.cacheID = 0;
17448        content._gsap && (content._gsap.y = "0px");
17449      }
17450      skipTouchMove = true;
17451    }, tween, startScrollX, startScrollY, onStopDelayedCall, onResize = function onResize2() {
17452      updateClamps();
17453      if (tween.isActive() && tween.vars.scrollY > maxY) {
17454        scrollFuncY() > maxY ? tween.progress(1) && scrollFuncY(maxY) : tween.resetTo("scrollY", maxY);
17455      }
17456    };
17457    vars.ignoreCheck = function(e) {
17458      return _fixIOSBug && e.type === "touchmove" && ignoreDrag(e) || scale > 1.05 && e.type !== "touchstart" || self2.isGesturing || e.touches && e.touches.length > 1;
17459    };
17460    vars.onPress = function() {
17461      var prevScale = scale;
17462      scale = _round3((_win4.visualViewport && _win4.visualViewport.scale || 1) / initialScale);
17463      tween.pause();
17464      prevScale !== scale && _allowNativePanning(target, scale > 1.01 ? true : normalizeScrollX ? false : "x");
17465      skipTouchMove = false;
17466      startScrollX = scrollFuncX();
17467      startScrollY = scrollFuncY();
17468      updateClamps();
17469      lastRefreshID = _refreshID;
17470    };
17471    vars.onRelease = vars.onGestureStart = function(self3, wasDragging) {
17472      if (content) {
17473        content.style.transform = "translateY(0px)";
17474        scrollFuncY.offset = scrollFuncY.cacheID = 0;
17475        content._gsap && (content._gsap.y = "0px");
17476      }
17477      if (!wasDragging) {
17478        onStopDelayedCall.restart(true);
17479      } else {
17480        _scrollers.cache++;
17481        var dur = resolveMomentumDuration(), currentScroll, endScroll;
17482        if (normalizeScrollX) {
17483          currentScroll = scrollFuncX();
17484          endScroll = currentScroll + dur * 0.05 * -self3.velocityX / 0.227;
17485          dur *= _clampScrollAndGetDurationMultiplier(scrollFuncX, currentScroll, endScroll, _maxScroll(target, _horizontal));
17486          tween.vars.scrollX = scrollClampX(endScroll);
17487        }
17488        currentScroll = scrollFuncY();
17489        endScroll = currentScroll + dur * 0.05 * -self3.velocityY / 0.227;
17490        dur *= _clampScrollAndGetDurationMultiplier(scrollFuncY, currentScroll, endScroll, _maxScroll(target, _vertical));
17491        tween.vars.scrollY = scrollClampY(endScroll);
17492        tween.invalidate().duration(dur).play(0.01);
17493        if (_fixIOSBug && tween.vars.scrollY >= maxY || currentScroll >= maxY - 1) {
17494          gsap3.to({}, {
17495            onUpdate: onResize,
17496            duration: dur
17497          });
17498        }
17499      }
17500    };
17501    vars.onWheel = function() {
17502      tween._ts && tween.pause();
17503      if (_getTime2() - wheelRefresh > 1e3) {
17504        lastRefreshID = 0;
17505        wheelRefresh = _getTime2();
17506      }
17507    };
17508    vars.onChange = function(self3, dx, dy, xArray, yArray) {
17509      _refreshID !== lastRefreshID && updateClamps();
17510      dx && normalizeScrollX && scrollFuncX(scrollClampX(xArray[2] === dx ? startScrollX + (self3.startX - self3.x) : scrollFuncX() + dx - xArray[1]));
17511      dy && scrollFuncY(scrollClampY(yArray[2] === dy ? startScrollY + (self3.startY - self3.y) : scrollFuncY() + dy - yArray[1]));
17512      _updateAll();
17513    };
17514    vars.onEnable = function() {
17515      _allowNativePanning(target, normalizeScrollX ? false : "x");
17516      _addListener3(_win4, "resize", onResize);
17517      inputObserver.enable();
17518    };
17519    vars.onDisable = function() {
17520      _allowNativePanning(target, true);
17521      _removeListener3(_win4, "resize", onResize);
17522      inputObserver.kill();
17523    };
17524    self2 = new Observer(vars);
17525    self2.iOS = _fixIOSBug;
17526    _fixIOSBug && !scrollFuncY() && scrollFuncY(1);
17527    onStopDelayedCall = self2._dc;
17528    tween = gsap3.to(self2, {
17529      ease: "power4",
17530      paused: true,
17531      scrollX: normalizeScrollX ? "+=0.1" : "+=0",
17532      scrollY: "+=0.1",
17533      onComplete: onStopDelayedCall.vars.onComplete
17534    });
17535    return self2;
17536  };
17537  ScrollTrigger2.sort = function(func) {
17538    return _triggers.sort(func || function(a, b) {
17539      return (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6);
17540    });
17541  };
17542  ScrollTrigger2.observe = function(vars) {
17543    return new Observer(vars);
17544  };
17545  ScrollTrigger2.normalizeScroll = function(vars) {
17546    if (typeof vars === "undefined") {
17547      return _normalizer2;
17548    }
17549    if (vars === true && _normalizer2) {
17550      return _normalizer2.enable();
17551    }
17552    if (vars === false) {
17553      return _normalizer2 && _normalizer2.kill();
17554    }
17555    var normalizer = vars instanceof Observer ? vars : _getScrollNormalizer(vars);
17556    _normalizer2 && _normalizer2.target === normalizer.target && _normalizer2.kill();
17557    _isViewport3(normalizer.target) && (_normalizer2 = normalizer);
17558    return normalizer;
17559  };
17560  ScrollTrigger2.core = {
17561    _getVelocityProp,
17562    _inputObserver,
17563    _scrollers,
17564    _proxies,
17565    bridge: {
17566      ss: function ss() {
17567        _lastScrollTime || _dispatch("scrollStart");
17568        _lastScrollTime = _getTime2();
17569      },
17570      ref: function ref() {
17571        return _refreshing;
17572      }
17573    }
17574  };
17575  _getGSAP3() && gsap3.registerPlugin(ScrollTrigger2);
17576
17577  
17577// components/page-builder/accordion/index.js
17578  window.jQuery = import_jquery.default;
17579  window.$ = import_jquery.default;
17580  function accordion() {
17581    $(".accordion-heading").on("click", function() {
17582      $(this).next().slideToggle(200);
17583      $(this).find("span").toggleClass("rotate-90 !-rotate-90");
17584      $(this).closest(".border").toggleClass("rounded-3xl rounded-tl-3xl rounded-tr-3xl rounded-br-3xl");
17585    });
17586    $(".accordions").each(function() {
17587      ScrollTrigger2.create({
17588        trigger: $(this),
17589        start: "top 80%",
17590        onEnter: () => {
17591          gsapWithCSS.timeline().to($(".faq-buttons"), { opacity: 1, duration: 0.25 }).to($(this), { opacity: 1, duration: 0.25 }, 0).addLabel("start").fromTo($(".faq-buttons button"), {
17592            opacity: 0
17593          }, {
17594            opacity: 1,
17595            stagger: 0.1
17596          }, "start").to($(this).find(".accordion > *"), {
17597            opacity: 1,
17598            stagger: 0.1
17599          }, "start");
17600        }
17601      });
17602    });
17603  }
17604
17605  
17605// components/page-builder/file-download/index.js
17606  var import_jquery2 = __toModule(require_jquery());
17607  window.jQuery = import_jquery2.default;
17608  window.$ = import_jquery2.default;
17609  function file_download() {
17610    $(".download-button").on("click", function() {
17611      $(this).next().slideToggle(200);
17612      $(this).find("span").toggleClass("rotate-90 -rotate-90");
17613    });
17614  }
17615
17616  
vendor: 58,046 bytes, lines 17616-19491
17616// node_modules/@glidejs/glide/dist/glide.esm.js
17617  function _typeof(obj) {
17618    "@babel/helpers - typeof";
17619    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
17620      _typeof = function(obj2) {
17621        return typeof obj2;
17622      };
17623    } else {
17624      _typeof = function(obj2) {
17625        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
17626      };
17627    }
17628    return _typeof(obj);
17629  }
17630  function _classCallCheck(instance, Constructor) {
17631    if (!(instance instanceof Constructor)) {
17632      throw new TypeError("Cannot call a class as a function");
17633    }
17634  }
17635  function _defineProperties2(target, props) {
17636    for (var i = 0; i < props.length; i++) {
17637      var descriptor = props[i];
17638      descriptor.enumerable = descriptor.enumerable || false;
17639      descriptor.configurable = true;
17640      if ("value" in descriptor)
17641        descriptor.writable = true;
17642      Object.defineProperty(target, descriptor.key, descriptor);
17643    }
17644  }
17645  function _createClass2(Constructor, protoProps, staticProps) {
17646    if (protoProps)
17647      _defineProperties2(Constructor.prototype, protoProps);
17648    if (staticProps)
17649      _defineProperties2(Constructor, staticProps);
17650    return Constructor;
17651  }
17652  function _inherits(subClass, superClass) {
17653    if (typeof superClass !== "function" && superClass !== null) {
17654      throw new TypeError("Super expression must either be null or a function");
17655    }
17656    subClass.prototype = Object.create(superClass && superClass.prototype, {
17657      constructor: {
17658        value: subClass,
17659        writable: true,
17660        configurable: true
17661      }
17662    });
17663    if (superClass)
17664      _setPrototypeOf(subClass, superClass);
17665  }
17666  function _getPrototypeOf(o) {
17667    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o2) {
17668      return o2.__proto__ || Object.getPrototypeOf(o2);
17669    };
17670    return _getPrototypeOf(o);
17671  }
17672  function _setPrototypeOf(o, p) {
17673    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) {
17674      o2.__proto__ = p2;
17675      return o2;
17676    };
17677    return _setPrototypeOf(o, p);
17678  }
17679  function _isNativeReflectConstruct() {
17680    if (typeof Reflect === "undefined" || !Reflect.construct)
17681      return false;
17682    if (Reflect.construct.sham)
17683      return false;
17684    if (typeof Proxy === "function")
17685      return true;
17686    try {
17687      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
17688      }));
17689      return true;
17690    } catch (e) {
17691      return false;
17692    }
17693  }
17694  function _assertThisInitialized2(self2) {
17695    if (self2 === void 0) {
17696      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
17697    }
17698    return self2;
17699  }
17700  function _possibleConstructorReturn(self2, call) {
17701    if (call && (typeof call === "object" || typeof call === "function")) {
17702      return call;
17703    } else if (call !== void 0) {
17704      throw new TypeError("Derived constructors may only return object or undefined");
17705    }
17706    return _assertThisInitialized2(self2);
17707  }
17708  function _createSuper(Derived) {
17709    var hasNativeReflectConstruct = _isNativeReflectConstruct();
17710    return function _createSuperInternal() {
17711      var Super = _getPrototypeOf(Derived), result;
17712      if (hasNativeReflectConstruct) {
17713        var NewTarget = _getPrototypeOf(this).constructor;
17714        result = Reflect.construct(Super, arguments, NewTarget);
17715      } else {
17716        result = Super.apply(this, arguments);
17717      }
17718      return _possibleConstructorReturn(this, result);
17719    };
17720  }
17721  function _superPropBase(object, property) {
17722    while (!Object.prototype.hasOwnProperty.call(object, property)) {
17723      object = _getPrototypeOf(object);
17724      if (object === null)
17725        break;
17726    }
17727    return object;
17728  }
17729  function _get3() {
17730    if (typeof Reflect !== "undefined" && Reflect.get) {
17731      _get3 = Reflect.get;
17732    } else {
17733      _get3 = function _get4(target, property, receiver) {
17734        var base = _superPropBase(target, property);
17735        if (!base)
17736          return;
17737        var desc = Object.getOwnPropertyDescriptor(base, property);
17738        if (desc.get) {
17739          return desc.get.call(arguments.length < 3 ? target : receiver);
17740        }
17741        return desc.value;
17742      };
17743    }
17744    return _get3.apply(this, arguments);
17745  }
17746  var defaults2 = {
17747    type: "slider",
17748    startAt: 0,
17749    perView: 1,
17750    focusAt: 0,
17751    gap: 10,
17752    autoplay: false,
17753    hoverpause: true,
17754    keyboard: true,
17755    bound: false,
17756    swipeThreshold: 80,
17757    dragThreshold: 120,
17758    perSwipe: "",
17759    touchRatio: 0.5,
17760    touchAngle: 45,
17761    animationDuration: 400,
17762    rewind: true,
17763    rewindDuration: 800,
17764    animationTimingFunc: "cubic-bezier(.165, .840, .440, 1)",
17765    waitForTransition: true,
17766    throttle: 10,
17767    direction: "ltr",
17768    peek: 0,
17769    cloningRatio: 1,
17770    breakpoints: {},
17771    classes: {
17772      swipeable: "glide--swipeable",
17773      dragging: "glide--dragging",
17774      direction: {
17775        ltr: "glide--ltr",
17776        rtl: "glide--rtl"
17777      },
17778      type: {
17779        slider: "glide--slider",
17780        carousel: "glide--carousel"
17781      },
17782      slide: {
17783        clone: "glide__slide--clone",
17784        active: "glide__slide--active"
17785      },
17786      arrow: {
17787        disabled: "glide__arrow--disabled"
17788      },
17789      nav: {
17790        active: "glide__bullet--active"
17791      }
17792    }
17793  };
17794  function warn(msg) {
17795    console.error("[Glide warn]: ".concat(msg));
17796  }
17797  function toInt(value) {
17798    return parseInt(value);
17799  }
17800  function toFloat(value) {
17801    return parseFloat(value);
17802  }
17803  function isString(value) {
17804    return typeof value === "string";
17805  }
17806  function isObject(value) {
17807    var type = _typeof(value);
17808    return type === "function" || type === "object" && !!value;
17809  }
17810  function isFunction(value) {
17811    return typeof value === "function";
17812  }
17813  function isUndefined(value) {
17814    return typeof value === "undefined";
17815  }
17816  function isArray(value) {
17817    return value.constructor === Array;
17818  }
17819  function mount(glide, extensions, events) {
17820    var components = {};
17821    for (var name in extensions) {
17822      if (isFunction(extensions[name])) {
17823        components[name] = extensions[name](glide, components, events);
17824      } else {
17825        warn("Extension must be a function");
17826      }
17827    }
17828    for (var _name in components) {
17829      if (isFunction(components[_name].mount)) {
17830        components[_name].mount();
17831      }
17832    }
17833    return components;
17834  }
17835  function define2(obj, prop, definition) {
17836    Object.defineProperty(obj, prop, definition);
17837  }
17838  function sortKeys(obj) {
17839    return Object.keys(obj).sort().reduce(function(r, k) {
17840      r[k] = obj[k];
17841      return r[k], r;
17842    }, {});
17843  }
17844  function mergeOptions(defaults3, settings) {
17845    var options = Object.assign({}, defaults3, settings);
17846    if (settings.hasOwnProperty("classes")) {
17847      options.classes = Object.assign({}, defaults3.classes, settings.classes);
17848      if (settings.classes.hasOwnProperty("direction")) {
17849        options.classes.direction = Object.assign({}, defaults3.classes.direction, settings.classes.direction);
17850      }
17851      if (settings.classes.hasOwnProperty("type")) {
17852        options.classes.type = Object.assign({}, defaults3.classes.type, settings.classes.type);
17853      }
17854      if (settings.classes.hasOwnProperty("slide")) {
17855        options.classes.slide = Object.assign({}, defaults3.classes.slide, settings.classes.slide);
17856      }
17857      if (settings.classes.hasOwnProperty("arrow")) {
17858        options.classes.arrow = Object.assign({}, defaults3.classes.arrow, settings.classes.arrow);
17859      }
17860      if (settings.classes.hasOwnProperty("nav")) {
17861        options.classes.nav = Object.assign({}, defaults3.classes.nav, settings.classes.nav);
17862      }
17863    }
17864    if (settings.hasOwnProperty("breakpoints")) {
17865      options.breakpoints = Object.assign({}, defaults3.breakpoints, settings.breakpoints);
17866    }
17867    return options;
17868  }
17869  var EventsBus = /* @__PURE__ */ function() {
17870    function EventsBus2() {
17871      var events = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
17872      _classCallCheck(this, EventsBus2);
17873      this.events = events;
17874      this.hop = events.hasOwnProperty;
17875    }
17876    _createClass2(EventsBus2, [{
17877      key: "on",
17878      value: function on(event, handler) {
17879        if (isArray(event)) {
17880          for (var i = 0; i < event.length; i++) {
17881            this.on(event[i], handler);
17882          }
17883          return;
17884        }
17885        if (!this.hop.call(this.events, event)) {
17886          this.events[event] = [];
17887        }
17888        var index = this.events[event].push(handler) - 1;
17889        return {
17890          remove: function remove() {
17891            delete this.events[event][index];
17892          }
17893        };
17894      }
17895    }, {
17896      key: "emit",
17897      value: function emit(event, context) {
17898        if (isArray(event)) {
17899          for (var i = 0; i < event.length; i++) {
17900            this.emit(event[i], context);
17901          }
17902          return;
17903        }
17904        if (!this.hop.call(this.events, event)) {
17905          return;
17906        }
17907        this.events[event].forEach(function(item) {
17908          item(context || {});
17909        });
17910      }
17911    }]);
17912    return EventsBus2;
17913  }();
17914  var Glide$1 = /* @__PURE__ */ function() {
17915    function Glide2(selector3) {
17916      var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
17917      _classCallCheck(this, Glide2);
17918      this._c = {};
17919      this._t = [];
17920      this._e = new EventsBus();
17921      this.disabled = false;
17922      this.selector = selector3;
17923      this.settings = mergeOptions(defaults2, options);
17924      this.index = this.settings.startAt;
17925    }
17926    _createClass2(Glide2, [{
17927      key: "mount",
17928      value: function mount$1() {
17929        var extensions = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
17930        this._e.emit("mount.before");
17931        if (isObject(extensions)) {
17932          this._c = mount(this, extensions, this._e);
17933        } else {
17934          warn("You need to provide a object on `mount()`");
17935        }
17936        this._e.emit("mount.after");
17937        return this;
17938      }
17939    }, {
17940      key: "mutate",
17941      value: function mutate() {
17942        var transformers = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
17943        if (isArray(transformers)) {
17944          this._t = transformers;
17945        } else {
17946          warn("You need to provide a array on `mutate()`");
17947        }
17948        return this;
17949      }
17950    }, {
17951      key: "update",
17952      value: function update() {
17953        var settings = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
17954        this.settings = mergeOptions(this.settings, settings);
17955        if (settings.hasOwnProperty("startAt")) {
17956          this.index = settings.startAt;
17957        }
17958        this._e.emit("update");
17959        return this;
17960      }
17961    }, {
17962      key: "go",
17963      value: function go(pattern) {
17964        this._c.Run.make(pattern);
17965        return this;
17966      }
17967    }, {
17968      key: "move",
17969      value: function move(distance) {
17970        this._c.Transition.disable();
17971        this._c.Move.make(distance);
17972        return this;
17973      }
17974    }, {
17975      key: "destroy",
17976      value: function destroy() {
17977        this._e.emit("destroy");
17978        return this;
17979      }
17980    }, {
17981      key: "play",
17982      value: function play() {
17983        var interval = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
17984        if (interval) {
17985          this.settings.autoplay = interval;
17986        }
17987        this._e.emit("play");
17988        return this;
17989      }
17990    }, {
17991      key: "pause",
17992      value: function pause() {
17993        this._e.emit("pause");
17994        return this;
17995      }
17996    }, {
17997      key: "disable",
17998      value: function disable() {
17999        this.disabled = true;
18000        return this;
18001      }
18002    }, {
18003      key: "enable",
18004      value: function enable() {
18005        this.disabled = false;
18006        return this;
18007      }
18008    }, {
18009      key: "on",
18010      value: function on(event, handler) {
18011        this._e.on(event, handler);
18012        return this;
18013      }
18014    }, {
18015      key: "isType",
18016      value: function isType(name) {
18017        return this.settings.type === name;
18018      }
18019    }, {
18020      key: "settings",
18021      get: function get() {
18022        return this._o;
18023      },
18024      set: function set(o) {
18025        if (isObject(o)) {
18026          this._o = o;
18027        } else {
18028          warn("Options must be an `object` instance.");
18029        }
18030      }
18031    }, {
18032      key: "index",
18033      get: function get() {
18034        return this._i;
18035      },
18036      set: function set(i) {
18037        this._i = toInt(i);
18038      }
18039    }, {
18040      key: "type",
18041      get: function get() {
18042        return this.settings.type;
18043      }
18044    }, {
18045      key: "disabled",
18046      get: function get() {
18047        return this._d;
18048      },
18049      set: function set(status) {
18050        this._d = !!status;
18051      }
18052    }]);
18053    return Glide2;
18054  }();
18055  function Run(Glide2, Components, Events) {
18056    var Run2 = {
18057      mount: function mount2() {
18058        this._o = false;
18059      },
18060      make: function make(move) {
18061        var _this = this;
18062        if (!Glide2.disabled) {
18063          !Glide2.settings.waitForTransition || Glide2.disable();
18064          this.move = move;
18065          Events.emit("run.before", this.move);
18066          this.calculate();
18067          Events.emit("run", this.move);
18068          Components.Transition.after(function() {
18069            if (_this.isStart()) {
18070              Events.emit("run.start", _this.move);
18071            }
18072            if (_this.isEnd()) {
18073              Events.emit("run.end", _this.move);
18074            }
18075            if (_this.isOffset()) {
18076              _this._o = false;
18077              Events.emit("run.offset", _this.move);
18078            }
18079            Events.emit("run.after", _this.move);
18080            Glide2.enable();
18081          });
18082        }
18083      },
18084      calculate: function calculate() {
18085        var move = this.move, length = this.length;
18086        var steps = move.steps, direction = move.direction;
18087        var viewSize = 1;
18088        if (direction === "=") {
18089          if (Glide2.settings.bound && toInt(steps) > length) {
18090            Glide2.index = length;
18091            return;
18092          }
18093          Glide2.index = steps;
18094          return;
18095        }
18096        if (direction === ">" && steps === ">") {
18097          Glide2.index = length;
18098          return;
18099        }
18100        if (direction === "<" && steps === "<") {
18101          Glide2.index = 0;
18102          return;
18103        }
18104        if (direction === "|") {
18105          viewSize = Glide2.settings.perView || 1;
18106        }
18107        if (direction === ">" || direction === "|" && steps === ">") {
18108          var index = calculateForwardIndex(viewSize);
18109          if (index > length) {
18110            this._o = true;
18111          }
18112          Glide2.index = normalizeForwardIndex(index, viewSize);
18113          return;
18114        }
18115        if (direction === "<" || direction === "|" && steps === "<") {
18116          var _index = calculateBackwardIndex(viewSize);
18117          if (_index < 0) {
18118            this._o = true;
18119          }
18120          Glide2.index = normalizeBackwardIndex(_index, viewSize);
18121          return;
18122        }
18123        warn("Invalid direction pattern [".concat(direction).concat(steps, "] has been used"));
18124      },
18125      isStart: function isStart() {
18126        return Glide2.index <= 0;
18127      },
18128      isEnd: function isEnd() {
18129        return Glide2.index >= this.length;
18130      },
18131      isOffset: function isOffset() {
18132        var direction = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : void 0;
18133        if (!direction) {
18134          return this._o;
18135        }
18136        if (!this._o) {
18137          return false;
18138        }
18139        if (direction === "|>") {
18140          return this.move.direction === "|" && this.move.steps === ">";
18141        }
18142        if (direction === "|<") {
18143          return this.move.direction === "|" && this.move.steps === "<";
18144        }
18145        return this.move.direction === direction;
18146      },
18147      isBound: function isBound() {
18148        return Glide2.isType("slider") && Glide2.settings.focusAt !== "center" && Glide2.settings.bound;
18149      }
18150    };
18151    function calculateForwardIndex(viewSize) {
18152      var index = Glide2.index;
18153      if (Glide2.isType("carousel")) {
18154        return index + viewSize;
18155      }
18156      return index + (viewSize - index % viewSize);
18157    }
18158    function normalizeForwardIndex(index, viewSize) {
18159      var length = Run2.length;
18160      if (index <= length) {
18161        return index;
18162      }
18163      if (Glide2.isType("carousel")) {
18164        return index - (length + 1);
18165      }
18166      if (Glide2.settings.rewind) {
18167        if (Run2.isBound() && !Run2.isEnd()) {
18168          return length;
18169        }
18170        return 0;
18171      }
18172      if (Run2.isBound()) {
18173        return length;
18174      }
18175      return Math.floor(length / viewSize) * viewSize;
18176    }
18177    function calculateBackwardIndex(viewSize) {
18178      var index = Glide2.index;
18179      if (Glide2.isType("carousel")) {
18180        return index - viewSize;
18181      }
18182      var view = Math.ceil(index / viewSize);
18183      return (view - 1) * viewSize;
18184    }
18185    function normalizeBackwardIndex(index, viewSize) {
18186      var length = Run2.length;
18187      if (index >= 0) {
18188        return index;
18189      }
18190      if (Glide2.isType("carousel")) {
18191        return index + (length + 1);
18192      }
18193      if (Glide2.settings.rewind) {
18194        if (Run2.isBound() && Run2.isStart()) {
18195          return length;
18196        }
18197        return Math.floor(length / viewSize) * viewSize;
18198      }
18199      return 0;
18200    }
18201    define2(Run2, "move", {
18202      get: function get() {
18203        return this._m;
18204      },
18205      set: function set(value) {
18206        var step = value.substr(1);
18207        this._m = {
18208          direction: value.substr(0, 1),
18209          steps: step ? toInt(step) ? toInt(step) : step : 0
18210        };
18211      }
18212    });
18213    define2(Run2, "length", {
18214      get: function get() {
18215        var settings = Glide2.settings;
18216        var length = Components.Html.slides.length;
18217        if (this.isBound()) {
18218          return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);
18219        }
18220        return length - 1;
18221      }
18222    });
18223    define2(Run2, "offset", {
18224      get: function get() {
18225        return this._o;
18226      }
18227    });
18228    return Run2;
18229  }
18230  function now() {
18231    return new Date().getTime();
18232  }
18233  function throttle(func, wait, options) {
18234    var timeout, context, args, result;
18235    var previous = 0;
18236    if (!options)
18237      options = {};
18238    var later = function later2() {
18239      previous = options.leading === false ? 0 : now();
18240      timeout = null;
18241      result = func.apply(context, args);
18242      if (!timeout)
18243        context = args = null;
18244    };
18245    var throttled = function throttled2() {
18246      var at = now();
18247      if (!previous && options.leading === false)
18248        previous = at;
18249      var remaining = wait - (at - previous);
18250      context = this;
18251      args = arguments;
18252      if (remaining <= 0 || remaining > wait) {
18253        if (timeout) {
18254          clearTimeout(timeout);
18255          timeout = null;
18256        }
18257        previous = at;
18258        result = func.apply(context, args);
18259        if (!timeout)
18260          context = args = null;
18261      } else if (!timeout && options.trailing !== false) {
18262        timeout = setTimeout(later, remaining);
18263      }
18264      return result;
18265    };
18266    throttled.cancel = function() {
18267      clearTimeout(timeout);
18268      previous = 0;
18269      timeout = context = args = null;
18270    };
18271    return throttled;
18272  }
18273  var MARGIN_TYPE = {
18274    ltr: ["marginLeft", "marginRight"],
18275    rtl: ["marginRight", "marginLeft"]
18276  };
18277  function Gaps(Glide2, Components, Events) {
18278    var Gaps2 = {
18279      apply: function apply(slides) {
18280        for (var i = 0, len = slides.length; i < len; i++) {
18281          var style = slides[i].style;
18282          var direction = Components.Direction.value;
18283          if (i !== 0) {
18284            style[MARGIN_TYPE[direction][0]] = "".concat(this.value / 2, "px");
18285          } else {
18286            style[MARGIN_TYPE[direction][0]] = "";
18287          }
18288          if (i !== slides.length - 1) {
18289            style[MARGIN_TYPE[direction][1]] = "".concat(this.value / 2, "px");
18290          } else {
18291            style[MARGIN_TYPE[direction][1]] = "";
18292          }
18293        }
18294      },
18295      remove: function remove(slides) {
18296        for (var i = 0, len = slides.length; i < len; i++) {
18297          var style = slides[i].style;
18298          style.marginLeft = "";
18299          style.marginRight = "";
18300        }
18301      }
18302    };
18303    define2(Gaps2, "value", {
18304      get: function get() {
18305        return toInt(Glide2.settings.gap);
18306      }
18307    });
18308    define2(Gaps2, "grow", {
18309      get: function get() {
18310        return Gaps2.value * Components.Sizes.length;
18311      }
18312    });
18313    define2(Gaps2, "reductor", {
18314      get: function get() {
18315        var perView = Glide2.settings.perView;
18316        return Gaps2.value * (perView - 1) / perView;
18317      }
18318    });
18319    Events.on(["build.after", "update"], throttle(function() {
18320      Gaps2.apply(Components.Html.wrapper.children);
18321    }, 30));
18322    Events.on("destroy", function() {
18323      Gaps2.remove(Components.Html.wrapper.children);
18324    });
18325    return Gaps2;
18326  }
18327  function siblings(node) {
18328    if (node && node.parentNode) {
18329      var n = node.parentNode.firstChild;
18330      var matched = [];
18331      for (; n; n = n.nextSibling) {
18332        if (n.nodeType === 1 && n !== node) {
18333          matched.push(n);
18334        }
18335      }
18336      return matched;
18337    }
18338    return [];
18339  }
18340  function exist(node) {
18341    if (node && node instanceof window.HTMLElement) {
18342      return true;
18343    }
18344    return false;
18345  }
18346  var TRACK_SELECTOR = '[data-glide-el="track"]';
18347  function Html(Glide2, Components, Events) {
18348    var Html2 = {
18349      mount: function mount2() {
18350        this.root = Glide2.selector;
18351        this.track = this.root.querySelector(TRACK_SELECTOR);
18352        this.collectSlides();
18353      },
18354      collectSlides: function collectSlides() {
18355        this.slides = Array.prototype.slice.call(this.wrapper.children).filter(function(slide) {
18356          return !slide.classList.contains(Glide2.settings.classes.slide.clone);
18357        });
18358      }
18359    };
18360    define2(Html2, "root", {
18361      get: function get() {
18362        return Html2._r;
18363      },
18364      set: function set(r) {
18365        if (isString(r)) {
18366          r = document.querySelector(r);
18367        }
18368        if (exist(r)) {
18369          Html2._r = r;
18370        } else {
18371          warn("Root element must be a existing Html node");
18372        }
18373      }
18374    });
18375    define2(Html2, "track", {
18376      get: function get() {
18377        return Html2._t;
18378      },
18379      set: function set(t) {
18380        if (exist(t)) {
18381          Html2._t = t;
18382        } else {
18383          warn("Could not find track element. Please use ".concat(TRACK_SELECTOR, " attribute."));
18384        }
18385      }
18386    });
18387    define2(Html2, "wrapper", {
18388      get: function get() {
18389        return Html2.track.children[0];
18390      }
18391    });
18392    Events.on("update", function() {
18393      Html2.collectSlides();
18394    });
18395    return Html2;
18396  }
18397  function Peek(Glide2, Components, Events) {
18398    var Peek2 = {
18399      mount: function mount2() {
18400        this.value = Glide2.settings.peek;
18401      }
18402    };
18403    define2(Peek2, "value", {
18404      get: function get() {
18405        return Peek2._v;
18406      },
18407      set: function set(value) {
18408        if (isObject(value)) {
18409          value.before = toInt(value.before);
18410          value.after = toInt(value.after);
18411        } else {
18412          value = toInt(value);
18413        }
18414        Peek2._v = value;
18415      }
18416    });
18417    define2(Peek2, "reductor", {
18418      get: function get() {
18419        var value = Peek2.value;
18420        var perView = Glide2.settings.perView;
18421        if (isObject(value)) {
18422          return value.before / perView + value.after / perView;
18423        }
18424        return value * 2 / perView;
18425      }
18426    });
18427    Events.on(["resize", "update"], function() {
18428      Peek2.mount();
18429    });
18430    return Peek2;
18431  }
18432  function Move(Glide2, Components, Events) {
18433    var Move2 = {
18434      mount: function mount2() {
18435        this._o = 0;
18436      },
18437      make: function make() {
18438        var _this = this;
18439        var offset2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
18440        this.offset = offset2;
18441        Events.emit("move", {
18442          movement: this.value
18443        });
18444        Components.Transition.after(function() {
18445          Events.emit("move.after", {
18446            movement: _this.value
18447          });
18448        });
18449      }
18450    };
18451    define2(Move2, "offset", {
18452      get: function get() {
18453        return Move2._o;
18454      },
18455      set: function set(value) {
18456        Move2._o = !isUndefined(value) ? toInt(value) : 0;
18457      }
18458    });
18459    define2(Move2, "translate", {
18460      get: function get() {
18461        return Components.Sizes.slideWidth * Glide2.index;
18462      }
18463    });
18464    define2(Move2, "value", {
18465      get: function get() {
18466        var offset2 = this.offset;
18467        var translate = this.translate;
18468        if (Components.Direction.is("rtl")) {
18469          return translate + offset2;
18470        }
18471        return translate - offset2;
18472      }
18473    });
18474    Events.on(["build.before", "run"], function() {
18475      Move2.make();
18476    });
18477    return Move2;
18478  }
18479  function Sizes(Glide2, Components, Events) {
18480    var Sizes2 = {
18481      setupSlides: function setupSlides() {
18482        var width = "".concat(this.slideWidth, "px");
18483        var slides = Components.Html.slides;
18484        for (var i = 0; i < slides.length; i++) {
18485          slides[i].style.width = width;
18486        }
18487      },
18488      setupWrapper: function setupWrapper() {
18489        Components.Html.wrapper.style.width = "".concat(this.wrapperSize, "px");
18490      },
18491      remove: function remove() {
18492        var slides = Components.Html.slides;
18493        for (var i = 0; i < slides.length; i++) {
18494          slides[i].style.width = "";
18495        }
18496        Components.Html.wrapper.style.width = "";
18497      }
18498    };
18499    define2(Sizes2, "length", {
18500      get: function get() {
18501        return Components.Html.slides.length;
18502      }
18503    });
18504    define2(Sizes2, "width", {
18505      get: function get() {
18506        return Components.Html.track.offsetWidth;
18507      }
18508    });
18509    define2(Sizes2, "wrapperSize", {
18510      get: function get() {
18511        return Sizes2.slideWidth * Sizes2.length + Components.Gaps.grow + Components.Clones.grow;
18512      }
18513    });
18514    define2(Sizes2, "slideWidth", {
18515      get: function get() {
18516        return Sizes2.width / Glide2.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;
18517      }
18518    });
18519    Events.on(["build.before", "resize", "update"], function() {
18520      Sizes2.setupSlides();
18521      Sizes2.setupWrapper();
18522    });
18523    Events.on("destroy", function() {
18524      Sizes2.remove();
18525    });
18526    return Sizes2;
18527  }
18528  function Build(Glide2, Components, Events) {
18529    var Build2 = {
18530      mount: function mount2() {
18531        Events.emit("build.before");
18532        this.typeClass();
18533        this.activeClass();
18534        Events.emit("build.after");
18535      },
18536      typeClass: function typeClass() {
18537        Components.Html.root.classList.add(Glide2.settings.classes.type[Glide2.settings.type]);
18538      },
18539      activeClass: function activeClass() {
18540        var classes = Glide2.settings.classes;
18541        var slide = Components.Html.slides[Glide2.index];
18542        if (slide) {
18543          slide.classList.add(classes.slide.active);
18544          siblings(slide).forEach(function(sibling) {
18545            sibling.classList.remove(classes.slide.active);
18546          });
18547        }
18548      },
18549      removeClasses: function removeClasses() {
18550        var _Glide$settings$class = Glide2.settings.classes, type = _Glide$settings$class.type, slide = _Glide$settings$class.slide;
18551        Components.Html.root.classList.remove(type[Glide2.settings.type]);
18552        Components.Html.slides.forEach(function(sibling) {
18553          sibling.classList.remove(slide.active);
18554        });
18555      }
18556    };
18557    Events.on(["destroy", "update"], function() {
18558      Build2.removeClasses();
18559    });
18560    Events.on(["resize", "update"], function() {
18561      Build2.mount();
18562    });
18563    Events.on("move.after", function() {
18564      Build2.activeClass();
18565    });
18566    return Build2;
18567  }
18568  function Clones(Glide2, Components, Events) {
18569    var Clones2 = {
18570      mount: function mount2() {
18571        this.items = [];
18572        if (Glide2.isType("carousel")) {
18573          this.items = this.collect();
18574        }
18575      },
18576      collect: function collect() {
18577        var items = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
18578        var slides = Components.Html.slides;
18579        var _Glide$settings = Glide2.settings, perView = _Glide$settings.perView, classes = _Glide$settings.classes, cloningRatio = _Glide$settings.cloningRatio;
18580        if (slides.length !== 0) {
18581          var peekIncrementer = +!!Glide2.settings.peek;
18582          var cloneCount = perView + peekIncrementer + Math.round(perView / 2);
18583          var append = slides.slice(0, cloneCount).reverse();
18584          var prepend = slides.slice(cloneCount * -1);
18585          for (var r = 0; r < Math.max(cloningRatio, Math.floor(perView / slides.length)); r++) {
18586            for (var i = 0; i < append.length; i++) {
18587              var clone = append[i].cloneNode(true);
18588              clone.classList.add(classes.slide.clone);
18589              items.push(clone);
18590            }
18591            for (var _i2 = 0; _i2 < prepend.length; _i2++) {
18592              var _clone = prepend[_i2].cloneNode(true);
18593              _clone.classList.add(classes.slide.clone);
18594              items.unshift(_clone);
18595            }
18596          }
18597        }
18598        return items;
18599      },
18600      append: function append() {
18601        var items = this.items;
18602        var _Components$Html = Components.Html, wrapper = _Components$Html.wrapper, slides = _Components$Html.slides;
18603        var half = Math.floor(items.length / 2);
18604        var prepend = items.slice(0, half).reverse();
18605        var append2 = items.slice(half * -1).reverse();
18606        var width = "".concat(Components.Sizes.slideWidth, "px");
18607        for (var i = 0; i < append2.length; i++) {
18608          wrapper.appendChild(append2[i]);
18609        }
18610        for (var _i2 = 0; _i2 < prepend.length; _i2++) {
18611          wrapper.insertBefore(prepend[_i2], slides[0]);
18612        }
18613        for (var _i3 = 0; _i3 < items.length; _i3++) {
18614          items[_i3].style.width = width;
18615        }
18616      },
18617      remove: function remove() {
18618        var items = this.items;
18619        for (var i = 0; i < items.length; i++) {
18620          Components.Html.wrapper.removeChild(items[i]);
18621        }
18622      }
18623    };
18624    define2(Clones2, "grow", {
18625      get: function get() {
18626        return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones2.items.length;
18627      }
18628    });
18629    Events.on("update", function() {
18630      Clones2.remove();
18631      Clones2.mount();
18632      Clones2.append();
18633    });
18634    Events.on("build.before", function() {
18635      if (Glide2.isType("carousel")) {
18636        Clones2.append();
18637      }
18638    });
18639    Events.on("destroy", function() {
18640      Clones2.remove();
18641    });
18642    return Clones2;
18643  }
18644  var EventsBinder = /* @__PURE__ */ function() {
18645    function EventsBinder2() {
18646      var listeners = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
18647      _classCallCheck(this, EventsBinder2);
18648      this.listeners = listeners;
18649    }
18650    _createClass2(EventsBinder2, [{
18651      key: "on",
18652      value: function on(events, el, closure) {
18653        var capture = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;
18654        if (isString(events)) {
18655          events = [events];
18656        }
18657        for (var i = 0; i < events.length; i++) {
18658          this.listeners[events[i]] = closure;
18659          el.addEventListener(events[i], this.listeners[events[i]], capture);
18660        }
18661      }
18662    }, {
18663      key: "off",
18664      value: function off(events, el) {
18665        var capture = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
18666        if (isString(events)) {
18667          events = [events];
18668        }
18669        for (var i = 0; i < events.length; i++) {
18670          el.removeEventListener(events[i], this.listeners[events[i]], capture);
18671        }
18672      }
18673    }, {
18674      key: "destroy",
18675      value: function destroy() {
18676        delete this.listeners;
18677      }
18678    }]);
18679    return EventsBinder2;
18680  }();
18681  function Resize(Glide2, Components, Events) {
18682    var Binder = new EventsBinder();
18683    var Resize2 = {
18684      mount: function mount2() {
18685        this.bind();
18686      },
18687      bind: function bind() {
18688        Binder.on("resize", window, throttle(function() {
18689          Events.emit("resize");
18690        }, Glide2.settings.throttle));
18691      },
18692      unbind: function unbind() {
18693        Binder.off("resize", window);
18694      }
18695    };
18696    Events.on("destroy", function() {
18697      Resize2.unbind();
18698      Binder.destroy();
18699    });
18700    return Resize2;
18701  }
18702  var VALID_DIRECTIONS = ["ltr", "rtl"];
18703  var FLIPED_MOVEMENTS = {
18704    ">": "<",
18705    "<": ">",
18706    "=": "="
18707  };
18708  function Direction(Glide2, Components, Events) {
18709    var Direction2 = {
18710      mount: function mount2() {
18711        this.value = Glide2.settings.direction;
18712      },
18713      resolve: function resolve(pattern) {
18714        var token = pattern.slice(0, 1);
18715        if (this.is("rtl")) {
18716          return pattern.split(token).join(FLIPED_MOVEMENTS[token]);
18717        }
18718        return pattern;
18719      },
18720      is: function is(direction) {
18721        return this.value === direction;
18722      },
18723      addClass: function addClass() {
18724        Components.Html.root.classList.add(Glide2.settings.classes.direction[this.value]);
18725      },
18726      removeClass: function removeClass() {
18727        Components.Html.root.classList.remove(Glide2.settings.classes.direction[this.value]);
18728      }
18729    };
18730    define2(Direction2, "value", {
18731      get: function get() {
18732        return Direction2._v;
18733      },
18734      set: function set(value) {
18735        if (VALID_DIRECTIONS.indexOf(value) > -1) {
18736          Direction2._v = value;
18737        } else {
18738          warn("Direction value must be `ltr` or `rtl`");
18739        }
18740      }
18741    });
18742    Events.on(["destroy", "update"], function() {
18743      Direction2.removeClass();
18744    });
18745    Events.on("update", function() {
18746      Direction2.mount();
18747    });
18748    Events.on(["build.before", "update"], function() {
18749      Direction2.addClass();
18750    });
18751    return Direction2;
18752  }
18753  function Rtl(Glide2, Components) {
18754    return {
18755      modify: function modify(translate) {
18756        if (Components.Direction.is("rtl")) {
18757          return -translate;
18758        }
18759        return translate;
18760      }
18761    };
18762  }
18763  function Gap(Glide2, Components) {
18764    return {
18765      modify: function modify(translate) {
18766        var multiplier = Math.floor(translate / Components.Sizes.slideWidth);
18767        return translate + Components.Gaps.value * multiplier;
18768      }
18769    };
18770  }
18771  function Grow(Glide2, Components) {
18772    return {
18773      modify: function modify(translate) {
18774        return translate + Components.Clones.grow / 2;
18775      }
18776    };
18777  }
18778  function Peeking(Glide2, Components) {
18779    return {
18780      modify: function modify(translate) {
18781        if (Glide2.settings.focusAt >= 0) {
18782          var peek = Components.Peek.value;
18783          if (isObject(peek)) {
18784            return translate - peek.before;
18785          }
18786          return translate - peek;
18787        }
18788        return translate;
18789      }
18790    };
18791  }
18792  function Focusing(Glide2, Components) {
18793    return {
18794      modify: function modify(translate) {
18795        var gap = Components.Gaps.value;
18796        var width = Components.Sizes.width;
18797        var focusAt = Glide2.settings.focusAt;
18798        var slideWidth = Components.Sizes.slideWidth;
18799        if (focusAt === "center") {
18800          return translate - (width / 2 - slideWidth / 2);
18801        }
18802        return translate - slideWidth * focusAt - gap * focusAt;
18803      }
18804    };
18805  }
18806  function mutator(Glide2, Components, Events) {
18807    var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide2._t, [Rtl]);
18808    return {
18809      mutate: function mutate(translate) {
18810        for (var i = 0; i < TRANSFORMERS.length; i++) {
18811          var transformer = TRANSFORMERS[i];
18812          if (isFunction(transformer) && isFunction(transformer().modify)) {
18813            translate = transformer(Glide2, Components, Events).modify(translate);
18814          } else {
18815            warn("Transformer should be a function that returns an object with `modify()` method");
18816          }
18817        }
18818        return translate;
18819      }
18820    };
18821  }
18822  function Translate(Glide2, Components, Events) {
18823    var Translate2 = {
18824      set: function set(value) {
18825        var transform = mutator(Glide2, Components).mutate(value);
18826        var translate3d = "translate3d(".concat(-1 * transform, "px, 0px, 0px)");
18827        Components.Html.wrapper.style.mozTransform = translate3d;
18828        Components.Html.wrapper.style.webkitTransform = translate3d;
18829        Components.Html.wrapper.style.transform = translate3d;
18830      },
18831      remove: function remove() {
18832        Components.Html.wrapper.style.transform = "";
18833      },
18834      getStartIndex: function getStartIndex() {
18835        var length = Components.Sizes.length;
18836        var index = Glide2.index;
18837        var perView = Glide2.settings.perView;
18838        if (Components.Run.isOffset(">") || Components.Run.isOffset("|>")) {
18839          return length + (index - perView);
18840        }
18841        return (index + perView) % length;
18842      },
18843      getTravelDistance: function getTravelDistance() {
18844        var travelDistance = Components.Sizes.slideWidth * Glide2.settings.perView;
18845        if (Components.Run.isOffset(">") || Components.Run.isOffset("|>")) {
18846          return travelDistance * -1;
18847        }
18848        return travelDistance;
18849      }
18850    };
18851    Events.on("move", function(context) {
18852      if (!Glide2.isType("carousel") || !Components.Run.isOffset()) {
18853        return Translate2.set(context.movement);
18854      }
18855      Components.Transition.after(function() {
18856        Events.emit("translate.jump");
18857        Translate2.set(Components.Sizes.slideWidth * Glide2.index);
18858      });
18859      var startWidth = Components.Sizes.slideWidth * Components.Translate.getStartIndex();
18860      return Translate2.set(startWidth - Components.Translate.getTravelDistance());
18861    });
18862    Events.on("destroy", function() {
18863      Translate2.remove();
18864    });
18865    return Translate2;
18866  }
18867  function Transition(Glide2, Components, Events) {
18868    var disabled = false;
18869    var Transition2 = {
18870      compose: function compose(property) {
18871        var settings = Glide2.settings;
18872        if (!disabled) {
18873          return "".concat(property, " ").concat(this.duration, "ms ").concat(settings.animationTimingFunc);
18874        }
18875        return "".concat(property, " 0ms ").concat(settings.animationTimingFunc);
18876      },
18877      set: function set() {
18878        var property = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "transform";
18879        Components.Html.wrapper.style.transition = this.compose(property);
18880      },
18881      remove: function remove() {
18882        Components.Html.wrapper.style.transition = "";
18883      },
18884      after: function after(callback) {
18885        setTimeout(function() {
18886          callback();
18887        }, this.duration);
18888      },
18889      enable: function enable() {
18890        disabled = false;
18891        this.set();
18892      },
18893      disable: function disable() {
18894        disabled = true;
18895        this.set();
18896      }
18897    };
18898    define2(Transition2, "duration", {
18899      get: function get() {
18900        var settings = Glide2.settings;
18901        if (Glide2.isType("slider") && Components.Run.offset) {
18902          return settings.rewindDuration;
18903        }
18904        return settings.animationDuration;
18905      }
18906    });
18907    Events.on("move", function() {
18908      Transition2.set();
18909    });
18910    Events.on(["build.before", "resize", "translate.jump"], function() {
18911      Transition2.disable();
18912    });
18913    Events.on("run", function() {
18914      Transition2.enable();
18915    });
18916    Events.on("destroy", function() {
18917      Transition2.remove();
18918    });
18919    return Transition2;
18920  }
18921  var supportsPassive = false;
18922  try {
18923    opts = Object.defineProperty({}, "passive", {
18924      get: function get() {
18925        supportsPassive = true;
18926      }
18927    });
18928    window.addEventListener("testPassive", null, opts);
18929    window.removeEventListener("testPassive", null, opts);
18930  } catch (e) {
18931  }
18932  var opts;
18933  var supportsPassive$1 = supportsPassive;
18934  var START_EVENTS = ["touchstart", "mousedown"];
18935  var MOVE_EVENTS = ["touchmove", "mousemove"];
18936  var END_EVENTS = ["touchend", "touchcancel", "mouseup", "mouseleave"];
18937  var MOUSE_EVENTS = ["mousedown", "mousemove", "mouseup", "mouseleave"];
18938  function Swipe(Glide2, Components, Events) {
18939    var Binder = new EventsBinder();
18940    var swipeSin = 0;
18941    var swipeStartX = 0;
18942    var swipeStartY = 0;
18943    var disabled = false;
18944    var capture = supportsPassive$1 ? {
18945      passive: true
18946    } : false;
18947    var Swipe2 = {
18948      mount: function mount2() {
18949        this.bindSwipeStart();
18950      },
18951      start: function start2(event) {
18952        if (!disabled && !Glide2.disabled) {
18953          this.disable();
18954          var swipe = this.touches(event);
18955          swipeSin = null;
18956          swipeStartX = toInt(swipe.pageX);
18957          swipeStartY = toInt(swipe.pageY);
18958          this.bindSwipeMove();
18959          this.bindSwipeEnd();
18960          Events.emit("swipe.start");
18961        }
18962      },
18963      move: function move(event) {
18964        if (!Glide2.disabled) {
18965          var _Glide$settings = Glide2.settings, touchAngle = _Glide$settings.touchAngle, touchRatio = _Glide$settings.touchRatio, classes = _Glide$settings.classes;
18966          var swipe = this.touches(event);
18967          var subExSx = toInt(swipe.pageX) - swipeStartX;
18968          var subEySy = toInt(swipe.pageY) - swipeStartY;
18969          var powEX = Math.abs(subExSx << 2);
18970          var powEY = Math.abs(subEySy << 2);
18971          var swipeHypotenuse = Math.sqrt(powEX + powEY);
18972          var swipeCathetus = Math.sqrt(powEY);
18973          swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);
18974          if (swipeSin * 180 / Math.PI < touchAngle) {
18975            event.stopPropagation();
18976            Components.Move.make(subExSx * toFloat(touchRatio));
18977            Components.Html.root.classList.add(classes.dragging);
18978            Events.emit("swipe.move");
18979          } else {
18980            return false;
18981          }
18982        }
18983      },
18984      end: function end2(event) {
18985        if (!Glide2.disabled) {
18986          var _Glide$settings2 = Glide2.settings, perSwipe = _Glide$settings2.perSwipe, touchAngle = _Glide$settings2.touchAngle, classes = _Glide$settings2.classes;
18987          var swipe = this.touches(event);
18988          var threshold = this.threshold(event);
18989          var swipeDistance = swipe.pageX - swipeStartX;
18990          var swipeDeg = swipeSin * 180 / Math.PI;
18991          this.enable();
18992          if (swipeDistance > threshold && swipeDeg < touchAngle) {
18993            Components.Run.make(Components.Direction.resolve("".concat(perSwipe, "<")));
18994          } else if (swipeDistance < -threshold && swipeDeg < touchAngle) {
18995            Components.Run.make(Components.Direction.resolve("".concat(perSwipe, ">")));
18996          } else {
18997            Components.Move.make();
18998          }
18999          Components.Html.root.classList.remove(classes.dragging);
19000          this.unbindSwipeMove();
19001          this.unbindSwipeEnd();
19002          Events.emit("swipe.end");
19003        }
19004      },
19005      bindSwipeStart: function bindSwipeStart() {
19006        var _this = this;
19007        var _Glide$settings3 = Glide2.settings, swipeThreshold = _Glide$settings3.swipeThreshold, dragThreshold = _Glide$settings3.dragThreshold;
19008        if (swipeThreshold) {
19009          Binder.on(START_EVENTS[0], Components.Html.wrapper, function(event) {
19010            _this.start(event);
19011          }, capture);
19012        }
19013        if (dragThreshold) {
19014          Binder.on(START_EVENTS[1], Components.Html.wrapper, function(event) {
19015            _this.start(event);
19016          }, capture);
19017        }
19018      },
19019      unbindSwipeStart: function unbindSwipeStart() {
19020        Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);
19021        Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);
19022      },
19023      bindSwipeMove: function bindSwipeMove() {
19024        var _this2 = this;
19025        Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function(event) {
19026          _this2.move(event);
19027        }, Glide2.settings.throttle), capture);
19028      },
19029      unbindSwipeMove: function unbindSwipeMove() {
19030        Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);
19031      },
19032      bindSwipeEnd: function bindSwipeEnd() {
19033        var _this3 = this;
19034        Binder.on(END_EVENTS, Components.Html.wrapper, function(event) {
19035          _this3.end(event);
19036        });
19037      },
19038      unbindSwipeEnd: function unbindSwipeEnd() {
19039        Binder.off(END_EVENTS, Components.Html.wrapper);
19040      },
19041      touches: function touches(event) {
19042        if (MOUSE_EVENTS.indexOf(event.type) > -1) {
19043          return event;
19044        }
19045        return event.touches[0] || event.changedTouches[0];
19046      },
19047      threshold: function threshold(event) {
19048        var settings = Glide2.settings;
19049        if (MOUSE_EVENTS.indexOf(event.type) > -1) {
19050          return settings.dragThreshold;
19051        }
19052        return settings.swipeThreshold;
19053      },
19054      enable: function enable() {
19055        disabled = false;
19056        Components.Transition.enable();
19057        return this;
19058      },
19059      disable: function disable() {
19060        disabled = true;
19061        Components.Transition.disable();
19062        return this;
19063      }
19064    };
19065    Events.on("build.after", function() {
19066      Components.Html.root.classList.add(Glide2.settings.classes.swipeable);
19067    });
19068    Events.on("destroy", function() {
19069      Swipe2.unbindSwipeStart();
19070      Swipe2.unbindSwipeMove();
19071      Swipe2.unbindSwipeEnd();
19072      Binder.destroy();
19073    });
19074    return Swipe2;
19075  }
19076  function Images(Glide2, Components, Events) {
19077    var Binder = new EventsBinder();
19078    var Images2 = {
19079      mount: function mount2() {
19080        this.bind();
19081      },
19082      bind: function bind() {
19083        Binder.on("dragstart", Components.Html.wrapper, this.dragstart);
19084      },
19085      unbind: function unbind() {
19086        Binder.off("dragstart", Components.Html.wrapper);
19087      },
19088      dragstart: function dragstart(event) {
19089        event.preventDefault();
19090      }
19091    };
19092    Events.on("destroy", function() {
19093      Images2.unbind();
19094      Binder.destroy();
19095    });
19096    return Images2;
19097  }
19098  function Anchors(Glide2, Components, Events) {
19099    var Binder = new EventsBinder();
19100    var detached = false;
19101    var prevented = false;
19102    var Anchors2 = {
19103      mount: function mount2() {
19104        this._a = Components.Html.wrapper.querySelectorAll("a");
19105        this.bind();
19106      },
19107      bind: function bind() {
19108        Binder.on("click", Components.Html.wrapper, this.click);
19109      },
19110      unbind: function unbind() {
19111        Binder.off("click", Components.Html.wrapper);
19112      },
19113      click: function click(event) {
19114        if (prevented) {
19115          event.stopPropagation();
19116          event.preventDefault();
19117        }
19118      },
19119      detach: function detach() {
19120        prevented = true;
19121        if (!detached) {
19122          for (var i = 0; i < this.items.length; i++) {
19123            this.items[i].draggable = false;
19124          }
19125          detached = true;
19126        }
19127        return this;
19128      },
19129      attach: function attach() {
19130        prevented = false;
19131        if (detached) {
19132          for (var i = 0; i < this.items.length; i++) {
19133            this.items[i].draggable = true;
19134          }
19135          detached = false;
19136        }
19137        return this;
19138      }
19139    };
19140    define2(Anchors2, "items", {
19141      get: function get() {
19142        return Anchors2._a;
19143      }
19144    });
19145    Events.on("swipe.move", function() {
19146      Anchors2.detach();
19147    });
19148    Events.on("swipe.end", function() {
19149      Components.Transition.after(function() {
19150        Anchors2.attach();
19151      });
19152    });
19153    Events.on("destroy", function() {
19154      Anchors2.attach();
19155      Anchors2.unbind();
19156      Binder.destroy();
19157    });
19158    return Anchors2;
19159  }
19160  var NAV_SELECTOR = '[data-glide-el="controls[nav]"]';
19161  var CONTROLS_SELECTOR = '[data-glide-el^="controls"]';
19162  var PREVIOUS_CONTROLS_SELECTOR = "".concat(CONTROLS_SELECTOR, ' [data-glide-dir*="<"]');
19163  var NEXT_CONTROLS_SELECTOR = "".concat(CONTROLS_SELECTOR, ' [data-glide-dir*=">"]');
19164  function Controls(Glide2, Components, Events) {
19165    var Binder = new EventsBinder();
19166    var capture = supportsPassive$1 ? {
19167      passive: true
19168    } : false;
19169    var Controls2 = {
19170      mount: function mount2() {
19171        this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);
19172        this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);
19173        this._arrowControls = {
19174          previous: Components.Html.root.querySelectorAll(PREVIOUS_CONTROLS_SELECTOR),
19175          next: Components.Html.root.querySelectorAll(NEXT_CONTROLS_SELECTOR)
19176        };
19177        this.addBindings();
19178      },
19179      setActive: function setActive() {
19180        for (var i = 0; i < this._n.length; i++) {
19181          this.addClass(this._n[i].children);
19182        }
19183      },
19184      removeActive: function removeActive() {
19185        for (var i = 0; i < this._n.length; i++) {
19186          this.removeClass(this._n[i].children);
19187        }
19188      },
19189      addClass: function addClass(controls) {
19190        var settings = Glide2.settings;
19191        var item = controls[Glide2.index];
19192        if (!item) {
19193          return;
19194        }
19195        if (item) {
19196          item.classList.add(settings.classes.nav.active);
19197          siblings(item).forEach(function(sibling) {
19198            sibling.classList.remove(settings.classes.nav.active);
19199          });
19200        }
19201      },
19202      removeClass: function removeClass(controls) {
19203        var item = controls[Glide2.index];
19204        if (item) {
19205          item.classList.remove(Glide2.settings.classes.nav.active);
19206        }
19207      },
19208      setArrowState: function setArrowState() {
19209        if (Glide2.settings.rewind) {
19210          return;
19211        }
19212        var next = Controls2._arrowControls.next;
19213        var previous = Controls2._arrowControls.previous;
19214        this.resetArrowState(next, previous);
19215        if (Glide2.index === 0) {
19216          this.disableArrow(previous);
19217        }
19218        if (Glide2.index === Components.Run.length) {
19219          this.disableArrow(next);
19220        }
19221      },
19222      resetArrowState: function resetArrowState() {
19223        var settings = Glide2.settings;
19224        for (var _len = arguments.length, lists = new Array(_len), _key = 0; _key < _len; _key++) {
19225          lists[_key] = arguments[_key];
19226        }
19227        lists.forEach(function(list) {
19228          list.forEach(function(element) {
19229            element.classList.remove(settings.classes.arrow.disabled);
19230          });
19231        });
19232      },
19233      disableArrow: function disableArrow() {
19234        var settings = Glide2.settings;
19235        for (var _len2 = arguments.length, lists = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
19236          lists[_key2] = arguments[_key2];
19237        }
19238        lists.forEach(function(list) {
19239          list.forEach(function(element) {
19240            element.classList.add(settings.classes.arrow.disabled);
19241          });
19242        });
19243      },
19244      addBindings: function addBindings() {
19245        for (var i = 0; i < this._c.length; i++) {
19246          this.bind(this._c[i].children);
19247        }
19248      },
19249      removeBindings: function removeBindings() {
19250        for (var i = 0; i < this._c.length; i++) {
19251          this.unbind(this._c[i].children);
19252        }
19253      },
19254      bind: function bind(elements) {
19255        for (var i = 0; i < elements.length; i++) {
19256          Binder.on("click", elements[i], this.click);
19257          Binder.on("touchstart", elements[i], this.click, capture);
19258        }
19259      },
19260      unbind: function unbind(elements) {
19261        for (var i = 0; i < elements.length; i++) {
19262          Binder.off(["click", "touchstart"], elements[i]);
19263        }
19264      },
19265      click: function click(event) {
19266        if (!supportsPassive$1 && event.type === "touchstart") {
19267          event.preventDefault();
19268        }
19269        var direction = event.currentTarget.getAttribute("data-glide-dir");
19270        Components.Run.make(Components.Direction.resolve(direction));
19271      }
19272    };
19273    define2(Controls2, "items", {
19274      get: function get() {
19275        return Controls2._c;
19276      }
19277    });
19278    Events.on(["mount.after", "move.after"], function() {
19279      Controls2.setActive();
19280    });
19281    Events.on(["mount.after", "run"], function() {
19282      Controls2.setArrowState();
19283    });
19284    Events.on("destroy", function() {
19285      Controls2.removeBindings();
19286      Controls2.removeActive();
19287      Binder.destroy();
19288    });
19289    return Controls2;
19290  }
19291  function Keyboard(Glide2, Components, Events) {
19292    var Binder = new EventsBinder();
19293    var Keyboard2 = {
19294      mount: function mount2() {
19295        if (Glide2.settings.keyboard) {
19296          this.bind();
19297        }
19298      },
19299      bind: function bind() {
19300        Binder.on("keyup", document, this.press);
19301      },
19302      unbind: function unbind() {
19303        Binder.off("keyup", document);
19304      },
19305      press: function press(event) {
19306        var perSwipe = Glide2.settings.perSwipe;
19307        if (event.keyCode === 39) {
19308          Components.Run.make(Components.Direction.resolve("".concat(perSwipe, ">")));
19309        }
19310        if (event.keyCode === 37) {
19311          Components.Run.make(Components.Direction.resolve("".concat(perSwipe, "<")));
19312        }
19313      }
19314    };
19315    Events.on(["destroy", "update"], function() {
19316      Keyboard2.unbind();
19317    });
19318    Events.on("update", function() {
19319      Keyboard2.mount();
19320    });
19321    Events.on("destroy", function() {
19322      Binder.destroy();
19323    });
19324    return Keyboard2;
19325  }
19326  function Autoplay(Glide2, Components, Events) {
19327    var Binder = new EventsBinder();
19328    var Autoplay2 = {
19329      mount: function mount2() {
19330        this.enable();
19331        this.start();
19332        if (Glide2.settings.hoverpause) {
19333          this.bind();
19334        }
19335      },
19336      enable: function enable() {
19337        this._e = true;
19338      },
19339      disable: function disable() {
19340        this._e = false;
19341      },
19342      start: function start2() {
19343        var _this = this;
19344        if (!this._e) {
19345          return;
19346        }
19347        this.enable();
19348        if (Glide2.settings.autoplay) {
19349          if (isUndefined(this._i)) {
19350            this._i = setInterval(function() {
19351              _this.stop();
19352              Components.Run.make(">");
19353              _this.start();
19354              Events.emit("autoplay");
19355            }, this.time);
19356          }
19357        }
19358      },
19359      stop: function stop2() {
19360        this._i = clearInterval(this._i);
19361      },
19362      bind: function bind() {
19363        var _this2 = this;
19364        Binder.on("mouseover", Components.Html.root, function() {
19365          if (_this2._e) {
19366            _this2.stop();
19367          }
19368        });
19369        Binder.on("mouseout", Components.Html.root, function() {
19370          if (_this2._e) {
19371            _this2.start();
19372          }
19373        });
19374      },
19375      unbind: function unbind() {
19376        Binder.off(["mouseover", "mouseout"], Components.Html.root);
19377      }
19378    };
19379    define2(Autoplay2, "time", {
19380      get: function get() {
19381        var autoplay = Components.Html.slides[Glide2.index].getAttribute("data-glide-autoplay");
19382        if (autoplay) {
19383          return toInt(autoplay);
19384        }
19385        return toInt(Glide2.settings.autoplay);
19386      }
19387    });
19388    Events.on(["destroy", "update"], function() {
19389      Autoplay2.unbind();
19390    });
19391    Events.on(["run.before", "swipe.start", "update"], function() {
19392      Autoplay2.stop();
19393    });
19394    Events.on(["pause", "destroy"], function() {
19395      Autoplay2.disable();
19396      Autoplay2.stop();
19397    });
19398    Events.on(["run.after", "swipe.end"], function() {
19399      Autoplay2.start();
19400    });
19401    Events.on(["play"], function() {
19402      Autoplay2.enable();
19403      Autoplay2.start();
19404    });
19405    Events.on("update", function() {
19406      Autoplay2.mount();
19407    });
19408    Events.on("destroy", function() {
19409      Binder.destroy();
19410    });
19411    return Autoplay2;
19412  }
19413  function sortBreakpoints(points) {
19414    if (isObject(points)) {
19415      return sortKeys(points);
19416    } else {
19417      warn("Breakpoints option must be an object");
19418    }
19419    return {};
19420  }
19421  function Breakpoints(Glide2, Components, Events) {
19422    var Binder = new EventsBinder();
19423    var settings = Glide2.settings;
19424    var points = sortBreakpoints(settings.breakpoints);
19425    var defaults3 = Object.assign({}, settings);
19426    var Breakpoints2 = {
19427      match: function match(points2) {
19428        if (typeof window.matchMedia !== "undefined") {
19429          for (var point in points2) {
19430            if (points2.hasOwnProperty(point)) {
19431              if (window.matchMedia("(max-width: ".concat(point, "px)")).matches) {
19432                return points2[point];
19433              }
19434            }
19435          }
19436        }
19437        return defaults3;
19438      }
19439    };
19440    Object.assign(settings, Breakpoints2.match(points));
19441    Binder.on("resize", window, throttle(function() {
19442      Glide2.settings = mergeOptions(settings, Breakpoints2.match(points));
19443    }, Glide2.settings.throttle));
19444    Events.on("update", function() {
19445      points = sortBreakpoints(points);
19446      defaults3 = Object.assign({}, settings);
19447    });
19448    Events.on("destroy", function() {
19449      Binder.off("resize", window);
19450    });
19451    return Breakpoints2;
19452  }
19453  var COMPONENTS = {
19454    Html,
19455    Translate,
19456    Transition,
19457    Direction,
19458    Peek,
19459    Sizes,
19460    Gaps,
19461    Move,
19462    Clones,
19463    Resize,
19464    Build,
19465    Run,
19466    Swipe,
19467    Images,
19468    Anchors,
19469    Controls,
19470    Keyboard,
19471    Autoplay,
19472    Breakpoints
19473  };
19474  var Glide = /* @__PURE__ */ function(_Core) {
19475    _inherits(Glide2, _Core);
19476    var _super = _createSuper(Glide2);
19477    function Glide2() {
19478      _classCallCheck(this, Glide2);
19479      return _super.apply(this, arguments);
19480    }
19481    _createClass2(Glide2, [{
19482      key: "mount",
19483      value: function mount2() {
19484        var extensions = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
19485        return _get3(_getPrototypeOf(Glide2.prototype), "mount", this).call(this, Object.assign({}, COMPONENTS, extensions));
19486      }
19487    }]);
19488    return Glide2;
19489  }(Glide$1);
19490
19491  
19491// components/page-builder/usps/index.js
19492  function usp_slider() {
19493    if (document.querySelector(".usp-slider")) {
19494      let dir = document.querySelector('[dir="rtl"]') ? "rtl" : "ltr";
19495      new Glide(".usp-slider", {
19496        type: "carousel",
19497        peek: 0,
19498        gap: 16,
19499        startAt: 0,
19500        perView: 3,
19501        bound: true,
19502        breakpoints: {
19503          960: {
19504            perView: 1,
19505            peek: 32,
19506            autoplay: 4e3
19507          }
19508        },
19509        direction: dir
19510      }).mount();
19511    }
19512    let sections = document.querySelectorAll(".usps");
19513    sections.forEach(function(el) {
19514      ScrollTrigger2.create({
19515        trigger: el,
19516        start: "top 90%",
19517        onEnter: (self2) => {
19518          gsapWithCSS.timeline().to(el.querySelectorAll(".usp-line"), {
19519            height: "100%",
19520            stagger: 0.1
19521          }, 0.25).to(el.querySelectorAll(".usp-content"), {
19522            y: 0,
19523            opacity: 1,
19524            stagger: 0.1,
19525            ease: "power4.out"
19526          }, 0);
19527        }
19528      });
19529    });
19530  }
19531
19532  
19532// components/page-builder/icon-buttons/index.js
19533  function icon_buttons() {
19534    gsapWithCSS.set(".icon-circle", {
19535      drawSVG: 0
19536    });
19537    let sections = document.querySelectorAll(".icon-buttons");
19538    sections.forEach(function(el) {
19539      ScrollTrigger2.create({
19540        trigger: el,
19541        start: "top 90%",
19542        onEnter: (self2) => {
19543          gsapWithCSS.timeline().to(el.querySelectorAll(".button-icon"), {
19544            opacity: 1,
19545            stagger: 0.1
19546          }).to(el.querySelectorAll(".icon-circle"), {
19547            duration: 1,
19548            stagger: 0.1,
19549            drawSVG: "100%"
19550          }, 0.2);
19551        }
19552      });
19553    });
19554  }
19555
19556  
vendor: 8,202 bytes, lines 19556-19774
19556// node_modules/gsap/DrawSVGPlugin.js
19557  var gsap4;
19558  var _toArray2;
19559  var _doc5;
19560  var _win5;
19561  var _isEdge;
19562  var _coreInitted4;
19563  var _warned;
19564  var _windowExists7 = function _windowExists8() {
19565    return typeof window !== "undefined";
19566  };
19567  var _getGSAP5 = function _getGSAP6() {
19568    return gsap4 || _windowExists7() && (gsap4 = window.gsap) && gsap4.registerPlugin && gsap4;
19569  };
19570  var _numExp2 = /[-+=\.]*\d+[\.e\-\+]*\d*[e\-\+]*\d*/gi;
19571  var _types = {
19572    rect: ["width", "height"],
19573    circle: ["r", "r"],
19574    ellipse: ["rx", "ry"],
19575    line: ["x2", "y2"]
19576  };
19577  var _round5 = function _round6(value) {
19578    return Math.round(value * 1e4) / 1e4;
19579  };
19580  var _parseNum = function _parseNum2(value) {
19581    return parseFloat(value) || 0;
19582  };
19583  var _parseSingleVal = function _parseSingleVal2(value, length) {
19584    var num = _parseNum(value);
19585    return ~value.indexOf("%") ? num / 100 * length : num;
19586  };
19587  var _getAttributeAsNumber = function _getAttributeAsNumber2(target, attr) {
19588    return _parseNum(target.getAttribute(attr));
19589  };
19590  var _sqrt2 = Math.sqrt;
19591  var _getDistance = function _getDistance2(x1, y1, x2, y2, scaleX, scaleY) {
19592    return _sqrt2(Math.pow((_parseNum(x2) - _parseNum(x1)) * scaleX, 2) + Math.pow((_parseNum(y2) - _parseNum(y1)) * scaleY, 2));
19593  };
19594  var _warn3 = function _warn4(message) {
19595    return console.warn(message);
19596  };
19597  var _hasNonScalingStroke = function _hasNonScalingStroke2(target) {
19598    return target.getAttribute("vector-effect") === "non-scaling-stroke";
19599  };
19600  var _bonusValidated = 1;
19601  var _parse = function _parse2(value, length, defaultStart) {
19602    var i = value.indexOf(" "), s, e;
19603    if (i < 0) {
19604      s = defaultStart !== void 0 ? defaultStart + "" : value;
19605      e = value;
19606    } else {
19607      s = value.substr(0, i);
19608      e = value.substr(i + 1);
19609    }
19610    s = _parseSingleVal(s, length);
19611    e = _parseSingleVal(e, length);
19612    return s > e ? [e, s] : [s, e];
19613  };
19614  var _getLength = function _getLength2(target) {
19615    target = _toArray2(target)[0];
19616    if (!target) {
19617      return 0;
19618    }
19619    var type = target.tagName.toLowerCase(), style = target.style, scaleX = 1, scaleY = 1, length, bbox, points, prevPoint, i, rx, ry;
19620    if (_hasNonScalingStroke(target)) {
19621      scaleY = target.getScreenCTM();
19622      scaleX = _sqrt2(scaleY.a * scaleY.a + scaleY.b * scaleY.b);
19623      scaleY = _sqrt2(scaleY.d * scaleY.d + scaleY.c * scaleY.c);
19624    }
19625    try {
19626      bbox = target.getBBox();
19627    } catch (e) {
19628      _warn3("Some browsers won't measure invisible elements (like display:none or masks inside defs).");
19629    }
19630    var _ref = bbox || {
19631      x: 0,
19632      y: 0,
19633      width: 0,
19634      height: 0
19635    }, x = _ref.x, y = _ref.y, width = _ref.width, height = _ref.height;
19636    if ((!bbox || !width && !height) && _types[type]) {
19637      width = _getAttributeAsNumber(target, _types[type][0]);
19638      height = _getAttributeAsNumber(target, _types[type][1]);
19639      if (type !== "rect" && type !== "line") {
19640        width *= 2;
19641        height *= 2;
19642      }
19643      if (type === "line") {
19644        x = _getAttributeAsNumber(target, "x1");
19645        y = _getAttributeAsNumber(target, "y1");
19646        width = Math.abs(width - x);
19647        height = Math.abs(height - y);
19648      }
19649    }
19650    if (type === "path") {
19651      prevPoint = style.strokeDasharray;
19652      style.strokeDasharray = "none";
19653      length = target.getTotalLength() || 0;
19654      _round5(scaleX) !== _round5(scaleY) && !_warned && (_warned = 1) && _warn3("Warning: <path> length cannot be measured when vector-effect is non-scaling-stroke and the element isn't proportionally scaled.");
19655      length *= (scaleX + scaleY) / 2;
19656      style.strokeDasharray = prevPoint;
19657    } else if (type === "rect") {
19658      length = width * 2 * scaleX + height * 2 * scaleY;
19659    } else if (type === "line") {
19660      length = _getDistance(x, y, x + width, y + height, scaleX, scaleY);
19661    } else if (type === "polyline" || type === "polygon") {
19662      points = target.getAttribute("points").match(_numExp2) || [];
19663      type === "polygon" && points.push(points[0], points[1]);
19664      length = 0;
19665      for (i = 2; i < points.length; i += 2) {
19666        length += _getDistance(points[i - 2], points[i - 1], points[i], points[i + 1], scaleX, scaleY) || 0;
19667      }
19668    } else if (type === "circle" || type === "ellipse") {
19669      rx = width / 2 * scaleX;
19670      ry = height / 2 * scaleY;
19671      length = Math.PI * (3 * (rx + ry) - _sqrt2((3 * rx + ry) * (rx + 3 * ry)));
19672    }
19673    return length || 0;
19674  };
19675  var _getPosition = function _getPosition2(target, length) {
19676    target = _toArray2(target)[0];
19677    if (!target) {
19678      return [0, 0];
19679    }
19680    length || (length = _getLength(target) + 1);
19681    var cs = _win5.getComputedStyle(target), dash = cs.strokeDasharray || "", offset2 = _parseNum(cs.strokeDashoffset), i = dash.indexOf(",");
19682    i < 0 && (i = dash.indexOf(" "));
19683    dash = i < 0 ? length : _parseNum(dash.substr(0, i));
19684    dash > length && (dash = length);
19685    return [-offset2 || 0, dash - offset2 || 0];
19686  };
19687  var _initCore5 = function _initCore6() {
19688    if (_windowExists7()) {
19689      _doc5 = document;
19690      _win5 = window;
19691      _coreInitted4 = gsap4 = _getGSAP5();
19692      _toArray2 = gsap4.utils.toArray;
19693      _isEdge = ((_win5.navigator || {}).userAgent || "").indexOf("Edge") !== -1;
19694    }
19695  };
19696  var DrawSVGPlugin = {
19697    version: "3.10.4",
19698    name: "drawSVG",
19699    register: function register(core) {
19700      gsap4 = core;
19701      _initCore5();
19702    },
19703    init: function init4(target, value, tween, index, targets) {
19704      if (!target.getBBox) {
19705        return false;
19706      }
19707      _coreInitted4 || _initCore5();
19708      var length = _getLength(target), start2, end2, cs;
19709      this._style = target.style;
19710      this._target = target;
19711      if (value + "" === "true") {
19712        value = "0 100%";
19713      } else if (!value) {
19714        value = "0 0";
19715      } else if ((value + "").indexOf(" ") === -1) {
19716        value = "0 " + value;
19717      }
19718      start2 = _getPosition(target, length);
19719      end2 = _parse(value, length, start2[0]);
19720      this._length = _round5(length);
19721      this._dash = _round5(start2[1] - start2[0]);
19722      this._offset = _round5(-start2[0]);
19723      this._dashPT = this.add(this, "_dash", this._dash, _round5(end2[1] - end2[0]));
19724      this._offsetPT = this.add(this, "_offset", this._offset, _round5(-end2[0]));
19725      if (_isEdge) {
19726        cs = _win5.getComputedStyle(target);
19727        if (cs.strokeLinecap !== cs.strokeLinejoin) {
19728          end2 = _parseNum(cs.strokeMiterlimit);
19729          this.add(target.style, "strokeMiterlimit", end2, end2 + 0.01);
19730        }
19731      }
19732      this._live = _hasNonScalingStroke(target) || ~(value + "").indexOf("live");
19733      this._nowrap = ~(value + "").indexOf("nowrap");
19734      this._props.push("drawSVG");
19735      return _bonusValidated;
19736    },
19737    render: function render(ratio, data) {
19738      var pt = data._pt, style = data._style, length, lengthRatio, dash, offset2;
19739      if (pt) {
19740        if (data._live) {
19741          length = _getLength(data._target);
19742          if (length !== data._length) {
19743            lengthRatio = length / data._length;
19744            data._length = length;
19745            if (data._offsetPT) {
19746              data._offsetPT.s *= lengthRatio;
19747              data._offsetPT.c *= lengthRatio;
19748            }
19749            if (data._dashPT) {
19750              data._dashPT.s *= lengthRatio;
19751              data._dashPT.c *= lengthRatio;
19752            } else {
19753              data._dash *= lengthRatio;
19754            }
19755          }
19756        }
19757        while (pt) {
19758          pt.r(ratio, pt.d);
19759          pt = pt._next;
19760        }
19761        dash = data._dash || ratio && ratio !== 1 && 1e-4 || 0;
19762        length = data._length - dash + 0.1;
19763        offset2 = data._offset;
19764        dash && offset2 && dash + Math.abs(offset2 % data._length) > data._length - 0.2 && (offset2 += offset2 < 0 ? 0.1 : -0.1) && (length += 0.1);
19765        style.strokeDashoffset = dash ? offset2 : offset2 + 1e-3;
19766        style.strokeDasharray = length < 0.2 ? "none" : dash ? dash + "px," + (data._nowrap ? 999999 : length) + "px" : "0px, 999999px";
19767      }
19768    },
19769    getLength: _getLength,
19770    getPosition: _getPosition
19771  };
19772  _getGSAP5() && gsap4.registerPlugin(DrawSVGPlugin);
19773
19774  
19774// components/page-builder/text-image/index.js
19775  function text_image() {
19776    gsapWithCSS.set(".ti-circle-1 path", {
19777      scaleX: -1,
19778      transformOrigin: "center center",
19779      rotate: -90
19780    });
19781    gsapWithCSS.set(".ti-circle-2 path", {
19782      scaleX: -1,
19783      transformOrigin: "center center",
19784      rotate: 90
19785    });
19786    gsapWithCSS.set(".ti-circle-3 path", {
19787      scaleX: -1,
19788      transformOrigin: "center center",
19789      rotate: -90
19790    });
19791    let sections = document.querySelectorAll(".text-image");
19792    sections.forEach(function(el) {
19793      ScrollTrigger2.create({
19794        trigger: el,
19795        start: "top 85%",
19796        invalidateOnRefresh: true,
19797        onEnter: (self2) => {
19798          gsapWithCSS.timeline({
19799            defaults: {
19800              duration: 0.5,
19801              ease: "none",
19802              clearProps: "all"
19803            }
19804          }).from(el.querySelector(".ti-line-1"), {
19805            width: 0
19806          }).from(el.querySelector(".ti-line-2"), {
19807            height: 0
19808          }).fromTo(el.querySelector(".ti-circle-1 path"), {
19809            drawSVG: "100% 100%"
19810          }, {
19811            drawSVG: "0% 100%",
19812            duration: 0.1
19813          }).from(el.querySelector(".ti-line-3"), {
19814            width: 0
19815          }).fromTo(el.querySelector(".ti-circle-2 path"), {
19816            drawSVG: "100% 100%"
19817          }, {
19818            drawSVG: "0% 100%",
19819            duration: 0.1
19820          }).from(el.querySelector(".ti-line-4"), {
19821            height: 0
19822          }).fromTo(el.querySelector(".ti-circle-3 path"), {
19823            drawSVG: "100% 100%"
19824          }, {
19825            drawSVG: "0% 100%",
19826            duration: 0.1
19827          }).from(el.querySelector(".ti-line-5"), {
19828            width: 0
19829          });
19830        }
19831      });
19832    });
19833  }
19834
19835  
19835// components/page-builder/product-slider/index.js
19836  function product_slider() {
19837    if (document.querySelector(".product-slider .glide")) {
19838      let sliders = document.querySelectorAll(".product-slider .glide");
19839      sliders.forEach(function(element) {
19840        new Glide(element, {
19841          gap: 0,
19842          autoplay: 8e3
19843        }).mount();
19844      });
19845    }
19846  }
19847
19848  
19848// components/page-builder/product-slider-2/index.js
19849  function product_slider_2() {
19850    if (document.querySelector(".product-slider-2 .glide")) {
19851      let sliders = document.querySelectorAll(".product-slider-2 .glide");
19852      sliders.forEach(function(element) {
19853        let dir = element.closest('[dir="rtl"]') ? "rtl" : "ltr";
19854        new Glide(element, {
19855          gap: 30,
19856          autoplay: 8e3,
19857          perView: 3,
19858          bound: true,
19859          type: "carousel",
19860          breakpoints: {
19861            1024: {
19862              perView: 2
19863            },
19864            600: {
19865              perView: 1
19866            }
19867          },
19868          direction: dir
19869        }).mount();
19870      });
19871    }
19872  }
19873
19874  
vendor: 7,239 bytes, lines 19874-20072
19874// node_modules/gsap/ScrollToPlugin.js
19875  var gsap5;
19876  var _coreInitted5;
19877  var _window;
19878  var _docEl3;
19879  var _body3;
19880  var _toArray3;
19881  var _config2;
19882  var _windowExists9 = function _windowExists10() {
19883    return typeof window !== "undefined";
19884  };
19885  var _getGSAP7 = function _getGSAP8() {
19886    return gsap5 || _windowExists9() && (gsap5 = window.gsap) && gsap5.registerPlugin && gsap5;
19887  };
19888  var _isString5 = function _isString6(value) {
19889    return typeof value === "string";
19890  };
19891  var _isFunction5 = function _isFunction6(value) {
19892    return typeof value === "function";
19893  };
19894  var _max = function _max2(element, axis) {
19895    var dim = axis === "x" ? "Width" : "Height", scroll = "scroll" + dim, client = "client" + dim;
19896    return element === _window || element === _docEl3 || element === _body3 ? Math.max(_docEl3[scroll], _body3[scroll]) - (_window["inner" + dim] || _docEl3[client] || _body3[client]) : element[scroll] - element["offset" + dim];
19897  };
19898  var _buildGetter = function _buildGetter2(e, axis) {
19899    var p = "scroll" + (axis === "x" ? "Left" : "Top");
19900    if (e === _window) {
19901      if (e.pageXOffset != null) {
19902        p = "page" + axis.toUpperCase() + "Offset";
19903      } else {
19904        e = _docEl3[p] != null ? _docEl3 : _body3;
19905      }
19906    }
19907    return function() {
19908      return e[p];
19909    };
19910  };
19911  var _clean = function _clean2(value, index, target, targets) {
19912    _isFunction5(value) && (value = value(index, target, targets));
19913    if (typeof value !== "object") {
19914      return _isString5(value) && value !== "max" && value.charAt(1) !== "=" ? {
19915        x: value,
19916        y: value
19917      } : {
19918        y: value
19919      };
19920    } else if (value.nodeType) {
19921      return {
19922        y: value,
19923        x: value
19924      };
19925    } else {
19926      var result = {}, p;
19927      for (p in value) {
19928        result[p] = p !== "onAutoKill" && _isFunction5(value[p]) ? value[p](index, target, targets) : value[p];
19929      }
19930      return result;
19931    }
19932  };
19933  var _getOffset = function _getOffset2(element, container) {
19934    element = _toArray3(element)[0];
19935    if (!element || !element.getBoundingClientRect) {
19936      return console.warn("scrollTo target doesn't exist. Using 0") || {
19937        x: 0,
19938        y: 0
19939      };
19940    }
19941    var rect = element.getBoundingClientRect(), isRoot = !container || container === _window || container === _body3, cRect = isRoot ? {
19942      top: _docEl3.clientTop - (_window.pageYOffset || _docEl3.scrollTop || _body3.scrollTop || 0),
19943      left: _docEl3.clientLeft - (_window.pageXOffset || _docEl3.scrollLeft || _body3.scrollLeft || 0)
19944    } : container.getBoundingClientRect(), offsets = {
19945      x: rect.left - cRect.left,
19946      y: rect.top - cRect.top
19947    };
19948    if (!isRoot && container) {
19949      offsets.x += _buildGetter(container, "x")();
19950      offsets.y += _buildGetter(container, "y")();
19951    }
19952    return offsets;
19953  };
19954  var _parseVal = function _parseVal2(value, target, axis, currentVal, offset2) {
19955    return !isNaN(value) && typeof value !== "object" ? parseFloat(value) - offset2 : _isString5(value) && value.charAt(1) === "=" ? parseFloat(value.substr(2)) * (value.charAt(0) === "-" ? -1 : 1) + currentVal - offset2 : value === "max" ? _max(target, axis) - offset2 : Math.min(_max(target, axis), _getOffset(value, target)[axis] - offset2);
19956  };
19957  var _initCore7 = function _initCore8() {
19958    gsap5 = _getGSAP7();
19959    if (_windowExists9() && gsap5 && document.body) {
19960      _window = window;
19961      _body3 = document.body;
19962      _docEl3 = document.documentElement;
19963      _toArray3 = gsap5.utils.toArray;
19964      gsap5.config({
19965        autoKillThreshold: 7
19966      });
19967      _config2 = gsap5.config();
19968      _coreInitted5 = 1;
19969    }
19970  };
19971  var ScrollToPlugin = {
19972    version: "3.10.4",
19973    name: "scrollTo",
19974    rawVars: 1,
19975    register: function register2(core) {
19976      gsap5 = core;
19977      _initCore7();
19978    },
19979    init: function init5(target, value, tween, index, targets) {
19980      _coreInitted5 || _initCore7();
19981      var data = this, snapType = gsap5.getProperty(target, "scrollSnapType");
19982      data.isWin = target === _window;
19983      data.target = target;
19984      data.tween = tween;
19985      value = _clean(value, index, target, targets);
19986      data.vars = value;
19987      data.autoKill = !!value.autoKill;
19988      data.getX = _buildGetter(target, "x");
19989      data.getY = _buildGetter(target, "y");
19990      data.x = data.xPrev = data.getX();
19991      data.y = data.yPrev = data.getY();
19992      if (snapType && snapType !== "none") {
19993        data.snap = 1;
19994        data.snapInline = target.style.scrollSnapType;
19995        target.style.scrollSnapType = "none";
19996      }
19997      if (value.x != null) {
19998        data.add(data, "x", data.x, _parseVal(value.x, target, "x", data.x, value.offsetX || 0), index, targets);
19999        data._props.push("scrollTo_x");
20000      } else {
20001        data.skipX = 1;
20002      }
20003      if (value.y != null) {
20004        data.add(data, "y", data.y, _parseVal(value.y, target, "y", data.y, value.offsetY || 0), index, targets);
20005        data._props.push("scrollTo_y");
20006      } else {
20007        data.skipY = 1;
20008      }
20009    },
20010    render: function render2(ratio, data) {
20011      var pt = data._pt, target = data.target, tween = data.tween, autoKill = data.autoKill, xPrev = data.xPrev, yPrev = data.yPrev, isWin = data.isWin, snap3 = data.snap, snapInline = data.snapInline, x, y, yDif, xDif, threshold;
20012      while (pt) {
20013        pt.r(ratio, pt.d);
20014        pt = pt._next;
20015      }
20016      x = isWin || !data.skipX ? data.getX() : xPrev;
20017      y = isWin || !data.skipY ? data.getY() : yPrev;
20018      yDif = y - yPrev;
20019      xDif = x - xPrev;
20020      threshold = _config2.autoKillThreshold;
20021      if (data.x < 0) {
20022        data.x = 0;
20023      }
20024      if (data.y < 0) {
20025        data.y = 0;
20026      }
20027      if (autoKill) {
20028        if (!data.skipX && (xDif > threshold || xDif < -threshold) && x < _max(target, "x")) {
20029          data.skipX = 1;
20030        }
20031        if (!data.skipY && (yDif > threshold || yDif < -threshold) && y < _max(target, "y")) {
20032          data.skipY = 1;
20033        }
20034        if (data.skipX && data.skipY) {
20035          tween.kill();
20036          data.vars.onAutoKill && data.vars.onAutoKill.apply(tween, data.vars.onAutoKillParams || []);
20037        }
20038      }
20039      if (isWin) {
20040        _window.scrollTo(!data.skipX ? data.x : x, !data.skipY ? data.y : y);
20041      } else {
20042        data.skipY || (target.scrollTop = data.y);
20043        data.skipX || (target.scrollLeft = data.x);
20044      }
20045      if (snap3 && (ratio === 1 || ratio === 0)) {
20046        y = target.scrollTop;
20047        x = target.scrollLeft;
20048        snapInline ? target.style.scrollSnapType = snapInline : target.style.removeProperty("scroll-snap-type");
20049        target.scrollTop = y + 1;
20050        target.scrollLeft = x + 1;
20051        target.scrollTop = y;
20052        target.scrollLeft = x;
20053      }
20054      data.xPrev = data.x;
20055      data.yPrev = data.y;
20056    },
20057    kill: function kill(property) {
20058      var both = property === "scrollTo";
20059      if (both || property === "scrollTo_x") {
20060        this.skipX = 1;
20061      }
20062      if (both || property === "scrollTo_y") {
20063        this.skipY = 1;
20064      }
20065    }
20066  };
20067  ScrollToPlugin.max = _max;
20068  ScrollToPlugin.getOffset = _getOffset;
20069  ScrollToPlugin.buildGetter = _buildGetter;
20070  _getGSAP7() && gsap5.registerPlugin(ScrollToPlugin);
20071
20072  
vendor: 7,649 bytes, lines 20072-20090
20072// node_modules/gsap/utils/strings.js
20073  var emojiExp = /([\uD800-\uDBFF][\uDC00-\uDFFF](?:[\u200D\uFE0F][\uD800-\uDBFF][\uDC00-\uDFFF]){2,}|\uD83D\uDC69(?:\u200D(?:(?:\uD83D\uDC69\u200D)?\uD83D\uDC67|(?:\uD83D\uDC69\u200D)?\uD83D\uDC66)|\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D(?:\uD83D\uDC69\u200D)?\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D(?:\uD83D\uDC69\u200D)?\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]\uFE0F|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC6F\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3C-\uDD3E\uDDD6-\uDDDF])\u200D[\u2640\u2642]\uFE0F|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F\u200D[\u2640\u2642]|(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642])\uFE0F|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\uD83D\uDC69\u200D[\u2695\u2696\u2708]|\uD83D\uDC68(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708]))\uFE0F|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83D\uDC69\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|\uD83D\uDC68(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:(?:\uD83D[\uDC68\uDC69])\u200D)?\uD83D\uDC66\u200D\uD83D\uDC66|(?:(?:\uD83D[\uDC68\uDC69])\u200D)?\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92])|(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]))|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDD1-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\u200D(?:(?:(?:\uD83D[\uDC68\uDC69])\u200D)?\uD83D\uDC67|(?:(?:\uD83D[\uDC68\uDC69])\u200D)?\uD83D\uDC66)|\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC69\uDC6E\uDC70-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD26\uDD30-\uDD39\uDD3D\uDD3E\uDDD1-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])?|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDEEB\uDEEC\uDEF4-\uDEF8]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD4C\uDD50-\uDD6B\uDD80-\uDD97\uDDC0\uDDD0-\uDDE6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEF8]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD4C\uDD50-\uDD6B\uDD80-\uDD97\uDDC0\uDDD0-\uDDE6])\uFE0F)/;
20074  function getText(e) {
20075    var type = e.nodeType, result = "";
20076    if (type === 1 || type === 9 || type === 11) {
20077      if (typeof e.textContent === "string") {
20078        return e.textContent;
20079      } else {
20080        for (e = e.firstChild; e; e = e.nextSibling) {
20081          result += getText(e);
20082        }
20083      }
20084    } else if (type === 3 || type === 4) {
20085      return e.nodeValue;
20086    }
20087    return result;
20088  }
20089
20090  
vendor: 17,016 bytes, lines 20090-20489
20090// node_modules/gsap/SplitText.js
20091  var _doc6;
20092  var _win6;
20093  var _coreInitted6;
20094  var _stripExp = /(?:\r|\n|\t\t)/g;
20095  var _multipleSpacesExp = /(?:\s\s+)/g;
20096  var _initCore9 = function _initCore10() {
20097    _doc6 = document;
20098    _win6 = window;
20099    _coreInitted6 = 1;
20100  };
20101  var _bonusValidated2 = 1;
20102  var _getComputedStyle3 = function _getComputedStyle4(element) {
20103    return _win6.getComputedStyle(element);
20104  };
20105  var _isArray2 = Array.isArray;
20106  var _slice2 = [].slice;
20107  var _toArray4 = function _toArray5(value, leaveStrings) {
20108    var type;
20109    return _isArray2(value) ? value : (type = typeof value) === "string" && !leaveStrings && value ? _slice2.call(_doc6.querySelectorAll(value), 0) : value && type === "object" && "length" in value ? _slice2.call(value, 0) : value ? [value] : [];
20110  };
20111  var _isAbsolute = function _isAbsolute2(vars) {
20112    return vars.position === "absolute" || vars.absolute === true;
20113  };
20114  var _findSpecialChars = function _findSpecialChars2(text, chars) {
20115    var i = chars.length, s;
20116    while (--i > -1) {
20117      s = chars[i];
20118      if (text.substr(0, s.length) === s) {
20119        return s.length;
20120      }
20121    }
20122  };
20123  var _divStart = " style='position:relative;display:inline-block;'";
20124  var _cssClassFunc = function _cssClassFunc2(cssClass, tag) {
20125    if (cssClass === void 0) {
20126      cssClass = "";
20127    }
20128    var iterate = ~cssClass.indexOf("++"), num = 1;
20129    if (iterate) {
20130      cssClass = cssClass.split("++").join("");
20131    }
20132    return function() {
20133      return "<" + tag + _divStart + (cssClass ? " class='" + cssClass + (iterate ? num++ : "") + "'>" : ">");
20134    };
20135  };
20136  var _swapText = function _swapText2(element, oldText, newText) {
20137    var type = element.nodeType;
20138    if (type === 1 || type === 9 || type === 11) {
20139      for (element = element.firstChild; element; element = element.nextSibling) {
20140        _swapText2(element, oldText, newText);
20141      }
20142    } else if (type === 3 || type === 4) {
20143      element.nodeValue = element.nodeValue.split(oldText).join(newText);
20144    }
20145  };
20146  var _pushReversed = function _pushReversed2(a, merge) {
20147    var i = merge.length;
20148    while (--i > -1) {
20149      a.push(merge[i]);
20150    }
20151  };
20152  var _isBeforeWordDelimiter = function _isBeforeWordDelimiter2(e, root, wordDelimiter) {
20153    var next;
20154    while (e && e !== root) {
20155      next = e._next || e.nextSibling;
20156      if (next) {
20157        return next.textContent.charAt(0) === wordDelimiter;
20158      }
20159      e = e.parentNode || e._parent;
20160    }
20161  };
20162  var _deWordify = function _deWordify2(e) {
20163    var children = _toArray4(e.childNodes), l = children.length, i, child;
20164    for (i = 0; i < l; i++) {
20165      child = children[i];
20166      if (child._isSplit) {
20167        _deWordify2(child);
20168      } else {
20169        if (i && child.previousSibling && child.previousSibling.nodeType === 3) {
20170          child.previousSibling.nodeValue += child.nodeType === 3 ? child.nodeValue : child.firstChild.nodeValue;
20171          e.removeChild(child);
20172        } else if (child.nodeType !== 3) {
20173          e.insertBefore(child.firstChild, child);
20174          e.removeChild(child);
20175        }
20176      }
20177    }
20178  };
20179  var _getStyleAsNumber = function _getStyleAsNumber2(name, computedStyle) {
20180    return parseFloat(computedStyle[name]) || 0;
20181  };
20182  var _setPositionsAfterSplit = function _setPositionsAfterSplit2(element, vars, allChars, allWords, allLines, origWidth, origHeight) {
20183    var cs = _getComputedStyle3(element), paddingLeft = _getStyleAsNumber("paddingLeft", cs), lineOffsetY = -999, borderTopAndBottom = _getStyleAsNumber("borderBottomWidth", cs) + _getStyleAsNumber("borderTopWidth", cs), borderLeftAndRight = _getStyleAsNumber("borderLeftWidth", cs) + _getStyleAsNumber("borderRightWidth", cs), padTopAndBottom = _getStyleAsNumber("paddingTop", cs) + _getStyleAsNumber("paddingBottom", cs), padLeftAndRight = _getStyleAsNumber("paddingLeft", cs) + _getStyleAsNumber("paddingRight", cs), lineThreshold = _getStyleAsNumber("fontSize", cs) * (vars.lineThreshold || 0.2), textAlign = cs.textAlign, charArray = [], wordArray = [], lineArray = [], wordDelimiter = vars.wordDelimiter || " ", tag = vars.tag ? vars.tag : vars.span ? "span" : "div", types = vars.type || vars.split || "chars,words,lines", lines = allLines && ~types.indexOf("lines") ? [] : null, words = ~types.indexOf("words"), chars = ~types.indexOf("chars"), absolute = _isAbsolute(vars), linesClass = vars.linesClass, iterateLine = ~(linesClass || "").indexOf("++"), spaceNodesToRemove = [], isFlex = cs.display === "flex", prevInlineDisplay = element.style.display, i, j, l, node, nodes, isChild, curLine, addWordSpaces, style, lineNode, lineWidth, offset2;
20184    iterateLine && (linesClass = linesClass.split("++").join(""));
20185    isFlex && (element.style.display = "block");
20186    j = element.getElementsByTagName("*");
20187    l = j.length;
20188    nodes = [];
20189    for (i = 0; i < l; i++) {
20190      nodes[i] = j[i];
20191    }
20192    if (lines || absolute) {
20193      for (i = 0; i < l; i++) {
20194        node = nodes[i];
20195        isChild = node.parentNode === element;
20196        if (isChild || absolute || chars && !words) {
20197          offset2 = node.offsetTop;
20198          if (lines && isChild && Math.abs(offset2 - lineOffsetY) > lineThreshold && (node.nodeName !== "BR" || i === 0)) {
20199            curLine = [];
20200            lines.push(curLine);
20201            lineOffsetY = offset2;
20202          }
20203          if (absolute) {
20204            node._x = node.offsetLeft;
20205            node._y = offset2;
20206            node._w = node.offsetWidth;
20207            node._h = node.offsetHeight;
20208          }
20209          if (lines) {
20210            if (node._isSplit && isChild || !chars && isChild || words && isChild || !words && node.parentNode.parentNode === element && !node.parentNode._isSplit) {
20211              curLine.push(node);
20212              node._x -= paddingLeft;
20213              if (_isBeforeWordDelimiter(node, element, wordDelimiter)) {
20214                node._wordEnd = true;
20215              }
20216            }
20217            if (node.nodeName === "BR" && (node.nextSibling && node.nextSibling.nodeName === "BR" || i === 0)) {
20218              lines.push([]);
20219            }
20220          }
20221        }
20222      }
20223    }
20224    for (i = 0; i < l; i++) {
20225      node = nodes[i];
20226      isChild = node.parentNode === element;
20227      if (node.nodeName === "BR") {
20228        if (lines || absolute) {
20229          node.parentNode && node.parentNode.removeChild(node);
20230          nodes.splice(i--, 1);
20231          l--;
20232        } else if (!words) {
20233          element.appendChild(node);
20234        }
20235        continue;
20236      }
20237      if (absolute) {
20238        style = node.style;
20239        if (!words && !isChild) {
20240          node._x += node.parentNode._x;
20241          node._y += node.parentNode._y;
20242        }
20243        style.left = node._x + "px";
20244        style.top = node._y + "px";
20245        style.position = "absolute";
20246        style.display = "block";
20247        style.width = node._w + 1 + "px";
20248        style.height = node._h + "px";
20249      }
20250      if (!words && chars) {
20251        if (node._isSplit) {
20252          node._next = j = node.nextSibling;
20253          node.parentNode.appendChild(node);
20254          while (j && j.nodeType === 3 && j.textContent === " ") {
20255            node._next = j.nextSibling;
20256            node.parentNode.appendChild(j);
20257            j = j.nextSibling;
20258          }
20259        } else if (node.parentNode._isSplit) {
20260          node._parent = node.parentNode;
20261          if (!node.previousSibling && node.firstChild) {
20262            node.firstChild._isFirst = true;
20263          }
20264          if (node.nextSibling && node.nextSibling.textContent === " " && !node.nextSibling.nextSibling) {
20265            spaceNodesToRemove.push(node.nextSibling);
20266          }
20267          node._next = node.nextSibling && node.nextSibling._isFirst ? null : node.nextSibling;
20268          node.parentNode.removeChild(node);
20269          nodes.splice(i--, 1);
20270          l--;
20271        } else if (!isChild) {
20272          offset2 = !node.nextSibling && _isBeforeWordDelimiter(node.parentNode, element, wordDelimiter);
20273          node.parentNode._parent && node.parentNode._parent.appendChild(node);
20274          offset2 && node.parentNode.appendChild(_doc6.createTextNode(" "));
20275          if (tag === "span") {
20276            node.style.display = "inline";
20277          }
20278          charArray.push(node);
20279        }
20280      } else if (node.parentNode._isSplit && !node._isSplit && node.innerHTML !== "") {
20281        wordArray.push(node);
20282      } else if (chars && !node._isSplit) {
20283        if (tag === "span") {
20284          node.style.display = "inline";
20285        }
20286        charArray.push(node);
20287      }
20288    }
20289    i = spaceNodesToRemove.length;
20290    while (--i > -1) {
20291      spaceNodesToRemove[i].parentNode.removeChild(spaceNodesToRemove[i]);
20292    }
20293    if (lines) {
20294      if (absolute) {
20295        lineNode = _doc6.createElement(tag);
20296        element.appendChild(lineNode);
20297        lineWidth = lineNode.offsetWidth + "px";
20298        offset2 = lineNode.offsetParent === element ? 0 : element.offsetLeft;
20299        element.removeChild(lineNode);
20300      }
20301      style = element.style.cssText;
20302      element.style.cssText = "display:none;";
20303      while (element.firstChild) {
20304        element.removeChild(element.firstChild);
20305      }
20306      addWordSpaces = wordDelimiter === " " && (!absolute || !words && !chars);
20307      for (i = 0; i < lines.length; i++) {
20308        curLine = lines[i];
20309        lineNode = _doc6.createElement(tag);
20310        lineNode.style.cssText = "display:block;text-align:" + textAlign + ";position:" + (absolute ? "absolute;" : "relative;");
20311        if (linesClass) {
20312          lineNode.className = linesClass + (iterateLine ? i + 1 : "");
20313        }
20314        lineArray.push(lineNode);
20315        l = curLine.length;
20316        for (j = 0; j < l; j++) {
20317          if (curLine[j].nodeName !== "BR") {
20318            node = curLine[j];
20319            lineNode.appendChild(node);
20320            addWordSpaces && node._wordEnd && lineNode.appendChild(_doc6.createTextNode(" "));
20321            if (absolute) {
20322              if (j === 0) {
20323                lineNode.style.top = node._y + "px";
20324                lineNode.style.left = paddingLeft + offset2 + "px";
20325              }
20326              node.style.top = "0px";
20327              if (offset2) {
20328                node.style.left = node._x - offset2 + "px";
20329              }
20330            }
20331          }
20332        }
20333        if (l === 0) {
20334          lineNode.innerHTML = "&nbsp;";
20335        } else if (!words && !chars) {
20336          _deWordify(lineNode);
20337          _swapText(lineNode, String.fromCharCode(160), " ");
20338        }
20339        if (absolute) {
20340          lineNode.style.width = lineWidth;
20341          lineNode.style.height = node._h + "px";
20342        }
20343        element.appendChild(lineNode);
20344      }
20345      element.style.cssText = style;
20346    }
20347    if (absolute) {
20348      if (origHeight > element.clientHeight) {
20349        element.style.height = origHeight - padTopAndBottom + "px";
20350        if (element.clientHeight < origHeight) {
20351          element.style.height = origHeight + borderTopAndBottom + "px";
20352        }
20353      }
20354      if (origWidth > element.clientWidth) {
20355        element.style.width = origWidth - padLeftAndRight + "px";
20356        if (element.clientWidth < origWidth) {
20357          element.style.width = origWidth + borderLeftAndRight + "px";
20358        }
20359      }
20360    }
20361    isFlex && (prevInlineDisplay ? element.style.display = prevInlineDisplay : element.style.removeProperty("display"));
20362    _pushReversed(allChars, charArray);
20363    words && _pushReversed(allWords, wordArray);
20364    _pushReversed(allLines, lineArray);
20365  };
20366  var _splitRawText = function _splitRawText2(element, vars, wordStart, charStart) {
20367    var tag = vars.tag ? vars.tag : vars.span ? "span" : "div", types = vars.type || vars.split || "chars,words,lines", chars = ~types.indexOf("chars"), absolute = _isAbsolute(vars), wordDelimiter = vars.wordDelimiter || " ", space = wordDelimiter !== " " ? "" : absolute ? "&#173; " : " ", wordEnd = "</" + tag + ">", wordIsOpen = 1, specialChars = vars.specialChars ? typeof vars.specialChars === "function" ? vars.specialChars : _findSpecialChars : null, text, splitText, i, j, l, character, hasTagStart, testResult, container = _doc6.createElement("div"), parent = element.parentNode;
20368    parent.insertBefore(container, element);
20369    container.textContent = element.nodeValue;
20370    parent.removeChild(element);
20371    element = container;
20372    text = getText(element);
20373    hasTagStart = text.indexOf("<") !== -1;
20374    if (vars.reduceWhiteSpace !== false) {
20375      text = text.replace(_multipleSpacesExp, " ").replace(_stripExp, "");
20376    }
20377    if (hasTagStart) {
20378      text = text.split("<").join("{{LT}}");
20379    }
20380    l = text.length;
20381    splitText = (text.charAt(0) === " " ? space : "") + wordStart();
20382    for (i = 0; i < l; i++) {
20383      character = text.charAt(i);
20384      if (specialChars && (testResult = specialChars(text.substr(i), vars.specialChars))) {
20385        character = text.substr(i, testResult || 1);
20386        splitText += chars && character !== " " ? charStart() + character + "</" + tag + ">" : character;
20387        i += testResult - 1;
20388      } else if (character === wordDelimiter && text.charAt(i - 1) !== wordDelimiter && i) {
20389        splitText += wordIsOpen ? wordEnd : "";
20390        wordIsOpen = 0;
20391        while (text.charAt(i + 1) === wordDelimiter) {
20392          splitText += space;
20393          i++;
20394        }
20395        if (i === l - 1) {
20396          splitText += space;
20397        } else if (text.charAt(i + 1) !== ")") {
20398          splitText += space + wordStart();
20399          wordIsOpen = 1;
20400        }
20401      } else if (character === "{" && text.substr(i, 6) === "{{LT}}") {
20402        splitText += chars ? charStart() + "{{LT}}</" + tag + ">" : "{{LT}}";
20403        i += 5;
20404      } else if (character.charCodeAt(0) >= 55296 && character.charCodeAt(0) <= 56319 || text.charCodeAt(i + 1) >= 65024 && text.charCodeAt(i + 1) <= 65039) {
20405        j = ((text.substr(i, 12).split(emojiExp) || [])[1] || "").length || 2;
20406        splitText += chars && character !== " " ? charStart() + text.substr(i, j) + "</" + tag + ">" : text.substr(i, j);
20407        i += j - 1;
20408      } else {
20409        splitText += chars && character !== " " ? charStart() + character + "</" + tag + ">" : character;
20410      }
20411    }
20412    element.outerHTML = splitText + (wordIsOpen ? wordEnd : "");
20413    hasTagStart && _swapText(parent, "{{LT}}", "<");
20414  };
20415  var _split = function _split2(element, vars, wordStart, charStart) {
20416    var children = _toArray4(element.childNodes), l = children.length, absolute = _isAbsolute(vars), i, child;
20417    if (element.nodeType !== 3 || l > 1) {
20418      vars.absolute = false;
20419      for (i = 0; i < l; i++) {
20420        child = children[i];
20421        child._next = child._isFirst = child._parent = child._wordEnd = null;
20422        if (child.nodeType !== 3 || /\S+/.test(child.nodeValue)) {
20423          if (absolute && child.nodeType !== 3 && _getComputedStyle3(child).display === "inline") {
20424            child.style.display = "inline-block";
20425            child.style.position = "relative";
20426          }
20427          child._isSplit = true;
20428          _split2(child, vars, wordStart, charStart);
20429        }
20430      }
20431      vars.absolute = absolute;
20432      element._isSplit = true;
20433      return;
20434    }
20435    _splitRawText(element, vars, wordStart, charStart);
20436  };
20437  var SplitText = /* @__PURE__ */ function() {
20438    function SplitText2(element, vars) {
20439      _coreInitted6 || _initCore9();
20440      this.elements = _toArray4(element);
20441      this.chars = [];
20442      this.words = [];
20443      this.lines = [];
20444      this._originals = [];
20445      this.vars = vars || {};
20446      _bonusValidated2 && this.split(vars);
20447    }
20448    var _proto = SplitText2.prototype;
20449    _proto.split = function split2(vars) {
20450      this.isSplit && this.revert();
20451      this.vars = vars = vars || this.vars;
20452      this._originals.length = this.chars.length = this.words.length = this.lines.length = 0;
20453      var i = this.elements.length, tag = vars.tag ? vars.tag : vars.span ? "span" : "div", wordStart = _cssClassFunc(vars.wordsClass, tag), charStart = _cssClassFunc(vars.charsClass, tag), origHeight, origWidth, e;
20454      while (--i > -1) {
20455        e = this.elements[i];
20456        this._originals[i] = e.innerHTML;
20457        origHeight = e.clientHeight;
20458        origWidth = e.clientWidth;
20459        _split(e, vars, wordStart, charStart);
20460        _setPositionsAfterSplit(e, vars, this.chars, this.words, this.lines, origWidth, origHeight);
20461      }
20462      this.chars.reverse();
20463      this.words.reverse();
20464      this.lines.reverse();
20465      this.isSplit = true;
20466      return this;
20467    };
20468    _proto.revert = function revert() {
20469      var originals = this._originals;
20470      if (!originals) {
20471        throw "revert() call wasn't scoped properly.";
20472      }
20473      this.elements.forEach(function(e, i) {
20474        return e.innerHTML = originals[i];
20475      });
20476      this.chars = [];
20477      this.words = [];
20478      this.lines = [];
20479      this.isSplit = false;
20480      return this;
20481    };
20482    SplitText2.create = function create(element, vars) {
20483      return new SplitText2(element, vars);
20484    };
20485    return SplitText2;
20486  }();
20487  SplitText.version = "3.10.4";
20488
20489  
vendor: 13,076 bytes, lines 20489-20821
20489// node_modules/gsap/utils/paths.js
20490  var _svgPathExp = /[achlmqstvz]|(-?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/ig;
20491  var _numbersExp = /(?:(-)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/ig;
20492  var _scientific = /[\+\-]?\d*\.?\d+e[\+\-]?\d+/ig;
20493  var _selectorExp = /(^[#\.][a-z]|[a-y][a-z])/i;
20494  var _DEG2RAD2 = Math.PI / 180;
20495  var _RAD2DEG2 = 180 / Math.PI;
20496  var _sin2 = Math.sin;
20497  var _cos2 = Math.cos;
20498  var _abs2 = Math.abs;
20499  var _sqrt3 = Math.sqrt;
20500  var _isString7 = function _isString8(value) {
20501    return typeof value === "string";
20502  };
20503  var _isNumber5 = function _isNumber6(value) {
20504    return typeof value === "number";
20505  };
20506  var _roundingNum = 1e5;
20507  var _round7 = function _round8(value) {
20508    return Math.round(value * _roundingNum) / _roundingNum || 0;
20509  };
20510  function getRawPath(value) {
20511    value = _isString7(value) && _selectorExp.test(value) ? document.querySelector(value) || value : value;
20512    var e = value.getAttribute ? value : 0, rawPath;
20513    if (e && (value = value.getAttribute("d"))) {
20514      if (!e._gsPath) {
20515        e._gsPath = {};
20516      }
20517      rawPath = e._gsPath[value];
20518      return rawPath && !rawPath._dirty ? rawPath : e._gsPath[value] = stringToRawPath(value);
20519    }
20520    return !value ? console.warn("Expecting a <path> element or an SVG path data string") : _isString7(value) ? stringToRawPath(value) : _isNumber5(value[0]) ? [value] : value;
20521  }
20522  function reverseSegment(segment) {
20523    var i = 0, y;
20524    segment.reverse();
20525    for (; i < segment.length; i += 2) {
20526      y = segment[i];
20527      segment[i] = segment[i + 1];
20528      segment[i + 1] = y;
20529    }
20530    segment.reversed = !segment.reversed;
20531  }
20532  var _createPath = function _createPath2(e, ignore) {
20533    var path = document.createElementNS("http://www.w3.org/2000/svg", "path"), attr = [].slice.call(e.attributes), i = attr.length, name;
20534    ignore = "," + ignore + ",";
20535    while (--i > -1) {
20536      name = attr[i].nodeName.toLowerCase();
20537      if (ignore.indexOf("," + name + ",") < 0) {
20538        path.setAttributeNS(null, name, attr[i].nodeValue);
20539      }
20540    }
20541    return path;
20542  };
20543  var _typeAttrs = {
20544    rect: "rx,ry,x,y,width,height",
20545    circle: "r,cx,cy",
20546    ellipse: "rx,ry,cx,cy",
20547    line: "x1,x2,y1,y2"
20548  };
20549  var _attrToObj = function _attrToObj2(e, attrs) {
20550    var props = attrs ? attrs.split(",") : [], obj = {}, i = props.length;
20551    while (--i > -1) {
20552      obj[props[i]] = +e.getAttribute(props[i]) || 0;
20553    }
20554    return obj;
20555  };
20556  function convertToPath(element, swap) {
20557    var type = element.tagName.toLowerCase(), circ = 0.552284749831, data, x, y, r, ry, path, rcirc, rycirc, points, w, h, x2, x3, x4, x5, x6, y2, y3, y4, y5, y6, attr;
20558    if (type === "path" || !element.getBBox) {
20559      return element;
20560    }
20561    path = _createPath(element, "x,y,width,height,cx,cy,rx,ry,r,x1,x2,y1,y2,points");
20562    attr = _attrToObj(element, _typeAttrs[type]);
20563    if (type === "rect") {
20564      r = attr.rx;
20565      ry = attr.ry || r;
20566      x = attr.x;
20567      y = attr.y;
20568      w = attr.width - r * 2;
20569      h = attr.height - ry * 2;
20570      if (r || ry) {
20571        x2 = x + r * (1 - circ);
20572        x3 = x + r;
20573        x4 = x3 + w;
20574        x5 = x4 + r * circ;
20575        x6 = x4 + r;
20576        y2 = y + ry * (1 - circ);
20577        y3 = y + ry;
20578        y4 = y3 + h;
20579        y5 = y4 + ry * circ;
20580        y6 = y4 + ry;
20581        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";
20582      } else {
20583        data = "M" + (x + w) + "," + y + " v" + h + " h" + -w + " v" + -h + " h" + w + "z";
20584      }
20585    } else if (type === "circle" || type === "ellipse") {
20586      if (type === "circle") {
20587        r = ry = attr.r;
20588        rycirc = r * circ;
20589      } else {
20590        r = attr.rx;
20591        ry = attr.ry;
20592        rycirc = ry * circ;
20593      }
20594      x = attr.cx;
20595      y = attr.cy;
20596      rcirc = r * circ;
20597      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";
20598    } else if (type === "line") {
20599      data = "M" + attr.x1 + "," + attr.y1 + " L" + attr.x2 + "," + attr.y2;
20600    } else if (type === "polyline" || type === "polygon") {
20601      points = (element.getAttribute("points") + "").match(_numbersExp) || [];
20602      x = points.shift();
20603      y = points.shift();
20604      data = "M" + x + "," + y + " L" + points.join(",");
20605      if (type === "polygon") {
20606        data += "," + x + "," + y + "z";
20607      }
20608    }
20609    path.setAttribute("d", rawPathToString(path._gsRawPath = stringToRawPath(data)));
20610    if (swap && element.parentNode) {
20611      element.parentNode.insertBefore(path, element);
20612      element.parentNode.removeChild(element);
20613    }
20614    return path;
20615  }
20616  function arcToSegment(lastX, lastY, rx, ry, angle, largeArcFlag, sweepFlag, x, y) {
20617    if (lastX === x && lastY === y) {
20618      return;
20619    }
20620    rx = _abs2(rx);
20621    ry = _abs2(ry);
20622    var angleRad = angle % 360 * _DEG2RAD2, cosAngle = _cos2(angleRad), sinAngle = _sin2(angleRad), PI = Math.PI, TWOPI = PI * 2, dx2 = (lastX - x) / 2, dy2 = (lastY - y) / 2, x1 = cosAngle * dx2 + sinAngle * dy2, y1 = -sinAngle * dx2 + cosAngle * dy2, x1_sq = x1 * x1, y1_sq = y1 * y1, radiiCheck = x1_sq / (rx * rx) + y1_sq / (ry * ry);
20623    if (radiiCheck > 1) {
20624      rx = _sqrt3(radiiCheck) * rx;
20625      ry = _sqrt3(radiiCheck) * ry;
20626    }
20627    var rx_sq = rx * rx, ry_sq = ry * ry, sq = (rx_sq * ry_sq - rx_sq * y1_sq - ry_sq * x1_sq) / (rx_sq * y1_sq + ry_sq * x1_sq);
20628    if (sq < 0) {
20629      sq = 0;
20630    }
20631    var coef = (largeArcFlag === sweepFlag ? -1 : 1) * _sqrt3(sq), cx1 = coef * (rx * y1 / ry), cy1 = coef * -(ry * x1 / rx), sx2 = (lastX + x) / 2, sy2 = (lastY + y) / 2, cx = sx2 + (cosAngle * cx1 - sinAngle * cy1), cy = sy2 + (sinAngle * cx1 + cosAngle * cy1), ux = (x1 - cx1) / rx, uy = (y1 - cy1) / ry, vx = (-x1 - cx1) / rx, vy = (-y1 - cy1) / ry, temp = ux * ux + uy * uy, angleStart = (uy < 0 ? -1 : 1) * Math.acos(ux / _sqrt3(temp)), angleExtent = (ux * vy - uy * vx < 0 ? -1 : 1) * Math.acos((ux * vx + uy * vy) / _sqrt3(temp * (vx * vx + vy * vy)));
20632    isNaN(angleExtent) && (angleExtent = PI);
20633    if (!sweepFlag && angleExtent > 0) {
20634      angleExtent -= TWOPI;
20635    } else if (sweepFlag && angleExtent < 0) {
20636      angleExtent += TWOPI;
20637    }
20638    angleStart %= TWOPI;
20639    angleExtent %= TWOPI;
20640    var segments = Math.ceil(_abs2(angleExtent) / (TWOPI / 4)), rawPath = [], angleIncrement = angleExtent / segments, controlLength = 4 / 3 * _sin2(angleIncrement / 2) / (1 + _cos2(angleIncrement / 2)), ma = cosAngle * rx, mb = sinAngle * rx, mc = sinAngle * -ry, md = cosAngle * ry, i;
20641    for (i = 0; i < segments; i++) {
20642      angle = angleStart + i * angleIncrement;
20643      x1 = _cos2(angle);
20644      y1 = _sin2(angle);
20645      ux = _cos2(angle += angleIncrement);
20646      uy = _sin2(angle);
20647      rawPath.push(x1 - controlLength * y1, y1 + controlLength * x1, ux + controlLength * uy, uy - controlLength * ux, ux, uy);
20648    }
20649    for (i = 0; i < rawPath.length; i += 2) {
20650      x1 = rawPath[i];
20651      y1 = rawPath[i + 1];
20652      rawPath[i] = x1 * ma + y1 * mc + cx;
20653      rawPath[i + 1] = x1 * mb + y1 * md + cy;
20654    }
20655    rawPath[i - 2] = x;
20656    rawPath[i - 1] = y;
20657    return rawPath;
20658  }
20659  function stringToRawPath(d) {
20660    var a = (d + "").replace(_scientific, function(m) {
20661      var n = +m;
20662      return n < 1e-4 && n > -1e-4 ? 0 : n;
20663    }).match(_svgPathExp) || [], path = [], relativeX = 0, relativeY = 0, twoThirds = 2 / 3, elements = a.length, points = 0, errorMessage = "ERROR: malformed path: " + d, i, j, x, y, command, isRelative, segment, startX, startY, difX, difY, beziers, prevCommand, flag1, flag2, line = function line2(sx, sy, ex, ey) {
20664      difX = (ex - sx) / 3;
20665      difY = (ey - sy) / 3;
20666      segment.push(sx + difX, sy + difY, ex - difX, ey - difY, ex, ey);
20667    };
20668    if (!d || !isNaN(a[0]) || isNaN(a[1])) {
20669      console.log(errorMessage);
20670      return path;
20671    }
20672    for (i = 0; i < elements; i++) {
20673      prevCommand = command;
20674      if (isNaN(a[i])) {
20675        command = a[i].toUpperCase();
20676        isRelative = command !== a[i];
20677      } else {
20678        i--;
20679      }
20680      x = +a[i + 1];
20681      y = +a[i + 2];
20682      if (isRelative) {
20683        x += relativeX;
20684        y += relativeY;
20685      }
20686      if (!i) {
20687        startX = x;
20688        startY = y;
20689      }
20690      if (command === "M") {
20691        if (segment) {
20692          if (segment.length < 8) {
20693            path.length -= 1;
20694          } else {
20695            points += segment.length;
20696          }
20697        }
20698        relativeX = startX = x;
20699        relativeY = startY = y;
20700        segment = [x, y];
20701        path.push(segment);
20702        i += 2;
20703        command = "L";
20704      } else if (command === "C") {
20705        if (!segment) {
20706          segment = [0, 0];
20707        }
20708        if (!isRelative) {
20709          relativeX = relativeY = 0;
20710        }
20711        segment.push(x, y, relativeX + a[i + 3] * 1, relativeY + a[i + 4] * 1, relativeX += a[i + 5] * 1, relativeY += a[i + 6] * 1);
20712        i += 6;
20713      } else if (command === "S") {
20714        difX = relativeX;
20715        difY = relativeY;
20716        if (prevCommand === "C" || prevCommand === "S") {
20717          difX += relativeX - segment[segment.length - 4];
20718          difY += relativeY - segment[segment.length - 3];
20719        }
20720        if (!isRelative) {
20721          relativeX = relativeY = 0;
20722        }
20723        segment.push(difX, difY, x, y, relativeX += a[i + 3] * 1, relativeY += a[i + 4] * 1);
20724        i += 4;
20725      } else if (command === "Q") {
20726        difX = relativeX + (x - relativeX) * twoThirds;
20727        difY = relativeY + (y - relativeY) * twoThirds;
20728        if (!isRelative) {
20729          relativeX = relativeY = 0;
20730        }
20731        relativeX += a[i + 3] * 1;
20732        relativeY += a[i + 4] * 1;
20733        segment.push(difX, difY, relativeX + (x - relativeX) * twoThirds, relativeY + (y - relativeY) * twoThirds, relativeX, relativeY);
20734        i += 4;
20735      } else if (command === "T") {
20736        difX = relativeX - segment[segment.length - 4];
20737        difY = relativeY - segment[segment.length - 3];
20738        segment.push(relativeX + difX, relativeY + difY, x + (relativeX + difX * 1.5 - x) * twoThirds, y + (relativeY + difY * 1.5 - y) * twoThirds, relativeX = x, relativeY = y);
20739        i += 2;
20740      } else if (command === "H") {
20741        line(relativeX, relativeY, relativeX = x, relativeY);
20742        i += 1;
20743      } else if (command === "V") {
20744        line(relativeX, relativeY, relativeX, relativeY = x + (isRelative ? relativeY - relativeX : 0));
20745        i += 1;
20746      } else if (command === "L" || command === "Z") {
20747        if (command === "Z") {
20748          x = startX;
20749          y = startY;
20750          segment.closed = true;
20751        }
20752        if (command === "L" || _abs2(relativeX - x) > 0.5 || _abs2(relativeY - y) > 0.5) {
20753          line(relativeX, relativeY, x, y);
20754          if (command === "L") {
20755            i += 2;
20756          }
20757        }
20758        relativeX = x;
20759        relativeY = y;
20760      } else if (command === "A") {
20761        flag1 = a[i + 4];
20762        flag2 = a[i + 5];
20763        difX = a[i + 6];
20764        difY = a[i + 7];
20765        j = 7;
20766        if (flag1.length > 1) {
20767          if (flag1.length < 3) {
20768            difY = difX;
20769            difX = flag2;
20770            j--;
20771          } else {
20772            difY = flag2;
20773            difX = flag1.substr(2);
20774            j -= 2;
20775          }
20776          flag2 = flag1.charAt(1);
20777          flag1 = flag1.charAt(0);
20778        }
20779        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);
20780        i += j;
20781        if (beziers) {
20782          for (j = 0; j < beziers.length; j++) {
20783            segment.push(beziers[j]);
20784          }
20785        }
20786        relativeX = segment[segment.length - 2];
20787        relativeY = segment[segment.length - 1];
20788      } else {
20789        console.log(errorMessage);
20790      }
20791    }
20792    i = segment.length;
20793    if (i < 6) {
20794      path.pop();
20795      i = 0;
20796    } else if (segment[0] === segment[i - 2] && segment[1] === segment[i - 1]) {
20797      segment.closed = true;
20798    }
20799    path.totalPoints = points + i;
20800    return path;
20801  }
20802  function rawPathToString(rawPath) {
20803    if (_isNumber5(rawPath[0])) {
20804      rawPath = [rawPath];
20805    }
20806    var result = "", l = rawPath.length, sl, s, i, segment;
20807    for (s = 0; s < l; s++) {
20808      segment = rawPath[s];
20809      result += "M" + _round7(segment[0]) + "," + _round7(segment[1]) + " C";
20810      sl = segment.length;
20811      for (i = 2; i < sl; i++) {
20812        result += _round7(segment[i++]) + "," + _round7(segment[i++]) + " " + _round7(segment[i++]) + "," + _round7(segment[i++]) + " " + _round7(segment[i++]) + "," + _round7(segment[i]) + " ";
20813      }
20814      if (segment.closed) {
20815        result += "z";
20816      }
20817    }
20818    return result;
20819  }
20820
20821  
vendor: 27,573 bytes, lines 20821-21528
20821// node_modules/gsap/MorphSVGPlugin.js
20822  var gsap6;
20823  var _toArray6;
20824  var _lastLinkedAnchor;
20825  var _doc7;
20826  var _coreInitted7;
20827  var PluginClass;
20828  var _getGSAP9 = function _getGSAP10() {
20829    return gsap6 || typeof window !== "undefined" && (gsap6 = window.gsap) && gsap6.registerPlugin && gsap6;
20830  };
20831  var _isFunction7 = function _isFunction8(value) {
20832    return typeof value === "function";
20833  };
20834  var _atan22 = Math.atan2;
20835  var _cos3 = Math.cos;
20836  var _sin3 = Math.sin;
20837  var _sqrt4 = Math.sqrt;
20838  var _PI = Math.PI;
20839  var _2PI2 = _PI * 2;
20840  var _angleMin = _PI * 0.3;
20841  var _angleMax = _PI * 0.7;
20842  var _bigNum3 = 1e20;
20843  var _numExp3 = /[-+=\.]*\d+[\.e\-\+]*\d*[e\-\+]*\d*/gi;
20844  var _selectorExp2 = /(^[#\.][a-z]|[a-y][a-z])/i;
20845  var _commands = /[achlmqstvz]/i;
20846  var _log = function _log2(message) {
20847    return console && console.warn(message);
20848  };
20849  var _bonusValidated3 = 1;
20850  var _getAverageXY = function _getAverageXY2(segment) {
20851    var l = segment.length, x = 0, y = 0, i;
20852    for (i = 0; i < l; i++) {
20853      x += segment[i++];
20854      y += segment[i];
20855    }
20856    return [x / (l / 2), y / (l / 2)];
20857  };
20858  var _getSize3 = function _getSize4(segment) {
20859    var l = segment.length, xMax = segment[0], xMin = xMax, yMax = segment[1], yMin = yMax, x, y, i;
20860    for (i = 6; i < l; i += 6) {
20861      x = segment[i];
20862      y = segment[i + 1];
20863      if (x > xMax) {
20864        xMax = x;
20865      } else if (x < xMin) {
20866        xMin = x;
20867      }
20868      if (y > yMax) {
20869        yMax = y;
20870      } else if (y < yMin) {
20871        yMin = y;
20872      }
20873    }
20874    segment.centerX = (xMax + xMin) / 2;
20875    segment.centerY = (yMax + yMin) / 2;
20876    return segment.size = (xMax - xMin) * (yMax - yMin);
20877  };
20878  var _getTotalSize = function _getTotalSize2(rawPath, samplesPerBezier) {
20879    if (samplesPerBezier === void 0) {
20880      samplesPerBezier = 3;
20881    }
20882    var j = rawPath.length, xMax = rawPath[0][0], xMin = xMax, yMax = rawPath[0][1], yMin = yMax, inc = 1 / samplesPerBezier, l, x, y, i, segment, k, t, inv, x1, y1, x2, x3, x4, y2, y3, y4;
20883    while (--j > -1) {
20884      segment = rawPath[j];
20885      l = segment.length;
20886      for (i = 6; i < l; i += 6) {
20887        x1 = segment[i];
20888        y1 = segment[i + 1];
20889        x2 = segment[i + 2] - x1;
20890        y2 = segment[i + 3] - y1;
20891        x3 = segment[i + 4] - x1;
20892        y3 = segment[i + 5] - y1;
20893        x4 = segment[i + 6] - x1;
20894        y4 = segment[i + 7] - y1;
20895        k = samplesPerBezier;
20896        while (--k > -1) {
20897          t = inc * k;
20898          inv = 1 - t;
20899          x = (t * t * x4 + 3 * inv * (t * x3 + inv * x2)) * t + x1;
20900          y = (t * t * y4 + 3 * inv * (t * y3 + inv * y2)) * t + y1;
20901          if (x > xMax) {
20902            xMax = x;
20903          } else if (x < xMin) {
20904            xMin = x;
20905          }
20906          if (y > yMax) {
20907            yMax = y;
20908          } else if (y < yMin) {
20909            yMin = y;
20910          }
20911        }
20912      }
20913    }
20914    rawPath.centerX = (xMax + xMin) / 2;
20915    rawPath.centerY = (yMax + yMin) / 2;
20916    rawPath.left = xMin;
20917    rawPath.width = xMax - xMin;
20918    rawPath.top = yMin;
20919    rawPath.height = yMax - yMin;
20920    return rawPath.size = (xMax - xMin) * (yMax - yMin);
20921  };
20922  var _sortByComplexity = function _sortByComplexity2(a, b) {
20923    return b.length - a.length;
20924  };
20925  var _sortBySize = function _sortBySize2(a, b) {
20926    var sizeA = a.size || _getSize3(a), sizeB = b.size || _getSize3(b);
20927    return Math.abs(sizeB - sizeA) < (sizeA + sizeB) / 20 ? b.centerX - a.centerX || b.centerY - a.centerY : sizeB - sizeA;
20928  };
20929  var _offsetSegment = function _offsetSegment2(segment, shapeIndex) {
20930    var a = segment.slice(0), l = segment.length, wrap3 = l - 2, i, index;
20931    shapeIndex = shapeIndex | 0;
20932    for (i = 0; i < l; i++) {
20933      index = (i + shapeIndex) % wrap3;
20934      segment[i++] = a[index];
20935      segment[i] = a[index + 1];
20936    }
20937  };
20938  var _getTotalMovement = function _getTotalMovement2(sb, eb, shapeIndex, offsetX, offsetY) {
20939    var l = sb.length, d = 0, wrap3 = l - 2, index, i, x, y;
20940    shapeIndex *= 6;
20941    for (i = 0; i < l; i += 6) {
20942      index = (i + shapeIndex) % wrap3;
20943      y = sb[index] - (eb[i] - offsetX);
20944      x = sb[index + 1] - (eb[i + 1] - offsetY);
20945      d += _sqrt4(x * x + y * y);
20946    }
20947    return d;
20948  };
20949  var _getClosestShapeIndex = function _getClosestShapeIndex2(sb, eb, checkReverse) {
20950    var l = sb.length, sCenter = _getAverageXY(sb), eCenter = _getAverageXY(eb), offsetX = eCenter[0] - sCenter[0], offsetY = eCenter[1] - sCenter[1], min2 = _getTotalMovement(sb, eb, 0, offsetX, offsetY), minIndex = 0, copy, d, i;
20951    for (i = 6; i < l; i += 6) {
20952      d = _getTotalMovement(sb, eb, i / 6, offsetX, offsetY);
20953      if (d < min2) {
20954        min2 = d;
20955        minIndex = i;
20956      }
20957    }
20958    if (checkReverse) {
20959      copy = sb.slice(0);
20960      reverseSegment(copy);
20961      for (i = 6; i < l; i += 6) {
20962        d = _getTotalMovement(copy, eb, i / 6, offsetX, offsetY);
20963        if (d < min2) {
20964          min2 = d;
20965          minIndex = -i;
20966        }
20967      }
20968    }
20969    return minIndex / 6;
20970  };
20971  var _getClosestAnchor = function _getClosestAnchor2(rawPath, x, y) {
20972    var j = rawPath.length, closestDistance = _bigNum3, closestX = 0, closestY = 0, segment, dx, dy, d, i, l;
20973    while (--j > -1) {
20974      segment = rawPath[j];
20975      l = segment.length;
20976      for (i = 0; i < l; i += 6) {
20977        dx = segment[i] - x;
20978        dy = segment[i + 1] - y;
20979        d = _sqrt4(dx * dx + dy * dy);
20980        if (d < closestDistance) {
20981          closestDistance = d;
20982          closestX = segment[i];
20983          closestY = segment[i + 1];
20984        }
20985      }
20986    }
20987    return [closestX, closestY];
20988  };
20989  var _getClosestSegment = function _getClosestSegment2(bezier, pool, startIndex, sortRatio, offsetX, offsetY) {
20990    var l = pool.length, index = 0, minSize = Math.min(bezier.size || _getSize3(bezier), pool[startIndex].size || _getSize3(pool[startIndex])) * sortRatio, min2 = _bigNum3, cx = bezier.centerX + offsetX, cy = bezier.centerY + offsetY, size, i, dx, dy, d;
20991    for (i = startIndex; i < l; i++) {
20992      size = pool[i].size || _getSize3(pool[i]);
20993      if (size < minSize) {
20994        break;
20995      }
20996      dx = pool[i].centerX - cx;
20997      dy = pool[i].centerY - cy;
20998      d = _sqrt4(dx * dx + dy * dy);
20999      if (d < min2) {
21000        index = i;
21001        min2 = d;
21002      }
21003    }
21004    d = pool[index];
21005    pool.splice(index, 1);
21006    return d;
21007  };
21008  var _subdivideSegmentQty = function _subdivideSegmentQty2(segment, quantity) {
21009    var tally = 0, max2 = 0.999999, l = segment.length, newPointsPerSegment = quantity / ((l - 2) / 6), ax, ay, cp1x, cp1y, cp2x, cp2y, bx, by, x1, y1, x2, y2, i, t;
21010    for (i = 2; i < l; i += 6) {
21011      tally += newPointsPerSegment;
21012      while (tally > max2) {
21013        ax = segment[i - 2];
21014        ay = segment[i - 1];
21015        cp1x = segment[i];
21016        cp1y = segment[i + 1];
21017        cp2x = segment[i + 2];
21018        cp2y = segment[i + 3];
21019        bx = segment[i + 4];
21020        by = segment[i + 5];
21021        t = 1 / ((Math.floor(tally) || 1) + 1);
21022        x1 = ax + (cp1x - ax) * t;
21023        x2 = cp1x + (cp2x - cp1x) * t;
21024        x1 += (x2 - x1) * t;
21025        x2 += (cp2x + (bx - cp2x) * t - x2) * t;
21026        y1 = ay + (cp1y - ay) * t;
21027        y2 = cp1y + (cp2y - cp1y) * t;
21028        y1 += (y2 - y1) * t;
21029        y2 += (cp2y + (by - cp2y) * t - y2) * t;
21030        segment.splice(i, 4, ax + (cp1x - ax) * t, ay + (cp1y - ay) * t, x1, y1, x1 + (x2 - x1) * t, y1 + (y2 - y1) * t, x2, y2, cp2x + (bx - cp2x) * t, cp2y + (by - cp2y) * t);
21031        i += 6;
21032        l += 6;
21033        tally--;
21034      }
21035    }
21036    return segment;
21037  };
21038  var _equalizeSegmentQuantity = function _equalizeSegmentQuantity2(start2, end2, shapeIndex, map, fillSafe) {
21039    var dif = end2.length - start2.length, longer = dif > 0 ? end2 : start2, shorter = dif > 0 ? start2 : end2, added = 0, sortMethod = map === "complexity" ? _sortByComplexity : _sortBySize, sortRatio = map === "position" ? 0 : typeof map === "number" ? map : 0.8, i = shorter.length, shapeIndices = typeof shapeIndex === "object" && shapeIndex.push ? shapeIndex.slice(0) : [shapeIndex], reverse = shapeIndices[0] === "reverse" || shapeIndices[0] < 0, log = shapeIndex === "log", eb, sb, b, x, y, offsetX, offsetY;
21040    if (!shorter[0]) {
21041      return;
21042    }
21043    if (longer.length > 1) {
21044      start2.sort(sortMethod);
21045      end2.sort(sortMethod);
21046      offsetX = longer.size || _getTotalSize(longer);
21047      offsetX = shorter.size || _getTotalSize(shorter);
21048      offsetX = longer.centerX - shorter.centerX;
21049      offsetY = longer.centerY - shorter.centerY;
21050      if (sortMethod === _sortBySize) {
21051        for (i = 0; i < shorter.length; i++) {
21052          longer.splice(i, 0, _getClosestSegment(shorter[i], longer, i, sortRatio, offsetX, offsetY));
21053        }
21054      }
21055    }
21056    if (dif) {
21057      if (dif < 0) {
21058        dif = -dif;
21059      }
21060      if (longer[0].length > shorter[0].length) {
21061        _subdivideSegmentQty(shorter[0], (longer[0].length - shorter[0].length) / 6 | 0);
21062      }
21063      i = shorter.length;
21064      while (added < dif) {
21065        x = longer[i].size || _getSize3(longer[i]);
21066        b = _getClosestAnchor(shorter, longer[i].centerX, longer[i].centerY);
21067        x = b[0];
21068        y = b[1];
21069        shorter[i++] = [x, y, x, y, x, y, x, y];
21070        shorter.totalPoints += 8;
21071        added++;
21072      }
21073    }
21074    for (i = 0; i < start2.length; i++) {
21075      eb = end2[i];
21076      sb = start2[i];
21077      dif = eb.length - sb.length;
21078      if (dif < 0) {
21079        _subdivideSegmentQty(eb, -dif / 6 | 0);
21080      } else if (dif > 0) {
21081        _subdivideSegmentQty(sb, dif / 6 | 0);
21082      }
21083      if (reverse && fillSafe !== false && !sb.reversed) {
21084        reverseSegment(sb);
21085      }
21086      shapeIndex = shapeIndices[i] || shapeIndices[i] === 0 ? shapeIndices[i] : "auto";
21087      if (shapeIndex) {
21088        if (sb.closed || Math.abs(sb[0] - sb[sb.length - 2]) < 0.5 && Math.abs(sb[1] - sb[sb.length - 1]) < 0.5) {
21089          if (shapeIndex === "auto" || shapeIndex === "log") {
21090            shapeIndices[i] = shapeIndex = _getClosestShapeIndex(sb, eb, !i || fillSafe === false);
21091            if (shapeIndex < 0) {
21092              reverse = true;
21093              reverseSegment(sb);
21094              shapeIndex = -shapeIndex;
21095            }
21096            _offsetSegment(sb, shapeIndex * 6);
21097          } else if (shapeIndex !== "reverse") {
21098            if (i && shapeIndex < 0) {
21099              reverseSegment(sb);
21100            }
21101            _offsetSegment(sb, (shapeIndex < 0 ? -shapeIndex : shapeIndex) * 6);
21102          }
21103        } else if (!reverse && (shapeIndex === "auto" && Math.abs(eb[0] - sb[0]) + Math.abs(eb[1] - sb[1]) + Math.abs(eb[eb.length - 2] - sb[sb.length - 2]) + Math.abs(eb[eb.length - 1] - sb[sb.length - 1]) > Math.abs(eb[0] - sb[sb.length - 2]) + Math.abs(eb[1] - sb[sb.length - 1]) + Math.abs(eb[eb.length - 2] - sb[0]) + Math.abs(eb[eb.length - 1] - sb[1]) || shapeIndex % 2)) {
21104          reverseSegment(sb);
21105          shapeIndices[i] = -1;
21106          reverse = true;
21107        } else if (shapeIndex === "auto") {
21108          shapeIndices[i] = 0;
21109        } else if (shapeIndex === "reverse") {
21110          shapeIndices[i] = -1;
21111        }
21112        if (sb.closed !== eb.closed) {
21113          sb.closed = eb.closed = false;
21114        }
21115      }
21116    }
21117    log && _log("shapeIndex:[" + shapeIndices.join(",") + "]");
21118    start2.shapeIndex = shapeIndices;
21119    return shapeIndices;
21120  };
21121  var _pathFilter = function _pathFilter2(a, shapeIndex, map, precompile, fillSafe) {
21122    var start2 = stringToRawPath(a[0]), end2 = stringToRawPath(a[1]);
21123    if (!_equalizeSegmentQuantity(start2, end2, shapeIndex || shapeIndex === 0 ? shapeIndex : "auto", map, fillSafe)) {
21124      return;
21125    }
21126    a[0] = rawPathToString(start2);
21127    a[1] = rawPathToString(end2);
21128    if (precompile === "log" || precompile === true) {
21129      _log('precompile:["' + a[0] + '","' + a[1] + '"]');
21130    }
21131  };
21132  var _offsetPoints = function _offsetPoints2(text, offset2) {
21133    if (!offset2) {
21134      return text;
21135    }
21136    var a = text.match(_numExp3) || [], l = a.length, s = "", inc, i, j;
21137    if (offset2 === "reverse") {
21138      i = l - 1;
21139      inc = -2;
21140    } else {
21141      i = ((parseInt(offset2, 10) || 0) * 2 + 1 + l * 100) % l;
21142      inc = 2;
21143    }
21144    for (j = 0; j < l; j += 2) {
21145      s += a[i - 1] + "," + a[i] + " ";
21146      i = (i + inc) % l;
21147    }
21148    return s;
21149  };
21150  var _equalizePointQuantity = function _equalizePointQuantity2(a, quantity) {
21151    var tally = 0, x = parseFloat(a[0]), y = parseFloat(a[1]), s = x + "," + y + " ", max2 = 0.999999, newPointsPerSegment, i, l, j, factor, nextX, nextY;
21152    l = a.length;
21153    newPointsPerSegment = quantity * 0.5 / (l * 0.5 - 1);
21154    for (i = 0; i < l - 2; i += 2) {
21155      tally += newPointsPerSegment;
21156      nextX = parseFloat(a[i + 2]);
21157      nextY = parseFloat(a[i + 3]);
21158      if (tally > max2) {
21159        factor = 1 / (Math.floor(tally) + 1);
21160        j = 1;
21161        while (tally > max2) {
21162          s += (x + (nextX - x) * factor * j).toFixed(2) + "," + (y + (nextY - y) * factor * j).toFixed(2) + " ";
21163          tally--;
21164          j++;
21165        }
21166      }
21167      s += nextX + "," + nextY + " ";
21168      x = nextX;
21169      y = nextY;
21170    }
21171    return s;
21172  };
21173  var _pointsFilter = function _pointsFilter2(a) {
21174    var startNums = a[0].match(_numExp3) || [], endNums = a[1].match(_numExp3) || [], dif = endNums.length - startNums.length;
21175    if (dif > 0) {
21176      a[0] = _equalizePointQuantity(startNums, dif);
21177    } else {
21178      a[1] = _equalizePointQuantity(endNums, -dif);
21179    }
21180  };
21181  var _buildPointsFilter = function _buildPointsFilter2(shapeIndex) {
21182    return !isNaN(shapeIndex) ? function(a) {
21183      _pointsFilter(a);
21184      a[1] = _offsetPoints(a[1], parseInt(shapeIndex, 10));
21185    } : _pointsFilter;
21186  };
21187  var _parseShape = function _parseShape2(shape, forcePath, target) {
21188    var isString2 = typeof shape === "string", e, type;
21189    if (!isString2 || _selectorExp2.test(shape) || (shape.match(_numExp3) || []).length < 3) {
21190      e = _toArray6(shape)[0];
21191      if (e) {
21192        type = (e.nodeName + "").toUpperCase();
21193        if (forcePath && type !== "PATH") {
21194          e = convertToPath(e, false);
21195          type = "PATH";
21196        }
21197        shape = e.getAttribute(type === "PATH" ? "d" : "points") || "";
21198        if (e === target) {
21199          shape = e.getAttributeNS(null, "data-original") || shape;
21200        }
21201      } else {
21202        _log("WARNING: invalid morph to: " + shape);
21203        shape = false;
21204      }
21205    }
21206    return shape;
21207  };
21208  var _populateSmoothData = function _populateSmoothData2(rawPath, tolerance) {
21209    var j = rawPath.length, limit = 0.2 * (tolerance || 1), smooth, segment, x, y, x2, y2, i, l, a, a2, isSmooth, smoothData;
21210    while (--j > -1) {
21211      segment = rawPath[j];
21212      isSmooth = segment.isSmooth = segment.isSmooth || [0, 0, 0, 0];
21213      smoothData = segment.smoothData = segment.smoothData || [0, 0, 0, 0];
21214      isSmooth.length = 4;
21215      l = segment.length - 2;
21216      for (i = 6; i < l; i += 6) {
21217        x = segment[i] - segment[i - 2];
21218        y = segment[i + 1] - segment[i - 1];
21219        x2 = segment[i + 2] - segment[i];
21220        y2 = segment[i + 3] - segment[i + 1];
21221        a = _atan22(y, x);
21222        a2 = _atan22(y2, x2);
21223        smooth = Math.abs(a - a2) < limit;
21224        if (smooth) {
21225          smoothData[i - 2] = a;
21226          smoothData[i + 2] = a2;
21227          smoothData[i - 1] = _sqrt4(x * x + y * y);
21228          smoothData[i + 3] = _sqrt4(x2 * x2 + y2 * y2);
21229        }
21230        isSmooth.push(smooth, smooth, 0, 0, smooth, smooth);
21231      }
21232      if (segment[l] === segment[0] && segment[l + 1] === segment[1]) {
21233        x = segment[0] - segment[l - 2];
21234        y = segment[1] - segment[l - 1];
21235        x2 = segment[2] - segment[0];
21236        y2 = segment[3] - segment[1];
21237        a = _atan22(y, x);
21238        a2 = _atan22(y2, x2);
21239        if (Math.abs(a - a2) < limit) {
21240          smoothData[l - 2] = a;
21241          smoothData[2] = a2;
21242          smoothData[l - 1] = _sqrt4(x * x + y * y);
21243          smoothData[3] = _sqrt4(x2 * x2 + y2 * y2);
21244          isSmooth[l - 2] = isSmooth[l - 1] = true;
21245        }
21246      }
21247    }
21248    return rawPath;
21249  };
21250  var _parseOriginFactors = function _parseOriginFactors2(v) {
21251    var a = v.trim().split(" "), x = ~v.indexOf("left") ? 0 : ~v.indexOf("right") ? 100 : isNaN(parseFloat(a[0])) ? 50 : parseFloat(a[0]), y = ~v.indexOf("top") ? 0 : ~v.indexOf("bottom") ? 100 : isNaN(parseFloat(a[1])) ? 50 : parseFloat(a[1]);
21252    return {
21253      x: x / 100,
21254      y: y / 100
21255    };
21256  };
21257  var _shortAngle = function _shortAngle2(dif) {
21258    return dif !== dif % _PI ? dif + (dif < 0 ? _2PI2 : -_2PI2) : dif;
21259  };
21260  var _morphMessage = "Use MorphSVGPlugin.convertToPath() to convert to a path before morphing.";
21261  var _tweenRotation = function _tweenRotation2(start2, end2, i, linkedPT) {
21262    var so = this._origin, eo = this._eOrigin, dx = start2[i] - so.x, dy = start2[i + 1] - so.y, d = _sqrt4(dx * dx + dy * dy), sa = _atan22(dy, dx), angleDif, _short;
21263    dx = end2[i] - eo.x;
21264    dy = end2[i + 1] - eo.y;
21265    angleDif = _atan22(dy, dx) - sa;
21266    _short = _shortAngle(angleDif);
21267    if (!linkedPT && _lastLinkedAnchor && Math.abs(_short + _lastLinkedAnchor.ca) < _angleMin) {
21268      linkedPT = _lastLinkedAnchor;
21269    }
21270    return this._anchorPT = _lastLinkedAnchor = {
21271      _next: this._anchorPT,
21272      t: start2,
21273      sa,
21274      ca: linkedPT && _short * linkedPT.ca < 0 && Math.abs(_short) > _angleMax ? angleDif : _short,
21275      sl: d,
21276      cl: _sqrt4(dx * dx + dy * dy) - d,
21277      i
21278    };
21279  };
21280  var _initCore11 = function _initCore12(required) {
21281    gsap6 = _getGSAP9();
21282    PluginClass = PluginClass || gsap6 && gsap6.plugins.morphSVG;
21283    if (gsap6 && PluginClass) {
21284      _toArray6 = gsap6.utils.toArray;
21285      _doc7 = document;
21286      PluginClass.prototype._tweenRotation = _tweenRotation;
21287      _coreInitted7 = 1;
21288    } else if (required) {
21289      _log("Please gsap.registerPlugin(MorphSVGPlugin)");
21290    }
21291  };
21292  var MorphSVGPlugin = {
21293    version: "3.10.4",
21294    name: "morphSVG",
21295    rawVars: 1,
21296    register: function register3(core, Plugin) {
21297      gsap6 = core;
21298      PluginClass = Plugin;
21299      _initCore11();
21300    },
21301    init: function init6(target, value, tween, index, targets) {
21302      _coreInitted7 || _initCore11(1);
21303      if (!value) {
21304        _log("invalid shape");
21305        return false;
21306      }
21307      _isFunction7(value) && (value = value.call(tween, index, target, targets));
21308      var type, p, pt, shape, isPoly, shapeIndex, map, startSmooth, endSmooth, start2, end2, i, j, l, startSeg, endSeg, precompiled, sData, eData, originFactors, useRotation, offset2;
21309      if (typeof value === "string" || value.getBBox || value[0]) {
21310        value = {
21311          shape: value
21312        };
21313      } else if (typeof value === "object") {
21314        type = {};
21315        for (p in value) {
21316          type[p] = _isFunction7(value[p]) && p !== "render" ? value[p].call(tween, index, target, targets) : value[p];
21317        }
21318        value = type;
21319      }
21320      var cs = target.nodeType ? window.getComputedStyle(target) : {}, fill = cs.fill + "", fillSafe = !(fill === "none" || (fill.match(_numExp3) || [])[3] === "0" || cs.fillRule === "evenodd"), origins = (value.origin || "50 50").split(",");
21321      type = (target.nodeName + "").toUpperCase();
21322      isPoly = type === "POLYLINE" || type === "POLYGON";
21323      if (type !== "PATH" && !isPoly && !value.prop) {
21324        _log("Cannot morph a <" + type + "> element. " + _morphMessage);
21325        return false;
21326      }
21327      p = type === "PATH" ? "d" : "points";
21328      if (!value.prop && !_isFunction7(target.setAttribute)) {
21329        return false;
21330      }
21331      shape = _parseShape(value.shape || value.d || value.points || "", p === "d", target);
21332      if (isPoly && _commands.test(shape)) {
21333        _log("A <" + type + "> cannot accept path data. " + _morphMessage);
21334        return false;
21335      }
21336      shapeIndex = value.shapeIndex || value.shapeIndex === 0 ? value.shapeIndex : "auto";
21337      map = value.map || MorphSVGPlugin.defaultMap;
21338      this._prop = value.prop;
21339      this._render = value.render || MorphSVGPlugin.defaultRender;
21340      this._apply = "updateTarget" in value ? value.updateTarget : MorphSVGPlugin.defaultUpdateTarget;
21341      this._rnd = Math.pow(10, isNaN(value.precision) ? 2 : +value.precision);
21342      this._tween = tween;
21343      if (shape) {
21344        this._target = target;
21345        precompiled = typeof value.precompile === "object";
21346        start2 = this._prop ? target[this._prop] : target.getAttribute(p);
21347        if (!this._prop && !target.getAttributeNS(null, "data-original")) {
21348          target.setAttributeNS(null, "data-original", start2);
21349        }
21350        if (p === "d" || this._prop) {
21351          start2 = stringToRawPath(precompiled ? value.precompile[0] : start2);
21352          end2 = stringToRawPath(precompiled ? value.precompile[1] : shape);
21353          if (!precompiled && !_equalizeSegmentQuantity(start2, end2, shapeIndex, map, fillSafe)) {
21354            return false;
21355          }
21356          if (value.precompile === "log" || value.precompile === true) {
21357            _log('precompile:["' + rawPathToString(start2) + '","' + rawPathToString(end2) + '"]');
21358          }
21359          useRotation = (value.type || MorphSVGPlugin.defaultType) !== "linear";
21360          if (useRotation) {
21361            start2 = _populateSmoothData(start2, value.smoothTolerance);
21362            end2 = _populateSmoothData(end2, value.smoothTolerance);
21363            if (!start2.size) {
21364              _getTotalSize(start2);
21365            }
21366            if (!end2.size) {
21367              _getTotalSize(end2);
21368            }
21369            originFactors = _parseOriginFactors(origins[0]);
21370            this._origin = start2.origin = {
21371              x: start2.left + originFactors.x * start2.width,
21372              y: start2.top + originFactors.y * start2.height
21373            };
21374            if (origins[1]) {
21375              originFactors = _parseOriginFactors(origins[1]);
21376            }
21377            this._eOrigin = {
21378              x: end2.left + originFactors.x * end2.width,
21379              y: end2.top + originFactors.y * end2.height
21380            };
21381          }
21382          this._rawPath = target._gsRawPath = start2;
21383          j = start2.length;
21384          while (--j > -1) {
21385            startSeg = start2[j];
21386            endSeg = end2[j];
21387            startSmooth = startSeg.isSmooth || [];
21388            endSmooth = endSeg.isSmooth || [];
21389            l = startSeg.length;
21390            _lastLinkedAnchor = 0;
21391            for (i = 0; i < l; i += 2) {
21392              if (endSeg[i] !== startSeg[i] || endSeg[i + 1] !== startSeg[i + 1]) {
21393                if (useRotation) {
21394                  if (startSmooth[i] && endSmooth[i]) {
21395                    sData = startSeg.smoothData;
21396                    eData = endSeg.smoothData;
21397                    offset2 = i + (i === l - 4 ? 7 - l : 5);
21398                    this._controlPT = {
21399                      _next: this._controlPT,
21400                      i,
21401                      j,
21402                      l1s: sData[i + 1],
21403                      l1c: eData[i + 1] - sData[i + 1],
21404                      l2s: sData[offset2],
21405                      l2c: eData[offset2] - sData[offset2]
21406                    };
21407                    pt = this._tweenRotation(startSeg, endSeg, i + 2);
21408                    this._tweenRotation(startSeg, endSeg, i, pt);
21409                    this._tweenRotation(startSeg, endSeg, offset2 - 1, pt);
21410                    i += 4;
21411                  } else {
21412                    this._tweenRotation(startSeg, endSeg, i);
21413                  }
21414                } else {
21415                  pt = this.add(startSeg, i, startSeg[i], endSeg[i]);
21416                  pt = this.add(startSeg, i + 1, startSeg[i + 1], endSeg[i + 1]) || pt;
21417                }
21418              }
21419            }
21420          }
21421        } else {
21422          pt = this.add(target, "setAttribute", target.getAttribute(p) + "", shape + "", index, targets, 0, _buildPointsFilter(shapeIndex), p);
21423        }
21424        if (useRotation) {
21425          this.add(this._origin, "x", this._origin.x, this._eOrigin.x);
21426          pt = this.add(this._origin, "y", this._origin.y, this._eOrigin.y);
21427        }
21428        if (pt) {
21429          this._props.push("morphSVG");
21430          pt.end = shape;
21431          pt.endProp = p;
21432        }
21433      }
21434      return _bonusValidated3;
21435    },
21436    render: function render3(ratio, data) {
21437      var rawPath = data._rawPath, controlPT = data._controlPT, anchorPT = data._anchorPT, rnd = data._rnd, target = data._target, pt = data._pt, s, space, easeInOut, segment, l, angle, i, j, x, y, sin, cos, offset2;
21438      while (pt) {
21439        pt.r(ratio, pt.d);
21440        pt = pt._next;
21441      }
21442      if (ratio === 1 && data._apply) {
21443        pt = data._pt;
21444        while (pt) {
21445          if (pt.end) {
21446            if (data._prop) {
21447              target[data._prop] = pt.end;
21448            } else {
21449              target.setAttribute(pt.endProp, pt.end);
21450            }
21451          }
21452          pt = pt._next;
21453        }
21454      } else if (rawPath) {
21455        while (anchorPT) {
21456          angle = anchorPT.sa + ratio * anchorPT.ca;
21457          l = anchorPT.sl + ratio * anchorPT.cl;
21458          anchorPT.t[anchorPT.i] = data._origin.x + _cos3(angle) * l;
21459          anchorPT.t[anchorPT.i + 1] = data._origin.y + _sin3(angle) * l;
21460          anchorPT = anchorPT._next;
21461        }
21462        easeInOut = ratio < 0.5 ? 2 * ratio * ratio : (4 - 2 * ratio) * ratio - 1;
21463        while (controlPT) {
21464          i = controlPT.i;
21465          segment = rawPath[controlPT.j];
21466          offset2 = i + (i === segment.length - 4 ? 7 - segment.length : 5);
21467          angle = _atan22(segment[offset2] - segment[i + 1], segment[offset2 - 1] - segment[i]);
21468          sin = _sin3(angle);
21469          cos = _cos3(angle);
21470          x = segment[i + 2];
21471          y = segment[i + 3];
21472          l = controlPT.l1s + easeInOut * controlPT.l1c;
21473          segment[i] = x - cos * l;
21474          segment[i + 1] = y - sin * l;
21475          l = controlPT.l2s + easeInOut * controlPT.l2c;
21476          segment[offset2 - 1] = x + cos * l;
21477          segment[offset2] = y + sin * l;
21478          controlPT = controlPT._next;
21479        }
21480        target._gsRawPath = rawPath;
21481        if (data._apply) {
21482          s = "";
21483          space = " ";
21484          for (j = 0; j < rawPath.length; j++) {
21485            segment = rawPath[j];
21486            l = segment.length;
21487            s += "M" + (segment[0] * rnd | 0) / rnd + space + (segment[1] * rnd | 0) / rnd + " C";
21488            for (i = 2; i < l; i++) {
21489              s += (segment[i] * rnd | 0) / rnd + space;
21490            }
21491          }
21492          if (data._prop) {
21493            target[data._prop] = s;
21494          } else {
21495            target.setAttribute("d", s);
21496          }
21497        }
21498      }
21499      data._render && rawPath && data._render.call(data._tween, rawPath, target);
21500    },
21501    kill: function kill2(property) {
21502      this._pt = this._rawPath = 0;
21503    },
21504    getRawPath,
21505    stringToRawPath,
21506    rawPathToString,
21507    normalizeStrings: function normalizeStrings(shape1, shape2, _ref) {
21508      var shapeIndex = _ref.shapeIndex, map = _ref.map;
21509      var result = [shape1, shape2];
21510      _pathFilter(result, shapeIndex, map);
21511      return result;
21512    },
21513    pathFilter: _pathFilter,
21514    pointsFilter: _pointsFilter,
21515    getTotalSize: _getTotalSize,
21516    equalizeSegmentQuantity: _equalizeSegmentQuantity,
21517    convertToPath: function convertToPath2(targets, swap) {
21518      return _toArray6(targets).map(function(target) {
21519        return convertToPath(target, swap !== false);
21520      });
21521    },
21522    defaultType: "linear",
21523    defaultUpdateTarget: true,
21524    defaultMap: "size"
21525  };
21526  _getGSAP9() && gsap6.registerPlugin(MorphSVGPlugin);
21527
21528  
21528// resources/js/app.js
21529  var import_Lethargy = __toModule(require_lethargy());
21530
21531  
vendor: 1,129 bytes, lines 21531-21561
21531// ../node_modules/@popperjs/core/lib/enums.js
21532  var top = "top";
21533  var bottom = "bottom";
21534  var right = "right";
21535  var left = "left";
21536  var auto = "auto";
21537  var basePlacements = [top, bottom, right, left];
21538  var start = "start";
21539  var end = "end";
21540  var clippingParents = "clippingParents";
21541  var viewport = "viewport";
21542  var popper = "popper";
21543  var reference = "reference";
21544  var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {
21545    return acc.concat([placement + "-" + start, placement + "-" + end]);
21546  }, []);
21547  var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
21548    return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
21549  }, []);
21550  var beforeRead = "beforeRead";
21551  var read = "read";
21552  var afterRead = "afterRead";
21553  var beforeMain = "beforeMain";
21554  var main = "main";
21555  var afterMain = "afterMain";
21556  var beforeWrite = "beforeWrite";
21557  var write = "write";
21558  var afterWrite = "afterWrite";
21559  var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
21560
21561  
vendor: 172 bytes, lines 21561-21566
21561// ../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js
21562  function getNodeName(element) {
21563    return element ? (element.nodeName || "").toLowerCase() : null;
21564  }
21565
21566  
vendor: 341 bytes, lines 21566-21578
21566// ../node_modules/@popperjs/core/lib/dom-utils/getWindow.js
21567  function getWindow(node) {
21568    if (node == null) {
21569      return window;
21570    }
21571    if (node.toString() !== "[object Window]") {
21572      var ownerDocument = node.ownerDocument;
21573      return ownerDocument ? ownerDocument.defaultView || window : window;
21574    }
21575    return node;
21576  }
21577
21578  
vendor: 592 bytes, lines 21578-21595
21578// ../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js
21579  function isElement(node) {
21580    var OwnElement = getWindow(node).Element;
21581    return node instanceof OwnElement || node instanceof Element;
21582  }
21583  function isHTMLElement(node) {
21584    var OwnElement = getWindow(node).HTMLElement;
21585    return node instanceof OwnElement || node instanceof HTMLElement;
21586  }
21587  function isShadowRoot(node) {
21588    if (typeof ShadowRoot === "undefined") {
21589      return false;
21590    }
21591    var OwnElement = getWindow(node).ShadowRoot;
21592    return node instanceof OwnElement || node instanceof ShadowRoot;
21593  }
21594
21595  
vendor: 2,124 bytes, lines 21595-21663
21595// ../node_modules/@popperjs/core/lib/modifiers/applyStyles.js
21596  function applyStyles(_ref) {
21597    var state = _ref.state;
21598    Object.keys(state.elements).forEach(function(name) {
21599      var style = state.styles[name] || {};
21600      var attributes = state.attributes[name] || {};
21601      var element = state.elements[name];
21602      if (!isHTMLElement(element) || !getNodeName(element)) {
21603        return;
21604      }
21605      Object.assign(element.style, style);
21606      Object.keys(attributes).forEach(function(name2) {
21607        var value = attributes[name2];
21608        if (value === false) {
21609          element.removeAttribute(name2);
21610        } else {
21611          element.setAttribute(name2, value === true ? "" : value);
21612        }
21613      });
21614    });
21615  }
21616  function effect(_ref2) {
21617    var state = _ref2.state;
21618    var initialStyles = {
21619      popper: {
21620        position: state.options.strategy,
21621        left: "0",
21622        top: "0",
21623        margin: "0"
21624      },
21625      arrow: {
21626        position: "absolute"
21627      },
21628      reference: {}
21629    };
21630    Object.assign(state.elements.popper.style, initialStyles.popper);
21631    state.styles = initialStyles;
21632    if (state.elements.arrow) {
21633      Object.assign(state.elements.arrow.style, initialStyles.arrow);
21634    }
21635    return function() {
21636      Object.keys(state.elements).forEach(function(name) {
21637        var element = state.elements[name];
21638        var attributes = state.attributes[name] || {};
21639        var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);
21640        var style = styleProperties.reduce(function(style2, property) {
21641          style2[property] = "";
21642          return style2;
21643        }, {});
21644        if (!isHTMLElement(element) || !getNodeName(element)) {
21645          return;
21646        }
21647        Object.assign(element.style, style);
21648        Object.keys(attributes).forEach(function(attribute) {
21649          element.removeAttribute(attribute);
21650        });
21651      });
21652    };
21653  }
21654  var applyStyles_default = {
21655    name: "applyStyles",
21656    enabled: true,
21657    phase: "write",
21658    fn: applyStyles,
21659    effect,
21660    requires: ["computeStyles"]
21661  };
21662
21663  
vendor: 148 bytes, lines 21663-21668
21663// ../node_modules/@popperjs/core/lib/utils/getBasePlacement.js
21664  function getBasePlacement(placement) {
21665    return placement.split("-")[0];
21666  }
21667
21668  
vendor: 125 bytes, lines 21668-21673
21668// ../node_modules/@popperjs/core/lib/utils/math.js
21669  var max = Math.max;
21670  var min = Math.min;
21671  var round = Math.round;
21672
21673  
vendor: 330 bytes, lines 21673-21684
21673// ../node_modules/@popperjs/core/lib/utils/userAgent.js
21674  function getUAString() {
21675    var uaData = navigator.userAgentData;
21676    if (uaData != null && uaData.brands) {
21677      return uaData.brands.map(function(item) {
21678        return item.brand + "/" + item.version;
21679      }).join(" ");
21680    }
21681    return navigator.userAgent;
21682  }
21683
21684  
vendor: 173 bytes, lines 21684-21689
21684// ../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js
21685  function isLayoutViewport() {
21686    return !/^((?!chrome|android).)*safari/i.test(getUAString());
21687  }
21688
21689  
vendor: 1,267 bytes, lines 21689-21722
21689// ../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js
21690  function getBoundingClientRect(element, includeScale, isFixedStrategy) {
21691    if (includeScale === void 0) {
21692      includeScale = false;
21693    }
21694    if (isFixedStrategy === void 0) {
21695      isFixedStrategy = false;
21696    }
21697    var clientRect = element.getBoundingClientRect();
21698    var scaleX = 1;
21699    var scaleY = 1;
21700    if (includeScale && isHTMLElement(element)) {
21701      scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
21702      scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
21703    }
21704    var _ref = isElement(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport;
21705    var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
21706    var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
21707    var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
21708    var width = clientRect.width / scaleX;
21709    var height = clientRect.height / scaleY;
21710    return {
21711      width,
21712      height,
21713      top: y,
21714      right: x + width,
21715      bottom: y + height,
21716      left: x,
21717      x,
21718      y
21719    };
21720  }
21721
21722  
vendor: 522 bytes, lines 21722-21741
21722// ../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js
21723  function getLayoutRect(element) {
21724    var clientRect = getBoundingClientRect(element);
21725    var width = element.offsetWidth;
21726    var height = element.offsetHeight;
21727    if (Math.abs(clientRect.width - width) <= 1) {
21728      width = clientRect.width;
21729    }
21730    if (Math.abs(clientRect.height - height) <= 1) {
21731      height = clientRect.height;
21732    }
21733    return {
21734      x: element.offsetLeft,
21735      y: element.offsetTop,
21736      width,
21737      height
21738    };
21739  }
21740
21741  
vendor: 477 bytes, lines 21741-21758
21741// ../node_modules/@popperjs/core/lib/dom-utils/contains.js
21742  function contains(parent, child) {
21743    var rootNode = child.getRootNode && child.getRootNode();
21744    if (parent.contains(child)) {
21745      return true;
21746    } else if (rootNode && isShadowRoot(rootNode)) {
21747      var next = child;
21748      do {
21749        if (next && parent.isSameNode(next)) {
21750          return true;
21751        }
21752        next = next.parentNode || next.host;
21753      } while (next);
21754    }
21755    return false;
21756  }
21757
21758  
vendor: 172 bytes, lines 21758-21763
21758// ../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js
21759  function getComputedStyle2(element) {
21760    return getWindow(element).getComputedStyle(element);
21761  }
21762
21763  
vendor: 179 bytes, lines 21763-21768
21763// ../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js
21764  function isTableElement(element) {
21765    return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0;
21766  }
21767
21768  
vendor: 231 bytes, lines 21768-21773
21768// ../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js
21769  function getDocumentElement(element) {
21770    return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;
21771  }
21772
21773  
vendor: 314 bytes, lines 21773-21781
21773// ../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js
21774  function getParentNode(element) {
21775    if (getNodeName(element) === "html") {
21776      return element;
21777    }
21778    return element.assignedSlot || element.parentNode || (isShadowRoot(element) ? element.host : null) || getDocumentElement(element);
21779  }
21780
21781  
vendor: 1,794 bytes, lines 21781-21823
21781// ../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js
21782  function getTrueOffsetParent(element) {
21783    if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") {
21784      return null;
21785    }
21786    return element.offsetParent;
21787  }
21788  function getContainingBlock(element) {
21789    var isFirefox = /firefox/i.test(getUAString());
21790    var isIE = /Trident/i.test(getUAString());
21791    if (isIE && isHTMLElement(element)) {
21792      var elementCss = getComputedStyle2(element);
21793      if (elementCss.position === "fixed") {
21794        return null;
21795      }
21796    }
21797    var currentNode = getParentNode(element);
21798    if (isShadowRoot(currentNode)) {
21799      currentNode = currentNode.host;
21800    }
21801    while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
21802      var css = getComputedStyle2(currentNode);
21803      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") {
21804        return currentNode;
21805      } else {
21806        currentNode = currentNode.parentNode;
21807      }
21808    }
21809    return null;
21810  }
21811  function getOffsetParent(element) {
21812    var window2 = getWindow(element);
21813    var offsetParent = getTrueOffsetParent(element);
21814    while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") {
21815      offsetParent = getTrueOffsetParent(offsetParent);
21816    }
21817    if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) {
21818      return window2;
21819    }
21820    return offsetParent || getContainingBlock(element) || window2;
21821  }
21822
21823  
vendor: 194 bytes, lines 21823-21828
21823// ../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js
21824  function getMainAxisFromPlacement(placement) {
21825    return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
21826  }
21827
21828  
vendor: 262 bytes, lines 21828-21837
21828// ../node_modules/@popperjs/core/lib/utils/within.js
21829  function within(min2, value, max2) {
21830    return max(min2, min(value, max2));
21831  }
21832  function withinMaxClamp(min2, value, max2) {
21833    var v = within(min2, value, max2);
21834    return v > max2 ? max2 : v;
21835  }
21836
21837  
vendor: 188 bytes, lines 21837-21847
21837// ../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js
21838  function getFreshSideObject() {
21839    return {
21840      top: 0,
21841      right: 0,
21842      bottom: 0,
21843      left: 0
21844    };
21845  }
21846
21847  
vendor: 187 bytes, lines 21847-21852
21847// ../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js
21848  function mergePaddingObject(paddingObject) {
21849    return Object.assign({}, getFreshSideObject(), paddingObject);
21850  }
21851
21852  
vendor: 222 bytes, lines 21852-21860
21852// ../node_modules/@popperjs/core/lib/utils/expandToHashMap.js
21853  function expandToHashMap(value, keys) {
21854    return keys.reduce(function(hashMap, key) {
21855      hashMap[key] = value;
21856      return hashMap;
21857    }, {});
21858  }
21859
21860  
vendor: 3,166 bytes, lines 21860-21930
21860// ../node_modules/@popperjs/core/lib/modifiers/arrow.js
21861  var toPaddingObject = function toPaddingObject2(padding, state) {
21862    padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, {
21863      placement: state.placement
21864    })) : padding;
21865    return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
21866  };
21867  function arrow(_ref) {
21868    var _state$modifiersData$;
21869    var state = _ref.state, name = _ref.name, options = _ref.options;
21870    var arrowElement = state.elements.arrow;
21871    var popperOffsets2 = state.modifiersData.popperOffsets;
21872    var basePlacement = getBasePlacement(state.placement);
21873    var axis = getMainAxisFromPlacement(basePlacement);
21874    var isVertical = [left, right].indexOf(basePlacement) >= 0;
21875    var len = isVertical ? "height" : "width";
21876    if (!arrowElement || !popperOffsets2) {
21877      return;
21878    }
21879    var paddingObject = toPaddingObject(options.padding, state);
21880    var arrowRect = getLayoutRect(arrowElement);
21881    var minProp = axis === "y" ? top : left;
21882    var maxProp = axis === "y" ? bottom : right;
21883    var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];
21884    var startDiff = popperOffsets2[axis] - state.rects.reference[axis];
21885    var arrowOffsetParent = getOffsetParent(arrowElement);
21886    var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
21887    var centerToReference = endDiff / 2 - startDiff / 2;
21888    var min2 = paddingObject[minProp];
21889    var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];
21890    var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
21891    var offset2 = within(min2, center, max2);
21892    var axisProp = axis;
21893    state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);
21894  }
21895  function effect2(_ref2) {
21896    var state = _ref2.state, options = _ref2.options;
21897    var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
21898    if (arrowElement == null) {
21899      return;
21900    }
21901    if (typeof arrowElement === "string") {
21902      arrowElement = state.elements.popper.querySelector(arrowElement);
21903      if (!arrowElement) {
21904        return;
21905      }
21906    }
21907    if (true) {
21908      if (!isHTMLElement(arrowElement)) {
21909        console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" "));
21910      }
21911    }
21912    if (!contains(state.elements.popper, arrowElement)) {
21913      if (true) {
21914        console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" "));
21915      }
21916      return;
21917    }
21918    state.elements.arrow = arrowElement;
21919  }
21920  var arrow_default = {
21921    name: "arrow",
21922    enabled: true,
21923    phase: "main",
21924    fn: arrow,
21925    effect: effect2,
21926    requires: ["popperOffsets"],
21927    requiresIfExists: ["preventOverflow"]
21928  };
21929
21930  
vendor: 140 bytes, lines 21930-21935
21930// ../node_modules/@popperjs/core/lib/utils/getVariation.js
21931  function getVariation(placement) {
21932    return placement.split("-")[1];
21933  }
21934
21935  
vendor: 5,687 bytes, lines 21935-22059
21935// ../node_modules/@popperjs/core/lib/modifiers/computeStyles.js
21936  var unsetSides = {
21937    top: "auto",
21938    right: "auto",
21939    bottom: "auto",
21940    left: "auto"
21941  };
21942  function roundOffsetsByDPR(_ref) {
21943    var x = _ref.x, y = _ref.y;
21944    var win = window;
21945    var dpr = win.devicePixelRatio || 1;
21946    return {
21947      x: round(x * dpr) / dpr || 0,
21948      y: round(y * dpr) / dpr || 0
21949    };
21950  }
21951  function mapToStyles(_ref2) {
21952    var _Object$assign2;
21953    var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
21954    var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;
21955    var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
21956      x,
21957      y
21958    }) : {
21959      x,
21960      y
21961    };
21962    x = _ref3.x;
21963    y = _ref3.y;
21964    var hasX = offsets.hasOwnProperty("x");
21965    var hasY = offsets.hasOwnProperty("y");
21966    var sideX = left;
21967    var sideY = top;
21968    var win = window;
21969    if (adaptive) {
21970      var offsetParent = getOffsetParent(popper2);
21971      var heightProp = "clientHeight";
21972      var widthProp = "clientWidth";
21973      if (offsetParent === getWindow(popper2)) {
21974        offsetParent = getDocumentElement(popper2);
21975        if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") {
21976          heightProp = "scrollHeight";
21977          widthProp = "scrollWidth";
21978        }
21979      }
21980      offsetParent = offsetParent;
21981      if (placement === top || (placement === left || placement === right) && variation === end) {
21982        sideY = bottom;
21983        var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : offsetParent[heightProp];
21984        y -= offsetY - popperRect.height;
21985        y *= gpuAcceleration ? 1 : -1;
21986      }
21987      if (placement === left || (placement === top || placement === bottom) && variation === end) {
21988        sideX = right;
21989        var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : offsetParent[widthProp];
21990        x -= offsetX - popperRect.width;
21991        x *= gpuAcceleration ? 1 : -1;
21992      }
21993    }
21994    var commonStyles = Object.assign({
21995      position
21996    }, adaptive && unsetSides);
21997    var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
21998      x,
21999      y
22000    }) : {
22001      x,
22002      y
22003    };
22004    x = _ref4.x;
22005    y = _ref4.y;
22006    if (gpuAcceleration) {
22007      var _Object$assign;
22008      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));
22009    }
22010    return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
22011  }
22012  function computeStyles(_ref5) {
22013    var state = _ref5.state, options = _ref5.options;
22014    var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
22015    if (true) {
22016      var transitionProperty = getComputedStyle2(state.elements.popper).transitionProperty || "";
22017      if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) {
22018        return transitionProperty.indexOf(property) >= 0;
22019      })) {
22020        console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" "));
22021      }
22022    }
22023    var commonStyles = {
22024      placement: getBasePlacement(state.placement),
22025      variation: getVariation(state.placement),
22026      popper: state.elements.popper,
22027      popperRect: state.rects.popper,
22028      gpuAcceleration,
22029      isFixed: state.options.strategy === "fixed"
22030    };
22031    if (state.modifiersData.popperOffsets != null) {
22032      state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
22033        offsets: state.modifiersData.popperOffsets,
22034        position: state.options.strategy,
22035        adaptive,
22036        roundOffsets
22037      })));
22038    }
22039    if (state.modifiersData.arrow != null) {
22040      state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
22041        offsets: state.modifiersData.arrow,
22042        position: "absolute",
22043        adaptive: false,
22044        roundOffsets
22045      })));
22046    }
22047    state.attributes.popper = Object.assign({}, state.attributes.popper, {
22048      "data-popper-placement": state.placement
22049    });
22050  }
22051  var computeStyles_default = {
22052    name: "computeStyles",
22053    enabled: true,
22054    phase: "beforeWrite",
22055    fn: computeStyles,
22056    data: {}
22057  };
22058
22059  
vendor: 1,296 bytes, lines 22059-22097
22059// ../node_modules/@popperjs/core/lib/modifiers/eventListeners.js
22060  var passive = {
22061    passive: true
22062  };
22063  function effect3(_ref) {
22064    var state = _ref.state, instance = _ref.instance, options = _ref.options;
22065    var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
22066    var window2 = getWindow(state.elements.popper);
22067    var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
22068    if (scroll) {
22069      scrollParents.forEach(function(scrollParent) {
22070        scrollParent.addEventListener("scroll", instance.update, passive);
22071      });
22072    }
22073    if (resize) {
22074      window2.addEventListener("resize", instance.update, passive);
22075    }
22076    return function() {
22077      if (scroll) {
22078        scrollParents.forEach(function(scrollParent) {
22079          scrollParent.removeEventListener("scroll", instance.update, passive);
22080        });
22081      }
22082      if (resize) {
22083        window2.removeEventListener("resize", instance.update, passive);
22084      }
22085    };
22086  }
22087  var eventListeners_default = {
22088    name: "eventListeners",
22089    enabled: true,
22090    phase: "write",
22091    fn: function fn() {
22092    },
22093    effect: effect3,
22094    data: {}
22095  };
22096
22097  
vendor: 326 bytes, lines 22097-22110
22097// ../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js
22098  var hash = {
22099    left: "right",
22100    right: "left",
22101    bottom: "top",
22102    top: "bottom"
22103  };
22104  function getOppositePlacement(placement) {
22105    return placement.replace(/left|right|bottom|top/g, function(matched) {
22106      return hash[matched];
22107    });
22108  }
22109
22110  
vendor: 294 bytes, lines 22110-22121
22110// ../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js
22111  var hash2 = {
22112    start: "end",
22113    end: "start"
22114  };
22115  function getOppositeVariationPlacement(placement) {
22116    return placement.replace(/start|end/g, function(matched) {
22117      return hash2[matched];
22118    });
22119  }
22120
22121  
vendor: 269 bytes, lines 22121-22132
22121// ../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js
22122  function getWindowScroll(node) {
22123    var win = getWindow(node);
22124    var scrollLeft = win.pageXOffset;
22125    var scrollTop = win.pageYOffset;
22126    return {
22127      scrollLeft,
22128      scrollTop
22129    };
22130  }
22131
22132  
vendor: 226 bytes, lines 22132-22137
22132// ../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js
22133  function getWindowScrollBarX(element) {
22134    return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
22135  }
22136
22137  
vendor: 752 bytes, lines 22137-22163
22137// ../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
22138  function getViewportRect(element, strategy) {
22139    var win = getWindow(element);
22140    var html = getDocumentElement(element);
22141    var visualViewport = win.visualViewport;
22142    var width = html.clientWidth;
22143    var height = html.clientHeight;
22144    var x = 0;
22145    var y = 0;
22146    if (visualViewport) {
22147      width = visualViewport.width;
22148      height = visualViewport.height;
22149      var layoutViewport = isLayoutViewport();
22150      if (layoutViewport || !layoutViewport && strategy === "fixed") {
22151        x = visualViewport.offsetLeft;
22152        y = visualViewport.offsetTop;
22153      }
22154    }
22155    return {
22156      width,
22157      height,
22158      x: x + getWindowScrollBarX(element),
22159      y
22160    };
22161  }
22162
22163  
vendor: 882 bytes, lines 22163-22184
22163// ../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
22164  function getDocumentRect(element) {
22165    var _element$ownerDocumen;
22166    var html = getDocumentElement(element);
22167    var winScroll = getWindowScroll(element);
22168    var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
22169    var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
22170    var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
22171    var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
22172    var y = -winScroll.scrollTop;
22173    if (getComputedStyle2(body || html).direction === "rtl") {
22174      x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
22175    }
22176    return {
22177      width,
22178      height,
22179      x,
22180      y
22181    };
22182  }
22183
22184  
vendor: 371 bytes, lines 22184-22190
22184// ../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js
22185  function isScrollParent(element) {
22186    var _getComputedStyle5 = getComputedStyle2(element), overflow = _getComputedStyle5.overflow, overflowX = _getComputedStyle5.overflowX, overflowY = _getComputedStyle5.overflowY;
22187    return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
22188  }
22189
22190  
vendor: 355 bytes, lines 22190-22201
22190// ../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js
22191  function getScrollParent(node) {
22192    if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) {
22193      return node.ownerDocument.body;
22194    }
22195    if (isHTMLElement(node) && isScrollParent(node)) {
22196      return node;
22197    }
22198    return getScrollParent(getParentNode(node));
22199  }
22200
22201  
vendor: 692 bytes, lines 22201-22215
22201// ../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
22202  function listScrollParents(element, list) {
22203    var _element$ownerDocumen;
22204    if (list === void 0) {
22205      list = [];
22206    }
22207    var scrollParent = getScrollParent(element);
22208    var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
22209    var win = getWindow(scrollParent);
22210    var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
22211    var updatedList = list.concat(target);
22212    return isBody ? updatedList : updatedList.concat(listScrollParents(getParentNode(target)));
22213  }
22214
22215  
vendor: 260 bytes, lines 22215-22225
22215// ../node_modules/@popperjs/core/lib/utils/rectToClientRect.js
22216  function rectToClientRect(rect) {
22217    return Object.assign({}, rect, {
22218      left: rect.x,
22219      top: rect.y,
22220      right: rect.x + rect.width,
22221      bottom: rect.y + rect.height
22222    });
22223  }
22224
22225  
vendor: 2,469 bytes, lines 22225-22271
22225// ../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js
22226  function getInnerBoundingClientRect(element, strategy) {
22227    var rect = getBoundingClientRect(element, false, strategy === "fixed");
22228    rect.top = rect.top + element.clientTop;
22229    rect.left = rect.left + element.clientLeft;
22230    rect.bottom = rect.top + element.clientHeight;
22231    rect.right = rect.left + element.clientWidth;
22232    rect.width = element.clientWidth;
22233    rect.height = element.clientHeight;
22234    rect.x = rect.left;
22235    rect.y = rect.top;
22236    return rect;
22237  }
22238  function getClientRectFromMixedType(element, clippingParent, strategy) {
22239    return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
22240  }
22241  function getClippingParents(element) {
22242    var clippingParents2 = listScrollParents(getParentNode(element));
22243    var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0;
22244    var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
22245    if (!isElement(clipperElement)) {
22246      return [];
22247    }
22248    return clippingParents2.filter(function(clippingParent) {
22249      return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
22250    });
22251  }
22252  function getClippingRect(element, boundary, rootBoundary, strategy) {
22253    var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
22254    var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);
22255    var firstClippingParent = clippingParents2[0];
22256    var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {
22257      var rect = getClientRectFromMixedType(element, clippingParent, strategy);
22258      accRect.top = max(rect.top, accRect.top);
22259      accRect.right = min(rect.right, accRect.right);
22260      accRect.bottom = min(rect.bottom, accRect.bottom);
22261      accRect.left = max(rect.left, accRect.left);
22262      return accRect;
22263    }, getClientRectFromMixedType(element, firstClippingParent, strategy));
22264    clippingRect.width = clippingRect.right - clippingRect.left;
22265    clippingRect.height = clippingRect.bottom - clippingRect.top;
22266    clippingRect.x = clippingRect.left;
22267    clippingRect.y = clippingRect.top;
22268    return clippingRect;
22269  }
22270
22271  
vendor: 1,649 bytes, lines 22271-22326
22271// ../node_modules/@popperjs/core/lib/utils/computeOffsets.js
22272  function computeOffsets(_ref) {
22273    var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;
22274    var basePlacement = placement ? getBasePlacement(placement) : null;
22275    var variation = placement ? getVariation(placement) : null;
22276    var commonX = reference2.x + reference2.width / 2 - element.width / 2;
22277    var commonY = reference2.y + reference2.height / 2 - element.height / 2;
22278    var offsets;
22279    switch (basePlacement) {
22280      case top:
22281        offsets = {
22282          x: commonX,
22283          y: reference2.y - element.height
22284        };
22285        break;
22286      case bottom:
22287        offsets = {
22288          x: commonX,
22289          y: reference2.y + reference2.height
22290        };
22291        break;
22292      case right:
22293        offsets = {
22294          x: reference2.x + reference2.width,
22295          y: commonY
22296        };
22297        break;
22298      case left:
22299        offsets = {
22300          x: reference2.x - element.width,
22301          y: commonY
22302        };
22303        break;
22304      default:
22305        offsets = {
22306          x: reference2.x,
22307          y: reference2.y
22308        };
22309    }
22310    var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
22311    if (mainAxis != null) {
22312      var len = mainAxis === "y" ? "height" : "width";
22313      switch (variation) {
22314        case start:
22315          offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);
22316          break;
22317        case end:
22318          offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);
22319          break;
22320        default:
22321      }
22322    }
22323    return offsets;
22324  }
22325
22326  
vendor: 2,769 bytes, lines 22326-22364
22326// ../node_modules/@popperjs/core/lib/utils/detectOverflow.js
22327  function detectOverflow(state, options) {
22328    if (options === void 0) {
22329      options = {};
22330    }
22331    var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
22332    var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
22333    var altContext = elementContext === popper ? reference : popper;
22334    var popperRect = state.rects.popper;
22335    var element = state.elements[altBoundary ? altContext : elementContext];
22336    var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
22337    var referenceClientRect = getBoundingClientRect(state.elements.reference);
22338    var popperOffsets2 = computeOffsets({
22339      reference: referenceClientRect,
22340      element: popperRect,
22341      strategy: "absolute",
22342      placement
22343    });
22344    var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));
22345    var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
22346    var overflowOffsets = {
22347      top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
22348      bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
22349      left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
22350      right: elementClientRect.right - clippingClientRect.right + paddingObject.right
22351    };
22352    var offsetData = state.modifiersData.offset;
22353    if (elementContext === popper && offsetData) {
22354      var offset2 = offsetData[placement];
22355      Object.keys(overflowOffsets).forEach(function(key) {
22356        var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
22357        var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x";
22358        overflowOffsets[key] += offset2[axis] * multiply;
22359      });
22360    }
22361    return overflowOffsets;
22362  }
22363
22364  
vendor: 1,700 bytes, lines 22364-22397
22364// ../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js
22365  function computeAutoPlacement(state, options) {
22366    if (options === void 0) {
22367      options = {};
22368    }
22369    var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
22370    var variation = getVariation(placement);
22371    var placements2 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
22372      return getVariation(placement2) === variation;
22373    }) : basePlacements;
22374    var allowedPlacements = placements2.filter(function(placement2) {
22375      return allowedAutoPlacements.indexOf(placement2) >= 0;
22376    });
22377    if (allowedPlacements.length === 0) {
22378      allowedPlacements = placements2;
22379      if (true) {
22380        console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" "));
22381      }
22382    }
22383    var overflows = allowedPlacements.reduce(function(acc, placement2) {
22384      acc[placement2] = detectOverflow(state, {
22385        placement: placement2,
22386        boundary,
22387        rootBoundary,
22388        padding
22389      })[getBasePlacement(placement2)];
22390      return acc;
22391    }, {});
22392    return Object.keys(overflows).sort(function(a, b) {
22393      return overflows[a] - overflows[b];
22394    });
22395  }
22396
22397  
vendor: 4,347 bytes, lines 22397-22503
22397// ../node_modules/@popperjs/core/lib/modifiers/flip.js
22398  function getExpandedFallbackPlacements(placement) {
22399    if (getBasePlacement(placement) === auto) {
22400      return [];
22401    }
22402    var oppositePlacement = getOppositePlacement(placement);
22403    return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
22404  }
22405  function flip(_ref) {
22406    var state = _ref.state, options = _ref.options, name = _ref.name;
22407    if (state.modifiersData[name]._skip) {
22408      return;
22409    }
22410    var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
22411    var preferredPlacement = state.options.placement;
22412    var basePlacement = getBasePlacement(preferredPlacement);
22413    var isBasePlacement = basePlacement === preferredPlacement;
22414    var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
22415    var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {
22416      return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {
22417        placement: placement2,
22418        boundary,
22419        rootBoundary,
22420        padding,
22421        flipVariations,
22422        allowedAutoPlacements
22423      }) : placement2);
22424    }, []);
22425    var referenceRect = state.rects.reference;
22426    var popperRect = state.rects.popper;
22427    var checksMap = new Map();
22428    var makeFallbackChecks = true;
22429    var firstFittingPlacement = placements2[0];
22430    for (var i = 0; i < placements2.length; i++) {
22431      var placement = placements2[i];
22432      var _basePlacement = getBasePlacement(placement);
22433      var isStartVariation = getVariation(placement) === start;
22434      var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
22435      var len = isVertical ? "width" : "height";
22436      var overflow = detectOverflow(state, {
22437        placement,
22438        boundary,
22439        rootBoundary,
22440        altBoundary,
22441        padding
22442      });
22443      var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
22444      if (referenceRect[len] > popperRect[len]) {
22445        mainVariationSide = getOppositePlacement(mainVariationSide);
22446      }
22447      var altVariationSide = getOppositePlacement(mainVariationSide);
22448      var checks = [];
22449      if (checkMainAxis) {
22450        checks.push(overflow[_basePlacement] <= 0);
22451      }
22452      if (checkAltAxis) {
22453        checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
22454      }
22455      if (checks.every(function(check) {
22456        return check;
22457      })) {
22458        firstFittingPlacement = placement;
22459        makeFallbackChecks = false;
22460        break;
22461      }
22462      checksMap.set(placement, checks);
22463    }
22464    if (makeFallbackChecks) {
22465      var numberOfChecks = flipVariations ? 3 : 1;
22466      var _loop = function _loop2(_i3) {
22467        var fittingPlacement = placements2.find(function(placement2) {
22468          var checks2 = checksMap.get(placement2);
22469          if (checks2) {
22470            return checks2.slice(0, _i3).every(function(check) {
22471              return check;
22472            });
22473          }
22474        });
22475        if (fittingPlacement) {
22476          firstFittingPlacement = fittingPlacement;
22477          return "break";
22478        }
22479      };
22480      for (var _i2 = numberOfChecks; _i2 > 0; _i2--) {
22481        var _ret = _loop(_i2);
22482        if (_ret === "break")
22483          break;
22484      }
22485    }
22486    if (state.placement !== firstFittingPlacement) {
22487      state.modifiersData[name]._skip = true;
22488      state.placement = firstFittingPlacement;
22489      state.reset = true;
22490    }
22491  }
22492  var flip_default = {
22493    name: "flip",
22494    enabled: true,
22495    phase: "main",
22496    fn: flip,
22497    requiresIfExists: ["offset"],
22498    data: {
22499      _skip: false
22500    }
22501  };
22502
22503  
vendor: 1,859 bytes, lines 22503-22557
22503// ../node_modules/@popperjs/core/lib/modifiers/hide.js
22504  function getSideOffsets(overflow, rect, preventedOffsets) {
22505    if (preventedOffsets === void 0) {
22506      preventedOffsets = {
22507        x: 0,
22508        y: 0
22509      };
22510    }
22511    return {
22512      top: overflow.top - rect.height - preventedOffsets.y,
22513      right: overflow.right - rect.width + preventedOffsets.x,
22514      bottom: overflow.bottom - rect.height + preventedOffsets.y,
22515      left: overflow.left - rect.width - preventedOffsets.x
22516    };
22517  }
22518  function isAnySideFullyClipped(overflow) {
22519    return [top, right, bottom, left].some(function(side) {
22520      return overflow[side] >= 0;
22521    });
22522  }
22523  function hide(_ref) {
22524    var state = _ref.state, name = _ref.name;
22525    var referenceRect = state.rects.reference;
22526    var popperRect = state.rects.popper;
22527    var preventedOffsets = state.modifiersData.preventOverflow;
22528    var referenceOverflow = detectOverflow(state, {
22529      elementContext: "reference"
22530    });
22531    var popperAltOverflow = detectOverflow(state, {
22532      altBoundary: true
22533    });
22534    var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
22535    var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
22536    var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
22537    var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
22538    state.modifiersData[name] = {
22539      referenceClippingOffsets,
22540      popperEscapeOffsets,
22541      isReferenceHidden,
22542      hasPopperEscaped
22543    };
22544    state.attributes.popper = Object.assign({}, state.attributes.popper, {
22545      "data-popper-reference-hidden": isReferenceHidden,
22546      "data-popper-escaped": hasPopperEscaped
22547    });
22548  }
22549  var hide_default = {
22550    name: "hide",
22551    enabled: true,
22552    phase: "main",
22553    requiresIfExists: ["preventOverflow"],
22554    fn: hide
22555  };
22556
22557  
vendor: 1,465 bytes, lines 22557-22596
22557// ../node_modules/@popperjs/core/lib/modifiers/offset.js
22558  function distanceAndSkiddingToXY(placement, rects, offset2) {
22559    var basePlacement = getBasePlacement(placement);
22560    var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
22561    var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, {
22562      placement
22563    })) : offset2, skidding = _ref[0], distance = _ref[1];
22564    skidding = skidding || 0;
22565    distance = (distance || 0) * invertDistance;
22566    return [left, right].indexOf(basePlacement) >= 0 ? {
22567      x: distance,
22568      y: skidding
22569    } : {
22570      x: skidding,
22571      y: distance
22572    };
22573  }
22574  function offset(_ref2) {
22575    var state = _ref2.state, options = _ref2.options, name = _ref2.name;
22576    var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
22577    var data = placements.reduce(function(acc, placement) {
22578      acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);
22579      return acc;
22580    }, {});
22581    var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;
22582    if (state.modifiersData.popperOffsets != null) {
22583      state.modifiersData.popperOffsets.x += x;
22584      state.modifiersData.popperOffsets.y += y;
22585    }
22586    state.modifiersData[name] = data;
22587  }
22588  var offset_default = {
22589    name: "offset",
22590    enabled: true,
22591    phase: "main",
22592    requires: ["popperOffsets"],
22593    fn: offset
22594  };
22595
22596  
vendor: 482 bytes, lines 22596-22614
22596// ../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js
22597  function popperOffsets(_ref) {
22598    var state = _ref.state, name = _ref.name;
22599    state.modifiersData[name] = computeOffsets({
22600      reference: state.rects.reference,
22601      element: state.rects.popper,
22602      strategy: "absolute",
22603      placement: state.placement
22604    });
22605  }
22606  var popperOffsets_default = {
22607    name: "popperOffsets",
22608    enabled: true,
22609    phase: "read",
22610    fn: popperOffsets,
22611    data: {}
22612  };
22613
22614  
vendor: 132 bytes, lines 22614-22619
22614// ../node_modules/@popperjs/core/lib/utils/getAltAxis.js
22615  function getAltAxis(axis) {
22616    return axis === "x" ? "y" : "x";
22617  }
22618
22619  
vendor: 5,554 bytes, lines 22619-22712
22619// ../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
22620  function preventOverflow(_ref) {
22621    var state = _ref.state, options = _ref.options, name = _ref.name;
22622    var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
22623    var overflow = detectOverflow(state, {
22624      boundary,
22625      rootBoundary,
22626      padding,
22627      altBoundary
22628    });
22629    var basePlacement = getBasePlacement(state.placement);
22630    var variation = getVariation(state.placement);
22631    var isBasePlacement = !variation;
22632    var mainAxis = getMainAxisFromPlacement(basePlacement);
22633    var altAxis = getAltAxis(mainAxis);
22634    var popperOffsets2 = state.modifiersData.popperOffsets;
22635    var referenceRect = state.rects.reference;
22636    var popperRect = state.rects.popper;
22637    var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, {
22638      placement: state.placement
22639    })) : tetherOffset;
22640    var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
22641      mainAxis: tetherOffsetValue,
22642      altAxis: tetherOffsetValue
22643    } : Object.assign({
22644      mainAxis: 0,
22645      altAxis: 0
22646    }, tetherOffsetValue);
22647    var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
22648    var data = {
22649      x: 0,
22650      y: 0
22651    };
22652    if (!popperOffsets2) {
22653      return;
22654    }
22655    if (checkMainAxis) {
22656      var _offsetModifierState$;
22657      var mainSide = mainAxis === "y" ? top : left;
22658      var altSide = mainAxis === "y" ? bottom : right;
22659      var len = mainAxis === "y" ? "height" : "width";
22660      var offset2 = popperOffsets2[mainAxis];
22661      var min2 = offset2 + overflow[mainSide];
22662      var max2 = offset2 - overflow[altSide];
22663      var additive = tether ? -popperRect[len] / 2 : 0;
22664      var minLen = variation === start ? referenceRect[len] : popperRect[len];
22665      var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
22666      var arrowElement = state.elements.arrow;
22667      var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
22668        width: 0,
22669        height: 0
22670      };
22671      var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
22672      var arrowPaddingMin = arrowPaddingObject[mainSide];
22673      var arrowPaddingMax = arrowPaddingObject[altSide];
22674      var arrowLen = within(0, referenceRect[len], arrowRect[len]);
22675      var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
22676      var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
22677      var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
22678      var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
22679      var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
22680      var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;
22681      var tetherMax = offset2 + maxOffset - offsetModifierValue;
22682      var preventedOffset = within(tether ? min(min2, tetherMin) : min2, offset2, tether ? max(max2, tetherMax) : max2);
22683      popperOffsets2[mainAxis] = preventedOffset;
22684      data[mainAxis] = preventedOffset - offset2;
22685    }
22686    if (checkAltAxis) {
22687      var _offsetModifierState$2;
22688      var _mainSide = mainAxis === "x" ? top : left;
22689      var _altSide = mainAxis === "x" ? bottom : right;
22690      var _offset = popperOffsets2[altAxis];
22691      var _len = altAxis === "y" ? "height" : "width";
22692      var _min = _offset + overflow[_mainSide];
22693      var _max3 = _offset - overflow[_altSide];
22694      var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
22695      var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
22696      var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
22697      var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max3;
22698      var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max3);
22699      popperOffsets2[altAxis] = _preventedOffset;
22700      data[altAxis] = _preventedOffset - _offset;
22701    }
22702    state.modifiersData[name] = data;
22703  }
22704  var preventOverflow_default = {
22705    name: "preventOverflow",
22706    enabled: true,
22707    phase: "main",
22708    fn: preventOverflow,
22709    requiresIfExists: ["offset"]
22710  };
22711
22712  
vendor: 215 bytes, lines 22712-22720
22712// ../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js
22713  function getHTMLElementScroll(element) {
22714    return {
22715      scrollLeft: element.scrollLeft,
22716      scrollTop: element.scrollTop
22717    };
22718  }
22719
22720  
vendor: 261 bytes, lines 22720-22729
22720// ../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js
22721  function getNodeScroll(node) {
22722    if (node === getWindow(node) || !isHTMLElement(node)) {
22723      return getWindowScroll(node);
22724    } else {
22725      return getHTMLElementScroll(node);
22726    }
22727  }
22728
22729  
vendor: 1,585 bytes, lines 22729-22772
22729// ../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js
22730  function isElementScaled(element) {
22731    var rect = element.getBoundingClientRect();
22732    var scaleX = round(rect.width) / element.offsetWidth || 1;
22733    var scaleY = round(rect.height) / element.offsetHeight || 1;
22734    return scaleX !== 1 || scaleY !== 1;
22735  }
22736  function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
22737    if (isFixed === void 0) {
22738      isFixed = false;
22739    }
22740    var isOffsetParentAnElement = isHTMLElement(offsetParent);
22741    var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
22742    var documentElement = getDocumentElement(offsetParent);
22743    var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
22744    var scroll = {
22745      scrollLeft: 0,
22746      scrollTop: 0
22747    };
22748    var offsets = {
22749      x: 0,
22750      y: 0
22751    };
22752    if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
22753      if (getNodeName(offsetParent) !== "body" || isScrollParent(documentElement)) {
22754        scroll = getNodeScroll(offsetParent);
22755      }
22756      if (isHTMLElement(offsetParent)) {
22757        offsets = getBoundingClientRect(offsetParent, true);
22758        offsets.x += offsetParent.clientLeft;
22759        offsets.y += offsetParent.clientTop;
22760      } else if (documentElement) {
22761        offsets.x = getWindowScrollBarX(documentElement);
22762      }
22763    }
22764    return {
22765      x: rect.left + scroll.scrollLeft - offsets.x,
22766      y: rect.top + scroll.scrollTop - offsets.y,
22767      width: rect.width,
22768      height: rect.height
22769    };
22770  }
22771
22772  
vendor: 1,080 bytes, lines 22772-22809
22772// ../node_modules/@popperjs/core/lib/utils/orderModifiers.js
22773  function order(modifiers) {
22774    var map = new Map();
22775    var visited = new Set();
22776    var result = [];
22777    modifiers.forEach(function(modifier) {
22778      map.set(modifier.name, modifier);
22779    });
22780    function sort(modifier) {
22781      visited.add(modifier.name);
22782      var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
22783      requires.forEach(function(dep) {
22784        if (!visited.has(dep)) {
22785          var depModifier = map.get(dep);
22786          if (depModifier) {
22787            sort(depModifier);
22788          }
22789        }
22790      });
22791      result.push(modifier);
22792    }
22793    modifiers.forEach(function(modifier) {
22794      if (!visited.has(modifier.name)) {
22795        sort(modifier);
22796      }
22797    });
22798    return result;
22799  }
22800  function orderModifiers(modifiers) {
22801    var orderedModifiers = order(modifiers);
22802    return modifierPhases.reduce(function(acc, phase) {
22803      return acc.concat(orderedModifiers.filter(function(modifier) {
22804        return modifier.phase === phase;
22805      }));
22806    }, []);
22807  }
22808
22809  
vendor: 370 bytes, lines 22809-22825
22809// ../node_modules/@popperjs/core/lib/utils/debounce.js
22810  function debounce(fn2) {
22811    var pending;
22812    return function() {
22813      if (!pending) {
22814        pending = new Promise(function(resolve) {
22815          Promise.resolve().then(function() {
22816            pending = void 0;
22817            resolve(fn2());
22818          });
22819        });
22820      }
22821      return pending;
22822    };
22823  }
22824
22825  
vendor: 343 bytes, lines 22825-22835
22825// ../node_modules/@popperjs/core/lib/utils/format.js
22826  function format(str) {
22827    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
22828      args[_key - 1] = arguments[_key];
22829    }
22830    return [].concat(args).reduce(function(p, c) {
22831      return p.replace(/%s/, c);
22832    }, str);
22833  }
22834
22835  
vendor: 3,259 bytes, lines 22835-22899
22835// ../node_modules/@popperjs/core/lib/utils/validateModifiers.js
22836  var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s';
22837  var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available';
22838  var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"];
22839  function validateModifiers(modifiers) {
22840    modifiers.forEach(function(modifier) {
22841      [].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index, self2) {
22842        return self2.indexOf(value) === index;
22843      }).forEach(function(key) {
22844        switch (key) {
22845          case "name":
22846            if (typeof modifier.name !== "string") {
22847              console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"'));
22848            }
22849            break;
22850          case "enabled":
22851            if (typeof modifier.enabled !== "boolean") {
22852              console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"'));
22853            }
22854            break;
22855          case "phase":
22856            if (modifierPhases.indexOf(modifier.phase) < 0) {
22857              console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"'));
22858            }
22859            break;
22860          case "fn":
22861            if (typeof modifier.fn !== "function") {
22862              console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"'));
22863            }
22864            break;
22865          case "effect":
22866            if (modifier.effect != null && typeof modifier.effect !== "function") {
22867              console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"'));
22868            }
22869            break;
22870          case "requires":
22871            if (modifier.requires != null && !Array.isArray(modifier.requires)) {
22872              console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"'));
22873            }
22874            break;
22875          case "requiresIfExists":
22876            if (!Array.isArray(modifier.requiresIfExists)) {
22877              console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"'));
22878            }
22879            break;
22880          case "options":
22881          case "data":
22882            break;
22883          default:
22884            console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) {
22885              return '"' + s + '"';
22886            }).join(", ") + '; but "' + key + '" was provided.');
22887        }
22888        modifier.requires && modifier.requires.forEach(function(requirement) {
22889          if (modifiers.find(function(mod) {
22890            return mod.name === requirement;
22891          }) == null) {
22892            console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));
22893          }
22894        });
22895      });
22896    });
22897  }
22898
22899  
vendor: 317 bytes, lines 22899-22911
22899// ../node_modules/@popperjs/core/lib/utils/uniqueBy.js
22900  function uniqueBy(arr, fn2) {
22901    var identifiers = new Set();
22902    return arr.filter(function(item) {
22903      var identifier = fn2(item);
22904      if (!identifiers.has(identifier)) {
22905        identifiers.add(identifier);
22906        return true;
22907      }
22908    });
22909  }
22910
22911  
vendor: 560 bytes, lines 22911-22926
22911// ../node_modules/@popperjs/core/lib/utils/mergeByName.js
22912  function mergeByName(modifiers) {
22913    var merged = modifiers.reduce(function(merged2, current) {
22914      var existing = merged2[current.name];
22915      merged2[current.name] = existing ? Object.assign({}, existing, current, {
22916        options: Object.assign({}, existing.options, current.options),
22917        data: Object.assign({}, existing.data, current.data)
22918      }) : current;
22919      return merged2;
22920    }, {});
22921    return Object.keys(merged).map(function(key) {
22922      return merged[key];
22923    });
22924  }
22925
22926  
vendor: 7,317 bytes, lines 22926-23097
22926// ../node_modules/@popperjs/core/lib/createPopper.js
22927  var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.";
22928  var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.";
22929  var DEFAULT_OPTIONS = {
22930    placement: "bottom",
22931    modifiers: [],
22932    strategy: "absolute"
22933  };
22934  function areValidElements() {
22935    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
22936      args[_key] = arguments[_key];
22937    }
22938    return !args.some(function(element) {
22939      return !(element && typeof element.getBoundingClientRect === "function");
22940    });
22941  }
22942  function popperGenerator(generatorOptions) {
22943    if (generatorOptions === void 0) {
22944      generatorOptions = {};
22945    }
22946    var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
22947    return function createPopper2(reference2, popper2, options) {
22948      if (options === void 0) {
22949        options = defaultOptions;
22950      }
22951      var state = {
22952        placement: "bottom",
22953        orderedModifiers: [],
22954        options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
22955        modifiersData: {},
22956        elements: {
22957          reference: reference2,
22958          popper: popper2
22959        },
22960        attributes: {},
22961        styles: {}
22962      };
22963      var effectCleanupFns = [];
22964      var isDestroyed = false;
22965      var instance = {
22966        state,
22967        setOptions: function setOptions(setOptionsAction) {
22968          var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
22969          cleanupModifierEffects();
22970          state.options = Object.assign({}, defaultOptions, state.options, options2);
22971          state.scrollParents = {
22972            reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],
22973            popper: listScrollParents(popper2)
22974          };
22975          var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers)));
22976          state.orderedModifiers = orderedModifiers.filter(function(m) {
22977            return m.enabled;
22978          });
22979          if (true) {
22980            var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) {
22981              var name = _ref.name;
22982              return name;
22983            });
22984            validateModifiers(modifiers);
22985            if (getBasePlacement(state.options.placement) === auto) {
22986              var flipModifier = state.orderedModifiers.find(function(_ref2) {
22987                var name = _ref2.name;
22988                return name === "flip";
22989              });
22990              if (!flipModifier) {
22991                console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" "));
22992              }
22993            }
22994            var _getComputedStyle5 = getComputedStyle2(popper2), marginTop = _getComputedStyle5.marginTop, marginRight = _getComputedStyle5.marginRight, marginBottom = _getComputedStyle5.marginBottom, marginLeft = _getComputedStyle5.marginLeft;
22995            if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) {
22996              return parseFloat(margin);
22997            })) {
22998              console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" "));
22999            }
23000          }
23001          runModifierEffects();
23002          return instance.update();
23003        },
23004        forceUpdate: function forceUpdate() {
23005          if (isDestroyed) {
23006            return;
23007          }
23008          var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;
23009          if (!areValidElements(reference3, popper3)) {
23010            if (true) {
23011              console.error(INVALID_ELEMENT_ERROR);
23012            }
23013            return;
23014          }
23015          state.rects = {
23016            reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"),
23017            popper: getLayoutRect(popper3)
23018          };
23019          state.reset = false;
23020          state.placement = state.options.placement;
23021          state.orderedModifiers.forEach(function(modifier) {
23022            return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
23023          });
23024          var __debug_loops__ = 0;
23025          for (var index = 0; index < state.orderedModifiers.length; index++) {
23026            if (true) {
23027              __debug_loops__ += 1;
23028              if (__debug_loops__ > 100) {
23029                console.error(INFINITE_LOOP_ERROR);
23030                break;
23031              }
23032            }
23033            if (state.reset === true) {
23034              state.reset = false;
23035              index = -1;
23036              continue;
23037            }
23038            var _state$orderedModifie = state.orderedModifiers[index], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;
23039            if (typeof fn2 === "function") {
23040              state = fn2({
23041                state,
23042                options: _options,
23043                name,
23044                instance
23045              }) || state;
23046            }
23047          }
23048        },
23049        update: debounce(function() {
23050          return new Promise(function(resolve) {
23051            instance.forceUpdate();
23052            resolve(state);
23053          });
23054        }),
23055        destroy: function destroy() {
23056          cleanupModifierEffects();
23057          isDestroyed = true;
23058        }
23059      };
23060      if (!areValidElements(reference2, popper2)) {
23061        if (true) {
23062          console.error(INVALID_ELEMENT_ERROR);
23063        }
23064        return instance;
23065      }
23066      instance.setOptions(options).then(function(state2) {
23067        if (!isDestroyed && options.onFirstUpdate) {
23068          options.onFirstUpdate(state2);
23069        }
23070      });
23071      function runModifierEffects() {
23072        state.orderedModifiers.forEach(function(_ref3) {
23073          var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect4 = _ref3.effect;
23074          if (typeof effect4 === "function") {
23075            var cleanupFn = effect4({
23076              state,
23077              name,
23078              instance,
23079              options: options2
23080            });
23081            var noopFn = function noopFn2() {
23082            };
23083            effectCleanupFns.push(cleanupFn || noopFn);
23084          }
23085        });
23086      }
23087      function cleanupModifierEffects() {
23088        effectCleanupFns.forEach(function(fn2) {
23089          return fn2();
23090        });
23091        effectCleanupFns = [];
23092      }
23093      return instance;
23094    };
23095  }
23096
23097  
vendor: 335 bytes, lines 23097-23103
23097// ../node_modules/@popperjs/core/lib/popper.js
23098  var defaultModifiers = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default, offset_default, flip_default, preventOverflow_default, arrow_default, hide_default];
23099  var createPopper = /* @__PURE__ */ popperGenerator({
23100    defaultModifiers
23101  });
23102
23103  
23103// resources/js/app.js
23104  var import_headroom = __toModule(require_headroom());
23105  var import_lodash = __toModule(require_lodash());
23106  jQuery = import_jquery3.default;
23107  $ = import_jquery3.default;
23108  gsapWithCSS.registerPlugin(ScrollTrigger2, ScrollToPlugin, DrawSVGPlugin, SplitText, MorphSVGPlugin);
23109  gsapWithCSS.config({ nullTargetWarn: false });
23110  var _ = require_lodash();
23111  if (document.querySelector(".lang-switch")) {
23112    let show = function() {
23113      tooltip.setAttribute("data-show", "");
23114      popperInstance.update();
23115    }, hide2 = function() {
23116      tooltip.removeAttribute("data-show");
23117    }, show2 = function() {
23118      tooltip2.setAttribute("data-show", "");
23119      popperInstance2.update();
23120    }, hide22 = function() {
23121      tooltip2.removeAttribute("data-show");
23122    };
23123    const langSwitch = document.querySelector("header .lang-switch");
23124    const tooltip = document.querySelector("header .tooltip");
23125    const popperInstance = createPopper(langSwitch, tooltip, {
23126      placement: "bottom"
23127    });
23128    const showEvents = ["mouseenter", "focu
23128s"];
23129    const hideEvents = ["mouseleave", "blur"];
23130    showEvents.forEach((event) => {
23131      langSwitch.addEventListener(event, show);
23132    });
23133    hideEvents.forEach((event) => {
23134      langSwitch.addEventListener(event, hide2);
23135    });
23136    const langSwitch2 = document.querySelector("footer .lang-switch");
23137    const tooltip2 = document.querySelector("footer .tooltip");
23138    const popperInstance2 = createPopper(langSwitch2, tooltip2, {
23139      placement: "top"
23140    });
23141    const showEvents2 = ["mouseenter", "focus"];
23142    const hideEvents2 = ["mouseleave", "blur"];
23143    showEvents2.forEach((event) => {
23144      langSwitch2.addEventListener(event, show2);
23145    });
23146    hideEvents2.forEach((event) => {
23147      langSwitch2.addEventListener(event, hide22);
23148    });
23149  }
23150  $("header").removeClass("relative").addClass("fixed");
23151  if ($(".standard-hero").length) {
23152    $("#content").css("padding-top", $("header").height() + $("#header-lower").height() - 2);
23153    $(window).on("resize", function() {
23154      $("#content").css("padding-top", $("header").height() + $("#header-lower").height() - 2);
23155    });
23156  }
23157  home_loader();
23158  $(".sub-menu").hide();
23159  var split = new SplitText(".split", { type: "words" });
23160  var myElement = document.querySelector("header");
23161  var headroom = new import_headroom.default(myElement, {
23162    offset: $("header").height() / 2
23163  });
23164  headroom.init();
23165  usp_slider();
23166  if ($(".hero-alt").length) {
23167    let hero_padding = function() {
23168      if ($(window).outerWidth() < 960) {
23169        $(".hero-content").css("padding-top", $("header").height());
23170        $(".hero-alt").css("padding-top", "");
23171        $("#primary-menu-toggle").parent().removeClass("dark:text-white");
23172        if ($(".single-product").length) {
23173          $("header").removeClass("dark");
23174          $(".site-content").css("padding-top", $("header").height());
23175        }
23176      } else {
23177        console.log($(".container").width());
23178        console.log(($(window).width() - $(".container").width()) / 2 + $(".container").width());
23179        $(".hero-alt").css("padding-top", $("header").height() + $("#header-lower").height());
23180        if ($(".single-product").length) {
23181          $("header").addClass("dark");
23182          $(".site-content").css("padding-top", "");
23183        }
23184      }
23185    };
23186    $("header").addClass("dark over-hero").removeClass("bg-white");
23187    $("#content").removeClass("pt-14");
23188    hero_padding();
23189    window.addEventListener("resize", _.debounce(hero_padding, 150));
23190    gsapWithCSS.timeline().to(".hero-alt", {
23191      opacity: 1
23192    }).to(".hero-alt .hero-alt-color", {
23193      width: "100%",
23194      duration: 1.25
23195    }, 0).to(".hero-alt .hero-alt-white", {
23196      width: "0%",
23197      duration: 1
23198    }, 0).to(".hero-alt .hero-alt-media", {
23199      width: ($(window).width() - $(".container").width()) / 2 + $(".container").width(),
23200      height: "100%",
23201      duration: 2.5
23202    }, 0).to(".hero-alt .hero-content-text", {
23203      opacity: 1,
23204      y: 0
23205    }, 1.25).to(".hero-alt .hero-content-button", {
23206      opacity: 1
23207    }, 1.5);
23208  } else if ($(".hero-home").length) {
23209    let hero_padding = function() {
23210      if ($(window).outerWidth() < 960) {
23211        $(".hero-content").css("padding-top", $("header").height());
23212        $(".hero-home > div").css("padding-top", "");
23213      } else {
23214        $(".hero-content").css("padding-top", "");
23215        $(".hero-home > div").css("padding-top", $("header").height());
23216      }
23217    };
23218    $("header").addClass("dark over-hero").removeClass("bg-white");
23219    $("#content").removeClass("pt-14");
23220    hero_padding();
23221    window.addEventListener("resize", _.debounce(hero_padding, 150));
23222    if (!$("body").hasClass("home")) {
23223      gsapWithCSS.timeline().to($(".hero-home"), {
23224        opacity: 1
23225      }).to($(".hero-home .hero-content > *"), {
23226        opacity: 1,
23227        stagger: 0.1
23228      }, 1).to($(".hero-home .usp-line"), {
23229        height: "100%",
23230        stagger: 0.1
23231      }, 1.25).to($(".hero-home .usp-content"), {
23232        y: 0,
23233        opacity: 1,
23234        stagger: 0.1,
23235        ease: "power4.out",
23236        onComplete: () => console.log("234")
23237      }, 1);
23238    }
23239  } else {
23240    if (!$(".page-template-page-mission").length) {
23241      $("#content").css("padding-top", $("header").height() + $("#header-lower").height() - 2);
23242      gsapWithCSS.to(".standard-hero", {
23243        opacity: 1
23244      });
23245      window.addEventListener("resize", function() {
23246        $("#content").css("padding-top", $("header").height() + $("#header-lower").height() - 2);
23247      });
23248    } else {
23249      $("header").addClass("dark over-hero").removeClass("bg-white");
23250    }
23251  }
23252  if ($(".hero-alt, .hero-home").length) {
23253    ScrollTrigger2.matchMedia({
23254      "(min-width: 1024px)": function() {
23255        gsapWithCSS.to("header", {
23256          scrollTrigger: {
23257            trigger: ".hero-alt, .hero-home",
23258            start: "bottom top",
23259            onLeave: () => {
23260              $("header").removeClass("dark").addClass("bg-white dark:bg-black");
23261            },
23262            onLeaveBack: () => {
23263              if ($(".single-product").length && $(window).width() < 960) {
23264                $("header").removeClass("bg-white dark:bg-black");
23265              } else {
23266                $("header").addClass("dark").removeClass("bg-white dark:bg-black");
23267              }
23268            }
23269          }
23270        });
23271      },
23272      "(max-width: 1023px)": function() {
23273        $("#header-upper").addClass("!bg-transparent");
23274        gsapWithCSS.to(".hero-alt, .hero-home", {
23275          scrollTrigger: {
23276            trigger: ".hero-alt, .hero-home",
23277            start: "top top",
23278            onEnter: () => {
23279              $("header").removeClass("dark").addClass("bg-white dark:bg-black");
23280              $("#header-upper").removeClass("!bg-transparent");
23281            },
23282            onLeaveBack: () => {
23283              $("header").addClass("dark").removeClass("bg-white dark:bg-black");
23284              $("#header-upper").addClass("!bg-transparent");
23285            }
23286          }
23287        });
23288      }
23289    });
23290  }
23291  nav_menu();
23292  $(window).on("resize", _.debounce(nav_menu, 150));
23293  function nav_menu() {
23294    if ($(window).width() > 1024) {
23295      $(".menu-item-has-children a").off();
23296      $(".menu-item-has-children").on("mouseover", function() {
23297        $(this).children(".sub-menu").stop().slideDown(300);
23298      });
23299      $(".menu-item-has-children").on("mouseleave", function() {
23300        $(this).children(".sub-menu").stop().slideUp(300);
23301      });
23302    } else {
23303      $(".menu-item-has-children").off();
23304      $(".menu-item-has-children > a").off().on("click", function(e) {
23305        e.preventDefault();
23306        $(this).closest(".menu-item-has-children").siblings().find("a").removeClass("active");
23307        $(this).closest(".menu-item-has-children").siblings().find("a").removeClass("active");
23308        $(this).closest(".menu-item-has-children").siblings().children(".sub-menu").stop().slideUp(300);
23309        $(this).toggleClass("active");
23310        $(this).parent().children(".sub-menu").stop().slideToggle(300);
23311      });
23312    }
23313  }
23314  var open_menu = gsapWithCSS.timeline({ paused: true }).fromTo("#mobile-menu", { autoAlpha: 0 }, { autoAlpha: 1, duration: 0.2 }).fromTo("#menu-menu-2 > li", { autoAlpha: 0 }, { autoAlpha: 1, stagger: 0.1, duration: 0.2 }).fromTo(".mob-lang-switch-wrapper", { autoAlpha: 0 }, { autoAlpha: 1, duration: 0.2 });
23315  $(document).on("click", "#primary-menu-toggle", function() {
23316    if ($(this).hasClass("active")) {
23317      open_menu.timeScale(2).reverse();
23318      $(this).removeClass("active");
23319      $("#header-upper").removeClass("!bg-transparent !text-white dark");
23320      $("body, html").removeClass("overflow-hidden");
23321      if (!$(".hero-alt").length && !$(".hero-home").length) {
23322        $("header").addClass("bg-white");
23323      }
23324    } else {
23325      open_menu.timeScale(1).play();
23326      $(this).addClass("active");
23327      $("#header-upper").addClass("!bg-transparent !text-white dark");
23328      $("body, html").addClass("overflow-hidden");
23329      $("header").removeClass("bg-white");
23330    }
23331  });
23332  accordion();
23333  file_download();
23334  product_slider();
23335  product_slider_2();
23336  $(".latest-news").each(function() {
23337    ScrollTrigger2.create({
23338      trigger: this,
23339      start: "top 90%",
23340      onEnter: (self2) => {
23341        gsapWithCSS.timeline().to(this, {
23342          opacity: 1,
23343          duration: 0.25
23344        }).fromTo($(this).find("a"), {
23345          opacity: 0
23346        }, {
23347          opacity: 1,
23348          stagger: 0.1
23349        }, "-=.1");
23350      }
23351    });
23352  });
23353  if (document.querySelector(".product-menu")) {
23354    ScrollTrigger2.create({
23355      trigger: ".product-menu",
23356      start: "top top",
23357      end: "max",
23358      pin: true,
23359      pinSpacing: false,
23360      onEnter: () => {
23361        $("header, #header-lower").addClass("!-translate-y-full");
23362      }
23363    });
23364    ScrollTrigger2.create({
23365      trigger: ".product-hero",
23366      start: "bottom center",
23367      onLeaveBack: () => {
23368        $("header, #header-lower").removeClass("!-translate-y-full");
23369      }
23370    });
23371    let sections = gsapWithCSS.utils.toArray(".product-section");
23372    sections.forEach(function(element) {
23373      ScrollTrigger2.create({
23374        trigger: element,
23375        start: "top center",
23376        end: "bottom center",
23377        onEnter: () => {
23378          document.querySelector('button[data-href="#' + element.i
23378d + '"]').closest("li").classList.add("after:!w-full");
23379        },
23380        onEnterBack: () => {
23381          document.querySelector('button[data-href="#' + element.id + '"]').closest("li").classList.add("after:!w-full");
23382        },
23383        onLeave: () => {
23384          document.querySelector('button[data-href="#' + element.id + '"]').closest("li").classList.remove("after:!w-full");
23385        },
23386        onLeaveBack: () => {
23387          document.querySelector('button[data-href="#' + element.id + '"]').closest("li").classList.remove("after:!w-full");
23388        }
23389      });
23390    });
23391    document.querySelectorAll(".product-menu button").forEach((btn, index) => {
23392      let id = btn.dataset.href.replaceAll("#", "");
23393      btn.addEventListener("click", () => {
23394        gsapWithCSS.to(window, {
23395          duration: 1,
23396          scrollTo: {
23397            y: "#" + id,
23398            offsetY: $(".product-menu").height() + 30
23399          }
23400        });
23401      });
23402    });
23403  }
23404  $(".faq-buttons button").on("click", function() {
23405    let id = $(this).attr("data-acc");
23406    $(".faq-buttons button").removeClass("shadow-lg border-h-green");
23407    $(this).addClass("shadow-lg border-h-green");
23408    $(".faq-acc").removeClass("block").addClass("hidden");
23409    $('.faq-acc[data-acc="' + id + '"]').removeClass("hidden").addClass("block");
23410  });
23411  icon_buttons();
23412  text_image();
23413  $(".pb-section").each(function() {
23414    gsapWithCSS.fromTo($(this).children(), {
23415      y: 50,
23416      opacity: 0
23417    }, {
23418      scrollTrigger: {
23419        trigger: $(this),
23420        start: "top 85%"
23421      },
23422      y: 0,
23423      opacity: 1,
23424      duration: 1.5
23425    });
23426  });
23427  function footer_height() {
23428    $("#content").css("margin-bottom", $("footer").height());
23429  }
23430  footer_height();
23431  $(window).on("resize", footer_height);
23432  $(".service-card").each(function() {
23433    gsapWithCSS.to($(this), {
23434      scrollTrigger: {
23435        trigger: $(this),
23436        start: "top 80%"
23437      },
23438      opacity: 1
23439    });
23440  });
23441  function home_loader() {
23442    if ($("body").hasClass("home")) {
23443      gsapWithCSS.timeline().to("#page-loader .logo .line", {
23444        opacity: 1
23445      }, 0).to("#page-loader .logo .letter", {
23446        opacity: 1,
23447        stagger: 0.05,
23448        onComplete: () => {
23449          gsapWithCSS.set(".logo .opacity-0", { opacity: 1 });
23450          $("#page").removeClass("opacity-0");
23451        }
23452      }, 0).to("#page-loader", {
23453        yPercent: 100
23454      }).set("#page-loader .logo", {
23455        opacity: 0
23456      }, "-=.5").from("#header-link, #header-button, header .lang-switch", {
23457        opacity: 0,
23458        y: -100,
23459        stagger: -0.2
23460      }, "-=.45").from("#header-line", {
23461        opacity: 0
23462      }, "-=.25").from("header #menu-menu-1 > .menu-item", {
23463        opacity: 0,
23464        y: -20,
23465        stagger: 0.1
23466      }, "-=.25").from("#header-line2", {
23467        opacity: 0
23468      }, "-=1").fromTo(".hero-opacity", {
23469        opacity: 0
23470      }, {
23471        opacity: 0.5
23472      }, "-=.5").from(".hero-content", {
23473        opacity: 0,
23474        y: 100,
23475        duration: 1
23476      }, "-=.5").addLabel("hero-links", "-=.5").from(".hero-links a", { opacity: 0, stagger: 0.2, duration: 1 }, "hero-links").from(".hero-links .hero-links-image", { width: 0, stagger: 0.2, duration: 1 }, "hero-links").from(".hero-links .hero-links-image img", { scale: 1.2, stagger: 0.2, duration: 1 }, "hero-links").from(".hero-links svg", { opacity: 0, stagger: 0.2, duration: 1 }, "hero-links+=.5");
23477    } else {
23478      gsapWithCSS.to(".logo .opacity-0", { opacity: 1, delay: 0.5 });
23479    }
23480    let tl = gsapWithCSS.timeline({
23481      scrollTrigger: {
23482        trigger: ".hero-home",
23483        start: "top top",
23484        end: "bottom 25%",
23485        scrub: 1
23486      },
23487      defaults: {}
23488    });
23489    tl.to(".hero-content", {
23490      opacity: 0,
23491      ease: "linear"
23492    }, 0).to(".hero-links", {
23493      opacity: 0,
23494      ease: "linear",
23495      delay: 1
23496    }, 0);
23497  }
23498  ScrollTrigger2.matchMedia({
23499    "(min-width: 1024px)": function() {
23500      gsapWithCSS.to("header", {
23501        scrollTrigger: {
23502          trigger: ".heroes:not(.standard-hero)",
23503          start: "top top",
23504          end: "bottom top",
23505          onLeave: (self2) => {
23506            $("header").addClass("passed-hero").removeClass("over-hero");
23507          },
23508          onEnterBack: (self2) => {
23509            $("header").addClass("over-hero").removeClass("passed-hero");
23510          }
23511        }
23512      });
23513    },
23514    "(max-width: 1023px)": function() {
23515      gsapWithCSS.to("header", {
23516        scrollTrigger: {
23517          trigger: ".heroes:not(.standard-hero)",
23518          start: "top top",
23519          end: "top 10px",
23520          onLeave: (self2) => {
23521            $("header").addClass("passed-hero").removeClass("over-hero");
23522            console.log("down");
23523          },
23524          onEnterBack: (self2) => {
23525            $("header").addClass("over-hero").removeClass("passed-hero");
23526            console.log("up");
23527          }
23528        }
23529      });
23530    }
23531  });
23532  gsapWithCSS.set(".product-card", { y: 100 });
23533  ScrollTrigger2.batch(".product-card", {
23534    interval: 0.05,
23535    batchMax: 2,
23536    onEnter: (batch) => gsapWithCSS.to(batch, {
23537      opacity: 1,
23538      y: 0,
23539      stagger: { each: 0.15, grid: [1, 3] },
23540      overwrite: true
23541    }),
23542    start: "20px bottom",
23543    end: "top top"
23544  });
23545  ScrollTrigger2.addEventListener("refreshInit", () => gsapWithCSS.set(".box", { y: 0 }));
23546  ScrollTrigger2.matchMedia({
23547    "(min-width: 1024px)": function() {
23548      let tl = gsapWithCSS.timeline({
23549        scrollTrigger: {
23550          trigger: ".posts-grid a:first-child",
23551          start: "top " + $("header").height(),
23552          endTrigger: ".posts-grid",
23553          end: "bottom bottom",
23554          pin: true,
23555          pinSpacing: false
23556        }
23557      });
23558      $("#featured-blog img").css("height", $(window).height() - $("#featured-blog .post-content").height() - $("header").height() - $("header #header-lower").height() - 16 * 6);
23559    },
23560    "(max-width: 799px)": function() {
23561      let tl = gsapWithCSS.timeline({
23562        scrollTrigger: {
23563          trigger: ".posts-grid a:first-child",
23564          start: "top " + $("header").height(),
23565          endTrigger: ".posts-grid",
23566          end: "bottom bottom",
23567          pin: false,
23568          pinSpacing: false
23569        }
23570      });
23571      $("#featured-blog img").css("height", "");
23572    },
23573    all: function() {
23574    }
23575  });
23576  gsapWithCSS.timeline().from(".product-hero-bg", {
23577    right: "300px"
23578  }, 0).to("#overview .product-hero-image", {
23579    opacity: 1,
23580    y: 0
23581  }, 0);
23582  if ($("body").hasClass("page-template-page-mission")) {
23583    let start2 = function() {
23584      let panels = gsapWithCSS.utils.toArray(".mission-slide"), scrollTween;
23585      function goToSection(i) {
23586        scrollTween = gsapWithCSS.to(window, {
23587          scrollTo: {
23588            y: i * $(".mission-slide").height(),
23589            autoKill: false
23590          },
23591          duration: 1.5,
23592          onComplete: () => scrollTween = null,
23593          overwrite: false
23594        });
23595        stop = true;
23596      }
23597      gsapWithCSS.utils.toArray("#mission-slide-nav a").forEach(function(a) {
23598        a.addEventListener("click", function(e) {
23599          e.preventDefault();
23600          let index = $(a).index();
23601          goToSection(index);
23602        });
23603      });
23604      gsapWithCSS.utils.toArray(".scroll-button").forEach(function(a) {
23605        a.addEventListener("click", function(e) {
23606          e.preventDefault();
23607          let index = $(a).closest(".mission-slide").index();
23608          goToSection(index + 1);
23609        });
23610      });
23611      ScrollTrigger2.matchMedia({
23612        "(min-width: 1024px)": function() {
23613          panels.forEach((panel, i) => {
23614            ScrollTrigger2.create({
23615              trigger: panel,
23616              start: "top bottom",
23617              end: "+=200%",
23618              onToggle: (self2) => {
23619                self2.isActive && !scrollTween && goToSection(i);
23620              },
23621              onEnter: () => {
23622                $("#mission-slide-nav .active").removeClass("active");
23623                $("#mission-slide-nav a:nth-child(" + (i + 1) + ")").addClass("active");
23624                gsapWithCSS.timeline().set($(panel), {
23625                  autoAlpha: 1
23626                }).to($(panel).find(".slide-inner"), {
23627                  autoAlpha: 1
23628                }).fromTo($(panel).find(".slide-sub"), {
23629                  autoAlpha: 0
23630                }, {
23631                  autoAlpha: 1
23632                }, "-=.5").fromTo($(panel).find(".slide-heading"), {
23633                  autoAlpha: 0,
23634                  y: 100
23635                }, {
23636                  autoAlpha: 1,
23637                  y: 0
23638                }, "-=.5").fromTo($(panel).find(".scroll-button"), { autoAlpha: 0 }, { autoAlpha: 1 }).fromTo($(panel).find("img"), {
23639                  scale: 1.1
23640                }, {
23641                  scale: 1,
23642                  duration: 2
23643                }, 0);
23644              },
23645              onEnterBack: () => {
23646                $("#mission-slide-nav .active").removeClass("active");
23647                $("#mission-slide-nav a:nth-child(" + (i + 1) + ")").addClass("active");
23648                gsapWithCSS.timeline().to($(panel).next(), {
23649                  autoAlpha: 0
23650                }, 0).to($(panel).next().find(".slide-inner"), {
23651                  autoAlpha: 0
23652                }, 0).to($(panel).find(".slide-inner"), {
23653                  autoAlpha: 1
23654                }, 0).fromTo($(panel).find(".slide-heading"), {
23655                  autoAlpha: 0,
23656                  y: 100
23657                }, {
23658                  autoAlpha: 1,
23659                  y: 0,
23660                  delay: 0.75
23661                }, "-=.5").fromTo($(panel).find(".scroll-button"), { autoAlpha: 0 }, { autoAlpha: 1 }).fromTo($(panel).find("img"), {
23662                  scale: 1.1
23663                }, {
23664                  scale: 1,
23665                  duration: 2
23666                }, 0.25);
23667              }
23668            });
23669          });
23670          ScrollTrigger2.create({
23671            trigger: "#content",
23672            start: "top top",
23673            end: "bottom bottom",
23674            pin: "#mission-slide-circle",
23675            pinSpacing: false,
23676            onLeave: () => {
23677              $(".slide-inner").removeClass("lg:fixed").addClass("relative");
23678            },
23679            onEnterBack: () => {
23680              $(".slide-inner").addClass("lg:fixed").removeClass("relative");
23681            }
23682          });
23683          ScrollTrigger2.create({
23684            trigger: "#content",
23685            start: 0,
23686            end: "bottom bottom",
23687            snap: 1 / (panels.length - 1)
23688          });
23689        },
23690        "(max-width: 1024px)": function() {
23691          panels.forEach((panel, i) => {
23692            ScrollTrigger2.create({
23693              trigger: panel,
23694              start: "top center",
23695              end: "+=100%",
23696              onEnter: () => {
23697                $("#mission-slide-nav .active").removeClass("active");
23698                $("#mission-slide-nav a:nth-child(" + (i + 1) + ")").addClass("active");
23699                gsapWithCSS.timeline().set($(panel), {
23700                  autoAlpha: 1
23701                }).to($(panel).find(".slide-inner"), {
23702                  autoAlpha: 1
23703                }).to($(panel).find(".slide-sub"), {
23704                  autoAlpha: 1
23705                }, "-=.5").to($(panel).find(".slide-heading"), {
23706                  autoAlpha: 1,
23707                  y: 0
23708                }, "-=.5").to($(panel).find(".scroll-button"), { autoAlpha: 1 }).to($(panel).find("img"), {
23709                  scale: 1,
23710                  duration: 2
23711                }, 0);
23712              },
23713              onLeave: () => {
23714                gsapWithCSS.timeline().fromTo($(panel).find(".slide-heading"), {
23715                  autoAlpha: 0,
23716                  y: 100
23717                }, {
23718                  autoAlpha: 1,
23719                  y: 0,
23720                  delay: 0.75
23721                }).fromTo($(panel).find(".scroll-button"), { autoAlpha: 0 }, { autoAlpha: 1 });
23722              },
23723              onEnterBack: () => {
23724                $("#mission-slide-nav .active").removeClass("active");
23725                $("#mission-slide-nav a:nth-child(" + (i + 1) + ")").addClass("active");
23726              }
23727            });
23728          });
23729        }
23730      });
23731    };
23732    MorphSVGPlugin.convertToPath("circle");
23733    $(".mission-slide").each(function(index) {
23734      $active = "";
23735      if (index == 0)
23736        $active = "active";
23737      $("#mission-slide-nav").append('<a href="#slide-' + (index + 1) + '" class="' + $active + ' w-3 h-3 rounded-full border border-white hover:bg-white"></a>');
23738    });
23739    ScrollTrigger2.create({
23740      trigger: "#content",
23741      start: "top top",
23742      end: "bottom bottom",
23743      pin: "#mission-slide-nav",
23744      pinSpacing: false
23745    });
23746    gsapWithCSS.timeline({
23747      onComplete: () => {
23748        start2();
23749      }
23750    }).fromTo($(".mission-page > div, .mission-page-float"), {
23751      autoAlpha: 0
23752    }, {
23753      autoAlpha: 1,
23754      delay: 0.25
23755    }).fromTo($(".mission-page h1"), {
23756      autoAlpha: 0,
23757      x: -100
23758    }, {
23759      autoAlpha: 1,
23760      x: 0
23761    }).from("#circle1", {
23762      ease: "none",
23763      drawSVG: 0,
23764      duration: 1
23765    }, "-=.25");
23766    gsapWithCSS.from("#circle2", {
23767      scrollTrigger: {
23768        trigger: "#content",
23769        start: "top top",
23770        end: "bottom bottom",
23771        scrub: true
23772      },
23773      ease: "none",
23774      drawSVG: 0
23775    });
23776  }
23777  $("#mob-lang-switch").on("change", function() {
23778    var url = $(this).val();
23779    if (url) {
23780      window.location = url;
23781    }
23782    return false;
23783  });
23784})();
23785/*!
23786 * CSSPlugin 3.10.4
23787 * https://greensock.com
23788 *
23789 * Copyright 2008-2022, GreenSock. All rights reserved.
23790 * Subject to the terms at https://greensock.com/standard-license or for
23791 * Club GreenSock members, the agreement issued with that membership.
23792 * @author: Jack Doyle, [email protected]
23793*/
23794/*!
23795 * DrawSVGPlugin 3.10.4
23796 * https://greensock.com
23797 *
23798 * @license Copyright 2008-2022, GreenSock. All rights reserved.
23799 * Subject to the terms at https://greensock.com/standard-license or for
23800 * Club GreenSock members, the agreement issued with that membership.
23801 * @author: Jack Doyle, [email protected]
23802*/
23803/*!
23804 * GSAP 3.10.4
23805 * https://greensock.com
23806 *
23807 * @license Copyright 2008-2022, GreenSock. All rights reserved.
23808 * Subject to the terms at https://greensock.com/standard-license or for
23809 * Club GreenSock members, the agreement issued with that membership.
23810 * @author: Jack Doyle, [email protected]
23811*/
23812/*!
23813 * Glide.js v3.5.2
23814 * (c) 2013-2021 Jędrzej Chałubek (https://github.com/jedrzejchalubek/)
23815 * Released under the MIT License.
23816 */
23817/*!
23818 * MorphSVGPlugin 3.10.4
23819 * https://greensock.com
23820 *
23821 * @license Copyright 2008-2022, GreenSock. All rights reserved.
23822 * Subject to the terms at https://greensock.com/standard-license or for
23823 * Club GreenSock members, the agreement issued with that membership.
23824 * @author: Jack Doyle, [email protected]
23825*/
23826/*!
23827 * Observer 3.10.4
23828 * https://greensock.com
23829 *
23830 * @license Copyright 2008-2022, GreenSock. All rights reserved.
23831 * Subject to the terms at https://greensock.com/standard-license or for
23832 * Club GreenSock members, the agreement issued with that membership.
23833 * @author: Jack Doyle, [email protected]
23834*/
23835/*!
23836 * ScrollToPlugin 3.10.4
23837 * https://greensock.com
23838 *
23839 * @license Copyright 2008-2022, GreenSock. All rights reserved.
23840 * Subject to the terms at https://greensock.com/standard-license or for
23841 * Club GreenSock members, the agreement issued with that membership.
23842 * @author: Jack Doyle, [email protected]
23843*/
23844/*!
23845 * ScrollTrigger 3.10.4
23846 * https://greensock.com
23847 *
23848 * @license Copyright 2008-2022, GreenSock. All rights reserved.
23849 * Subject to the terms at https://greensock.com/standard-license or for
23850 * Club GreenSock members, the agreement issued with that membership.
23851 * @author: Jack Doyle, [email protected]
23852*/
23853/*!
23854 * SplitText: 3.10.4
23855 * https://greensock.com
23856 *
23857 * @license Copyright 2008-2022, GreenSock. All rights reserved.
23858 * Subject to the terms at https://greensock.com/standard-license or for
23859 * Club GreenSock members, the agreement issued with that membership.
23860 * @author: Jack Doyle, [email protected]
23861*/
23862/*!
23863 * headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it
23864 * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js
23865 * License: MIT
23866 */
23867/*!
23868 * jQuery JavaScript Library v3.6.0
23869 * https://jquery.com/
23870 *
23871 * Includes Sizzle.js
23872 * https://sizzlejs.com/
23873 *
23874 * Copyright OpenJS Foundation and other contributors
23875 * Released under the MIT license
23876 * https://jquery.org/license
23877 *
23878 * Date: 2021-03-02T17:08Z
23879 */
23880/*!
23881 * paths 3.10.4
23882 * https://greensock.com
23883 *
23884 * Copyright 2008-2022, GreenSock. All rights reserved.
23885 * Subject to the terms at https://greensock.com/standard-license or for
23886 * Club GreenSock members, the agreement issued with that membership.
23887 * @author: Jack Doyle, [email protected]
23888*/
23889/*!
23890 * strings: 3.10.4
23891 * https://greensock.com
23892 *
23893 * Copyright 2008-2022, GreenSock. All rights reserved.
23894 * Subject to the terms at https://greensock.com/standard-license or for
23895 * Club GreenSock members, the agreement issued with that membership.
23896 * @author: Jack Doyle, [email protected]
23897*/
23898/**
23899 * @license
23900 * Lodash <https://lodash.com/>
23901 * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
23902 * Released under MIT license <https://lodash.com/license>
23903 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
23904 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
23905 */

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.