{"version":3,"file":"wwwroot/js/home.min.js","mappings":"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","sources":["webpack:///./node_modules/@splidejs/splide/dist/js/splide.esm.js","webpack:///./node_modules/cookieconsent/build/cookieconsent.min.js","webpack:///./node_modules/countup.js/dist/countUp.min.js","webpack:///./node_modules/gsap/CSSPlugin.js","webpack:///./node_modules/gsap/MotionPathPlugin.js","webpack:///./node_modules/gsap/Observer.js","webpack:///./node_modules/gsap/ScrollToPlugin.js","webpack:///./node_modules/gsap/ScrollTrigger.js","webpack:///./node_modules/gsap/gsap-core.js","webpack:///./node_modules/gsap/index.js","webpack:///./node_modules/gsap/utils/matrix.js","webpack:///./node_modules/gsap/utils/paths.js","webpack:///./node_modules/hammerjs/hammer.js","webpack:///./scripts/greensock/DrawSVGPlugin.js","webpack:///./scripts/greensock/SplitText.js","webpack:///./scripts/greensock/utils/strings.js","webpack:///./scripts/home/accordion.js","webpack:///./scripts/home/circle-scene.js","webpack:///./scripts/home/eight-scene.js","webpack:///./scripts/home/five-scene.js","webpack:///./scripts/home/four-scene.js","webpack:///./scripts/home/header.js","webpack:///./scripts/home/hero-scene.js","webpack:///./scripts/home/hero-second-scene.js","webpack:///./scripts/home/hero-third-scene.js","webpack:///./scripts/home/isMobile.js","webpack:///./scripts/home/mobile-menu.js","webpack:///./scripts/home/nine-scene.js","webpack:///./scripts/home/popup.js","webpack:///./scripts/home/sceneNavigator.js","webpack:///./scripts/home/seven-scene.js","webpack:///./scripts/home/six-scene.js","webpack:///./scripts/home/slider.js","webpack:///./scripts/home/snapper.js","webpack:///./scripts/home/third-scene.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///./scripts/home/index.js","webpack:///./scss/home.scss"],"sourcesContent":["function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*!\n * Splide.js\n * Version : 4.1.4\n * License : MIT\n * Copyright: 2022 Naotoshi Fujita\n */\nvar MEDIA_PREFERS_REDUCED_MOTION = \"(prefers-reduced-motion: reduce)\";\nvar CREATED = 1;\nvar MOUNTED = 2;\nvar IDLE = 3;\nvar MOVING = 4;\nvar SCROLLING = 5;\nvar DRAGGING = 6;\nvar DESTROYED = 7;\nvar STATES = {\n CREATED: CREATED,\n MOUNTED: MOUNTED,\n IDLE: IDLE,\n MOVING: MOVING,\n SCROLLING: SCROLLING,\n DRAGGING: DRAGGING,\n DESTROYED: DESTROYED\n};\n\nfunction empty(array) {\n array.length = 0;\n}\n\nfunction slice(arrayLike, start, end) {\n return Array.prototype.slice.call(arrayLike, start, end);\n}\n\nfunction apply(func) {\n return func.bind.apply(func, [null].concat(slice(arguments, 1)));\n}\n\nvar nextTick = setTimeout;\n\nvar noop = function noop() {};\n\nfunction raf(func) {\n return requestAnimationFrame(func);\n}\n\nfunction typeOf(type, subject) {\n return typeof subject === type;\n}\n\nfunction isObject(subject) {\n return !isNull(subject) && typeOf(\"object\", subject);\n}\n\nvar isArray = Array.isArray;\nvar isFunction = apply(typeOf, \"function\");\nvar isString = apply(typeOf, \"string\");\nvar isUndefined = apply(typeOf, \"undefined\");\n\nfunction isNull(subject) {\n return subject === null;\n}\n\nfunction isHTMLElement(subject) {\n try {\n return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement;\n } catch (e) {\n return false;\n }\n}\n\nfunction toArray(value) {\n return isArray(value) ? value : [value];\n}\n\nfunction forEach(values, iteratee) {\n toArray(values).forEach(iteratee);\n}\n\nfunction includes(array, value) {\n return array.indexOf(value) > -1;\n}\n\nfunction push(array, items) {\n array.push.apply(array, toArray(items));\n return array;\n}\n\nfunction toggleClass(elm, classes, add) {\n if (elm) {\n forEach(classes, function (name) {\n if (name) {\n elm.classList[add ? \"add\" : \"remove\"](name);\n }\n });\n }\n}\n\nfunction addClass(elm, classes) {\n toggleClass(elm, isString(classes) ? classes.split(\" \") : classes, true);\n}\n\nfunction append(parent, children) {\n forEach(children, parent.appendChild.bind(parent));\n}\n\nfunction before(nodes, ref) {\n forEach(nodes, function (node) {\n var parent = (ref || node).parentNode;\n\n if (parent) {\n parent.insertBefore(node, ref);\n }\n });\n}\n\nfunction matches(elm, selector) {\n return isHTMLElement(elm) && (elm[\"msMatchesSelector\"] || elm.matches).call(elm, selector);\n}\n\nfunction children(parent, selector) {\n var children2 = parent ? slice(parent.children) : [];\n return selector ? children2.filter(function (child) {\n return matches(child, selector);\n }) : children2;\n}\n\nfunction child(parent, selector) {\n return selector ? children(parent, selector)[0] : parent.firstElementChild;\n}\n\nvar ownKeys = Object.keys;\n\nfunction forOwn(object, iteratee, right) {\n if (object) {\n (right ? ownKeys(object).reverse() : ownKeys(object)).forEach(function (key) {\n key !== \"__proto__\" && iteratee(object[key], key);\n });\n }\n\n return object;\n}\n\nfunction assign(object) {\n slice(arguments, 1).forEach(function (source) {\n forOwn(source, function (value, key) {\n object[key] = source[key];\n });\n });\n return object;\n}\n\nfunction merge(object) {\n slice(arguments, 1).forEach(function (source) {\n forOwn(source, function (value, key) {\n if (isArray(value)) {\n object[key] = value.slice();\n } else if (isObject(value)) {\n object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);\n } else {\n object[key] = value;\n }\n });\n });\n return object;\n}\n\nfunction omit(object, keys) {\n forEach(keys || ownKeys(object), function (key) {\n delete object[key];\n });\n}\n\nfunction removeAttribute(elms, attrs) {\n forEach(elms, function (elm) {\n forEach(attrs, function (attr) {\n elm && elm.removeAttribute(attr);\n });\n });\n}\n\nfunction setAttribute(elms, attrs, value) {\n if (isObject(attrs)) {\n forOwn(attrs, function (value2, name) {\n setAttribute(elms, name, value2);\n });\n } else {\n forEach(elms, function (elm) {\n isNull(value) || value === \"\" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));\n });\n }\n}\n\nfunction create(tag, attrs, parent) {\n var elm = document.createElement(tag);\n\n if (attrs) {\n isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs);\n }\n\n parent && append(parent, elm);\n return elm;\n}\n\nfunction style(elm, prop, value) {\n if (isUndefined(value)) {\n return getComputedStyle(elm)[prop];\n }\n\n if (!isNull(value)) {\n elm.style[prop] = \"\" + value;\n }\n}\n\nfunction display(elm, display2) {\n style(elm, \"display\", display2);\n}\n\nfunction focus(elm) {\n elm[\"setActive\"] && elm[\"setActive\"]() || elm.focus({\n preventScroll: true\n });\n}\n\nfunction getAttribute(elm, attr) {\n return elm.getAttribute(attr);\n}\n\nfunction hasClass(elm, className) {\n return elm && elm.classList.contains(className);\n}\n\nfunction rect(target) {\n return target.getBoundingClientRect();\n}\n\nfunction remove(nodes) {\n forEach(nodes, function (node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n });\n}\n\nfunction parseHtml(html) {\n return child(new DOMParser().parseFromString(html, \"text/html\").body);\n}\n\nfunction prevent(e, stopPropagation) {\n e.preventDefault();\n\n if (stopPropagation) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n}\n\nfunction query(parent, selector) {\n return parent && parent.querySelector(selector);\n}\n\nfunction queryAll(parent, selector) {\n return selector ? slice(parent.querySelectorAll(selector)) : [];\n}\n\nfunction removeClass(elm, classes) {\n toggleClass(elm, classes, false);\n}\n\nfunction timeOf(e) {\n return e.timeStamp;\n}\n\nfunction unit(value) {\n return isString(value) ? value : value ? value + \"px\" : \"\";\n}\n\nvar PROJECT_CODE = \"splide\";\nvar DATA_ATTRIBUTE = \"data-\" + PROJECT_CODE;\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(\"[\" + PROJECT_CODE + \"] \" + (message || \"\"));\n }\n}\n\nvar min = Math.min,\n max = Math.max,\n floor = Math.floor,\n ceil = Math.ceil,\n abs = Math.abs;\n\nfunction approximatelyEqual(x, y, epsilon) {\n return abs(x - y) < epsilon;\n}\n\nfunction between(number, x, y, exclusive) {\n var minimum = min(x, y);\n var maximum = max(x, y);\n return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum;\n}\n\nfunction clamp(number, x, y) {\n var minimum = min(x, y);\n var maximum = max(x, y);\n return min(max(minimum, number), maximum);\n}\n\nfunction sign(x) {\n return +(x > 0) - +(x < 0);\n}\n\nfunction camelToKebab(string) {\n return string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\nfunction format(string, replacements) {\n forEach(replacements, function (replacement) {\n string = string.replace(\"%s\", \"\" + replacement);\n });\n return string;\n}\n\nfunction pad(number) {\n return number < 10 ? \"0\" + number : \"\" + number;\n}\n\nvar ids = {};\n\nfunction uniqueId(prefix) {\n return \"\" + prefix + pad(ids[prefix] = (ids[prefix] || 0) + 1);\n}\n\nfunction EventBinder() {\n var listeners = [];\n\n function bind(targets, events, callback, options) {\n forEachEvent(targets, events, function (target, event, namespace) {\n var isEventTarget = (\"addEventListener\" in target);\n var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target[\"removeListener\"].bind(target, callback);\n isEventTarget ? target.addEventListener(event, callback, options) : target[\"addListener\"](callback);\n listeners.push([target, event, namespace, callback, remover]);\n });\n }\n\n function unbind(targets, events, callback) {\n forEachEvent(targets, events, function (target, event, namespace) {\n listeners = listeners.filter(function (listener) {\n if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) {\n listener[4]();\n return false;\n }\n\n return true;\n });\n });\n }\n\n function dispatch(target, type, detail) {\n var e;\n var bubbles = true;\n\n if (typeof CustomEvent === \"function\") {\n e = new CustomEvent(type, {\n bubbles: bubbles,\n detail: detail\n });\n } else {\n e = document.createEvent(\"CustomEvent\");\n e.initCustomEvent(type, bubbles, false, detail);\n }\n\n target.dispatchEvent(e);\n return e;\n }\n\n function forEachEvent(targets, events, iteratee) {\n forEach(targets, function (target) {\n target && forEach(events, function (events2) {\n events2.split(\" \").forEach(function (eventNS) {\n var fragment = eventNS.split(\".\");\n iteratee(target, fragment[0], fragment[1]);\n });\n });\n });\n }\n\n function destroy() {\n listeners.forEach(function (data) {\n data[4]();\n });\n empty(listeners);\n }\n\n return {\n bind: bind,\n unbind: unbind,\n dispatch: dispatch,\n destroy: destroy\n };\n}\n\nvar EVENT_MOUNTED = \"mounted\";\nvar EVENT_READY = \"ready\";\nvar EVENT_MOVE = \"move\";\nvar EVENT_MOVED = \"moved\";\nvar EVENT_CLICK = \"click\";\nvar EVENT_ACTIVE = \"active\";\nvar EVENT_INACTIVE = \"inactive\";\nvar EVENT_VISIBLE = \"visible\";\nvar EVENT_HIDDEN = \"hidden\";\nvar EVENT_REFRESH = \"refresh\";\nvar EVENT_UPDATED = \"updated\";\nvar EVENT_RESIZE = \"resize\";\nvar EVENT_RESIZED = \"resized\";\nvar EVENT_DRAG = \"drag\";\nvar EVENT_DRAGGING = \"dragging\";\nvar EVENT_DRAGGED = \"dragged\";\nvar EVENT_SCROLL = \"scroll\";\nvar EVENT_SCROLLED = \"scrolled\";\nvar EVENT_OVERFLOW = \"overflow\";\nvar EVENT_DESTROY = \"destroy\";\nvar EVENT_ARROWS_MOUNTED = \"arrows:mounted\";\nvar EVENT_ARROWS_UPDATED = \"arrows:updated\";\nvar EVENT_PAGINATION_MOUNTED = \"pagination:mounted\";\nvar EVENT_PAGINATION_UPDATED = \"pagination:updated\";\nvar EVENT_NAVIGATION_MOUNTED = \"navigation:mounted\";\nvar EVENT_AUTOPLAY_PLAY = \"autoplay:play\";\nvar EVENT_AUTOPLAY_PLAYING = \"autoplay:playing\";\nvar EVENT_AUTOPLAY_PAUSE = \"autoplay:pause\";\nvar EVENT_LAZYLOAD_LOADED = \"lazyload:loaded\";\nvar EVENT_SLIDE_KEYDOWN = \"sk\";\nvar EVENT_SHIFTED = \"sh\";\nvar EVENT_END_INDEX_CHANGED = \"ei\";\n\nfunction EventInterface(Splide2) {\n var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();\n var binder = EventBinder();\n\n function on(events, callback) {\n binder.bind(bus, toArray(events).join(\" \"), function (e) {\n callback.apply(callback, isArray(e.detail) ? e.detail : []);\n });\n }\n\n function emit(event) {\n binder.dispatch(bus, event, slice(arguments, 1));\n }\n\n if (Splide2) {\n Splide2.event.on(EVENT_DESTROY, binder.destroy);\n }\n\n return assign(binder, {\n bus: bus,\n on: on,\n off: apply(binder.unbind, bus),\n emit: emit\n });\n}\n\nfunction RequestInterval(interval, onInterval, onUpdate, limit) {\n var now = Date.now;\n var startTime;\n var rate = 0;\n var id;\n var paused = true;\n var count = 0;\n\n function update() {\n if (!paused) {\n rate = interval ? min((now() - startTime) / interval, 1) : 1;\n onUpdate && onUpdate(rate);\n\n if (rate >= 1) {\n onInterval();\n startTime = now();\n\n if (limit && ++count >= limit) {\n return pause();\n }\n }\n\n id = raf(update);\n }\n }\n\n function start(resume) {\n resume || cancel();\n startTime = now() - (resume ? rate * interval : 0);\n paused = false;\n id = raf(update);\n }\n\n function pause() {\n paused = true;\n }\n\n function rewind() {\n startTime = now();\n rate = 0;\n\n if (onUpdate) {\n onUpdate(rate);\n }\n }\n\n function cancel() {\n id && cancelAnimationFrame(id);\n rate = 0;\n id = 0;\n paused = true;\n }\n\n function set(time) {\n interval = time;\n }\n\n function isPaused() {\n return paused;\n }\n\n return {\n start: start,\n rewind: rewind,\n pause: pause,\n cancel: cancel,\n set: set,\n isPaused: isPaused\n };\n}\n\nfunction State(initialState) {\n var state = initialState;\n\n function set(value) {\n state = value;\n }\n\n function is(states) {\n return includes(toArray(states), state);\n }\n\n return {\n set: set,\n is: is\n };\n}\n\nfunction Throttle(func, duration) {\n var interval = RequestInterval(duration || 0, func, null, 1);\n return function () {\n interval.isPaused() && interval.start();\n };\n}\n\nfunction Media(Splide2, Components2, options) {\n var state = Splide2.state;\n var breakpoints = options.breakpoints || {};\n var reducedMotion = options.reducedMotion || {};\n var binder = EventBinder();\n var queries = [];\n\n function setup() {\n var isMin = options.mediaQuery === \"min\";\n ownKeys(breakpoints).sort(function (n, m) {\n return isMin ? +n - +m : +m - +n;\n }).forEach(function (key) {\n register(breakpoints[key], \"(\" + (isMin ? \"min\" : \"max\") + \"-width:\" + key + \"px)\");\n });\n register(reducedMotion, MEDIA_PREFERS_REDUCED_MOTION);\n update();\n }\n\n function destroy(completely) {\n if (completely) {\n binder.destroy();\n }\n }\n\n function register(options2, query) {\n var queryList = matchMedia(query);\n binder.bind(queryList, \"change\", update);\n queries.push([options2, queryList]);\n }\n\n function update() {\n var destroyed = state.is(DESTROYED);\n var direction = options.direction;\n var merged = queries.reduce(function (merged2, entry) {\n return merge(merged2, entry[1].matches ? entry[0] : {});\n }, {});\n omit(options);\n set(merged);\n\n if (options.destroy) {\n Splide2.destroy(options.destroy === \"completely\");\n } else if (destroyed) {\n destroy(true);\n Splide2.mount();\n } else {\n direction !== options.direction && Splide2.refresh();\n }\n }\n\n function reduce(enable) {\n if (matchMedia(MEDIA_PREFERS_REDUCED_MOTION).matches) {\n enable ? merge(options, reducedMotion) : omit(options, ownKeys(reducedMotion));\n }\n }\n\n function set(opts, base, notify) {\n merge(options, opts);\n base && merge(Object.getPrototypeOf(options), opts);\n\n if (notify || !state.is(CREATED)) {\n Splide2.emit(EVENT_UPDATED, options);\n }\n }\n\n return {\n setup: setup,\n destroy: destroy,\n reduce: reduce,\n set: set\n };\n}\n\nvar ARROW = \"Arrow\";\nvar ARROW_LEFT = ARROW + \"Left\";\nvar ARROW_RIGHT = ARROW + \"Right\";\nvar ARROW_UP = ARROW + \"Up\";\nvar ARROW_DOWN = ARROW + \"Down\";\nvar LTR = \"ltr\";\nvar RTL = \"rtl\";\nvar TTB = \"ttb\";\nvar ORIENTATION_MAP = {\n width: [\"height\"],\n left: [\"top\", \"right\"],\n right: [\"bottom\", \"left\"],\n x: [\"y\"],\n X: [\"Y\"],\n Y: [\"X\"],\n ArrowLeft: [ARROW_UP, ARROW_RIGHT],\n ArrowRight: [ARROW_DOWN, ARROW_LEFT]\n};\n\nfunction Direction(Splide2, Components2, options) {\n function resolve(prop, axisOnly, direction) {\n direction = direction || options.direction;\n var index = direction === RTL && !axisOnly ? 1 : direction === TTB ? 0 : -1;\n return ORIENTATION_MAP[prop] && ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function (match, offset) {\n var replacement = ORIENTATION_MAP[match.toLowerCase()][index] || match;\n return offset > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement;\n });\n }\n\n function orient(value) {\n return value * (options.direction === RTL ? 1 : -1);\n }\n\n return {\n resolve: resolve,\n orient: orient\n };\n}\n\nvar ROLE = \"role\";\nvar TAB_INDEX = \"tabindex\";\nvar DISABLED = \"disabled\";\nvar ARIA_PREFIX = \"aria-\";\nvar ARIA_CONTROLS = ARIA_PREFIX + \"controls\";\nvar ARIA_CURRENT = ARIA_PREFIX + \"current\";\nvar ARIA_SELECTED = ARIA_PREFIX + \"selected\";\nvar ARIA_LABEL = ARIA_PREFIX + \"label\";\nvar ARIA_LABELLEDBY = ARIA_PREFIX + \"labelledby\";\nvar ARIA_HIDDEN = ARIA_PREFIX + \"hidden\";\nvar ARIA_ORIENTATION = ARIA_PREFIX + \"orientation\";\nvar ARIA_ROLEDESCRIPTION = ARIA_PREFIX + \"roledescription\";\nvar ARIA_LIVE = ARIA_PREFIX + \"live\";\nvar ARIA_BUSY = ARIA_PREFIX + \"busy\";\nvar ARIA_ATOMIC = ARIA_PREFIX + \"atomic\";\nvar ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION];\nvar CLASS_PREFIX = PROJECT_CODE + \"__\";\nvar STATUS_CLASS_PREFIX = \"is-\";\nvar CLASS_ROOT = PROJECT_CODE;\nvar CLASS_TRACK = CLASS_PREFIX + \"track\";\nvar CLASS_LIST = CLASS_PREFIX + \"list\";\nvar CLASS_SLIDE = CLASS_PREFIX + \"slide\";\nvar CLASS_CLONE = CLASS_SLIDE + \"--clone\";\nvar CLASS_CONTAINER = CLASS_SLIDE + \"__container\";\nvar CLASS_ARROWS = CLASS_PREFIX + \"arrows\";\nvar CLASS_ARROW = CLASS_PREFIX + \"arrow\";\nvar CLASS_ARROW_PREV = CLASS_ARROW + \"--prev\";\nvar CLASS_ARROW_NEXT = CLASS_ARROW + \"--next\";\nvar CLASS_PAGINATION = CLASS_PREFIX + \"pagination\";\nvar CLASS_PAGINATION_PAGE = CLASS_PAGINATION + \"__page\";\nvar CLASS_PROGRESS = CLASS_PREFIX + \"progress\";\nvar CLASS_PROGRESS_BAR = CLASS_PROGRESS + \"__bar\";\nvar CLASS_TOGGLE = CLASS_PREFIX + \"toggle\";\nvar CLASS_TOGGLE_PLAY = CLASS_TOGGLE + \"__play\";\nvar CLASS_TOGGLE_PAUSE = CLASS_TOGGLE + \"__pause\";\nvar CLASS_SPINNER = CLASS_PREFIX + \"spinner\";\nvar CLASS_SR = CLASS_PREFIX + \"sr\";\nvar CLASS_INITIALIZED = STATUS_CLASS_PREFIX + \"initialized\";\nvar CLASS_ACTIVE = STATUS_CLASS_PREFIX + \"active\";\nvar CLASS_PREV = STATUS_CLASS_PREFIX + \"prev\";\nvar CLASS_NEXT = STATUS_CLASS_PREFIX + \"next\";\nvar CLASS_VISIBLE = STATUS_CLASS_PREFIX + \"visible\";\nvar CLASS_LOADING = STATUS_CLASS_PREFIX + \"loading\";\nvar CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + \"focus-in\";\nvar CLASS_OVERFLOW = STATUS_CLASS_PREFIX + \"overflow\";\nvar STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW];\nvar CLASSES = {\n slide: CLASS_SLIDE,\n clone: CLASS_CLONE,\n arrows: CLASS_ARROWS,\n arrow: CLASS_ARROW,\n prev: CLASS_ARROW_PREV,\n next: CLASS_ARROW_NEXT,\n pagination: CLASS_PAGINATION,\n page: CLASS_PAGINATION_PAGE,\n spinner: CLASS_SPINNER\n};\n\nfunction closest(from, selector) {\n if (isFunction(from.closest)) {\n return from.closest(selector);\n }\n\n var elm = from;\n\n while (elm && elm.nodeType === 1) {\n if (matches(elm, selector)) {\n break;\n }\n\n elm = elm.parentElement;\n }\n\n return elm;\n}\n\nvar FRICTION = 5;\nvar LOG_INTERVAL = 200;\nvar POINTER_DOWN_EVENTS = \"touchstart mousedown\";\nvar POINTER_MOVE_EVENTS = \"touchmove mousemove\";\nvar POINTER_UP_EVENTS = \"touchend touchcancel mouseup click\";\n\nfunction Elements(Splide2, Components2, options) {\n var _EventInterface = EventInterface(Splide2),\n on = _EventInterface.on,\n bind = _EventInterface.bind;\n\n var root = Splide2.root;\n var i18n = options.i18n;\n var elements = {};\n var slides = [];\n var rootClasses = [];\n var trackClasses = [];\n var track;\n var list;\n var isUsingKey;\n\n function setup() {\n collect();\n init();\n update();\n }\n\n function mount() {\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, setup);\n on(EVENT_UPDATED, update);\n bind(document, POINTER_DOWN_EVENTS + \" keydown\", function (e) {\n isUsingKey = e.type === \"keydown\";\n }, {\n capture: true\n });\n bind(root, \"focusin\", function () {\n toggleClass(root, CLASS_FOCUS_IN, !!isUsingKey);\n });\n }\n\n function destroy(completely) {\n var attrs = ALL_ATTRIBUTES.concat(\"style\");\n empty(slides);\n removeClass(root, rootClasses);\n removeClass(track, trackClasses);\n removeAttribute([track, list], attrs);\n removeAttribute(root, completely ? attrs : [\"style\", ARIA_ROLEDESCRIPTION]);\n }\n\n function update() {\n removeClass(root, rootClasses);\n removeClass(track, trackClasses);\n rootClasses = getClasses(CLASS_ROOT);\n trackClasses = getClasses(CLASS_TRACK);\n addClass(root, rootClasses);\n addClass(track, trackClasses);\n setAttribute(root, ARIA_LABEL, options.label);\n setAttribute(root, ARIA_LABELLEDBY, options.labelledby);\n }\n\n function collect() {\n track = find(\".\" + CLASS_TRACK);\n list = child(track, \".\" + CLASS_LIST);\n assert(track && list, \"A track/list element is missing.\");\n push(slides, children(list, \".\" + CLASS_SLIDE + \":not(.\" + CLASS_CLONE + \")\"));\n forOwn({\n arrows: CLASS_ARROWS,\n pagination: CLASS_PAGINATION,\n prev: CLASS_ARROW_PREV,\n next: CLASS_ARROW_NEXT,\n bar: CLASS_PROGRESS_BAR,\n toggle: CLASS_TOGGLE\n }, function (className, key) {\n elements[key] = find(\".\" + className);\n });\n assign(elements, {\n root: root,\n track: track,\n list: list,\n slides: slides\n });\n }\n\n function init() {\n var id = root.id || uniqueId(PROJECT_CODE);\n var role = options.role;\n root.id = id;\n track.id = track.id || id + \"-track\";\n list.id = list.id || id + \"-list\";\n\n if (!getAttribute(root, ROLE) && root.tagName !== \"SECTION\" && role) {\n setAttribute(root, ROLE, role);\n }\n\n setAttribute(root, ARIA_ROLEDESCRIPTION, i18n.carousel);\n setAttribute(list, ROLE, \"presentation\");\n }\n\n function find(selector) {\n var elm = query(root, selector);\n return elm && closest(elm, \".\" + CLASS_ROOT) === root ? elm : void 0;\n }\n\n function getClasses(base) {\n return [base + \"--\" + options.type, base + \"--\" + options.direction, options.drag && base + \"--draggable\", options.isNavigation && base + \"--nav\", base === CLASS_ROOT && CLASS_ACTIVE];\n }\n\n return assign(elements, {\n setup: setup,\n mount: mount,\n destroy: destroy\n });\n}\n\nvar SLIDE = \"slide\";\nvar LOOP = \"loop\";\nvar FADE = \"fade\";\n\nfunction Slide$1(Splide2, index, slideIndex, slide) {\n var event = EventInterface(Splide2);\n var on = event.on,\n emit = event.emit,\n bind = event.bind;\n var Components = Splide2.Components,\n root = Splide2.root,\n options = Splide2.options;\n var isNavigation = options.isNavigation,\n updateOnMove = options.updateOnMove,\n i18n = options.i18n,\n pagination = options.pagination,\n slideFocus = options.slideFocus;\n var resolve = Components.Direction.resolve;\n var styles = getAttribute(slide, \"style\");\n var label = getAttribute(slide, ARIA_LABEL);\n var isClone = slideIndex > -1;\n var container = child(slide, \".\" + CLASS_CONTAINER);\n var destroyed;\n\n function mount() {\n if (!isClone) {\n slide.id = root.id + \"-slide\" + pad(index + 1);\n setAttribute(slide, ROLE, pagination ? \"tabpanel\" : \"group\");\n setAttribute(slide, ARIA_ROLEDESCRIPTION, i18n.slide);\n setAttribute(slide, ARIA_LABEL, label || format(i18n.slideLabel, [index + 1, Splide2.length]));\n }\n\n listen();\n }\n\n function listen() {\n bind(slide, \"click\", apply(emit, EVENT_CLICK, self));\n bind(slide, \"keydown\", apply(emit, EVENT_SLIDE_KEYDOWN, self));\n on([EVENT_MOVED, EVENT_SHIFTED, EVENT_SCROLLED], update);\n on(EVENT_NAVIGATION_MOUNTED, initNavigation);\n\n if (updateOnMove) {\n on(EVENT_MOVE, onMove);\n }\n }\n\n function destroy() {\n destroyed = true;\n event.destroy();\n removeClass(slide, STATUS_CLASSES);\n removeAttribute(slide, ALL_ATTRIBUTES);\n setAttribute(slide, \"style\", styles);\n setAttribute(slide, ARIA_LABEL, label || \"\");\n }\n\n function initNavigation() {\n var controls = Splide2.splides.map(function (target) {\n var Slide2 = target.splide.Components.Slides.getAt(index);\n return Slide2 ? Slide2.slide.id : \"\";\n }).join(\" \");\n setAttribute(slide, ARIA_LABEL, format(i18n.slideX, (isClone ? slideIndex : index) + 1));\n setAttribute(slide, ARIA_CONTROLS, controls);\n setAttribute(slide, ROLE, slideFocus ? \"button\" : \"\");\n slideFocus && removeAttribute(slide, ARIA_ROLEDESCRIPTION);\n }\n\n function onMove() {\n if (!destroyed) {\n update();\n }\n }\n\n function update() {\n if (!destroyed) {\n var curr = Splide2.index;\n updateActivity();\n updateVisibility();\n toggleClass(slide, CLASS_PREV, index === curr - 1);\n toggleClass(slide, CLASS_NEXT, index === curr + 1);\n }\n }\n\n function updateActivity() {\n var active = isActive();\n\n if (active !== hasClass(slide, CLASS_ACTIVE)) {\n toggleClass(slide, CLASS_ACTIVE, active);\n setAttribute(slide, ARIA_CURRENT, isNavigation && active || \"\");\n emit(active ? EVENT_ACTIVE : EVENT_INACTIVE, self);\n }\n }\n\n function updateVisibility() {\n var visible = isVisible();\n var hidden = !visible && (!isActive() || isClone);\n\n if (!Splide2.state.is([MOVING, SCROLLING])) {\n setAttribute(slide, ARIA_HIDDEN, hidden || \"\");\n }\n\n setAttribute(queryAll(slide, options.focusableNodes || \"\"), TAB_INDEX, hidden ? -1 : \"\");\n\n if (slideFocus) {\n setAttribute(slide, TAB_INDEX, hidden ? -1 : 0);\n }\n\n if (visible !== hasClass(slide, CLASS_VISIBLE)) {\n toggleClass(slide, CLASS_VISIBLE, visible);\n emit(visible ? EVENT_VISIBLE : EVENT_HIDDEN, self);\n }\n\n if (!visible && document.activeElement === slide) {\n var Slide2 = Components.Slides.getAt(Splide2.index);\n Slide2 && focus(Slide2.slide);\n }\n }\n\n function style$1(prop, value, useContainer) {\n style(useContainer && container || slide, prop, value);\n }\n\n function isActive() {\n var curr = Splide2.index;\n return curr === index || options.cloneStatus && curr === slideIndex;\n }\n\n function isVisible() {\n if (Splide2.is(FADE)) {\n return isActive();\n }\n\n var trackRect = rect(Components.Elements.track);\n var slideRect = rect(slide);\n var left = resolve(\"left\", true);\n var right = resolve(\"right\", true);\n return floor(trackRect[left]) <= ceil(slideRect[left]) && floor(slideRect[right]) <= ceil(trackRect[right]);\n }\n\n function isWithin(from, distance) {\n var diff = abs(from - index);\n\n if (!isClone && (options.rewind || Splide2.is(LOOP))) {\n diff = min(diff, Splide2.length - diff);\n }\n\n return diff <= distance;\n }\n\n var self = {\n index: index,\n slideIndex: slideIndex,\n slide: slide,\n container: container,\n isClone: isClone,\n mount: mount,\n destroy: destroy,\n update: update,\n style: style$1,\n isWithin: isWithin\n };\n return self;\n}\n\nfunction Slides(Splide2, Components2, options) {\n var _EventInterface2 = EventInterface(Splide2),\n on = _EventInterface2.on,\n emit = _EventInterface2.emit,\n bind = _EventInterface2.bind;\n\n var _Components2$Elements = Components2.Elements,\n slides = _Components2$Elements.slides,\n list = _Components2$Elements.list;\n var Slides2 = [];\n\n function mount() {\n init();\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, init);\n }\n\n function init() {\n slides.forEach(function (slide, index) {\n register(slide, index, -1);\n });\n }\n\n function destroy() {\n forEach$1(function (Slide2) {\n Slide2.destroy();\n });\n empty(Slides2);\n }\n\n function update() {\n forEach$1(function (Slide2) {\n Slide2.update();\n });\n }\n\n function register(slide, index, slideIndex) {\n var object = Slide$1(Splide2, index, slideIndex, slide);\n object.mount();\n Slides2.push(object);\n Slides2.sort(function (Slide1, Slide2) {\n return Slide1.index - Slide2.index;\n });\n }\n\n function get(excludeClones) {\n return excludeClones ? filter(function (Slide2) {\n return !Slide2.isClone;\n }) : Slides2;\n }\n\n function getIn(page) {\n var Controller = Components2.Controller;\n var index = Controller.toIndex(page);\n var max = Controller.hasFocus() ? 1 : options.perPage;\n return filter(function (Slide2) {\n return between(Slide2.index, index, index + max - 1);\n });\n }\n\n function getAt(index) {\n return filter(index)[0];\n }\n\n function add(items, index) {\n forEach(items, function (slide) {\n if (isString(slide)) {\n slide = parseHtml(slide);\n }\n\n if (isHTMLElement(slide)) {\n var ref = slides[index];\n ref ? before(slide, ref) : append(list, slide);\n addClass(slide, options.classes.slide);\n observeImages(slide, apply(emit, EVENT_RESIZE));\n }\n });\n emit(EVENT_REFRESH);\n }\n\n function remove$1(matcher) {\n remove(filter(matcher).map(function (Slide2) {\n return Slide2.slide;\n }));\n emit(EVENT_REFRESH);\n }\n\n function forEach$1(iteratee, excludeClones) {\n get(excludeClones).forEach(iteratee);\n }\n\n function filter(matcher) {\n return Slides2.filter(isFunction(matcher) ? matcher : function (Slide2) {\n return isString(matcher) ? matches(Slide2.slide, matcher) : includes(toArray(matcher), Slide2.index);\n });\n }\n\n function style(prop, value, useContainer) {\n forEach$1(function (Slide2) {\n Slide2.style(prop, value, useContainer);\n });\n }\n\n function observeImages(elm, callback) {\n var images = queryAll(elm, \"img\");\n var length = images.length;\n\n if (length) {\n images.forEach(function (img) {\n bind(img, \"load error\", function () {\n if (! --length) {\n callback();\n }\n });\n });\n } else {\n callback();\n }\n }\n\n function getLength(excludeClones) {\n return excludeClones ? slides.length : Slides2.length;\n }\n\n function isEnough() {\n return Slides2.length > options.perPage;\n }\n\n return {\n mount: mount,\n destroy: destroy,\n update: update,\n register: register,\n get: get,\n getIn: getIn,\n getAt: getAt,\n add: add,\n remove: remove$1,\n forEach: forEach$1,\n filter: filter,\n style: style,\n getLength: getLength,\n isEnough: isEnough\n };\n}\n\nfunction Layout(Splide2, Components2, options) {\n var _EventInterface3 = EventInterface(Splide2),\n on = _EventInterface3.on,\n bind = _EventInterface3.bind,\n emit = _EventInterface3.emit;\n\n var Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var _Components2$Elements2 = Components2.Elements,\n root = _Components2$Elements2.root,\n track = _Components2$Elements2.track,\n list = _Components2$Elements2.list;\n var getAt = Slides.getAt,\n styleSlides = Slides.style;\n var vertical;\n var rootRect;\n var overflow;\n\n function mount() {\n init();\n bind(window, \"resize load\", Throttle(apply(emit, EVENT_RESIZE)));\n on([EVENT_UPDATED, EVENT_REFRESH], init);\n on(EVENT_RESIZE, resize);\n }\n\n function init() {\n vertical = options.direction === TTB;\n style(root, \"maxWidth\", unit(options.width));\n style(track, resolve(\"paddingLeft\"), cssPadding(false));\n style(track, resolve(\"paddingRight\"), cssPadding(true));\n resize(true);\n }\n\n function resize(force) {\n var newRect = rect(root);\n\n if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {\n style(track, \"height\", cssTrackHeight());\n styleSlides(resolve(\"marginRight\"), unit(options.gap));\n styleSlides(\"width\", cssSlideWidth());\n styleSlides(\"height\", cssSlideHeight(), true);\n rootRect = newRect;\n emit(EVENT_RESIZED);\n\n if (overflow !== (overflow = isOverflow())) {\n toggleClass(root, CLASS_OVERFLOW, overflow);\n emit(EVENT_OVERFLOW, overflow);\n }\n }\n }\n\n function cssPadding(right) {\n var padding = options.padding;\n var prop = resolve(right ? \"right\" : \"left\");\n return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || \"0px\";\n }\n\n function cssTrackHeight() {\n var height = \"\";\n\n if (vertical) {\n height = cssHeight();\n assert(height, \"height or heightRatio is missing.\");\n height = \"calc(\" + height + \" - \" + cssPadding(false) + \" - \" + cssPadding(true) + \")\";\n }\n\n return height;\n }\n\n function cssHeight() {\n return unit(options.height || rect(list).width * options.heightRatio);\n }\n\n function cssSlideWidth() {\n return options.autoWidth ? null : unit(options.fixedWidth) || (vertical ? \"\" : cssSlideSize());\n }\n\n function cssSlideHeight() {\n return unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight());\n }\n\n function cssSlideSize() {\n var gap = unit(options.gap);\n return \"calc((100%\" + (gap && \" + \" + gap) + \")/\" + (options.perPage || 1) + (gap && \" - \" + gap) + \")\";\n }\n\n function listSize() {\n return rect(list)[resolve(\"width\")];\n }\n\n function slideSize(index, withoutGap) {\n var Slide = getAt(index || 0);\n return Slide ? rect(Slide.slide)[resolve(\"width\")] + (withoutGap ? 0 : getGap()) : 0;\n }\n\n function totalSize(index, withoutGap) {\n var Slide = getAt(index);\n\n if (Slide) {\n var right = rect(Slide.slide)[resolve(\"right\")];\n var left = rect(list)[resolve(\"left\")];\n return abs(right - left) + (withoutGap ? 0 : getGap());\n }\n\n return 0;\n }\n\n function sliderSize(withoutGap) {\n return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap);\n }\n\n function getGap() {\n var Slide = getAt(0);\n return Slide && parseFloat(style(Slide.slide, resolve(\"marginRight\"))) || 0;\n }\n\n function getPadding(right) {\n return parseFloat(style(track, resolve(\"padding\" + (right ? \"Right\" : \"Left\")))) || 0;\n }\n\n function isOverflow() {\n return Splide2.is(FADE) || sliderSize(true) > listSize();\n }\n\n return {\n mount: mount,\n resize: resize,\n listSize: listSize,\n slideSize: slideSize,\n sliderSize: sliderSize,\n totalSize: totalSize,\n getPadding: getPadding,\n isOverflow: isOverflow\n };\n}\n\nvar MULTIPLIER = 2;\n\nfunction Clones(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on;\n var Elements = Components2.Elements,\n Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var clones = [];\n var cloneCount;\n\n function mount() {\n on(EVENT_REFRESH, remount);\n on([EVENT_UPDATED, EVENT_RESIZE], observe);\n\n if (cloneCount = computeCloneCount()) {\n generate(cloneCount);\n Components2.Layout.resize(true);\n }\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function destroy() {\n remove(clones);\n empty(clones);\n event.destroy();\n }\n\n function observe() {\n var count = computeCloneCount();\n\n if (cloneCount !== count) {\n if (cloneCount < count || !count) {\n event.emit(EVENT_REFRESH);\n }\n }\n }\n\n function generate(count) {\n var slides = Slides.get().slice();\n var length = slides.length;\n\n if (length) {\n while (slides.length < count) {\n push(slides, slides);\n }\n\n push(slides.slice(-count), slides.slice(0, count)).forEach(function (Slide, index) {\n var isHead = index < count;\n var clone = cloneDeep(Slide.slide, index);\n isHead ? before(clone, slides[0].slide) : append(Elements.list, clone);\n push(clones, clone);\n Slides.register(clone, index - count + (isHead ? 0 : length), Slide.index);\n });\n }\n }\n\n function cloneDeep(elm, index) {\n var clone = elm.cloneNode(true);\n addClass(clone, options.classes.clone);\n clone.id = Splide2.root.id + \"-clone\" + pad(index + 1);\n return clone;\n }\n\n function computeCloneCount() {\n var clones2 = options.clones;\n\n if (!Splide2.is(LOOP)) {\n clones2 = 0;\n } else if (isUndefined(clones2)) {\n var fixedSize = options[resolve(\"fixedWidth\")] && Components2.Layout.slideSize(0);\n var fixedCount = fixedSize && ceil(rect(Elements.track)[resolve(\"width\")] / fixedSize);\n clones2 = fixedCount || options[resolve(\"autoWidth\")] && Splide2.length || options.perPage * MULTIPLIER;\n }\n\n return clones2;\n }\n\n return {\n mount: mount,\n destroy: destroy\n };\n}\n\nfunction Move(Splide2, Components2, options) {\n var _EventInterface4 = EventInterface(Splide2),\n on = _EventInterface4.on,\n emit = _EventInterface4.emit;\n\n var set = Splide2.state.set;\n var _Components2$Layout = Components2.Layout,\n slideSize = _Components2$Layout.slideSize,\n getPadding = _Components2$Layout.getPadding,\n totalSize = _Components2$Layout.totalSize,\n listSize = _Components2$Layout.listSize,\n sliderSize = _Components2$Layout.sliderSize;\n var _Components2$Directio = Components2.Direction,\n resolve = _Components2$Directio.resolve,\n orient = _Components2$Directio.orient;\n var _Components2$Elements3 = Components2.Elements,\n list = _Components2$Elements3.list,\n track = _Components2$Elements3.track;\n var Transition;\n\n function mount() {\n Transition = Components2.Transition;\n on([EVENT_MOUNTED, EVENT_RESIZED, EVENT_UPDATED, EVENT_REFRESH], reposition);\n }\n\n function reposition() {\n if (!Components2.Controller.isBusy()) {\n Components2.Scroll.cancel();\n jump(Splide2.index);\n Components2.Slides.update();\n }\n }\n\n function move(dest, index, prev, callback) {\n if (dest !== index && canShift(dest > prev)) {\n cancel();\n translate(shift(getPosition(), dest > prev), true);\n }\n\n set(MOVING);\n emit(EVENT_MOVE, index, prev, dest);\n Transition.start(index, function () {\n set(IDLE);\n emit(EVENT_MOVED, index, prev, dest);\n callback && callback();\n });\n }\n\n function jump(index) {\n translate(toPosition(index, true));\n }\n\n function translate(position, preventLoop) {\n if (!Splide2.is(FADE)) {\n var destination = preventLoop ? position : loop(position);\n style(list, \"transform\", \"translate\" + resolve(\"X\") + \"(\" + destination + \"px)\");\n position !== destination && emit(EVENT_SHIFTED);\n }\n }\n\n function loop(position) {\n if (Splide2.is(LOOP)) {\n var index = toIndex(position);\n var exceededMax = index > Components2.Controller.getEnd();\n var exceededMin = index < 0;\n\n if (exceededMin || exceededMax) {\n position = shift(position, exceededMax);\n }\n }\n\n return position;\n }\n\n function shift(position, backwards) {\n var excess = position - getLimit(backwards);\n var size = sliderSize();\n position -= orient(size * (ceil(abs(excess) / size) || 1)) * (backwards ? 1 : -1);\n return position;\n }\n\n function cancel() {\n translate(getPosition(), true);\n Transition.cancel();\n }\n\n function toIndex(position) {\n var Slides = Components2.Slides.get();\n var index = 0;\n var minDistance = Infinity;\n\n for (var i = 0; i < Slides.length; i++) {\n var slideIndex = Slides[i].index;\n var distance = abs(toPosition(slideIndex, true) - position);\n\n if (distance <= minDistance) {\n minDistance = distance;\n index = slideIndex;\n } else {\n break;\n }\n }\n\n return index;\n }\n\n function toPosition(index, trimming) {\n var position = orient(totalSize(index - 1) - offset(index));\n return trimming ? trim(position) : position;\n }\n\n function getPosition() {\n var left = resolve(\"left\");\n return rect(list)[left] - rect(track)[left] + orient(getPadding(false));\n }\n\n function trim(position) {\n if (options.trimSpace && Splide2.is(SLIDE)) {\n position = clamp(position, 0, orient(sliderSize(true) - listSize()));\n }\n\n return position;\n }\n\n function offset(index) {\n var focus = options.focus;\n return focus === \"center\" ? (listSize() - slideSize(index, true)) / 2 : +focus * slideSize(index) || 0;\n }\n\n function getLimit(max) {\n return toPosition(max ? Components2.Controller.getEnd() : 0, !!options.trimSpace);\n }\n\n function canShift(backwards) {\n var shifted = orient(shift(getPosition(), backwards));\n return backwards ? shifted >= 0 : shifted <= list[resolve(\"scrollWidth\")] - rect(track)[resolve(\"width\")];\n }\n\n function exceededLimit(max, position) {\n position = isUndefined(position) ? getPosition() : position;\n var exceededMin = max !== true && orient(position) < orient(getLimit(false));\n var exceededMax = max !== false && orient(position) > orient(getLimit(true));\n return exceededMin || exceededMax;\n }\n\n return {\n mount: mount,\n move: move,\n jump: jump,\n translate: translate,\n shift: shift,\n cancel: cancel,\n toIndex: toIndex,\n toPosition: toPosition,\n getPosition: getPosition,\n getLimit: getLimit,\n exceededLimit: exceededLimit,\n reposition: reposition\n };\n}\n\nfunction Controller(Splide2, Components2, options) {\n var _EventInterface5 = EventInterface(Splide2),\n on = _EventInterface5.on,\n emit = _EventInterface5.emit;\n\n var Move = Components2.Move;\n var getPosition = Move.getPosition,\n getLimit = Move.getLimit,\n toPosition = Move.toPosition;\n var _Components2$Slides = Components2.Slides,\n isEnough = _Components2$Slides.isEnough,\n getLength = _Components2$Slides.getLength;\n var omitEnd = options.omitEnd;\n var isLoop = Splide2.is(LOOP);\n var isSlide = Splide2.is(SLIDE);\n var getNext = apply(getAdjacent, false);\n var getPrev = apply(getAdjacent, true);\n var currIndex = options.start || 0;\n var endIndex;\n var prevIndex = currIndex;\n var slideCount;\n var perMove;\n var perPage;\n\n function mount() {\n init();\n on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init);\n on(EVENT_RESIZED, onResized);\n }\n\n function init() {\n slideCount = getLength(true);\n perMove = options.perMove;\n perPage = options.perPage;\n endIndex = getEnd();\n var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1);\n\n if (index !== currIndex) {\n currIndex = index;\n Move.reposition();\n }\n }\n\n function onResized() {\n if (endIndex !== getEnd()) {\n emit(EVENT_END_INDEX_CHANGED);\n }\n }\n\n function go(control, allowSameIndex, callback) {\n if (!isBusy()) {\n var dest = parse(control);\n var index = loop(dest);\n\n if (index > -1 && (allowSameIndex || index !== currIndex)) {\n setIndex(index);\n Move.move(dest, index, prevIndex, callback);\n }\n }\n }\n\n function scroll(destination, duration, snap, callback) {\n Components2.Scroll.scroll(destination, duration, snap, function () {\n var index = loop(Move.toIndex(getPosition()));\n setIndex(omitEnd ? min(index, endIndex) : index);\n callback && callback();\n });\n }\n\n function parse(control) {\n var index = currIndex;\n\n if (isString(control)) {\n var _ref = control.match(/([+\\-<>])(\\d+)?/) || [],\n indicator = _ref[1],\n number = _ref[2];\n\n if (indicator === \"+\" || indicator === \"-\") {\n index = computeDestIndex(currIndex + +(\"\" + indicator + (+number || 1)), currIndex);\n } else if (indicator === \">\") {\n index = number ? toIndex(+number) : getNext(true);\n } else if (indicator === \"<\") {\n index = getPrev(true);\n }\n } else {\n index = isLoop ? control : clamp(control, 0, endIndex);\n }\n\n return index;\n }\n\n function getAdjacent(prev, destination) {\n var number = perMove || (hasFocus() ? 1 : perPage);\n var dest = computeDestIndex(currIndex + number * (prev ? -1 : 1), currIndex, !(perMove || hasFocus()));\n\n if (dest === -1 && isSlide) {\n if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) {\n return prev ? 0 : endIndex;\n }\n }\n\n return destination ? dest : loop(dest);\n }\n\n function computeDestIndex(dest, from, snapPage) {\n if (isEnough() || hasFocus()) {\n var index = computeMovableDestIndex(dest);\n\n if (index !== dest) {\n from = dest;\n dest = index;\n snapPage = false;\n }\n\n if (dest < 0 || dest > endIndex) {\n if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) {\n dest = toIndex(toPage(dest));\n } else {\n if (isLoop) {\n dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest;\n } else if (options.rewind) {\n dest = dest < 0 ? endIndex : 0;\n } else {\n dest = -1;\n }\n }\n } else {\n if (snapPage && dest !== from) {\n dest = toIndex(toPage(from) + (dest < from ? -1 : 1));\n }\n }\n } else {\n dest = -1;\n }\n\n return dest;\n }\n\n function computeMovableDestIndex(dest) {\n if (isSlide && options.trimSpace === \"move\" && dest !== currIndex) {\n var position = getPosition();\n\n while (position === toPosition(dest, true) && between(dest, 0, Splide2.length - 1, !options.rewind)) {\n dest < currIndex ? --dest : ++dest;\n }\n }\n\n return dest;\n }\n\n function loop(index) {\n return isLoop ? (index + slideCount) % slideCount || 0 : index;\n }\n\n function getEnd() {\n var end = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage);\n\n while (omitEnd && end-- > 0) {\n if (toPosition(slideCount - 1, true) !== toPosition(end, true)) {\n end++;\n break;\n }\n }\n\n return clamp(end, 0, slideCount - 1);\n }\n\n function toIndex(page) {\n return clamp(hasFocus() ? page : perPage * page, 0, endIndex);\n }\n\n function toPage(index) {\n return hasFocus() ? min(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage);\n }\n\n function toDest(destination) {\n var closest = Move.toIndex(destination);\n return isSlide ? clamp(closest, 0, endIndex) : closest;\n }\n\n function setIndex(index) {\n if (index !== currIndex) {\n prevIndex = currIndex;\n currIndex = index;\n }\n }\n\n function getIndex(prev) {\n return prev ? prevIndex : currIndex;\n }\n\n function hasFocus() {\n return !isUndefined(options.focus) || options.isNavigation;\n }\n\n function isBusy() {\n return Splide2.state.is([MOVING, SCROLLING]) && !!options.waitForTransition;\n }\n\n return {\n mount: mount,\n go: go,\n scroll: scroll,\n getNext: getNext,\n getPrev: getPrev,\n getAdjacent: getAdjacent,\n getEnd: getEnd,\n setIndex: setIndex,\n getIndex: getIndex,\n toIndex: toIndex,\n toPage: toPage,\n toDest: toDest,\n hasFocus: hasFocus,\n isBusy: isBusy\n };\n}\n\nvar XML_NAME_SPACE = \"http://www.w3.org/2000/svg\";\nvar PATH = \"m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z\";\nvar SIZE = 40;\n\nfunction Arrows(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on,\n bind = event.bind,\n emit = event.emit;\n var classes = options.classes,\n i18n = options.i18n;\n var Elements = Components2.Elements,\n Controller = Components2.Controller;\n var placeholder = Elements.arrows,\n track = Elements.track;\n var wrapper = placeholder;\n var prev = Elements.prev;\n var next = Elements.next;\n var created;\n var wrapperClasses;\n var arrows = {};\n\n function mount() {\n init();\n on(EVENT_UPDATED, remount);\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function init() {\n var enabled = options.arrows;\n\n if (enabled && !(prev && next)) {\n createArrows();\n }\n\n if (prev && next) {\n assign(arrows, {\n prev: prev,\n next: next\n });\n display(wrapper, enabled ? \"\" : \"none\");\n addClass(wrapper, wrapperClasses = CLASS_ARROWS + \"--\" + options.direction);\n\n if (enabled) {\n listen();\n update();\n setAttribute([prev, next], ARIA_CONTROLS, track.id);\n emit(EVENT_ARROWS_MOUNTED, prev, next);\n }\n }\n }\n\n function destroy() {\n event.destroy();\n removeClass(wrapper, wrapperClasses);\n\n if (created) {\n remove(placeholder ? [prev, next] : wrapper);\n prev = next = null;\n } else {\n removeAttribute([prev, next], ALL_ATTRIBUTES);\n }\n }\n\n function listen() {\n on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update);\n bind(next, \"click\", apply(go, \">\"));\n bind(prev, \"click\", apply(go, \"<\"));\n }\n\n function go(control) {\n Controller.go(control, true);\n }\n\n function createArrows() {\n wrapper = placeholder || create(\"div\", classes.arrows);\n prev = createArrow(true);\n next = createArrow(false);\n created = true;\n append(wrapper, [prev, next]);\n !placeholder && before(wrapper, track);\n }\n\n function createArrow(prev2) {\n var arrow = \"\";\n };\n\n _proto3.html = function html() {\n var _this$config = this.config,\n rootClass = _this$config.rootClass,\n listTag = _this$config.listTag,\n arrows = _this$config.arrows,\n beforeTrack = _this$config.beforeTrack,\n afterTrack = _this$config.afterTrack,\n slider = _this$config.slider,\n beforeSlider = _this$config.beforeSlider,\n afterSlider = _this$config.afterSlider;\n var html = \"\";\n html += \"
\";\n html += \"\";\n\n if (slider) {\n html += beforeSlider || \"\";\n html += \"
\";\n }\n\n html += beforeTrack || \"\";\n\n if (arrows) {\n html += this.renderArrows();\n }\n\n html += \"
\";\n html += \"<\" + listTag + \" class=\\\"splide__list\\\">\";\n html += this.renderSlides();\n html += \"\";\n html += \"
\";\n html += afterTrack || \"\";\n\n if (slider) {\n html += \"
\";\n html += afterSlider || \"\";\n }\n\n html += \"
\";\n return html;\n };\n\n return SplideRenderer;\n}();\n\nexport { CLASSES, CLASS_ACTIVE, CLASS_ARROW, CLASS_ARROWS, CLASS_ARROW_NEXT, CLASS_ARROW_PREV, CLASS_CLONE, CLASS_CONTAINER, CLASS_FOCUS_IN, CLASS_INITIALIZED, CLASS_LIST, CLASS_LOADING, CLASS_NEXT, CLASS_OVERFLOW, CLASS_PAGINATION, CLASS_PAGINATION_PAGE, CLASS_PREV, CLASS_PROGRESS, CLASS_PROGRESS_BAR, CLASS_ROOT, CLASS_SLIDE, CLASS_SPINNER, CLASS_SR, CLASS_TOGGLE, CLASS_TOGGLE_PAUSE, CLASS_TOGGLE_PLAY, CLASS_TRACK, CLASS_VISIBLE, DEFAULTS, EVENT_ACTIVE, EVENT_ARROWS_MOUNTED, EVENT_ARROWS_UPDATED, EVENT_AUTOPLAY_PAUSE, EVENT_AUTOPLAY_PLAY, EVENT_AUTOPLAY_PLAYING, EVENT_CLICK, EVENT_DESTROY, EVENT_DRAG, EVENT_DRAGGED, EVENT_DRAGGING, EVENT_END_INDEX_CHANGED, EVENT_HIDDEN, EVENT_INACTIVE, EVENT_LAZYLOAD_LOADED, EVENT_MOUNTED, EVENT_MOVE, EVENT_MOVED, EVENT_NAVIGATION_MOUNTED, EVENT_OVERFLOW, EVENT_PAGINATION_MOUNTED, EVENT_PAGINATION_UPDATED, EVENT_READY, EVENT_REFRESH, EVENT_RESIZE, EVENT_RESIZED, EVENT_SCROLL, EVENT_SCROLLED, EVENT_SHIFTED, EVENT_SLIDE_KEYDOWN, EVENT_UPDATED, EVENT_VISIBLE, EventBinder, EventInterface, FADE, LOOP, LTR, RTL, RequestInterval, SLIDE, STATUS_CLASSES, Splide, SplideRenderer, State, TTB, Throttle, Splide as default };\n","!function(e){if(!e.hasInitialised){var t={escapeRegExp:function(e){return e.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\")},hasClass:function(e,t){var i=\" \";return 1===e.nodeType&&(i+e.className+i).replace(/[\\n\\t]/g,i).indexOf(i+t+i)>=0},addClass:function(e,t){e.className+=\" \"+t},removeClass:function(e,t){var i=new RegExp(\"\\\\b\"+this.escapeRegExp(t)+\"\\\\b\");e.className=e.className.replace(i,\"\")},interpolateString:function(e,t){var i=/{{([a-z][a-z0-9\\-_]*)}}/gi;return e.replace(i,function(e){return t(arguments[1])||\"\"})},getCookie:function(e){var t=\"; \"+document.cookie,i=t.split(\"; \"+e+\"=\");return i.length<2?void 0:i.pop().split(\";\").shift()},setCookie:function(e,t,i,n,o,s){var r=new Date;r.setDate(r.getDate()+(i||365));var a=[e+\"=\"+t,\"expires=\"+r.toUTCString(),\"path=\"+(o||\"/\")];n&&a.push(\"domain=\"+n),s&&a.push(\"secure\"),document.cookie=a.join(\";\")},deepExtend:function(e,t){for(var i in t)t.hasOwnProperty(i)&&(i in e&&this.isPlainObject(e[i])&&this.isPlainObject(t[i])?this.deepExtend(e[i],t[i]):e[i]=t[i]);return e},throttle:function(e,t){var i=!1;return function(){i||(e.apply(this,arguments),i=!0,setTimeout(function(){i=!1},t))}},hash:function(e){var t,i,n,o=0;if(0===e.length)return o;for(t=0,n=e.length;t=128?\"#000\":\"#fff\"},getLuminance:function(e){var t=parseInt(this.normaliseHex(e),16),i=38,n=(t>>16)+i,o=(t>>8&255)+i,s=(255&t)+i,r=(16777216+65536*(n<255?n<1?0:n:255)+256*(o<255?o<1?0:o:255)+(s<255?s<1?0:s:255)).toString(16).slice(1);return\"#\"+r},isMobile:function(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)},isPlainObject:function(e){return\"object\"==typeof e&&null!==e&&e.constructor==Object},traverseDOMPath:function(e,i){return e&&e.parentNode?t.hasClass(e,i)?e:this.traverseDOMPath(e.parentNode,i):null}};e.status={deny:\"deny\",allow:\"allow\",dismiss:\"dismiss\"},e.transitionEnd=function(){var e=document.createElement(\"div\"),t={t:\"transitionend\",OT:\"oTransitionEnd\",msT:\"MSTransitionEnd\",MozT:\"transitionend\",WebkitT:\"webkitTransitionEnd\"};for(var i in t)if(t.hasOwnProperty(i)&&\"undefined\"!=typeof e.style[i+\"ransition\"])return t[i];return\"\"}(),e.hasTransition=!!e.transitionEnd;var i=Object.keys(e.status).map(t.escapeRegExp);e.customStyles={},e.Popup=function(){function n(){this.initialise.apply(this,arguments)}function o(e){this.openingTimeout=null,t.removeClass(e,\"cc-invisible\")}function s(t){t.style.display=\"none\",t.removeEventListener(e.transitionEnd,this.afterTransition),this.afterTransition=null}function r(){var t=this.options.onInitialise.bind(this);if(!window.navigator.cookieEnabled)return t(e.status.deny),!0;if(window.CookiesOK||window.navigator.CookiesOK)return t(e.status.allow),!0;var i=Object.keys(e.status),n=this.getStatus(),o=i.indexOf(n)>=0;return o&&t(n),o}function a(){var e=this.options.position.split(\"-\"),t=[];return e.forEach(function(e){t.push(\"cc-\"+e)}),t}function c(){var e=this.options,i=\"top\"==e.position||\"bottom\"==e.position?\"banner\":\"floating\";t.isMobile()&&(i=\"floating\");var n=[\"cc-\"+i,\"cc-type-\"+e.type,\"cc-theme-\"+e.theme];e[\"static\"]&&n.push(\"cc-static\"),n.push.apply(n,a.call(this));p.call(this,this.options.palette);return this.customStyleSelector&&n.push(this.customStyleSelector),n}function l(){var e={},i=this.options;i.showLink||(i.elements.link=\"\",i.elements.messagelink=i.elements.message),Object.keys(i.elements).forEach(function(n){e[n]=t.interpolateString(i.elements[n],function(e){var t=i.content[e];return e&&\"string\"==typeof t&&t.length?t:\"\"})});var n=i.compliance[i.type];n||(n=i.compliance.info),e.compliance=t.interpolateString(n,function(t){return e[t]});var o=i.layouts[i.layout];return o||(o=i.layouts.basic),t.interpolateString(o,function(t){return e[t]})}function u(i){var n=this.options,o=document.createElement(\"div\"),s=n.container&&1===n.container.nodeType?n.container:document.body;o.innerHTML=i;var r=o.children[0];return r.style.display=\"none\",t.hasClass(r,\"cc-window\")&&e.hasTransition&&t.addClass(r,\"cc-invisible\"),this.onButtonClick=h.bind(this),r.addEventListener(\"click\",this.onButtonClick),n.autoAttach&&(s.firstChild?s.insertBefore(r,s.firstChild):s.appendChild(r)),r}function h(n){var o=t.traverseDOMPath(n.target,\"cc-btn\")||n.target;if(t.hasClass(o,\"cc-btn\")){var s=o.className.match(new RegExp(\"\\\\bcc-(\"+i.join(\"|\")+\")\\\\b\")),r=s&&s[1]||!1;r&&(this.setStatus(r),this.close(!0))}t.hasClass(o,\"cc-close\")&&(this.setStatus(e.status.dismiss),this.close(!0)),t.hasClass(o,\"cc-revoke\")&&this.revokeChoice()}function p(e){var i=t.hash(JSON.stringify(e)),n=\"cc-color-override-\"+i,o=t.isPlainObject(e);return this.customStyleSelector=o?n:null,o&&d(i,e,\".\"+n),o}function d(i,n,o){if(e.customStyles[i])return void++e.customStyles[i].references;var s={},r=n.popup,a=n.button,c=n.highlight;r&&(r.text=r.text?r.text:t.getContrast(r.background),r.link=r.link?r.link:r.text,s[o+\".cc-window\"]=[\"color: \"+r.text,\"background-color: \"+r.background],s[o+\".cc-revoke\"]=[\"color: \"+r.text,\"background-color: \"+r.background],s[o+\" .cc-link,\"+o+\" .cc-link:active,\"+o+\" .cc-link:visited\"]=[\"color: \"+r.link],a&&(a.text=a.text?a.text:t.getContrast(a.background),a.border=a.border?a.border:\"transparent\",s[o+\" .cc-btn\"]=[\"color: \"+a.text,\"border-color: \"+a.border,\"background-color: \"+a.background],a.padding&&s[o+\" .cc-btn\"].push(\"padding: \"+a.padding),\"transparent\"!=a.background&&(s[o+\" .cc-btn:hover, \"+o+\" .cc-btn:focus\"]=[\"background-color: \"+(a.hover||v(a.background))]),c?(c.text=c.text?c.text:t.getContrast(c.background),c.border=c.border?c.border:\"transparent\",s[o+\" .cc-highlight .cc-btn:first-child\"]=[\"color: \"+c.text,\"border-color: \"+c.border,\"background-color: \"+c.background]):s[o+\" .cc-highlight .cc-btn:first-child\"]=[\"color: \"+r.text]));var l=document.createElement(\"style\");document.head.appendChild(l),e.customStyles[i]={references:1,element:l.sheet};var u=-1;for(var h in s)s.hasOwnProperty(h)&&l.sheet.insertRule(h+\"{\"+s[h].join(\";\")+\"}\",++u)}function v(e){return e=t.normaliseHex(e),\"000000\"==e?\"#222\":t.getLuminance(e)}function f(i){if(t.isPlainObject(i)){var n=t.hash(JSON.stringify(i)),o=e.customStyles[n];if(o&&!--o.references){var s=o.element.ownerNode;s&&s.parentNode&&s.parentNode.removeChild(s),e.customStyles[n]=null}}}function m(e,t){for(var i=0,n=e.length;i=0&&(this.dismissTimeout=window.setTimeout(function(){i(e.status.dismiss),n(!0)},Math.floor(o)));var s=this.options.dismissOnScroll;if(\"number\"==typeof s&&s>=0){var r=function(t){window.pageYOffset>Math.floor(s)&&(i(e.status.dismiss),n(!0),window.removeEventListener(\"scroll\",r),this.onWindowScroll=null)};this.options.enabled&&(this.onWindowScroll=r,window.addEventListener(\"scroll\",r))}var a=this.options.dismissOnWindowClick,c=this.options.ignoreClicksFrom;if(a){var l=function(o){for(var s=!1,r=o.path.length,a=c.length,u=0;us&&(i=!0),i?t.hasClass(n,\"cc-active\")||t.addClass(n,\"cc-active\"):t.hasClass(n,\"cc-active\")&&t.removeClass(n,\"cc-active\")},200);this.onMouseMove=o,window.addEventListener(\"mousemove\",o)}}}var y={enabled:!0,container:null,cookie:{name:\"cookieconsent_status\",path:\"/\",domain:\"\",expiryDays:365,secure:!1},onPopupOpen:function(){},onPopupClose:function(){},onInitialise:function(e){},onStatusChange:function(e,t){},onRevokeChoice:function(){},onNoCookieLaw:function(e,t){},content:{header:\"Cookies used on the website!\",message:\"This website uses cookies to ensure you get the best experience on our website.\",dismiss:\"Got it!\",allow:\"Allow cookies\",deny:\"Decline\",link:\"Learn more\",href:\"https://cookiesandyou.com\",close:\"❌\",target:\"_blank\",policy:\"Cookie Policy\"},elements:{header:'{{header}} ',message:'{{message}}',messagelink:'{{message}} {{link}}',dismiss:'{{dismiss}}',allow:'{{allow}}',deny:'{{deny}}',link:'{{link}}',close:'{{close}}'},window:'
{{children}}
',revokeBtn:'
{{policy}}
',compliance:{info:'
{{dismiss}}
',\"opt-in\":'
{{deny}}{{allow}}
',\"opt-out\":'
{{deny}}{{allow}}
'},type:\"info\",layouts:{basic:\"{{messagelink}}{{compliance}}\",\"basic-close\":\"{{messagelink}}{{compliance}}{{close}}\",\"basic-header\":\"{{header}}{{message}}{{link}}{{compliance}}\"},layout:\"basic\",position:\"bottom\",theme:\"block\",\"static\":!1,palette:null,revokable:!1,animateRevokable:!0,showLink:!0,dismissOnScroll:!1,dismissOnTimeout:!1,dismissOnWindowClick:!1,ignoreClicksFrom:[\"cc-revoke\",\"cc-btn\"],autoOpen:!0,autoAttach:!0,whitelistPage:[],blacklistPage:[],overrideHTML:null};return n.prototype.initialise=function(e){this.options&&this.destroy(),t.deepExtend(this.options={},y),t.isPlainObject(e)&&t.deepExtend(this.options,e),r.call(this)&&(this.options.enabled=!1),m(this.options.blacklistPage,location.pathname)&&(this.options.enabled=!1),m(this.options.whitelistPage,location.pathname)&&(this.options.enabled=!0);var i=this.options.window.replace(\"{{classes}}\",c.call(this).join(\" \")).replace(\"{{children}}\",l.call(this)),n=this.options.overrideHTML;if(\"string\"==typeof n&&n.length&&(i=n),this.options[\"static\"]){var o=u.call(this,'
'+i+\"
\");o.style.display=\"\",this.element=o.firstChild,this.element.style.display=\"none\",t.addClass(this.element,\"cc-invisible\")}else this.element=u.call(this,i);b.call(this),g.call(this),this.options.autoOpen&&this.autoOpen()},n.prototype.destroy=function(){this.onButtonClick&&this.element&&(this.element.removeEventListener(\"click\",this.onButtonClick),this.onButtonClick=null),this.dismissTimeout&&(clearTimeout(this.dismissTimeout),this.dismissTimeout=null),this.onWindowScroll&&(window.removeEventListener(\"scroll\",this.onWindowScroll),this.onWindowScroll=null),this.onWindowClick&&(window.removeEventListener(\"click\",this.onWindowClick),this.onWindowClick=null),this.onMouseMove&&(window.removeEventListener(\"mousemove\",this.onMouseMove),this.onMouseMove=null),this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=null,this.revokeBtn&&this.revokeBtn.parentNode&&this.revokeBtn.parentNode.removeChild(this.revokeBtn),this.revokeBtn=null,f(this.options.palette),this.options=null},n.prototype.open=function(t){if(this.element)return this.isOpen()||(e.hasTransition?this.fadeIn():this.element.style.display=\"\",this.options.revokable&&this.toggleRevokeButton(),this.options.onPopupOpen.call(this)),this},n.prototype.close=function(t){if(this.element)return this.isOpen()&&(e.hasTransition?this.fadeOut():this.element.style.display=\"none\",t&&this.options.revokable&&this.toggleRevokeButton(!0),this.options.onPopupClose.call(this)),this},n.prototype.fadeIn=function(){var i=this.element;if(e.hasTransition&&i&&(this.afterTransition&&s.call(this,i),t.hasClass(i,\"cc-invisible\"))){if(i.style.display=\"\",this.options[\"static\"]){var n=this.element.clientHeight;this.element.parentNode.style.maxHeight=n+\"px\"}var r=20;this.openingTimeout=setTimeout(o.bind(this,i),r)}},n.prototype.fadeOut=function(){var i=this.element;e.hasTransition&&i&&(this.openingTimeout&&(clearTimeout(this.openingTimeout),o.bind(this,i)),t.hasClass(i,\"cc-invisible\")||(this.options[\"static\"]&&(this.element.parentNode.style.maxHeight=\"\"),this.afterTransition=s.bind(this,i),i.addEventListener(e.transitionEnd,this.afterTransition),t.addClass(i,\"cc-invisible\")))},n.prototype.isOpen=function(){return this.element&&\"\"==this.element.style.display&&(!e.hasTransition||!t.hasClass(this.element,\"cc-invisible\"))},n.prototype.toggleRevokeButton=function(e){this.revokeBtn&&(this.revokeBtn.style.display=e?\"\":\"none\")},n.prototype.revokeChoice=function(e){this.options.enabled=!0,this.clearStatus(),this.options.onRevokeChoice.call(this),e||this.autoOpen()},n.prototype.hasAnswered=function(t){return Object.keys(e.status).indexOf(this.getStatus())>=0},n.prototype.hasConsented=function(t){var i=this.getStatus();return i==e.status.allow||i==e.status.dismiss},n.prototype.autoOpen=function(e){!this.hasAnswered()&&this.options.enabled?this.open():this.hasAnswered()&&this.options.revokable&&this.toggleRevokeButton(!0)},n.prototype.setStatus=function(i){var n=this.options.cookie,o=t.getCookie(n.name),s=Object.keys(e.status).indexOf(o)>=0;Object.keys(e.status).indexOf(i)>=0?(t.setCookie(n.name,i,n.expiryDays,n.domain,n.path,n.secure),this.options.onStatusChange.call(this,i,s)):this.clearStatus()},n.prototype.getStatus=function(){return t.getCookie(this.options.cookie.name)},n.prototype.clearStatus=function(){var e=this.options.cookie;t.setCookie(e.name,\"\",-1,e.domain,e.path)},n}(),e.Location=function(){function e(e){t.deepExtend(this.options={},s),t.isPlainObject(e)&&t.deepExtend(this.options,e),this.currentServiceIndex=-1}function i(e,t,i){var n,o=document.createElement(\"script\");o.type=\"text/\"+(e.type||\"javascript\"),o.src=e.src||e,o.async=!1,o.onreadystatechange=o.onload=function(){var e=o.readyState;clearTimeout(n),t.done||e&&!/loaded|complete/.test(e)||(t.done=!0,t(),o.onreadystatechange=o.onload=null)},document.body.appendChild(o),n=setTimeout(function(){t.done=!0,t(),o.onreadystatechange=o.onload=null},i)}function n(e,t,i,n,o){var s=new(window.XMLHttpRequest||window.ActiveXObject)(\"MSXML2.XMLHTTP.3.0\");if(s.open(n?\"POST\":\"GET\",e,1),s.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded\"),Array.isArray(o))for(var r=0,a=o.length;r3&&t(s)}),s.send(n)}function o(e){return new Error(\"Error [\"+(e.code||\"UNKNOWN\")+\"]: \"+e.error)}var s={timeout:5e3,services:[\"ipinfo\"],serviceDefinitions:{ipinfo:function(){return{url:\"//ipinfo.io\",headers:[\"Accept: application/json\"],callback:function(e,t){try{var i=JSON.parse(t);return i.error?o(i):{code:i.country}}catch(n){return o({error:\"Invalid response (\"+n+\")\"})}}}},ipinfodb:function(e){return{url:\"//api.ipinfodb.com/v3/ip-country/?key={api_key}&format=json&callback={callback}\",isScript:!0,callback:function(e,t){try{var i=JSON.parse(t);return\"ERROR\"==i.statusCode?o({error:i.statusMessage}):{code:i.countryCode}}catch(n){return o({error:\"Invalid response (\"+n+\")\"})}}}},maxmind:function(){return{url:\"//js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js\",isScript:!0,callback:function(e){return window.geoip2?void geoip2.country(function(t){try{e({code:t.country.iso_code})}catch(i){e(o(i))}},function(t){e(o(t))}):void e(new Error(\"Unexpected response format. The downloaded script should have exported `geoip2` to the global scope\"))}}}}};return e.prototype.getNextService=function(){var e;do e=this.getServiceByIdx(++this.currentServiceIndex);while(this.currentServiceIndex=0,revokable:t.revokable.indexOf(e)>=0,explicitAction:t.explicitAction.indexOf(e)>=0}},e.prototype.applyLaw=function(e,t){var i=this.get(t);return i.hasLaw||(e.enabled=!1,\"function\"==typeof e.onNoCookieLaw&&e.onNoCookieLaw(t,i)),this.options.regionalLaw&&(i.revokable&&(e.revokable=!0),i.explicitAction&&(e.dismissOnScroll=!1,e.dismissOnTimeout=!1)),e},e}(),e.initialise=function(i,n,o){var s=new e.Law(i.law);n||(n=function(){}),o||(o=function(){});var r=Object.keys(e.status),a=t.getCookie(\"cookieconsent_status\"),c=r.indexOf(a)>=0;return c?void n(new e.Popup(i)):void e.getCountryCode(i,function(t){delete i.law,delete i.location,t.code&&(i=s.applyLaw(i,t.code)),n(new e.Popup(i))},function(t){delete i.law,delete i.location,o(t,new e.Popup(i))})},e.getCountryCode=function(t,i,n){if(t.law&&t.law.countryCode)return void i({code:t.law.countryCode});if(t.location){var o=new e.Location(t.location);return void o.locate(function(e){i(e||{})},n)}i({})},e.utils=t,e.hasInitialised=!0,window.cookieconsent=e}}(window.cookieconsent||{});","var t=function(){return t=Object.assign||function(t){for(var i,n=1,s=arguments.length;na.endVal;a.frameVal=n?a.endVal:a.frameVal,a.frameVal=Number(a.frameVal.toFixed(a.options.decimalPlaces)),a.printValue(a.frameVal),i1?a.options.decimal+r[1]:\"\",a.options.useGrouping){e=\"\";for(var l=3,h=0,u=0,p=n.length;uwindow.scrollY&&t.paused?(t.paused=!1,setTimeout((function(){return t.start()}),t.options.scrollSpyDelay),t.options.scrollSpyOnce&&(t.once=!0)):(window.scrollY>a||s>i)&&!t.paused&&t.reset()}},i.prototype.determineDirectionAndSmartEasing=function(){var t=this.finalEndVal?this.finalEndVal:this.endVal;this.countDown=this.startVal>t;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold&&this.options.useEasing){this.finalEndVal=t;var n=this.countDown?1:-1;this.endVal=t+n*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;null!==this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},i.prototype.start=function(t){this.error||(this.options.onStartCallback&&this.options.onStartCallback(),t&&(this.options.onCompleteCallback=t),this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},i.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},i.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},i.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,null==this.finalEndVal&&this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},i.prototype.printValue=function(t){var i;if(this.el){var n=this.formattingFn(t);if(null===(i=this.options.plugin)||void 0===i?void 0:i.render)this.options.plugin.render(this.el,n);else if(\"INPUT\"===this.el.tagName)this.el.value=n;else\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=n:this.el.innerHTML=n}},i.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},i.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \".concat(t),null)},i.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},i}();export{i as CountUp};\n","/*!\n * CSSPlugin 3.11.5\n * https://greensock.com\n *\n * Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nimport { gsap, _getProperty, _numExp, _numWithUnitExp, getUnit, _isString, _isUndefined, _renderComplexString, _relExp, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _checkPlugin, _replaceRandom, _plugins, GSCache, PropTween, _config, _ticker, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _parseRelative, _setDefaults, _removeLinkedListItem //for the commented-out className feature.\n} from \"./gsap-core.js\";\n\nvar _win,\n _doc,\n _docElement,\n _pluginInitted,\n _tempDiv,\n _tempDivStyler,\n _recentSetterPlugin,\n _reverting,\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _transformProps = {},\n _RAD2DEG = 180 / Math.PI,\n _DEG2RAD = Math.PI / 180,\n _atan2 = Math.atan2,\n _bigNum = 1e8,\n _capsExp = /([A-Z])/g,\n _horizontalExp = /(left|right|width|margin|padding|x)/i,\n _complexExp = /[\\s,\\(]\\S/,\n _propertyAliases = {\n autoAlpha: \"opacity,visibility\",\n scale: \"scaleX,scaleY\",\n alpha: \"opacity\"\n},\n _renderCSSProp = function _renderCSSProp(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n},\n _renderPropWithEnd = function _renderPropWithEnd(ratio, data) {\n return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n},\n _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) {\n return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u : data.b, data);\n},\n //if units change, we need a way to render the original unit/value when the tween goes all the way back to the beginning (ratio:0)\n_renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) {\n var value = data.s + data.c * ratio;\n data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);\n},\n _renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) {\n return data.set(data.t, data.p, ratio ? data.e : data.b, data);\n},\n _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) {\n return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);\n},\n _setterCSSStyle = function _setterCSSStyle(target, property, value) {\n return target.style[property] = value;\n},\n _setterCSSProp = function _setterCSSProp(target, property, value) {\n return target.style.setProperty(property, value);\n},\n _setterTransform = function _setterTransform(target, property, value) {\n return target._gsap[property] = value;\n},\n _setterScale = function _setterScale(target, property, value) {\n return target._gsap.scaleX = target._gsap.scaleY = value;\n},\n _setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache.scaleX = cache.scaleY = value;\n cache.renderTransform(ratio, cache);\n},\n _setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache[property] = value;\n cache.renderTransform(ratio, cache);\n},\n _transformProp = \"transform\",\n _transformOriginProp = _transformProp + \"Origin\",\n _saveStyle = function _saveStyle(property, isNotCSS) {\n var _this = this;\n\n var target = this.target,\n style = target.style;\n\n if (property in _transformProps) {\n this.tfm = this.tfm || {};\n\n if (property !== \"transform\") {\n property = _propertyAliases[property] || property;\n ~property.indexOf(\",\") ? property.split(\",\").forEach(function (a) {\n return _this.tfm[a] = _get(target, a);\n }) : this.tfm[property] = target._gsap.x ? target._gsap[property] : _get(target, property); // note: scale would map to \"scaleX,scaleY\", thus we loop and apply them both.\n } else {\n return _propertyAliases.transform.split(\",\").forEach(function (p) {\n return _saveStyle.call(_this, p, isNotCSS);\n });\n }\n\n if (this.props.indexOf(_transformProp) >= 0) {\n return;\n }\n\n if (target._gsap.svg) {\n this.svgo = target.getAttribute(\"data-svg-origin\");\n this.props.push(_transformOriginProp, isNotCSS, \"\");\n }\n\n property = _transformProp;\n }\n\n (style || isNotCSS) && this.props.push(property, isNotCSS, style[property]);\n},\n _removeIndependentTransforms = function _removeIndependentTransforms(style) {\n if (style.translate) {\n style.removeProperty(\"translate\");\n style.removeProperty(\"scale\");\n style.removeProperty(\"rotate\");\n }\n},\n _revertStyle = function _revertStyle() {\n var props = this.props,\n target = this.target,\n style = target.style,\n cache = target._gsap,\n i,\n p;\n\n for (i = 0; i < props.length; i += 3) {\n // stored like this: property, isNotCSS, value\n props[i + 1] ? target[props[i]] = props[i + 2] : props[i + 2] ? style[props[i]] = props[i + 2] : style.removeProperty(props[i].substr(0, 2) === \"--\" ? props[i] : props[i].replace(_capsExp, \"-$1\").toLowerCase());\n }\n\n if (this.tfm) {\n for (p in this.tfm) {\n cache[p] = this.tfm[p];\n }\n\n if (cache.svg) {\n cache.renderTransform();\n target.setAttribute(\"data-svg-origin\", this.svgo || \"\");\n }\n\n i = _reverting();\n\n if ((!i || !i.isStart) && !style[_transformProp]) {\n _removeIndependentTransforms(style);\n\n cache.uncache = 1; // if it's a startAt that's being reverted in the _initTween() of the core, we don't need to uncache transforms. This is purely a performance optimization.\n }\n }\n},\n _getStyleSaver = function _getStyleSaver(target, properties) {\n var saver = {\n target: target,\n props: [],\n revert: _revertStyle,\n save: _saveStyle\n };\n target._gsap || gsap.core.getCache(target); // just make sure there's a _gsap cache defined because we read from it in _saveStyle() and it's more efficient to just check it here once.\n\n properties && properties.split(\",\").forEach(function (p) {\n return saver.save(p);\n });\n return saver;\n},\n _supports3D,\n _createElement = function _createElement(type, ns) {\n var e = _doc.createElementNS ? _doc.createElementNS((ns || \"http://www.w3.org/1999/xhtml\").replace(/^https/, \"http\"), type) : _doc.createElement(type); //some servers swap in https for http in the namespace which can break things, making \"style\" inaccessible.\n\n return e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://greensock.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).\n},\n _getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) {\n var cs = getComputedStyle(target);\n return cs[property] || cs.getPropertyValue(property.replace(_capsExp, \"-$1\").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || \"\"; //css variables may not need caps swapped out for dashes and lowercase.\n},\n _prefixes = \"O,Moz,ms,Ms,Webkit\".split(\",\"),\n _checkPropPrefix = function _checkPropPrefix(property, element, preferPrefix) {\n var e = element || _tempDiv,\n s = e.style,\n i = 5;\n\n if (property in s && !preferPrefix) {\n return property;\n }\n\n property = property.charAt(0).toUpperCase() + property.substr(1);\n\n while (i-- && !(_prefixes[i] + property in s)) {}\n\n return i < 0 ? null : (i === 3 ? \"ms\" : i >= 0 ? _prefixes[i] : \"\") + property;\n},\n _initCore = function _initCore() {\n if (_windowExists() && window.document) {\n _win = window;\n _doc = _win.document;\n _docElement = _doc.documentElement;\n _tempDiv = _createElement(\"div\") || {\n style: {}\n };\n _tempDivStyler = _createElement(\"div\");\n _transformProp = _checkPropPrefix(_transformProp);\n _transformOriginProp = _transformProp + \"Origin\";\n _tempDiv.style.cssText = \"border-width:0;line-height:0;position:absolute;padding:0\"; //make sure to override certain properties that may contaminate measurements, in case the user has overreaching style sheets.\n\n _supports3D = !!_checkPropPrefix(\"perspective\");\n _reverting = gsap.core.reverting;\n _pluginInitted = 1;\n }\n},\n _getBBoxHack = function _getBBoxHack(swapIfPossible) {\n //works around issues in some browsers (like Firefox) that don't correctly report getBBox() on SVG elements inside a element and/or . We try creating an SVG, adding it to the documentElement and toss the element in there so that it's definitely part of the rendering tree, then grab the bbox and if it works, we actually swap out the original getBBox() method for our own that does these extra steps whenever getBBox is needed. This helps ensure that performance is optimal (only do all these extra steps when absolutely necessary...most elements don't need it).\n var svg = _createElement(\"svg\", this.ownerSVGElement && this.ownerSVGElement.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\"),\n oldParent = this.parentNode,\n oldSibling = this.nextSibling,\n oldCSS = this.style.cssText,\n bbox;\n\n _docElement.appendChild(svg);\n\n svg.appendChild(this);\n this.style.display = \"block\";\n\n if (swapIfPossible) {\n try {\n bbox = this.getBBox();\n this._gsapBBox = this.getBBox; //store the original\n\n this.getBBox = _getBBoxHack;\n } catch (e) {}\n } else if (this._gsapBBox) {\n bbox = this._gsapBBox();\n }\n\n if (oldParent) {\n if (oldSibling) {\n oldParent.insertBefore(this, oldSibling);\n } else {\n oldParent.appendChild(this);\n }\n }\n\n _docElement.removeChild(svg);\n\n this.style.cssText = oldCSS;\n return bbox;\n},\n _getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) {\n var i = attributesArray.length;\n\n while (i--) {\n if (target.hasAttribute(attributesArray[i])) {\n return target.getAttribute(attributesArray[i]);\n }\n }\n},\n _getBBox = function _getBBox(target) {\n var bounds;\n\n try {\n bounds = target.getBBox(); //Firefox throws errors if you try calling getBBox() on an SVG element that's not rendered (like in a or ). https://bugzilla.mozilla.org/show_bug.cgi?id=612118\n } catch (error) {\n bounds = _getBBoxHack.call(target, true);\n }\n\n bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true)); //some browsers (like Firefox) misreport the bounds if the element has zero width and height (it just assumes it's at x:0, y:0), thus we need to manually grab the position in that case.\n\n return bounds && !bounds.width && !bounds.x && !bounds.y ? {\n x: +_getAttributeFallbacks(target, [\"x\", \"cx\", \"x1\"]) || 0,\n y: +_getAttributeFallbacks(target, [\"y\", \"cy\", \"y1\"]) || 0,\n width: 0,\n height: 0\n } : bounds;\n},\n _isSVG = function _isSVG(e) {\n return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));\n},\n //reports if the element is an SVG on which getBBox() actually works\n_removeProperty = function _removeProperty(target, property) {\n if (property) {\n var style = target.style;\n\n if (property in _transformProps && property !== _transformOriginProp) {\n property = _transformProp;\n }\n\n if (style.removeProperty) {\n if (property.substr(0, 2) === \"ms\" || property.substr(0, 6) === \"webkit\") {\n //Microsoft and some Webkit browsers don't conform to the standard of capitalizing the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be \"ms-transform\" instead of \"-ms-transform\" for IE9, for example)\n property = \"-\" + property;\n }\n\n style.removeProperty(property.replace(_capsExp, \"-$1\").toLowerCase());\n } else {\n //note: old versions of IE use \"removeAttribute()\" instead of \"removeProperty()\"\n style.removeAttribute(property);\n }\n }\n},\n _addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) {\n var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);\n plugin._pt = pt;\n pt.b = beginning;\n pt.e = end;\n\n plugin._props.push(property);\n\n return pt;\n},\n _nonConvertibleUnits = {\n deg: 1,\n rad: 1,\n turn: 1\n},\n _nonStandardLayouts = {\n grid: 1,\n flex: 1\n},\n //takes a single value like 20px and converts it to the unit specified, like \"%\", returning only the numeric amount.\n_convertToUnit = function _convertToUnit(target, property, value, unit) {\n var curValue = parseFloat(value) || 0,\n curUnit = (value + \"\").trim().substr((curValue + \"\").length) || \"px\",\n // some browsers leave extra whitespace at the beginning of CSS variables, hence the need to trim()\n style = _tempDiv.style,\n horizontal = _horizontalExp.test(property),\n isRootSVG = target.tagName.toLowerCase() === \"svg\",\n measureProperty = (isRootSVG ? \"client\" : \"offset\") + (horizontal ? \"Width\" : \"Height\"),\n amount = 100,\n toPixels = unit === \"px\",\n toPercent = unit === \"%\",\n px,\n parent,\n cache,\n isSVG;\n\n if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {\n return curValue;\n }\n\n curUnit !== \"px\" && !toPixels && (curValue = _convertToUnit(target, property, value, \"px\"));\n isSVG = target.getCTM && _isSVG(target);\n\n if ((toPercent || curUnit === \"%\") && (_transformProps[property] || ~property.indexOf(\"adius\"))) {\n px = isSVG ? target.getBBox()[horizontal ? \"width\" : \"height\"] : target[measureProperty];\n return _round(toPercent ? curValue / px * amount : curValue / 100 * px);\n }\n\n style[horizontal ? \"width\" : \"height\"] = amount + (toPixels ? curUnit : unit);\n parent = ~property.indexOf(\"adius\") || unit === \"em\" && target.appendChild && !isRootSVG ? target : target.parentNode;\n\n if (isSVG) {\n parent = (target.ownerSVGElement || {}).parentNode;\n }\n\n if (!parent || parent === _doc || !parent.appendChild) {\n parent = _doc.body;\n }\n\n cache = parent._gsap;\n\n if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time && !cache.uncache) {\n return _round(curValue / cache.width * amount);\n } else {\n (toPercent || curUnit === \"%\") && !_nonStandardLayouts[_getComputedProperty(parent, \"display\")] && (style.position = _getComputedProperty(target, \"position\"));\n parent === target && (style.position = \"static\"); // like for borderRadius, if it's a % we must have it relative to the target itself but that may not have position: relative or position: absolute in which case it'd go up the chain until it finds its offsetParent (bad). position: static protects against that.\n\n parent.appendChild(_tempDiv);\n px = _tempDiv[measureProperty];\n parent.removeChild(_tempDiv);\n style.position = \"absolute\";\n\n if (horizontal && toPercent) {\n cache = _getCache(parent);\n cache.time = _ticker.time;\n cache.width = parent[measureProperty];\n }\n }\n\n return _round(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);\n},\n _get = function _get(target, property, unit, uncache) {\n var value;\n _pluginInitted || _initCore();\n\n if (property in _propertyAliases && property !== \"transform\") {\n property = _propertyAliases[property];\n\n if (~property.indexOf(\",\")) {\n property = property.split(\",\")[0];\n }\n }\n\n if (_transformProps[property] && property !== \"transform\") {\n value = _parseTransform(target, uncache);\n value = property !== \"transformOrigin\" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + \" \" + value.zOrigin + \"px\";\n } else {\n value = target.style[property];\n\n if (!value || value === \"auto\" || uncache || ~(value + \"\").indexOf(\"calc(\")) {\n value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === \"opacity\" ? 1 : 0); // note: some browsers, like Firefox, don't report borderRadius correctly! Instead, it only reports every corner like borderTopLeftRadius\n }\n }\n\n return unit && !~(value + \"\").trim().indexOf(\" \") ? _convertToUnit(target, property, value, unit) + unit : value;\n},\n _tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) {\n // note: we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n if (!start || start === \"none\") {\n // some browsers like Safari actually PREFER the prefixed property and mis-report the unprefixed value like clipPath (BUG). In other words, even though clipPath exists in the style (\"clipPath\" in target.style) and it's set in the CSS properly (along with -webkit-clip-path), Safari reports clipPath as \"none\" whereas WebkitClipPath reports accurately like \"ellipse(100% 0% at 50% 0%)\", so in this case we must SWITCH to using the prefixed property instead. See https://greensock.com/forums/topic/18310-clippath-doesnt-work-on-ios/\n var p = _checkPropPrefix(prop, target, 1),\n s = p && _getComputedProperty(target, p, 1);\n\n if (s && s !== start) {\n prop = p;\n start = s;\n } else if (prop === \"borderColor\") {\n start = _getComputedProperty(target, \"borderTopColor\"); // Firefox bug: always reports \"borderColor\" as \"\", so we must fall back to borderTopColor. See https://greensock.com/forums/topic/24583-how-to-return-colors-that-i-had-after-reverse/\n }\n }\n\n var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString),\n index = 0,\n matchIndex = 0,\n a,\n result,\n startValues,\n startNum,\n color,\n startValue,\n endValue,\n endNum,\n chunk,\n endUnit,\n startUnit,\n endValues;\n pt.b = start;\n pt.e = end;\n start += \"\"; // ensure values are strings\n\n end += \"\";\n\n if (end === \"auto\") {\n target.style[prop] = end;\n end = _getComputedProperty(target, prop) || end;\n target.style[prop] = start;\n }\n\n a = [start, end];\n\n _colorStringFilter(a); // pass an array with the starting and ending values and let the filter do whatever it needs to the values. If colors are found, it returns true and then we must match where the color shows up order-wise because for things like boxShadow, sometimes the browser provides the computed values with the color FIRST, but the user provides it with the color LAST, so flip them if necessary. Same for drop-shadow().\n\n\n start = a[0];\n end = a[1];\n startValues = start.match(_numWithUnitExp) || [];\n endValues = end.match(_numWithUnitExp) || [];\n\n if (endValues.length) {\n while (result = _numWithUnitExp.exec(end)) {\n endValue = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\" || chunk.substr(-5) === \"hsla(\") {\n color = 1;\n }\n\n if (endValue !== (startValue = startValues[matchIndex++] || \"\")) {\n startNum = parseFloat(startValue) || 0;\n startUnit = startValue.substr((startNum + \"\").length);\n endValue.charAt(1) === \"=\" && (endValue = _parseRelative(startNum, endValue) + startUnit);\n endNum = parseFloat(endValue);\n endUnit = endValue.substr((endNum + \"\").length);\n index = _numWithUnitExp.lastIndex - endUnit.length;\n\n if (!endUnit) {\n //if something like \"perspective:300\" is passed in and we must add a unit to the end\n endUnit = endUnit || _config.units[prop] || startUnit;\n\n if (index === end.length) {\n end += endUnit;\n pt.e += endUnit;\n }\n }\n\n if (startUnit !== endUnit) {\n startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;\n } // these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: endNum - startNum,\n m: color && color < 4 || prop === \"zIndex\" ? Math.round : 0\n };\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n } else {\n pt.r = prop === \"display\" && end === \"none\" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;\n }\n\n _relExp.test(end) && (pt.e = 0); //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within another plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n},\n _keywordToPercent = {\n top: \"0%\",\n bottom: \"100%\",\n left: \"0%\",\n right: \"100%\",\n center: \"50%\"\n},\n _convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) {\n var split = value.split(\" \"),\n x = split[0],\n y = split[1] || \"50%\";\n\n if (x === \"top\" || x === \"bottom\" || y === \"left\" || y === \"right\") {\n //the user provided them in the wrong order, so flip them\n value = x;\n x = y;\n y = value;\n }\n\n split[0] = _keywordToPercent[x] || x;\n split[1] = _keywordToPercent[y] || y;\n return split.join(\" \");\n},\n _renderClearProps = function _renderClearProps(ratio, data) {\n if (data.tween && data.tween._time === data.tween._dur) {\n var target = data.t,\n style = target.style,\n props = data.u,\n cache = target._gsap,\n prop,\n clearTransforms,\n i;\n\n if (props === \"all\" || props === true) {\n style.cssText = \"\";\n clearTransforms = 1;\n } else {\n props = props.split(\",\");\n i = props.length;\n\n while (--i > -1) {\n prop = props[i];\n\n if (_transformProps[prop]) {\n clearTransforms = 1;\n prop = prop === \"transformOrigin\" ? _transformOriginProp : _transformProp;\n }\n\n _removeProperty(target, prop);\n }\n }\n\n if (clearTransforms) {\n _removeProperty(target, _transformProp);\n\n if (cache) {\n cache.svg && target.removeAttribute(\"transform\");\n\n _parseTransform(target, 1); // force all the cached values back to \"normal\"/identity, otherwise if there's another tween that's already set to render transforms on this element, it could display the wrong values.\n\n\n cache.uncache = 1;\n\n _removeIndependentTransforms(style);\n }\n }\n }\n},\n // note: specialProps should return 1 if (and only if) they have a non-zero priority. It indicates we need to sort the linked list.\n_specialProps = {\n clearProps: function clearProps(plugin, target, property, endValue, tween) {\n if (tween.data !== \"isFromStart\") {\n var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);\n pt.u = endValue;\n pt.pr = -10;\n pt.tween = tween;\n\n plugin._props.push(property);\n\n return 1;\n }\n }\n /* className feature (about 0.4kb gzipped).\n , className(plugin, target, property, endValue, tween) {\n \tlet _renderClassName = (ratio, data) => {\n \t\t\tdata.css.render(ratio, data.css);\n \t\t\tif (!ratio || ratio === 1) {\n \t\t\t\tlet inline = data.rmv,\n \t\t\t\t\ttarget = data.t,\n \t\t\t\t\tp;\n \t\t\t\ttarget.setAttribute(\"class\", ratio ? data.e : data.b);\n \t\t\t\tfor (p in inline) {\n \t\t\t\t\t_removeProperty(target, p);\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t_getAllStyles = (target) => {\n \t\t\tlet styles = {},\n \t\t\t\tcomputed = getComputedStyle(target),\n \t\t\t\tp;\n \t\t\tfor (p in computed) {\n \t\t\t\tif (isNaN(p) && p !== \"cssText\" && p !== \"length\") {\n \t\t\t\t\tstyles[p] = computed[p];\n \t\t\t\t}\n \t\t\t}\n \t\t\t_setDefaults(styles, _parseTransform(target, 1));\n \t\t\treturn styles;\n \t\t},\n \t\tstartClassList = target.getAttribute(\"class\"),\n \t\tstyle = target.style,\n \t\tcssText = style.cssText,\n \t\tcache = target._gsap,\n \t\tclassPT = cache.classPT,\n \t\tinlineToRemoveAtEnd = {},\n \t\tdata = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== \"=\") ? endValue : startClassList.replace(new RegExp(\"(?:\\\\s|^)\" + endValue.substr(2) + \"(?![\\\\w-])\"), \"\") + ((endValue.charAt(0) === \"+\") ? \" \" + endValue.substr(2) : \"\")},\n \t\tchangingVars = {},\n \t\tstartVars = _getAllStyles(target),\n \t\ttransformRelated = /(transform|perspective)/i,\n \t\tendVars, p;\n \tif (classPT) {\n \t\tclassPT.r(1, classPT.d);\n \t\t_removeLinkedListItem(classPT.d.plugin, classPT, \"_pt\");\n \t}\n \ttarget.setAttribute(\"class\", data.e);\n \tendVars = _getAllStyles(target, true);\n \ttarget.setAttribute(\"class\", startClassList);\n \tfor (p in endVars) {\n \t\tif (endVars[p] !== startVars[p] && !transformRelated.test(p)) {\n \t\t\tchangingVars[p] = endVars[p];\n \t\t\tif (!style[p] && style[p] !== \"0\") {\n \t\t\t\tinlineToRemoveAtEnd[p] = 1;\n \t\t\t}\n \t\t}\n \t}\n \tcache.classPT = plugin._pt = new PropTween(plugin._pt, target, \"className\", 0, 0, _renderClassName, data, 0, -11);\n \tif (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://greensock.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.\n \t\tstyle.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).\n \t}\n \t_parseTransform(target, true); //to clear the caching of transforms\n \tdata.css = new gsap.plugins.css();\n \tdata.css.init(target, changingVars, tween);\n \tplugin._props.push(...data.css._props);\n \treturn 1;\n }\n */\n\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TRANSFORMS\n * --------------------------------------------------------------------------------------\n */\n_identity2DMatrix = [1, 0, 0, 1, 0, 0],\n _rotationalProperties = {},\n _isNullTransform = function _isNullTransform(value) {\n return value === \"matrix(1, 0, 0, 1, 0, 0)\" || value === \"none\" || !value;\n},\n _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) {\n var matrixString = _getComputedProperty(target, _transformProp);\n\n return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round);\n},\n _getMatrix = function _getMatrix(target, force2D) {\n var cache = target._gsap || _getCache(target),\n style = target.style,\n matrix = _getComputedTransformMatrixAsArray(target),\n parent,\n nextSibling,\n temp,\n addedToDOM;\n\n if (cache.svg && target.getAttribute(\"transform\")) {\n temp = target.transform.baseVal.consolidate().matrix; //ensures that even complex values like \"translate(50,60) rotate(135,0,0)\" are parsed because it mashes it into a matrix.\n\n matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];\n return matrix.join(\",\") === \"1,0,0,1,0,0\" ? _identity2DMatrix : matrix;\n } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {\n //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n //browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not \"none\". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px).\n temp = style.display;\n style.display = \"block\";\n parent = target.parentNode;\n\n if (!parent || !target.offsetParent) {\n // note: in 3.3.0 we switched target.offsetParent to _doc.body.contains(target) to avoid [sometimes unnecessary] MutationObserver calls but that wasn't adequate because there are edge cases where nested position: fixed elements need to get reparented to accurately sense transforms. See https://github.com/greensock/GSAP/issues/388 and https://github.com/greensock/GSAP/issues/375\n addedToDOM = 1; //flag\n\n nextSibling = target.nextElementSibling;\n\n _docElement.appendChild(target); //we must add it to the DOM in order to get values properly\n\n }\n\n matrix = _getComputedTransformMatrixAsArray(target);\n temp ? style.display = temp : _removeProperty(target, \"display\");\n\n if (addedToDOM) {\n nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);\n }\n }\n\n return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;\n},\n _applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {\n var cache = target._gsap,\n matrix = matrixArray || _getMatrix(target, true),\n xOriginOld = cache.xOrigin || 0,\n yOriginOld = cache.yOrigin || 0,\n xOffsetOld = cache.xOffset || 0,\n yOffsetOld = cache.yOffset || 0,\n a = matrix[0],\n b = matrix[1],\n c = matrix[2],\n d = matrix[3],\n tx = matrix[4],\n ty = matrix[5],\n originSplit = origin.split(\" \"),\n xOrigin = parseFloat(originSplit[0]) || 0,\n yOrigin = parseFloat(originSplit[1]) || 0,\n bounds,\n determinant,\n x,\n y;\n\n if (!originIsAbsolute) {\n bounds = _getBBox(target);\n xOrigin = bounds.x + (~originSplit[0].indexOf(\"%\") ? xOrigin / 100 * bounds.width : xOrigin);\n yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf(\"%\") ? yOrigin / 100 * bounds.height : yOrigin);\n } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {\n //if it's zero (like if scaleX and scaleY are zero), skip it to avoid errors with dividing by zero.\n x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;\n y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;\n xOrigin = x;\n yOrigin = y;\n }\n\n if (smooth || smooth !== false && cache.smooth) {\n tx = xOrigin - xOriginOld;\n ty = yOrigin - yOriginOld;\n cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;\n cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;\n } else {\n cache.xOffset = cache.yOffset = 0;\n }\n\n cache.xOrigin = xOrigin;\n cache.yOrigin = yOrigin;\n cache.smooth = !!smooth;\n cache.origin = origin;\n cache.originIsAbsolute = !!originIsAbsolute;\n target.style[_transformOriginProp] = \"0px 0px\"; //otherwise, if someone sets an origin via CSS, it will likely interfere with the SVG transform attribute ones (because remember, we're baking the origin into the matrix() value).\n\n if (pluginToAddPropTweensTo) {\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOrigin\", xOriginOld, xOrigin);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOrigin\", yOriginOld, yOrigin);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOffset\", xOffsetOld, cache.xOffset);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOffset\", yOffsetOld, cache.yOffset);\n }\n\n target.setAttribute(\"data-svg-origin\", xOrigin + \" \" + yOrigin);\n},\n _parseTransform = function _parseTransform(target, uncache) {\n var cache = target._gsap || new GSCache(target);\n\n if (\"x\" in cache && !uncache && !cache.uncache) {\n return cache;\n }\n\n var style = target.style,\n invertedScaleX = cache.scaleX < 0,\n px = \"px\",\n deg = \"deg\",\n cs = getComputedStyle(target),\n origin = _getComputedProperty(target, _transformOriginProp) || \"0\",\n x,\n y,\n z,\n scaleX,\n scaleY,\n rotation,\n rotationX,\n rotationY,\n skewX,\n skewY,\n perspective,\n xOrigin,\n yOrigin,\n matrix,\n angle,\n cos,\n sin,\n a,\n b,\n c,\n d,\n a12,\n a22,\n t1,\n t2,\n t3,\n a13,\n a23,\n a33,\n a42,\n a43,\n a32;\n x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;\n scaleX = scaleY = 1;\n cache.svg = !!(target.getCTM && _isSVG(target));\n\n if (cs.translate) {\n // accommodate independent transforms by combining them into normal ones.\n if (cs.translate !== \"none\" || cs.scale !== \"none\" || cs.rotate !== \"none\") {\n style[_transformProp] = (cs.translate !== \"none\" ? \"translate3d(\" + (cs.translate + \" 0 0\").split(\" \").slice(0, 3).join(\", \") + \") \" : \"\") + (cs.rotate !== \"none\" ? \"rotate(\" + cs.rotate + \") \" : \"\") + (cs.scale !== \"none\" ? \"scale(\" + cs.scale.split(\" \").join(\",\") + \") \" : \"\") + (cs[_transformProp] !== \"none\" ? cs[_transformProp] : \"\");\n }\n\n style.scale = style.rotate = style.translate = \"none\";\n }\n\n matrix = _getMatrix(target, cache.svg);\n\n if (cache.svg) {\n if (cache.uncache) {\n // if cache.uncache is true (and maybe if origin is 0,0), we need to set element.style.transformOrigin = (cache.xOrigin - bbox.x) + \"px \" + (cache.yOrigin - bbox.y) + \"px\". Previously we let the data-svg-origin stay instead, but when introducing revert(), it complicated things.\n t2 = target.getBBox();\n origin = cache.xOrigin - t2.x + \"px \" + (cache.yOrigin - t2.y) + \"px\";\n t1 = \"\";\n } else {\n t1 = !uncache && target.getAttribute(\"data-svg-origin\"); // Remember, to work around browser inconsistencies we always force SVG elements' transformOrigin to 0,0 and offset the translation accordingly.\n }\n\n _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);\n }\n\n xOrigin = cache.xOrigin || 0;\n yOrigin = cache.yOrigin || 0;\n\n if (matrix !== _identity2DMatrix) {\n a = matrix[0]; //a11\n\n b = matrix[1]; //a21\n\n c = matrix[2]; //a31\n\n d = matrix[3]; //a41\n\n x = a12 = matrix[4];\n y = a22 = matrix[5]; //2D matrix\n\n if (matrix.length === 6) {\n scaleX = Math.sqrt(a * a + b * b);\n scaleY = Math.sqrt(d * d + c * c);\n rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).\n\n skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;\n skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));\n\n if (cache.svg) {\n x -= xOrigin - (xOrigin * a + yOrigin * c);\n y -= yOrigin - (xOrigin * b + yOrigin * d);\n } //3D matrix\n\n } else {\n a32 = matrix[6];\n a42 = matrix[7];\n a13 = matrix[8];\n a23 = matrix[9];\n a33 = matrix[10];\n a43 = matrix[11];\n x = matrix[12];\n y = matrix[13];\n z = matrix[14];\n angle = _atan2(a32, a33);\n rotationX = angle * _RAD2DEG; //rotationX\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a12 * cos + a13 * sin;\n t2 = a22 * cos + a23 * sin;\n t3 = a32 * cos + a33 * sin;\n a13 = a12 * -sin + a13 * cos;\n a23 = a22 * -sin + a23 * cos;\n a33 = a32 * -sin + a33 * cos;\n a43 = a42 * -sin + a43 * cos;\n a12 = t1;\n a22 = t2;\n a32 = t3;\n } //rotationY\n\n\n angle = _atan2(-c, a33);\n rotationY = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a * cos - a13 * sin;\n t2 = b * cos - a23 * sin;\n t3 = c * cos - a33 * sin;\n a43 = d * sin + a43 * cos;\n a = t1;\n b = t2;\n c = t3;\n } //rotationZ\n\n\n angle = _atan2(b, a);\n rotation = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(angle);\n sin = Math.sin(angle);\n t1 = a * cos + b * sin;\n t2 = a12 * cos + a22 * sin;\n b = b * cos - a * sin;\n a22 = a22 * cos - a12 * sin;\n a = t1;\n a12 = t2;\n }\n\n if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {\n //when rotationY is set, it will often be parsed as 180 degrees different than it should be, and rotationX and rotation both being 180 (it looks the same), so we adjust for that here.\n rotationX = rotation = 0;\n rotationY = 180 - rotationY;\n }\n\n scaleX = _round(Math.sqrt(a * a + b * b + c * c));\n scaleY = _round(Math.sqrt(a22 * a22 + a32 * a32));\n angle = _atan2(a12, a22);\n skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0;\n perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;\n }\n\n if (cache.svg) {\n //sense if there are CSS transforms applied on an SVG element in which case we must overwrite them when rendering. The transform attribute is more reliable cross-browser, but we can't just remove the CSS ones because they may be applied in a CSS rule somewhere (not just inline).\n t1 = target.getAttribute(\"transform\");\n cache.forceCSS = target.setAttribute(\"transform\", \"\") || !_isNullTransform(_getComputedProperty(target, _transformProp));\n t1 && target.setAttribute(\"transform\", t1);\n }\n }\n\n if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {\n if (invertedScaleX) {\n scaleX *= -1;\n skewX += rotation <= 0 ? 180 : -180;\n rotation += rotation <= 0 ? 180 : -180;\n } else {\n scaleY *= -1;\n skewX += skewX <= 0 ? 180 : -180;\n }\n }\n\n uncache = uncache || cache.uncache;\n 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;\n 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;\n cache.z = z + px;\n cache.scaleX = _round(scaleX);\n cache.scaleY = _round(scaleY);\n cache.rotation = _round(rotation) + deg;\n cache.rotationX = _round(rotationX) + deg;\n cache.rotationY = _round(rotationY) + deg;\n cache.skewX = skewX + deg;\n cache.skewY = skewY + deg;\n cache.transformPerspective = perspective + px;\n\n if (cache.zOrigin = parseFloat(origin.split(\" \")[2]) || 0) {\n style[_transformOriginProp] = _firstTwoOnly(origin);\n }\n\n cache.xOffset = cache.yOffset = 0;\n cache.force3D = _config.force3D;\n cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;\n cache.uncache = 0;\n return cache;\n},\n _firstTwoOnly = function _firstTwoOnly(value) {\n return (value = value.split(\" \"))[0] + \" \" + value[1];\n},\n //for handling transformOrigin values, stripping out the 3rd dimension\n_addPxTranslate = function _addPxTranslate(target, start, value) {\n var unit = getUnit(start);\n return _round(parseFloat(start) + parseFloat(_convertToUnit(target, \"x\", value + \"px\", unit))) + unit;\n},\n _renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) {\n cache.z = \"0px\";\n cache.rotationY = cache.rotationX = \"0deg\";\n cache.force3D = 0;\n\n _renderCSSTransforms(ratio, cache);\n},\n _zeroDeg = \"0deg\",\n _zeroPx = \"0px\",\n _endParenthesis = \") \",\n _renderCSSTransforms = function _renderCSSTransforms(ratio, cache) {\n var _ref = cache || this,\n xPercent = _ref.xPercent,\n yPercent = _ref.yPercent,\n x = _ref.x,\n y = _ref.y,\n z = _ref.z,\n rotation = _ref.rotation,\n rotationY = _ref.rotationY,\n rotationX = _ref.rotationX,\n skewX = _ref.skewX,\n skewY = _ref.skewY,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n transformPerspective = _ref.transformPerspective,\n force3D = _ref.force3D,\n target = _ref.target,\n zOrigin = _ref.zOrigin,\n transforms = \"\",\n use3D = force3D === \"auto\" && ratio && ratio !== 1 || force3D === true; // Safari has a bug that causes it not to render 3D transform-origin values properly, so we force the z origin to 0, record it in the cache, and then do the math here to offset the translate values accordingly (basically do the 3D transform-origin part manually)\n\n\n if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {\n var angle = parseFloat(rotationY) * _DEG2RAD,\n a13 = Math.sin(angle),\n a33 = Math.cos(angle),\n cos;\n\n angle = parseFloat(rotationX) * _DEG2RAD;\n cos = Math.cos(angle);\n x = _addPxTranslate(target, x, a13 * cos * -zOrigin);\n y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);\n z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);\n }\n\n if (transformPerspective !== _zeroPx) {\n transforms += \"perspective(\" + transformPerspective + _endParenthesis;\n }\n\n if (xPercent || yPercent) {\n transforms += \"translate(\" + xPercent + \"%, \" + yPercent + \"%) \";\n }\n\n if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {\n transforms += z !== _zeroPx || use3D ? \"translate3d(\" + x + \", \" + y + \", \" + z + \") \" : \"translate(\" + x + \", \" + y + _endParenthesis;\n }\n\n if (rotation !== _zeroDeg) {\n transforms += \"rotate(\" + rotation + _endParenthesis;\n }\n\n if (rotationY !== _zeroDeg) {\n transforms += \"rotateY(\" + rotationY + _endParenthesis;\n }\n\n if (rotationX !== _zeroDeg) {\n transforms += \"rotateX(\" + rotationX + _endParenthesis;\n }\n\n if (skewX !== _zeroDeg || skewY !== _zeroDeg) {\n transforms += \"skew(\" + skewX + \", \" + skewY + _endParenthesis;\n }\n\n if (scaleX !== 1 || scaleY !== 1) {\n transforms += \"scale(\" + scaleX + \", \" + scaleY + _endParenthesis;\n }\n\n target.style[_transformProp] = transforms || \"translate(0, 0)\";\n},\n _renderSVGTransforms = function _renderSVGTransforms(ratio, cache) {\n var _ref2 = cache || this,\n xPercent = _ref2.xPercent,\n yPercent = _ref2.yPercent,\n x = _ref2.x,\n y = _ref2.y,\n rotation = _ref2.rotation,\n skewX = _ref2.skewX,\n skewY = _ref2.skewY,\n scaleX = _ref2.scaleX,\n scaleY = _ref2.scaleY,\n target = _ref2.target,\n xOrigin = _ref2.xOrigin,\n yOrigin = _ref2.yOrigin,\n xOffset = _ref2.xOffset,\n yOffset = _ref2.yOffset,\n forceCSS = _ref2.forceCSS,\n tx = parseFloat(x),\n ty = parseFloat(y),\n a11,\n a21,\n a12,\n a22,\n temp;\n\n rotation = parseFloat(rotation);\n skewX = parseFloat(skewX);\n skewY = parseFloat(skewY);\n\n if (skewY) {\n //for performance reasons, we combine all skewing into the skewX and rotation values. Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of 10 degrees.\n skewY = parseFloat(skewY);\n skewX += skewY;\n rotation += skewY;\n }\n\n if (rotation || skewX) {\n rotation *= _DEG2RAD;\n skewX *= _DEG2RAD;\n a11 = Math.cos(rotation) * scaleX;\n a21 = Math.sin(rotation) * scaleX;\n a12 = Math.sin(rotation - skewX) * -scaleY;\n a22 = Math.cos(rotation - skewX) * scaleY;\n\n if (skewX) {\n skewY *= _DEG2RAD;\n temp = Math.tan(skewX - skewY);\n temp = Math.sqrt(1 + temp * temp);\n a12 *= temp;\n a22 *= temp;\n\n if (skewY) {\n temp = Math.tan(skewY);\n temp = Math.sqrt(1 + temp * temp);\n a11 *= temp;\n a21 *= temp;\n }\n }\n\n a11 = _round(a11);\n a21 = _round(a21);\n a12 = _round(a12);\n a22 = _round(a22);\n } else {\n a11 = scaleX;\n a22 = scaleY;\n a21 = a12 = 0;\n }\n\n if (tx && !~(x + \"\").indexOf(\"px\") || ty && !~(y + \"\").indexOf(\"px\")) {\n tx = _convertToUnit(target, \"x\", x, \"px\");\n ty = _convertToUnit(target, \"y\", y, \"px\");\n }\n\n if (xOrigin || yOrigin || xOffset || yOffset) {\n tx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);\n ty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);\n }\n\n if (xPercent || yPercent) {\n //The SVG spec doesn't support percentage-based translation in the \"transform\" attribute, so we merge it into the translation to simulate it.\n temp = target.getBBox();\n tx = _round(tx + xPercent / 100 * temp.width);\n ty = _round(ty + yPercent / 100 * temp.height);\n }\n\n temp = \"matrix(\" + a11 + \",\" + a21 + \",\" + a12 + \",\" + a22 + \",\" + tx + \",\" + ty + \")\";\n target.setAttribute(\"transform\", temp);\n forceCSS && (target.style[_transformProp] = temp); //some browsers prioritize CSS transforms over the transform attribute. When we sense that the user has CSS transforms applied, we must overwrite them this way (otherwise some browser simply won't render the transform attribute changes!)\n},\n _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue) {\n var cap = 360,\n isString = _isString(endValue),\n endNum = parseFloat(endValue) * (isString && ~endValue.indexOf(\"rad\") ? _RAD2DEG : 1),\n change = endNum - startNum,\n finalValue = startNum + change + \"deg\",\n direction,\n pt;\n\n if (isString) {\n direction = endValue.split(\"_\")[1];\n\n if (direction === \"short\") {\n change %= cap;\n\n if (change !== change % (cap / 2)) {\n change += change < 0 ? cap : -cap;\n }\n }\n\n if (direction === \"cw\" && change < 0) {\n change = (change + cap * _bigNum) % cap - ~~(change / cap) * cap;\n } else if (direction === \"ccw\" && change > 0) {\n change = (change - cap * _bigNum) % cap - ~~(change / cap) * cap;\n }\n }\n\n plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);\n pt.e = finalValue;\n pt.u = \"deg\";\n\n plugin._props.push(property);\n\n return pt;\n},\n _assign = function _assign(target, source) {\n // Internet Explorer doesn't have Object.assign(), so we recreate it here.\n for (var p in source) {\n target[p] = source[p];\n }\n\n return target;\n},\n _addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) {\n //for handling cases where someone passes in a whole transform string, like transform: \"scale(2, 3) rotate(20deg) translateY(30em)\"\n var startCache = _assign({}, target._gsap),\n exclude = \"perspective,force3D,transformOrigin,svgOrigin\",\n style = target.style,\n endCache,\n p,\n startValue,\n endValue,\n startNum,\n endNum,\n startUnit,\n endUnit;\n\n if (startCache.svg) {\n startValue = target.getAttribute(\"transform\");\n target.setAttribute(\"transform\", \"\");\n style[_transformProp] = transforms;\n endCache = _parseTransform(target, 1);\n\n _removeProperty(target, _transformProp);\n\n target.setAttribute(\"transform\", startValue);\n } else {\n startValue = getComputedStyle(target)[_transformProp];\n style[_transformProp] = transforms;\n endCache = _parseTransform(target, 1);\n style[_transformProp] = startValue;\n }\n\n for (p in _transformProps) {\n startValue = startCache[p];\n endValue = endCache[p];\n\n if (startValue !== endValue && exclude.indexOf(p) < 0) {\n //tweening to no perspective gives very unintuitive results - just keep the same perspective in that case.\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);\n endNum = parseFloat(endValue);\n plugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);\n plugin._pt.u = endUnit || 0;\n\n plugin._props.push(p);\n }\n }\n\n _assign(endCache, startCache);\n}; // handle splitting apart padding, margin, borderWidth, and borderRadius into their 4 components. Firefox, for example, won't report borderRadius correctly - it will only do borderTopLeftRadius and the other corners. We also want to handle paddingTop, marginLeft, borderRightWidth, etc.\n\n\n_forEachName(\"padding,margin,Width,Radius\", function (name, index) {\n var t = \"Top\",\n r = \"Right\",\n b = \"Bottom\",\n l = \"Left\",\n props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) {\n return index < 2 ? name + side : \"border\" + side + name;\n });\n\n _specialProps[index > 1 ? \"border\" + name : name] = function (plugin, target, property, endValue, tween) {\n var a, vars;\n\n if (arguments.length < 4) {\n // getter, passed target, property, and unit (from _get())\n a = props.map(function (prop) {\n return _get(plugin, prop, property);\n });\n vars = a.join(\" \");\n return vars.split(a[0]).length === 5 ? a[0] : vars;\n }\n\n a = (endValue + \"\").split(\" \");\n vars = {};\n props.forEach(function (prop, i) {\n return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];\n });\n plugin.init(target, vars, tween);\n };\n});\n\nexport var CSSPlugin = {\n name: \"css\",\n register: _initCore,\n targetTest: function targetTest(target) {\n return target.style && target.nodeType;\n },\n init: function init(target, vars, tween, index, targets) {\n var props = this._props,\n style = target.style,\n startAt = tween.vars.startAt,\n startValue,\n endValue,\n endNum,\n startNum,\n type,\n specialProp,\n p,\n startUnit,\n endUnit,\n relative,\n isTransformRelated,\n transformPropTween,\n cache,\n smooth,\n hasPriority,\n inlineProps;\n _pluginInitted || _initCore(); // we may call init() multiple times on the same plugin instance, like when adding special properties, so make sure we don't overwrite the revert data or inlineProps\n\n this.styles = this.styles || _getStyleSaver(target);\n inlineProps = this.styles.props;\n this.tween = tween;\n\n for (p in vars) {\n if (p === \"autoRound\") {\n continue;\n }\n\n endValue = vars[p];\n\n if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) {\n // plugins\n continue;\n }\n\n type = typeof endValue;\n specialProp = _specialProps[p];\n\n if (type === \"function\") {\n endValue = endValue.call(tween, index, target, targets);\n type = typeof endValue;\n }\n\n if (type === \"string\" && ~endValue.indexOf(\"random(\")) {\n endValue = _replaceRandom(endValue);\n }\n\n if (specialProp) {\n specialProp(this, target, p, endValue, tween) && (hasPriority = 1);\n } else if (p.substr(0, 2) === \"--\") {\n //CSS variable\n startValue = (getComputedStyle(target).getPropertyValue(p) + \"\").trim();\n endValue += \"\";\n _colorExp.lastIndex = 0;\n\n if (!_colorExp.test(startValue)) {\n // colors don't have units\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n }\n\n endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);\n this.add(style, \"setProperty\", startValue, endValue, index, targets, 0, 0, p);\n props.push(p);\n inlineProps.push(p, 0, style[p]);\n } else if (type !== \"undefined\") {\n if (startAt && p in startAt) {\n // in case someone hard-codes a complex value as the start, like top: \"calc(2vh / 2)\". Without this, it'd use the computed value (always in px)\n startValue = typeof startAt[p] === \"function\" ? startAt[p].call(tween, index, target, targets) : startAt[p];\n _isString(startValue) && ~startValue.indexOf(\"random(\") && (startValue = _replaceRandom(startValue));\n getUnit(startValue + \"\") || (startValue += _config.units[p] || getUnit(_get(target, p)) || \"\"); // for cases when someone passes in a unitless value like {x: 100}; if we try setting translate(100, 0px) it won't work.\n\n (startValue + \"\").charAt(1) === \"=\" && (startValue = _get(target, p)); // can't work with relative values\n } else {\n startValue = _get(target, p);\n }\n\n startNum = parseFloat(startValue);\n relative = type === \"string\" && endValue.charAt(1) === \"=\" && endValue.substr(0, 2);\n relative && (endValue = endValue.substr(2));\n endNum = parseFloat(endValue);\n\n if (p in _propertyAliases) {\n if (p === \"autoAlpha\") {\n //special case where we control the visibility along with opacity. We still allow the opacity value to pass through and get tweened.\n if (startNum === 1 && _get(target, \"visibility\") === \"hidden\" && endNum) {\n //if visibility is initially set to \"hidden\", we should interpret that as intent to make opacity 0 (a convenience)\n startNum = 0;\n }\n\n inlineProps.push(\"visibility\", 0, style.visibility);\n\n _addNonTweeningPT(this, style, \"visibility\", startNum ? \"inherit\" : \"hidden\", endNum ? \"inherit\" : \"hidden\", !endNum);\n }\n\n if (p !== \"scale\" && p !== \"transform\") {\n p = _propertyAliases[p];\n ~p.indexOf(\",\") && (p = p.split(\",\")[0]);\n }\n }\n\n isTransformRelated = p in _transformProps; //--- TRANSFORM-RELATED ---\n\n if (isTransformRelated) {\n this.styles.save(p);\n\n if (!transformPropTween) {\n cache = target._gsap;\n cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform); // if, for example, gsap.set(... {transform:\"translateX(50vw)\"}), the _get() call doesn't parse the transform, thus cache.renderTransform won't be set yet so force the parsing of the transform here.\n\n smooth = vars.smoothOrigin !== false && cache.smooth;\n transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1); //the first time through, create the rendering PropTween so that it runs LAST (in the linked list, we keep adding to the beginning)\n\n transformPropTween.dep = 1; //flag it as dependent so that if things get killed/overwritten and this is the only PropTween left, we can safely kill the whole tween.\n }\n\n if (p === \"scale\") {\n this._pt = new PropTween(this._pt, cache, \"scaleY\", cache.scaleY, (relative ? _parseRelative(cache.scaleY, relative + endNum) : endNum) - cache.scaleY || 0, _renderCSSProp);\n this._pt.u = 0;\n props.push(\"scaleY\", p);\n p += \"X\";\n } else if (p === \"transformOrigin\") {\n inlineProps.push(_transformOriginProp, 0, style[_transformOriginProp]);\n endValue = _convertKeywordsToPercentages(endValue); //in case something like \"left top\" or \"bottom right\" is passed in. Convert to percentages.\n\n if (cache.svg) {\n _applySVGOrigin(target, endValue, 0, smooth, 0, this);\n } else {\n endUnit = parseFloat(endValue.split(\" \")[2]) || 0; //handle the zOrigin separately!\n\n endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, \"zOrigin\", cache.zOrigin, endUnit);\n\n _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));\n }\n\n continue;\n } else if (p === \"svgOrigin\") {\n _applySVGOrigin(target, endValue, 1, smooth, 0, this);\n\n continue;\n } else if (p in _rotationalProperties) {\n _addRotationalPropTween(this, cache, p, startNum, relative ? _parseRelative(startNum, relative + endValue) : endValue);\n\n continue;\n } else if (p === \"smoothOrigin\") {\n _addNonTweeningPT(this, cache, \"smooth\", cache.smooth, endValue);\n\n continue;\n } else if (p === \"force3D\") {\n cache[p] = endValue;\n continue;\n } else if (p === \"transform\") {\n _addRawTransformPTs(this, endValue, target);\n\n continue;\n }\n } else if (!(p in style)) {\n p = _checkPropPrefix(p) || p;\n }\n\n if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {\n startUnit = (startValue + \"\").substr((startNum + \"\").length);\n endNum || (endNum = 0); // protect against NaN\n\n endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit);\n startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));\n 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);\n this._pt.u = endUnit || 0;\n\n if (startUnit !== endUnit && endUnit !== \"%\") {\n //when the tween goes all the way back to the beginning, we need to revert it to the OLD/ORIGINAL value (with those units). We record that as a \"b\" (beginning) property and point to a render method that handles that. (performance optimization)\n this._pt.b = startValue;\n this._pt.r = _renderCSSPropWithBeginning;\n }\n } else if (!(p in style)) {\n if (p in target) {\n //maybe it's not a style - it could be a property added directly to an element in which case we'll try to animate that.\n this.add(target, p, startValue || target[p], relative ? relative + endValue : endValue, index, targets);\n } else if (p !== \"parseTransform\") {\n _missingPlugin(p, endValue);\n\n continue;\n }\n } else {\n _tweenComplexCSSString.call(this, target, p, startValue, relative ? relative + endValue : endValue);\n }\n\n isTransformRelated || (p in style ? inlineProps.push(p, 0, style[p]) : inlineProps.push(p, 1, startValue || target[p]));\n props.push(p);\n }\n }\n\n hasPriority && _sortPropTweensByPriority(this);\n },\n render: function render(ratio, data) {\n if (data.tween._time || !_reverting()) {\n var pt = data._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n } else {\n data.styles.revert();\n }\n },\n get: _get,\n aliases: _propertyAliases,\n getSetter: function getSetter(target, property, plugin) {\n //returns a setter function that accepts target, property, value and applies it accordingly. Remember, properties like \"x\" aren't as simple as target.style.property = value because they've got to be applied to a proxy object and then merged into a transform string in a renderer.\n var p = _propertyAliases[property];\n p && p.indexOf(\",\") < 0 && (property = p);\n 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);\n },\n core: {\n _removeProperty: _removeProperty,\n _getMatrix: _getMatrix\n }\n};\ngsap.utils.checkPrefix = _checkPropPrefix;\ngsap.core.getStyleSaver = _getStyleSaver;\n\n(function (positionAndScale, rotation, others, aliases) {\n var all = _forEachName(positionAndScale + \",\" + rotation + \",\" + others, function (name) {\n _transformProps[name] = 1;\n });\n\n _forEachName(rotation, function (name) {\n _config.units[name] = \"deg\";\n _rotationalProperties[name] = 1;\n });\n\n _propertyAliases[all[13]] = positionAndScale + \",\" + rotation;\n\n _forEachName(aliases, function (name) {\n var split = name.split(\":\");\n _propertyAliases[split[1]] = all[split[0]];\n });\n})(\"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\");\n\n_forEachName(\"x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective\", function (name) {\n _config.units[name] = \"px\";\n});\n\ngsap.registerPlugin(CSSPlugin);\nexport { CSSPlugin as default, _getBBox, _createElement, _checkPropPrefix as checkPrefix };","/*!\n * MotionPathPlugin 3.11.5\n * https://greensock.com\n *\n * @license Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nimport { getRawPath, cacheRawPathMeasurements, getPositionOnPath, pointsToSegment, flatPointsToSegment, sliceRawPath, stringToRawPath, rawPathToString, transformRawPath, convertToPath as _convertToPath } from \"./utils/paths.js\";\nimport { getGlobalMatrix } from \"./utils/matrix.js\";\n\nvar _xProps = \"x,translateX,left,marginLeft,xPercent\".split(\",\"),\n _yProps = \"y,translateY,top,marginTop,yPercent\".split(\",\"),\n _DEG2RAD = Math.PI / 180,\n gsap,\n PropTween,\n _getUnit,\n _toArray,\n _getStyleSaver,\n _reverting,\n _getGSAP = function _getGSAP() {\n return gsap || typeof window !== \"undefined\" && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n},\n _populateSegmentFromArray = function _populateSegmentFromArray(segment, values, property, mode) {\n //mode: 0 = x but don't fill y yet, 1 = y, 2 = x and fill y with 0.\n var l = values.length,\n si = mode === 2 ? 0 : mode,\n i = 0,\n v;\n\n for (; i < l; i++) {\n segment[si] = v = parseFloat(values[i][property]);\n mode === 2 && (segment[si + 1] = 0);\n si += 2;\n }\n\n return segment;\n},\n _getPropNum = function _getPropNum(target, prop, unit) {\n return parseFloat(target._gsap.get(target, prop, unit || \"px\")) || 0;\n},\n _relativize = function _relativize(segment) {\n var x = segment[0],\n y = segment[1],\n i;\n\n for (i = 2; i < segment.length; i += 2) {\n x = segment[i] += x;\n y = segment[i + 1] += y;\n }\n},\n // feed in an array of quadratic bezier points like [{x: 0, y: 0}, ...] and it'll convert it to cubic bezier\n// _quadToCubic = points => {\n// \tlet cubic = [],\n// \t\tl = points.length - 1,\n// \t\ti = 1,\n// \t\ta, b, c;\n// \tfor (; i < l; i+=2) {\n// \t\ta = points[i-1];\n// \t\tb = points[i];\n// \t\tc = points[i+1];\n// \t\tcubic.push(a, {x: (2 * b.x + a.x) / 3, y: (2 * b.y + a.y) / 3}, {x: (2 * b.x + c.x) / 3, y: (2 * b.y + c.y) / 3});\n// \t}\n// \tcubic.push(points[l]);\n// \treturn cubic;\n// },\n_segmentToRawPath = function _segmentToRawPath(plugin, segment, target, x, y, slicer, vars, unitX, unitY) {\n if (vars.type === \"cubic\") {\n segment = [segment];\n } else {\n vars.fromCurrent !== false && segment.unshift(_getPropNum(target, x, unitX), y ? _getPropNum(target, y, unitY) : 0);\n vars.relative && _relativize(segment);\n var pointFunc = y ? pointsToSegment : flatPointsToSegment;\n segment = [pointFunc(segment, vars.curviness)];\n }\n\n segment = slicer(_align(segment, target, vars));\n\n _addDimensionalPropTween(plugin, target, x, segment, \"x\", unitX);\n\n y && _addDimensionalPropTween(plugin, target, y, segment, \"y\", unitY);\n return cacheRawPathMeasurements(segment, vars.resolution || (vars.curviness === 0 ? 20 : 12)); //when curviness is 0, it creates control points right on top of the anchors which makes it more sensitive to resolution, thus we change the default accordingly.\n},\n _emptyFunc = function _emptyFunc(v) {\n return v;\n},\n _numExp = /[-+\\.]*\\d+\\.?(?:e-|e\\+)?\\d*/g,\n _originToPoint = function _originToPoint(element, origin, parentMatrix) {\n // origin is an array of normalized values (0-1) in relation to the width/height, so [0.5, 0.5] would be the center. It can also be \"auto\" in which case it will be the top left unless it's a , when it will start at the beginning of the path itself.\n var m = getGlobalMatrix(element),\n x = 0,\n y = 0,\n svg;\n\n if ((element.tagName + \"\").toLowerCase() === \"svg\") {\n svg = element.viewBox.baseVal;\n svg.width || (svg = {\n width: +element.getAttribute(\"width\"),\n height: +element.getAttribute(\"height\")\n });\n } else {\n svg = origin && element.getBBox && element.getBBox();\n }\n\n if (origin && origin !== \"auto\") {\n x = origin.push ? origin[0] * (svg ? svg.width : element.offsetWidth || 0) : origin.x;\n y = origin.push ? origin[1] * (svg ? svg.height : element.offsetHeight || 0) : origin.y;\n }\n\n return parentMatrix.apply(x || y ? m.apply({\n x: x,\n y: y\n }) : {\n x: m.e,\n y: m.f\n });\n},\n _getAlignMatrix = function _getAlignMatrix(fromElement, toElement, fromOrigin, toOrigin) {\n var parentMatrix = getGlobalMatrix(fromElement.parentNode, true, true),\n m = parentMatrix.clone().multiply(getGlobalMatrix(toElement)),\n fromPoint = _originToPoint(fromElement, fromOrigin, parentMatrix),\n _originToPoint2 = _originToPoint(toElement, toOrigin, parentMatrix),\n x = _originToPoint2.x,\n y = _originToPoint2.y,\n p;\n\n m.e = m.f = 0;\n\n if (toOrigin === \"auto\" && toElement.getTotalLength && toElement.tagName.toLowerCase() === \"path\") {\n p = toElement.getAttribute(\"d\").match(_numExp) || [];\n p = m.apply({\n x: +p[0],\n y: +p[1]\n });\n x += p.x;\n y += p.y;\n } //if (p || (toElement.getBBox && fromElement.getBBox && toElement.ownerSVGElement === fromElement.ownerSVGElement)) {\n\n\n if (p) {\n p = m.apply(toElement.getBBox());\n x -= p.x;\n y -= p.y;\n }\n\n m.e = x - fromPoint.x;\n m.f = y - fromPoint.y;\n return m;\n},\n _align = function _align(rawPath, target, _ref) {\n var align = _ref.align,\n matrix = _ref.matrix,\n offsetX = _ref.offsetX,\n offsetY = _ref.offsetY,\n alignOrigin = _ref.alignOrigin;\n\n var x = rawPath[0][0],\n y = rawPath[0][1],\n curX = _getPropNum(target, \"x\"),\n curY = _getPropNum(target, \"y\"),\n alignTarget,\n m,\n p;\n\n if (!rawPath || !rawPath.length) {\n return getRawPath(\"M0,0L0,0\");\n }\n\n if (align) {\n if (align === \"self\" || (alignTarget = _toArray(align)[0] || target) === target) {\n transformRawPath(rawPath, 1, 0, 0, 1, curX - x, curY - y);\n } else {\n if (alignOrigin && alignOrigin[2] !== false) {\n gsap.set(target, {\n transformOrigin: alignOrigin[0] * 100 + \"% \" + alignOrigin[1] * 100 + \"%\"\n });\n } else {\n alignOrigin = [_getPropNum(target, \"xPercent\") / -100, _getPropNum(target, \"yPercent\") / -100];\n }\n\n m = _getAlignMatrix(target, alignTarget, alignOrigin, \"auto\");\n p = m.apply({\n x: x,\n y: y\n });\n transformRawPath(rawPath, m.a, m.b, m.c, m.d, curX + m.e - (p.x - m.e), curY + m.f - (p.y - m.f));\n }\n }\n\n if (matrix) {\n transformRawPath(rawPath, matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n } else if (offsetX || offsetY) {\n transformRawPath(rawPath, 1, 0, 0, 1, offsetX || 0, offsetY || 0);\n }\n\n return rawPath;\n},\n _addDimensionalPropTween = function _addDimensionalPropTween(plugin, target, property, rawPath, pathProperty, forceUnit) {\n var cache = target._gsap,\n harness = cache.harness,\n alias = harness && harness.aliases && harness.aliases[property],\n prop = alias && alias.indexOf(\",\") < 0 ? alias : property,\n pt = plugin._pt = new PropTween(plugin._pt, target, prop, 0, 0, _emptyFunc, 0, cache.set(target, prop, plugin));\n pt.u = _getUnit(cache.get(target, prop, forceUnit)) || 0;\n pt.path = rawPath;\n pt.pp = pathProperty;\n\n plugin._props.push(prop);\n},\n _sliceModifier = function _sliceModifier(start, end) {\n return function (rawPath) {\n return start || end !== 1 ? sliceRawPath(rawPath, start, end) : rawPath;\n };\n};\n\nexport var MotionPathPlugin = {\n version: \"3.11.5\",\n name: \"motionPath\",\n register: function register(core, Plugin, propTween) {\n gsap = core;\n _getUnit = gsap.utils.getUnit;\n _toArray = gsap.utils.toArray;\n _getStyleSaver = gsap.core.getStyleSaver;\n\n _reverting = gsap.core.reverting || function () {};\n\n PropTween = propTween;\n },\n init: function init(target, vars, tween) {\n if (!gsap) {\n console.warn(\"Please gsap.registerPlugin(MotionPathPlugin)\");\n return false;\n }\n\n if (!(typeof vars === \"object\" && !vars.style) || !vars.path) {\n vars = {\n path: vars\n };\n }\n\n var rawPaths = [],\n _vars = vars,\n path = _vars.path,\n autoRotate = _vars.autoRotate,\n unitX = _vars.unitX,\n unitY = _vars.unitY,\n x = _vars.x,\n y = _vars.y,\n firstObj = path[0],\n slicer = _sliceModifier(vars.start, \"end\" in vars ? vars.end : 1),\n rawPath,\n p;\n\n this.rawPaths = rawPaths;\n this.target = target;\n this.tween = tween;\n this.styles = _getStyleSaver && _getStyleSaver(target, \"transform\");\n\n if (this.rotate = autoRotate || autoRotate === 0) {\n //get the rotational data FIRST so that the setTransform() method is called in the correct order in the render() loop - rotation gets set last.\n this.rOffset = parseFloat(autoRotate) || 0;\n this.radians = !!vars.useRadians;\n this.rProp = vars.rotation || \"rotation\"; // rotation property\n\n this.rSet = target._gsap.set(target, this.rProp, this); // rotation setter\n\n this.ru = _getUnit(target._gsap.get(target, this.rProp)) || 0; // rotation units\n }\n\n if (Array.isArray(path) && !(\"closed\" in path) && typeof firstObj !== \"number\") {\n for (p in firstObj) {\n if (!x && ~_xProps.indexOf(p)) {\n x = p;\n } else if (!y && ~_yProps.indexOf(p)) {\n y = p;\n }\n }\n\n if (x && y) {\n //correlated values\n rawPaths.push(_segmentToRawPath(this, _populateSegmentFromArray(_populateSegmentFromArray([], path, x, 0), path, y, 1), target, x, y, slicer, vars, unitX || _getUnit(path[0][x]), unitY || _getUnit(path[0][y])));\n } else {\n x = y = 0;\n }\n\n for (p in firstObj) {\n p !== x && p !== y && rawPaths.push(_segmentToRawPath(this, _populateSegmentFromArray([], path, p, 2), target, p, 0, slicer, vars, _getUnit(path[0][p])));\n }\n } else {\n rawPath = slicer(_align(getRawPath(vars.path), target, vars));\n cacheRawPathMeasurements(rawPath, vars.resolution);\n rawPaths.push(rawPath);\n\n _addDimensionalPropTween(this, target, vars.x || \"x\", rawPath, \"x\", vars.unitX || \"px\");\n\n _addDimensionalPropTween(this, target, vars.y || \"y\", rawPath, \"y\", vars.unitY || \"px\");\n }\n },\n render: function render(ratio, data) {\n var rawPaths = data.rawPaths,\n i = rawPaths.length,\n pt = data._pt;\n\n if (data.tween._time || !_reverting()) {\n if (ratio > 1) {\n ratio = 1;\n } else if (ratio < 0) {\n ratio = 0;\n }\n\n while (i--) {\n getPositionOnPath(rawPaths[i], ratio, !i && data.rotate, rawPaths[i]);\n }\n\n while (pt) {\n pt.set(pt.t, pt.p, pt.path[pt.pp] + pt.u, pt.d, ratio);\n pt = pt._next;\n }\n\n data.rotate && data.rSet(data.target, data.rProp, rawPaths[0].angle * (data.radians ? _DEG2RAD : 1) + data.rOffset + data.ru, data, ratio);\n } else {\n data.styles.revert();\n }\n },\n getLength: function getLength(path) {\n return cacheRawPathMeasurements(getRawPath(path)).totalLength;\n },\n sliceRawPath: sliceRawPath,\n getRawPath: getRawPath,\n pointsToSegment: pointsToSegment,\n stringToRawPath: stringToRawPath,\n rawPathToString: rawPathToString,\n transformRawPath: transformRawPath,\n getGlobalMatrix: getGlobalMatrix,\n getPositionOnPath: getPositionOnPath,\n cacheRawPathMeasurements: cacheRawPathMeasurements,\n convertToPath: function convertToPath(targets, swap) {\n return _toArray(targets).map(function (target) {\n return _convertToPath(target, swap !== false);\n });\n },\n convertCoordinates: function convertCoordinates(fromElement, toElement, point) {\n var m = getGlobalMatrix(toElement, true, true).multiply(getGlobalMatrix(fromElement));\n return point ? m.apply(point) : m;\n },\n getAlignMatrix: _getAlignMatrix,\n getRelativePosition: function getRelativePosition(fromElement, toElement, fromOrigin, toOrigin) {\n var m = _getAlignMatrix(fromElement, toElement, fromOrigin, toOrigin);\n\n return {\n x: m.e,\n y: m.f\n };\n },\n arrayToRawPath: function arrayToRawPath(value, vars) {\n vars = vars || {};\n\n var segment = _populateSegmentFromArray(_populateSegmentFromArray([], value, vars.x || \"x\", 0), value, vars.y || \"y\", 1);\n\n vars.relative && _relativize(segment);\n return [vars.type === \"cubic\" ? segment : pointsToSegment(segment, vars.curviness)];\n }\n};\n_getGSAP() && gsap.registerPlugin(MotionPathPlugin);\nexport { MotionPathPlugin as default };","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*!\n * Observer 3.11.5\n * https://greensock.com\n *\n * @license Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar gsap,\n _coreInitted,\n _clamp,\n _win,\n _doc,\n _docEl,\n _body,\n _isTouch,\n _pointerType,\n ScrollTrigger,\n _root,\n _normalizer,\n _eventTypes,\n _context,\n _getGSAP = function _getGSAP() {\n return gsap || typeof window !== \"undefined\" && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n},\n _passThrough = function _passThrough(p) {\n return p;\n},\n _startup = 1,\n _observers = [],\n _scrollers = [],\n _proxies = [],\n _getTime = Date.now,\n _bridge = function _bridge(name, value) {\n return value;\n},\n _integrate = function _integrate() {\n var core = ScrollTrigger.core,\n data = core.bridge || {},\n scrollers = core._scrollers,\n proxies = core._proxies;\n scrollers.push.apply(scrollers, _scrollers);\n proxies.push.apply(proxies, _proxies);\n _scrollers = scrollers;\n _proxies = proxies;\n\n _bridge = function _bridge(name, value) {\n return data[name](value);\n };\n},\n _getProxyProp = function _getProxyProp(element, property) {\n return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property];\n},\n _isViewport = function _isViewport(el) {\n return !!~_root.indexOf(el);\n},\n _addListener = function _addListener(element, type, func, nonPassive, capture) {\n return element.addEventListener(type, func, {\n passive: !nonPassive,\n capture: !!capture\n });\n},\n _removeListener = function _removeListener(element, type, func, capture) {\n return element.removeEventListener(type, func, !!capture);\n},\n _scrollLeft = \"scrollLeft\",\n _scrollTop = \"scrollTop\",\n _onScroll = function _onScroll() {\n return _normalizer && _normalizer.isPressed || _scrollers.cache++;\n},\n _scrollCacheFunc = function _scrollCacheFunc(f, doNotCache) {\n var cachingFunc = function cachingFunc(value) {\n // since reading the scrollTop/scrollLeft/pageOffsetY/pageOffsetX can trigger a layout, this function allows us to cache the value so it only gets read fresh after a \"scroll\" event fires (or while we're refreshing because that can lengthen the page and alter the scroll position). when \"soft\" is true, that means don't actually set the scroll, but cache the new value instead (useful in ScrollSmoother)\n if (value || value === 0) {\n _startup && (_win.history.scrollRestoration = \"manual\"); // otherwise the new position will get overwritten by the browser onload.\n\n var isNormalizing = _normalizer && _normalizer.isPressed;\n value = cachingFunc.v = Math.round(value) || (_normalizer && _normalizer.iOS ? 1 : 0); //TODO: iOS Bug: if you allow it to go to 0, Safari can start to report super strange (wildly inaccurate) touch positions!\n\n f(value);\n cachingFunc.cacheID = _scrollers.cache;\n isNormalizing && _bridge(\"ss\", value); // set scroll (notify ScrollTrigger so it can dispatch a \"scrollStart\" event if necessary\n } else if (doNotCache || _scrollers.cache !== cachingFunc.cacheID || _bridge(\"ref\")) {\n cachingFunc.cacheID = _scrollers.cache;\n cachingFunc.v = f();\n }\n\n return cachingFunc.v + cachingFunc.offset;\n };\n\n cachingFunc.offset = 0;\n return f && cachingFunc;\n},\n _horizontal = {\n s: _scrollLeft,\n p: \"left\",\n p2: \"Left\",\n os: \"right\",\n os2: \"Right\",\n d: \"width\",\n d2: \"Width\",\n a: \"x\",\n sc: _scrollCacheFunc(function (value) {\n return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0;\n })\n},\n _vertical = {\n s: _scrollTop,\n p: \"top\",\n p2: \"Top\",\n os: \"bottom\",\n os2: \"Bottom\",\n d: \"height\",\n d2: \"Height\",\n a: \"y\",\n op: _horizontal,\n sc: _scrollCacheFunc(function (value) {\n return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0;\n })\n},\n _getTarget = function _getTarget(t) {\n return gsap.utils.toArray(t)[0] || (typeof t === \"string\" && gsap.config().nullTargetWarn !== false ? console.warn(\"Element not found:\", t) : null);\n},\n _getScrollFunc = function _getScrollFunc(element, _ref) {\n var s = _ref.s,\n sc = _ref.sc;\n // we store the scroller functions in an alternating sequenced Array like [element, verticalScrollFunc, horizontalScrollFunc, ...] so that we can minimize memory, maximize performance, and we also record the last position as a \".rec\" property in order to revert to that after refreshing to ensure things don't shift around.\n _isViewport(element) && (element = _doc.scrollingElement || _docEl);\n\n var i = _scrollers.indexOf(element),\n offset = sc === _vertical.sc ? 1 : 2;\n\n !~i && (i = _scrollers.push(element) - 1);\n _scrollers[i + offset] || element.addEventListener(\"scroll\", _onScroll); // clear the cache when a scroll occurs\n\n var prev = _scrollers[i + offset],\n func = prev || (_scrollers[i + offset] = _scrollCacheFunc(_getProxyProp(element, s), true) || (_isViewport(element) ? sc : _scrollCacheFunc(function (value) {\n return arguments.length ? element[s] = value : element[s];\n })));\n func.target = element;\n prev || (func.smooth = gsap.getProperty(element, \"scrollBehavior\") === \"smooth\"); // only set it the first time (don't reset every time a scrollFunc is requested because perhaps it happens during a refresh() when it's disabled in ScrollTrigger.\n\n return func;\n},\n _getVelocityProp = function _getVelocityProp(value, minTimeRefresh, useDelta) {\n var v1 = value,\n v2 = value,\n t1 = _getTime(),\n t2 = t1,\n min = minTimeRefresh || 50,\n dropToZeroTime = Math.max(500, min * 3),\n update = function update(value, force) {\n var t = _getTime();\n\n if (force || t - t1 > min) {\n v2 = v1;\n v1 = value;\n t2 = t1;\n t1 = t;\n } else if (useDelta) {\n v1 += value;\n } else {\n // not totally necessary, but makes it a bit more accurate by adjusting the v1 value according to the new slope. This way we're not just ignoring the incoming data. Removing for now because it doesn't seem to make much practical difference and it's probably not worth the kb.\n v1 = v2 + (value - v2) / (t - t2) * (t1 - t2);\n }\n },\n reset = function reset() {\n v2 = v1 = useDelta ? 0 : v1;\n t2 = t1 = 0;\n },\n getVelocity = function getVelocity(latestValue) {\n var tOld = t2,\n vOld = v2,\n t = _getTime();\n\n (latestValue || latestValue === 0) && latestValue !== v1 && update(latestValue);\n return t1 === t2 || t - t2 > dropToZeroTime ? 0 : (v1 + (useDelta ? vOld : -vOld)) / ((useDelta ? t : t1) - tOld) * 1000;\n };\n\n return {\n update: update,\n reset: reset,\n getVelocity: getVelocity\n };\n},\n _getEvent = function _getEvent(e, preventDefault) {\n preventDefault && !e._gsapAllow && e.preventDefault();\n return e.changedTouches ? e.changedTouches[0] : e;\n},\n _getAbsoluteMax = function _getAbsoluteMax(a) {\n var max = Math.max.apply(Math, a),\n min = Math.min.apply(Math, a);\n return Math.abs(max) >= Math.abs(min) ? max : min;\n},\n _setScrollTrigger = function _setScrollTrigger() {\n ScrollTrigger = gsap.core.globals().ScrollTrigger;\n ScrollTrigger && ScrollTrigger.core && _integrate();\n},\n _initCore = function _initCore(core) {\n gsap = core || _getGSAP();\n\n if (gsap && typeof document !== \"undefined\" && document.body) {\n _win = window;\n _doc = document;\n _docEl = _doc.documentElement;\n _body = _doc.body;\n _root = [_win, _doc, _docEl, _body];\n _clamp = gsap.utils.clamp;\n\n _context = gsap.core.context || function () {};\n\n _pointerType = \"onpointerenter\" in _body ? \"pointer\" : \"mouse\"; // isTouch is 0 if no touch, 1 if ONLY touch, and 2 if it can accommodate touch but also other types like mouse/pointer.\n\n _isTouch = Observer.isTouch = _win.matchMedia && _win.matchMedia(\"(hover: none), (pointer: coarse)\").matches ? 1 : \"ontouchstart\" in _win || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 ? 2 : 0;\n _eventTypes = Observer.eventTypes = (\"ontouchstart\" in _docEl ? \"touchstart,touchmove,touchcancel,touchend\" : !(\"onpointerdown\" in _docEl) ? \"mousedown,mousemove,mouseup,mouseup\" : \"pointerdown,pointermove,pointercancel,pointerup\").split(\",\");\n setTimeout(function () {\n return _startup = 0;\n }, 500);\n\n _setScrollTrigger();\n\n _coreInitted = 1;\n }\n\n return _coreInitted;\n};\n\n_horizontal.op = _vertical;\n_scrollers.cache = 0;\nexport var Observer = /*#__PURE__*/function () {\n function Observer(vars) {\n this.init(vars);\n }\n\n var _proto = Observer.prototype;\n\n _proto.init = function init(vars) {\n _coreInitted || _initCore(gsap) || console.warn(\"Please gsap.registerPlugin(Observer)\");\n ScrollTrigger || _setScrollTrigger();\n var tolerance = vars.tolerance,\n dragMinimum = vars.dragMinimum,\n type = vars.type,\n target = vars.target,\n lineHeight = vars.lineHeight,\n debounce = vars.debounce,\n preventDefault = vars.preventDefault,\n onStop = vars.onStop,\n onStopDelay = vars.onStopDelay,\n ignore = vars.ignore,\n wheelSpeed = vars.wheelSpeed,\n event = vars.event,\n onDragStart = vars.onDragStart,\n onDragEnd = vars.onDragEnd,\n onDrag = vars.onDrag,\n onPress = vars.onPress,\n onRelease = vars.onRelease,\n onRight = vars.onRight,\n onLeft = vars.onLeft,\n onUp = vars.onUp,\n onDown = vars.onDown,\n onChangeX = vars.onChangeX,\n onChangeY = vars.onChangeY,\n onChange = vars.onChange,\n onToggleX = vars.onToggleX,\n onToggleY = vars.onToggleY,\n onHover = vars.onHover,\n onHoverEnd = vars.onHoverEnd,\n onMove = vars.onMove,\n ignoreCheck = vars.ignoreCheck,\n isNormalizer = vars.isNormalizer,\n onGestureStart = vars.onGestureStart,\n onGestureEnd = vars.onGestureEnd,\n onWheel = vars.onWheel,\n onEnable = vars.onEnable,\n onDisable = vars.onDisable,\n onClick = vars.onClick,\n scrollSpeed = vars.scrollSpeed,\n capture = vars.capture,\n allowClicks = vars.allowClicks,\n lockAxis = vars.lockAxis,\n onLockAxis = vars.onLockAxis;\n this.target = target = _getTarget(target) || _docEl;\n this.vars = vars;\n ignore && (ignore = gsap.utils.toArray(ignore));\n tolerance = tolerance || 1e-9;\n dragMinimum = dragMinimum || 0;\n wheelSpeed = wheelSpeed || 1;\n scrollSpeed = scrollSpeed || 1;\n type = type || \"wheel,touch,pointer\";\n debounce = debounce !== false;\n lineHeight || (lineHeight = parseFloat(_win.getComputedStyle(_body).lineHeight) || 22); // note: browser may report \"normal\", so default to 22.\n\n var id,\n onStopDelayedCall,\n dragged,\n moved,\n wheeled,\n locked,\n axis,\n self = this,\n prevDeltaX = 0,\n prevDeltaY = 0,\n scrollFuncX = _getScrollFunc(target, _horizontal),\n scrollFuncY = _getScrollFunc(target, _vertical),\n scrollX = scrollFuncX(),\n scrollY = scrollFuncY(),\n limitToTouch = ~type.indexOf(\"touch\") && !~type.indexOf(\"pointer\") && _eventTypes[0] === \"pointerdown\",\n // for devices that accommodate mouse events and touch events, we need to distinguish.\n isViewport = _isViewport(target),\n ownerDoc = target.ownerDocument || _doc,\n deltaX = [0, 0, 0],\n // wheel, scroll, pointer/touch\n deltaY = [0, 0, 0],\n onClickTime = 0,\n clickCapture = function clickCapture() {\n return onClickTime = _getTime();\n },\n _ignoreCheck = function _ignoreCheck(e, isPointerOrTouch) {\n return (self.event = e) && ignore && ~ignore.indexOf(e.target) || isPointerOrTouch && limitToTouch && e.pointerType !== \"touch\" || ignoreCheck && ignoreCheck(e, isPointerOrTouch);\n },\n onStopFunc = function onStopFunc() {\n self._vx.reset();\n\n self._vy.reset();\n\n onStopDelayedCall.pause();\n onStop && onStop(self);\n },\n update = function update() {\n var dx = self.deltaX = _getAbsoluteMax(deltaX),\n dy = self.deltaY = _getAbsoluteMax(deltaY),\n changedX = Math.abs(dx) >= tolerance,\n changedY = Math.abs(dy) >= tolerance;\n\n onChange && (changedX || changedY) && onChange(self, dx, dy, deltaX, deltaY); // in ScrollTrigger.normalizeScroll(), we need to know if it was touch/pointer so we need access to the deltaX/deltaY Arrays before we clear them out.\n\n if (changedX) {\n onRight && self.deltaX > 0 && onRight(self);\n onLeft && self.deltaX < 0 && onLeft(self);\n onChangeX && onChangeX(self);\n onToggleX && self.deltaX < 0 !== prevDeltaX < 0 && onToggleX(self);\n prevDeltaX = self.deltaX;\n deltaX[0] = deltaX[1] = deltaX[2] = 0;\n }\n\n if (changedY) {\n onDown && self.deltaY > 0 && onDown(self);\n onUp && self.deltaY < 0 && onUp(self);\n onChangeY && onChangeY(self);\n onToggleY && self.deltaY < 0 !== prevDeltaY < 0 && onToggleY(self);\n prevDeltaY = self.deltaY;\n deltaY[0] = deltaY[1] = deltaY[2] = 0;\n }\n\n if (moved || dragged) {\n onMove && onMove(self);\n\n if (dragged) {\n onDrag(self);\n dragged = false;\n }\n\n moved = false;\n }\n\n locked && !(locked = false) && onLockAxis && onLockAxis(self);\n\n if (wheeled) {\n onWheel(self);\n wheeled = false;\n }\n\n id = 0;\n },\n onDelta = function onDelta(x, y, index) {\n deltaX[index] += x;\n deltaY[index] += y;\n\n self._vx.update(x);\n\n self._vy.update(y);\n\n debounce ? id || (id = requestAnimationFrame(update)) : update();\n },\n onTouchOrPointerDelta = function onTouchOrPointerDelta(x, y) {\n if (lockAxis && !axis) {\n self.axis = axis = Math.abs(x) > Math.abs(y) ? \"x\" : \"y\";\n locked = true;\n }\n\n if (axis !== \"y\") {\n deltaX[2] += x;\n\n self._vx.update(x, true); // update the velocity as frequently as possible instead of in the debounced function so that very quick touch-scrolls (flicks) feel natural. If it's the mouse/touch/pointer, force it so that we get snappy/accurate momentum scroll.\n\n }\n\n if (axis !== \"x\") {\n deltaY[2] += y;\n\n self._vy.update(y, true);\n }\n\n debounce ? id || (id = requestAnimationFrame(update)) : update();\n },\n _onDrag = function _onDrag(e) {\n if (_ignoreCheck(e, 1)) {\n return;\n }\n\n e = _getEvent(e, preventDefault);\n var x = e.clientX,\n y = e.clientY,\n dx = x - self.x,\n dy = y - self.y,\n isDragging = self.isDragging;\n self.x = x;\n self.y = y;\n\n if (isDragging || Math.abs(self.startX - x) >= dragMinimum || Math.abs(self.startY - y) >= dragMinimum) {\n onDrag && (dragged = true);\n isDragging || (self.isDragging = true);\n onTouchOrPointerDelta(dx, dy);\n isDragging || onDragStart && onDragStart(self);\n }\n },\n _onPress = self.onPress = function (e) {\n if (_ignoreCheck(e, 1) || e && e.button) {\n return;\n }\n\n self.axis = axis = null;\n onStopDelayedCall.pause();\n self.isPressed = true;\n e = _getEvent(e); // note: may need to preventDefault(?) Won't side-scroll on iOS Safari if we do, though.\n\n prevDeltaX = prevDeltaY = 0;\n self.startX = self.x = e.clientX;\n self.startY = self.y = e.clientY;\n\n self._vx.reset(); // otherwise the t2 may be stale if the user touches and flicks super fast and releases in less than 2 requestAnimationFrame ticks, causing velocity to be 0.\n\n\n self._vy.reset();\n\n _addListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, preventDefault, true);\n\n self.deltaX = self.deltaY = 0;\n onPress && onPress(self);\n },\n _onRelease = self.onRelease = function (e) {\n if (_ignoreCheck(e, 1)) {\n return;\n }\n\n _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);\n\n var isTrackingDrag = !isNaN(self.y - self.startY),\n wasDragging = self.isDragging && (Math.abs(self.x - self.startX) > 3 || Math.abs(self.y - self.startY) > 3),\n // some touch devices need some wiggle room in terms of sensing clicks - the finger may move a few pixels.\n eventData = _getEvent(e);\n\n if (!wasDragging && isTrackingDrag) {\n self._vx.reset();\n\n self._vy.reset();\n\n if (preventDefault && allowClicks) {\n gsap.delayedCall(0.08, function () {\n // some browsers (like Firefox) won't trust script-generated clicks, so if the user tries to click on a video to play it, for example, it simply won't work. Since a regular \"click\" event will most likely be generated anyway (one that has its isTrusted flag set to true), we must slightly delay our script-generated click so that the \"real\"/trusted one is prioritized. Remember, when there are duplicate events in quick succession, we suppress all but the first one. Some browsers don't even trigger the \"real\" one at all, so our synthetic one is a safety valve that ensures that no matter what, a click event does get dispatched.\n if (_getTime() - onClickTime > 300 && !e.defaultPrevented) {\n if (e.target.click) {\n //some browsers (like mobile Safari) don't properly trigger the click event\n e.target.click();\n } else if (ownerDoc.createEvent) {\n var syntheticEvent = ownerDoc.createEvent(\"MouseEvents\");\n syntheticEvent.initMouseEvent(\"click\", true, true, _win, 1, eventData.screenX, eventData.screenY, eventData.clientX, eventData.clientY, false, false, false, false, 0, null);\n e.target.dispatchEvent(syntheticEvent);\n }\n }\n });\n }\n }\n\n self.isDragging = self.isGesturing = self.isPressed = false;\n onStop && !isNormalizer && onStopDelayedCall.restart(true);\n onDragEnd && wasDragging && onDragEnd(self);\n onRelease && onRelease(self, wasDragging);\n },\n _onGestureStart = function _onGestureStart(e) {\n return e.touches && e.touches.length > 1 && (self.isGesturing = true) && onGestureStart(e, self.isDragging);\n },\n _onGestureEnd = function _onGestureEnd() {\n return (self.isGesturing = false) || onGestureEnd(self);\n },\n onScroll = function onScroll(e) {\n if (_ignoreCheck(e)) {\n return;\n }\n\n var x = scrollFuncX(),\n y = scrollFuncY();\n onDelta((x - scrollX) * scrollSpeed, (y - scrollY) * scrollSpeed, 1);\n scrollX = x;\n scrollY = y;\n onStop && onStopDelayedCall.restart(true);\n },\n _onWheel = function _onWheel(e) {\n if (_ignoreCheck(e)) {\n return;\n }\n\n e = _getEvent(e, preventDefault);\n onWheel && (wheeled = true);\n var multiplier = (e.deltaMode === 1 ? lineHeight : e.deltaMode === 2 ? _win.innerHeight : 1) * wheelSpeed;\n onDelta(e.deltaX * multiplier, e.deltaY * multiplier, 0);\n onStop && !isNormalizer && onStopDelayedCall.restart(true);\n },\n _onMove = function _onMove(e) {\n if (_ignoreCheck(e)) {\n return;\n }\n\n var x = e.clientX,\n y = e.clientY,\n dx = x - self.x,\n dy = y - self.y;\n self.x = x;\n self.y = y;\n moved = true;\n (dx || dy) && onTouchOrPointerDelta(dx, dy);\n },\n _onHover = function _onHover(e) {\n self.event = e;\n onHover(self);\n },\n _onHoverEnd = function _onHoverEnd(e) {\n self.event = e;\n onHoverEnd(self);\n },\n _onClick = function _onClick(e) {\n return _ignoreCheck(e) || _getEvent(e, preventDefault) && onClick(self);\n };\n\n onStopDelayedCall = self._dc = gsap.delayedCall(onStopDelay || 0.25, onStopFunc).pause();\n self.deltaX = self.deltaY = 0;\n self._vx = _getVelocityProp(0, 50, true);\n self._vy = _getVelocityProp(0, 50, true);\n self.scrollX = scrollFuncX;\n self.scrollY = scrollFuncY;\n self.isDragging = self.isGesturing = self.isPressed = false;\n\n _context(this);\n\n self.enable = function (e) {\n if (!self.isEnabled) {\n _addListener(isViewport ? ownerDoc : target, \"scroll\", _onScroll);\n\n type.indexOf(\"scroll\") >= 0 && _addListener(isViewport ? ownerDoc : target, \"scroll\", onScroll, preventDefault, capture);\n type.indexOf(\"wheel\") >= 0 && _addListener(target, \"wheel\", _onWheel, preventDefault, capture);\n\n if (type.indexOf(\"touch\") >= 0 && _isTouch || type.indexOf(\"pointer\") >= 0) {\n _addListener(target, _eventTypes[0], _onPress, preventDefault, capture);\n\n _addListener(ownerDoc, _eventTypes[2], _onRelease);\n\n _addListener(ownerDoc, _eventTypes[3], _onRelease);\n\n allowClicks && _addListener(target, \"click\", clickCapture, false, true);\n onClick && _addListener(target, \"click\", _onClick);\n onGestureStart && _addListener(ownerDoc, \"gesturestart\", _onGestureStart);\n onGestureEnd && _addListener(ownerDoc, \"gestureend\", _onGestureEnd);\n onHover && _addListener(target, _pointerType + \"enter\", _onHover);\n onHoverEnd && _addListener(target, _pointerType + \"leave\", _onHoverEnd);\n onMove && _addListener(target, _pointerType + \"move\", _onMove);\n }\n\n self.isEnabled = true;\n e && e.type && _onPress(e);\n onEnable && onEnable(self);\n }\n\n return self;\n };\n\n self.disable = function () {\n if (self.isEnabled) {\n // only remove the _onScroll listener if there aren't any others that rely on the functionality.\n _observers.filter(function (o) {\n return o !== self && _isViewport(o.target);\n }).length || _removeListener(isViewport ? ownerDoc : target, \"scroll\", _onScroll);\n\n if (self.isPressed) {\n self._vx.reset();\n\n self._vy.reset();\n\n _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);\n }\n\n _removeListener(isViewport ? ownerDoc : target, \"scroll\", onScroll, capture);\n\n _removeListener(target, \"wheel\", _onWheel, capture);\n\n _removeListener(target, _eventTypes[0], _onPress, capture);\n\n _removeListener(ownerDoc, _eventTypes[2], _onRelease);\n\n _removeListener(ownerDoc, _eventTypes[3], _onRelease);\n\n _removeListener(target, \"click\", clickCapture, true);\n\n _removeListener(target, \"click\", _onClick);\n\n _removeListener(ownerDoc, \"gesturestart\", _onGestureStart);\n\n _removeListener(ownerDoc, \"gestureend\", _onGestureEnd);\n\n _removeListener(target, _pointerType + \"enter\", _onHover);\n\n _removeListener(target, _pointerType + \"leave\", _onHoverEnd);\n\n _removeListener(target, _pointerType + \"move\", _onMove);\n\n self.isEnabled = self.isPressed = self.isDragging = false;\n onDisable && onDisable(self);\n }\n };\n\n self.kill = self.revert = function () {\n self.disable();\n\n var i = _observers.indexOf(self);\n\n i >= 0 && _observers.splice(i, 1);\n _normalizer === self && (_normalizer = 0);\n };\n\n _observers.push(self);\n\n isNormalizer && _isViewport(target) && (_normalizer = self);\n self.enable(event);\n };\n\n _createClass(Observer, [{\n key: \"velocityX\",\n get: function get() {\n return this._vx.getVelocity();\n }\n }, {\n key: \"velocityY\",\n get: function get() {\n return this._vy.getVelocity();\n }\n }]);\n\n return Observer;\n}();\nObserver.version = \"3.11.5\";\n\nObserver.create = function (vars) {\n return new Observer(vars);\n};\n\nObserver.register = _initCore;\n\nObserver.getAll = function () {\n return _observers.slice();\n};\n\nObserver.getById = function (id) {\n return _observers.filter(function (o) {\n return o.vars.id === id;\n })[0];\n};\n\n_getGSAP() && gsap.registerPlugin(Observer);\nexport { Observer as default, _isViewport, _scrollers, _getScrollFunc, _getProxyProp, _proxies, _getVelocityProp, _vertical, _horizontal, _getTarget };","/*!\n * ScrollToPlugin 3.11.5\n * https://greensock.com\n *\n * @license Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar gsap,\n _coreInitted,\n _window,\n _docEl,\n _body,\n _toArray,\n _config,\n ScrollTrigger,\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _getGSAP = function _getGSAP() {\n return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n},\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n},\n _max = function _max(element, axis) {\n var dim = axis === \"x\" ? \"Width\" : \"Height\",\n scroll = \"scroll\" + dim,\n client = \"client\" + dim;\n return element === _window || element === _docEl || element === _body ? Math.max(_docEl[scroll], _body[scroll]) - (_window[\"inner\" + dim] || _docEl[client] || _body[client]) : element[scroll] - element[\"offset\" + dim];\n},\n _buildGetter = function _buildGetter(e, axis) {\n //pass in an element and an axis (\"x\" or \"y\") and it'll return a getter function for the scroll position of that element (like scrollTop or scrollLeft, although if the element is the window, it'll use the pageXOffset/pageYOffset or the documentElement's scrollTop/scrollLeft or document.body's. Basically this streamlines things and makes a very fast getter across browsers.\n var p = \"scroll\" + (axis === \"x\" ? \"Left\" : \"Top\");\n\n if (e === _window) {\n if (e.pageXOffset != null) {\n p = \"page\" + axis.toUpperCase() + \"Offset\";\n } else {\n e = _docEl[p] != null ? _docEl : _body;\n }\n }\n\n return function () {\n return e[p];\n };\n},\n _clean = function _clean(value, index, target, targets) {\n _isFunction(value) && (value = value(index, target, targets));\n\n if (typeof value !== \"object\") {\n return _isString(value) && value !== \"max\" && value.charAt(1) !== \"=\" ? {\n x: value,\n y: value\n } : {\n y: value\n }; //if we don't receive an object as the parameter, assume the user intends \"y\".\n } else if (value.nodeType) {\n return {\n y: value,\n x: value\n };\n } else {\n var result = {},\n p;\n\n for (p in value) {\n result[p] = p !== \"onAutoKill\" && _isFunction(value[p]) ? value[p](index, target, targets) : value[p];\n }\n\n return result;\n }\n},\n _getOffset = function _getOffset(element, container) {\n element = _toArray(element)[0];\n\n if (!element || !element.getBoundingClientRect) {\n return console.warn(\"scrollTo target doesn't exist. Using 0\") || {\n x: 0,\n y: 0\n };\n }\n\n var rect = element.getBoundingClientRect(),\n isRoot = !container || container === _window || container === _body,\n cRect = isRoot ? {\n top: _docEl.clientTop - (_window.pageYOffset || _docEl.scrollTop || _body.scrollTop || 0),\n left: _docEl.clientLeft - (_window.pageXOffset || _docEl.scrollLeft || _body.scrollLeft || 0)\n } : container.getBoundingClientRect(),\n offsets = {\n x: rect.left - cRect.left,\n y: rect.top - cRect.top\n };\n\n if (!isRoot && container) {\n //only add the current scroll position if it's not the window/body.\n offsets.x += _buildGetter(container, \"x\")();\n offsets.y += _buildGetter(container, \"y\")();\n }\n\n return offsets;\n},\n _parseVal = function _parseVal(value, target, axis, currentVal, offset) {\n return !isNaN(value) && typeof value !== \"object\" ? parseFloat(value) - offset : _isString(value) && value.charAt(1) === \"=\" ? parseFloat(value.substr(2)) * (value.charAt(0) === \"-\" ? -1 : 1) + currentVal - offset : value === \"max\" ? _max(target, axis) - offset : Math.min(_max(target, axis), _getOffset(value, target)[axis] - offset);\n},\n _initCore = function _initCore() {\n gsap = _getGSAP();\n\n if (_windowExists() && gsap && typeof document !== \"undefined\" && document.body) {\n _window = window;\n _body = document.body;\n _docEl = document.documentElement;\n _toArray = gsap.utils.toArray;\n gsap.config({\n autoKillThreshold: 7\n });\n _config = gsap.config();\n _coreInitted = 1;\n }\n};\n\nexport var ScrollToPlugin = {\n version: \"3.11.5\",\n name: \"scrollTo\",\n rawVars: 1,\n register: function register(core) {\n gsap = core;\n\n _initCore();\n },\n init: function init(target, value, tween, index, targets) {\n _coreInitted || _initCore();\n var data = this,\n snapType = gsap.getProperty(target, \"scrollSnapType\");\n data.isWin = target === _window;\n data.target = target;\n data.tween = tween;\n value = _clean(value, index, target, targets);\n data.vars = value;\n data.autoKill = !!value.autoKill;\n data.getX = _buildGetter(target, \"x\");\n data.getY = _buildGetter(target, \"y\");\n data.x = data.xPrev = data.getX();\n data.y = data.yPrev = data.getY();\n ScrollTrigger || (ScrollTrigger = gsap.core.globals().ScrollTrigger);\n gsap.getProperty(target, \"scrollBehavior\") === \"smooth\" && gsap.set(target, {\n scrollBehavior: \"auto\"\n });\n\n if (snapType && snapType !== \"none\") {\n // disable scroll snapping to avoid strange behavior\n data.snap = 1;\n data.snapInline = target.style.scrollSnapType;\n target.style.scrollSnapType = \"none\";\n }\n\n if (value.x != null) {\n data.add(data, \"x\", data.x, _parseVal(value.x, target, \"x\", data.x, value.offsetX || 0), index, targets);\n\n data._props.push(\"scrollTo_x\");\n } else {\n data.skipX = 1;\n }\n\n if (value.y != null) {\n data.add(data, \"y\", data.y, _parseVal(value.y, target, \"y\", data.y, value.offsetY || 0), index, targets);\n\n data._props.push(\"scrollTo_y\");\n } else {\n data.skipY = 1;\n }\n },\n render: function render(ratio, data) {\n var pt = data._pt,\n target = data.target,\n tween = data.tween,\n autoKill = data.autoKill,\n xPrev = data.xPrev,\n yPrev = data.yPrev,\n isWin = data.isWin,\n snap = data.snap,\n snapInline = data.snapInline,\n x,\n y,\n yDif,\n xDif,\n threshold;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n x = isWin || !data.skipX ? data.getX() : xPrev;\n y = isWin || !data.skipY ? data.getY() : yPrev;\n yDif = y - yPrev;\n xDif = x - xPrev;\n threshold = _config.autoKillThreshold;\n\n if (data.x < 0) {\n //can't scroll to a position less than 0! Might happen if someone uses a Back.easeOut or Elastic.easeOut when scrolling back to the top of the page (for example)\n data.x = 0;\n }\n\n if (data.y < 0) {\n data.y = 0;\n }\n\n if (autoKill) {\n //note: iOS has a bug that throws off the scroll by several pixels, so we need to check if it's within 7 pixels of the previous one that we set instead of just looking for an exact match.\n if (!data.skipX && (xDif > threshold || xDif < -threshold) && x < _max(target, \"x\")) {\n data.skipX = 1; //if the user scrolls separately, we should stop tweening!\n }\n\n if (!data.skipY && (yDif > threshold || yDif < -threshold) && y < _max(target, \"y\")) {\n data.skipY = 1; //if the user scrolls separately, we should stop tweening!\n }\n\n if (data.skipX && data.skipY) {\n tween.kill();\n data.vars.onAutoKill && data.vars.onAutoKill.apply(tween, data.vars.onAutoKillParams || []);\n }\n }\n\n if (isWin) {\n _window.scrollTo(!data.skipX ? data.x : x, !data.skipY ? data.y : y);\n } else {\n data.skipY || (target.scrollTop = data.y);\n data.skipX || (target.scrollLeft = data.x);\n }\n\n if (snap && (ratio === 1 || ratio === 0)) {\n y = target.scrollTop;\n x = target.scrollLeft;\n snapInline ? target.style.scrollSnapType = snapInline : target.style.removeProperty(\"scroll-snap-type\");\n target.scrollTop = y + 1; // bug in Safari causes the element to totally reset its scroll position when scroll-snap-type changes, so we need to set it to a slightly different value and then back again to work around this bug.\n\n target.scrollLeft = x + 1;\n target.scrollTop = y;\n target.scrollLeft = x;\n }\n\n data.xPrev = data.x;\n data.yPrev = data.y;\n ScrollTrigger && ScrollTrigger.update();\n },\n kill: function kill(property) {\n var both = property === \"scrollTo\";\n\n if (both || property === \"scrollTo_x\") {\n this.skipX = 1;\n }\n\n if (both || property === \"scrollTo_y\") {\n this.skipY = 1;\n }\n }\n};\nScrollToPlugin.max = _max;\nScrollToPlugin.getOffset = _getOffset;\nScrollToPlugin.buildGetter = _buildGetter;\n_getGSAP() && gsap.registerPlugin(ScrollToPlugin);\nexport { ScrollToPlugin as default };","/*!\n * ScrollTrigger 3.11.5\n * https://greensock.com\n *\n * @license Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nimport { Observer, _getTarget, _vertical, _horizontal, _scrollers, _proxies, _getScrollFunc, _getProxyProp, _getVelocityProp } from \"./Observer.js\";\n\nvar gsap,\n _coreInitted,\n _win,\n _doc,\n _docEl,\n _body,\n _root,\n _resizeDelay,\n _toArray,\n _clamp,\n _time2,\n _syncInterval,\n _refreshing,\n _pointerIsDown,\n _transformProp,\n _i,\n _prevWidth,\n _prevHeight,\n _autoRefresh,\n _sort,\n _suppressOverwrites,\n _ignoreResize,\n _normalizer,\n _ignoreMobileResize,\n _baseScreenHeight,\n _baseScreenWidth,\n _fixIOSBug,\n _context,\n _scrollRestoration,\n _limitCallbacks,\n // if true, we'll only trigger callbacks if the active state toggles, so if you scroll immediately past both the start and end positions of a ScrollTrigger (thus inactive to inactive), neither its onEnter nor onLeave will be called. This is useful during startup.\n_startup = 1,\n _getTime = Date.now,\n _time1 = _getTime(),\n _lastScrollTime = 0,\n _enabled = 0,\n _rafBugFix = function _rafBugFix() {\n return _enabled && requestAnimationFrame(_rafBugFix);\n},\n // in some browsers (like Firefox), screen repaints weren't consistent unless we had SOMETHING queued up in requestAnimationFrame()! So this just creates a super simple loop to keep it alive and smooth out repaints.\n_pointerDownHandler = function _pointerDownHandler() {\n return _pointerIsDown = 1;\n},\n _pointerUpHandler = function _pointerUpHandler() {\n return _pointerIsDown = 0;\n},\n _passThrough = function _passThrough(v) {\n return v;\n},\n _round = function _round(value) {\n return Math.round(value * 100000) / 100000 || 0;\n},\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _getGSAP = function _getGSAP() {\n return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n},\n _isViewport = function _isViewport(e) {\n return !!~_root.indexOf(e);\n},\n _getBoundsFunc = function _getBoundsFunc(element) {\n return _getProxyProp(element, \"getBoundingClientRect\") || (_isViewport(element) ? function () {\n _winOffsets.width = _win.innerWidth;\n _winOffsets.height = _win.innerHeight;\n return _winOffsets;\n } : function () {\n return _getBounds(element);\n });\n},\n _getSizeFunc = function _getSizeFunc(scroller, isViewport, _ref) {\n var d = _ref.d,\n d2 = _ref.d2,\n a = _ref.a;\n return (a = _getProxyProp(scroller, \"getBoundingClientRect\")) ? function () {\n return a()[d];\n } : function () {\n return (isViewport ? _win[\"inner\" + d2] : scroller[\"client\" + d2]) || 0;\n };\n},\n _getOffsetsFunc = function _getOffsetsFunc(element, isViewport) {\n return !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : function () {\n return _winOffsets;\n };\n},\n _maxScroll = function _maxScroll(element, _ref2) {\n var s = _ref2.s,\n d2 = _ref2.d2,\n d = _ref2.d,\n a = _ref2.a;\n return Math.max(0, (s = \"scroll\" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport(element) ? (_docEl[s] || _body[s]) - (_win[\"inner\" + d2] || _docEl[\"client\" + d2] || _body[\"client\" + d2]) : element[s] - element[\"offset\" + d2]);\n},\n _iterateAutoRefresh = function _iterateAutoRefresh(func, events) {\n for (var i = 0; i < _autoRefresh.length; i += 3) {\n (!events || ~events.indexOf(_autoRefresh[i + 1])) && func(_autoRefresh[i], _autoRefresh[i + 1], _autoRefresh[i + 2]);\n }\n},\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n},\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n},\n _isObject = function _isObject(value) {\n return typeof value === \"object\";\n},\n _callIfFunc = function _callIfFunc(value) {\n return _isFunction(value) && value();\n},\n _combineFunc = function _combineFunc(f1, f2) {\n return function () {\n var result1 = _callIfFunc(f1),\n result2 = _callIfFunc(f2);\n\n return function () {\n _callIfFunc(result1);\n\n _callIfFunc(result2);\n };\n };\n},\n _endAnimation = function _endAnimation(animation, reversed, pause) {\n return animation && animation.progress(reversed ? 0 : 1) && pause && animation.pause();\n},\n _callback = function _callback(self, func) {\n if (self.enabled) {\n var result = func(self);\n result && result.totalTime && (self.callbackAnimation = result);\n }\n},\n _abs = Math.abs,\n _scrollLeft = \"scrollLeft\",\n _scrollTop = \"scrollTop\",\n _left = \"left\",\n _top = \"top\",\n _right = \"right\",\n _bottom = \"bottom\",\n _width = \"width\",\n _height = \"height\",\n _Right = \"Right\",\n _Left = \"Left\",\n _Top = \"Top\",\n _Bottom = \"Bottom\",\n _padding = \"padding\",\n _margin = \"margin\",\n _Width = \"Width\",\n _Height = \"Height\",\n _px = \"px\",\n _getComputedStyle = function _getComputedStyle(element) {\n return _win.getComputedStyle(element);\n},\n _makePositionable = function _makePositionable(element) {\n // if the element already has position: absolute or fixed, leave that, otherwise make it position: relative\n var position = _getComputedStyle(element).position;\n\n element.style.position = position === \"absolute\" || position === \"fixed\" ? position : \"relative\";\n},\n _setDefaults = function _setDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || (obj[p] = defaults[p]);\n }\n\n return obj;\n},\n _getBounds = function _getBounds(element, withoutTransforms) {\n var tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== \"matrix(1, 0, 0, 1, 0, 0)\" && gsap.to(element, {\n x: 0,\n y: 0,\n xPercent: 0,\n yPercent: 0,\n rotation: 0,\n rotationX: 0,\n rotationY: 0,\n scale: 1,\n skewX: 0,\n skewY: 0\n }).progress(1),\n bounds = element.getBoundingClientRect();\n tween && tween.progress(0).kill();\n return bounds;\n},\n _getSize = function _getSize(element, _ref3) {\n var d2 = _ref3.d2;\n return element[\"offset\" + d2] || element[\"client\" + d2] || 0;\n},\n _getLabelRatioArray = function _getLabelRatioArray(timeline) {\n var a = [],\n labels = timeline.labels,\n duration = timeline.duration(),\n p;\n\n for (p in labels) {\n a.push(labels[p] / duration);\n }\n\n return a;\n},\n _getClosestLabel = function _getClosestLabel(animation) {\n return function (value) {\n return gsap.utils.snap(_getLabelRatioArray(animation), value);\n };\n},\n _snapDirectional = function _snapDirectional(snapIncrementOrArray) {\n var snap = gsap.utils.snap(snapIncrementOrArray),\n a = Array.isArray(snapIncrementOrArray) && snapIncrementOrArray.slice(0).sort(function (a, b) {\n return a - b;\n });\n return a ? function (value, direction, threshold) {\n if (threshold === void 0) {\n threshold = 1e-3;\n }\n\n var i;\n\n if (!direction) {\n return snap(value);\n }\n\n if (direction > 0) {\n value -= threshold; // to avoid rounding errors. If we're too strict, it might snap forward, then immediately again, and again.\n\n for (i = 0; i < a.length; i++) {\n if (a[i] >= value) {\n return a[i];\n }\n }\n\n return a[i - 1];\n } else {\n i = a.length;\n value += threshold;\n\n while (i--) {\n if (a[i] <= value) {\n return a[i];\n }\n }\n }\n\n return a[0];\n } : function (value, direction, threshold) {\n if (threshold === void 0) {\n threshold = 1e-3;\n }\n\n var snapped = snap(value);\n return !direction || Math.abs(snapped - value) < threshold || snapped - value < 0 === direction < 0 ? snapped : snap(direction < 0 ? value - snapIncrementOrArray : value + snapIncrementOrArray);\n };\n},\n _getLabelAtDirection = function _getLabelAtDirection(timeline) {\n return function (value, st) {\n return _snapDirectional(_getLabelRatioArray(timeline))(value, st.direction);\n };\n},\n _multiListener = function _multiListener(func, element, types, callback) {\n return types.split(\",\").forEach(function (type) {\n return func(element, type, callback);\n });\n},\n _addListener = function _addListener(element, type, func, nonPassive, capture) {\n return element.addEventListener(type, func, {\n passive: !nonPassive,\n capture: !!capture\n });\n},\n _removeListener = function _removeListener(element, type, func, capture) {\n return element.removeEventListener(type, func, !!capture);\n},\n _wheelListener = function _wheelListener(func, el, scrollFunc) {\n scrollFunc = scrollFunc && scrollFunc.wheelHandler;\n\n if (scrollFunc) {\n func(el, \"wheel\", scrollFunc);\n func(el, \"touchmove\", scrollFunc);\n }\n},\n _markerDefaults = {\n startColor: \"green\",\n endColor: \"red\",\n indent: 0,\n fontSize: \"16px\",\n fontWeight: \"normal\"\n},\n _defaults = {\n toggleActions: \"play\",\n anticipatePin: 0\n},\n _keywords = {\n top: 0,\n left: 0,\n center: 0.5,\n bottom: 1,\n right: 1\n},\n _offsetToPx = function _offsetToPx(value, size) {\n if (_isString(value)) {\n var eqIndex = value.indexOf(\"=\"),\n relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0;\n\n if (~eqIndex) {\n value.indexOf(\"%\") > eqIndex && (relative *= size / 100);\n value = value.substr(0, eqIndex - 1);\n }\n\n value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf(\"%\") ? parseFloat(value) * size / 100 : parseFloat(value) || 0);\n }\n\n return value;\n},\n _createMarker = function _createMarker(type, name, container, direction, _ref4, offset, matchWidthEl, containerAnimation) {\n var startColor = _ref4.startColor,\n endColor = _ref4.endColor,\n fontSize = _ref4.fontSize,\n indent = _ref4.indent,\n fontWeight = _ref4.fontWeight;\n\n var e = _doc.createElement(\"div\"),\n useFixedPosition = _isViewport(container) || _getProxyProp(container, \"pinType\") === \"fixed\",\n isScroller = type.indexOf(\"scroller\") !== -1,\n parent = useFixedPosition ? _body : container,\n isStart = type.indexOf(\"start\") !== -1,\n color = isStart ? startColor : endColor,\n 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;\";\n\n css += \"position:\" + ((isScroller || containerAnimation) && useFixedPosition ? \"fixed;\" : \"absolute;\");\n (isScroller || containerAnimation || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + \":\" + (offset + parseFloat(indent)) + \"px;\");\n matchWidthEl && (css += \"box-sizing:border-box;text-align:left;width:\" + matchWidthEl.offsetWidth + \"px;\");\n e._isStart = isStart;\n e.setAttribute(\"class\", \"gsap-marker-\" + type + (name ? \" marker-\" + name : \"\"));\n e.style.cssText = css;\n e.innerText = name || name === 0 ? type + \"-\" + name : type;\n parent.children[0] ? parent.insertBefore(e, parent.children[0]) : parent.appendChild(e);\n e._offset = e[\"offset\" + direction.op.d2];\n\n _positionMarker(e, 0, direction, isStart);\n\n return e;\n},\n _positionMarker = function _positionMarker(marker, start, direction, flipped) {\n var vars = {\n display: \"block\"\n },\n side = direction[flipped ? \"os2\" : \"p2\"],\n oppositeSide = direction[flipped ? \"p2\" : \"os2\"];\n marker._isFlipped = flipped;\n vars[direction.a + \"Percent\"] = flipped ? -100 : 0;\n vars[direction.a] = flipped ? \"1px\" : 0;\n vars[\"border\" + side + _Width] = 1;\n vars[\"border\" + oppositeSide + _Width] = 0;\n vars[direction.p] = start + \"px\";\n gsap.set(marker, vars);\n},\n _triggers = [],\n _ids = {},\n _rafID,\n _sync = function _sync() {\n return _getTime() - _lastScrollTime > 34 && (_rafID || (_rafID = requestAnimationFrame(_updateAll)));\n},\n _onScroll = function _onScroll() {\n // previously, we tried to optimize performance by batching/deferring to the next requestAnimationFrame(), but discovered that Safari has a few bugs that make this unworkable (especially on iOS). See https://codepen.io/GreenSock/pen/16c435b12ef09c38125204818e7b45fc?editors=0010 and https://codepen.io/GreenSock/pen/JjOxYpQ/3dd65ccec5a60f1d862c355d84d14562?editors=0010 and https://codepen.io/GreenSock/pen/ExbrPNa/087cef197dc35445a0951e8935c41503?editors=0010\n if (!_normalizer || !_normalizer.isPressed || _normalizer.startX > _body.clientWidth) {\n // if the user is dragging the scrollbar, allow it.\n _scrollers.cache++;\n\n if (_normalizer) {\n _rafID || (_rafID = requestAnimationFrame(_updateAll));\n } else {\n _updateAll(); // Safari in particular (on desktop) NEEDS the immediate update rather than waiting for a requestAnimationFrame() whereas iOS seems to benefit from waiting for the requestAnimationFrame() tick, at least when normalizing. See https://codepen.io/GreenSock/pen/qBYozqO?editors=0110\n\n }\n\n _lastScrollTime || _dispatch(\"scrollStart\");\n _lastScrollTime = _getTime();\n }\n},\n _setBaseDimensions = function _setBaseDimensions() {\n _baseScreenWidth = _win.innerWidth;\n _baseScreenHeight = _win.innerHeight;\n},\n _onResize = function _onResize() {\n _scrollers.cache++;\n !_refreshing && !_ignoreResize && !_doc.fullscreenElement && !_doc.webkitFullscreenElement && (!_ignoreMobileResize || _baseScreenWidth !== _win.innerWidth || Math.abs(_win.innerHeight - _baseScreenHeight) > _win.innerHeight * 0.25) && _resizeDelay.restart(true);\n},\n // ignore resizes triggered by refresh()\n_listeners = {},\n _emptyArray = [],\n _softRefresh = function _softRefresh() {\n return _removeListener(ScrollTrigger, \"scrollEnd\", _softRefresh) || _refreshAll(true);\n},\n _dispatch = function _dispatch(type) {\n return _listeners[type] && _listeners[type].map(function (f) {\n return f();\n }) || _emptyArray;\n},\n _savedStyles = [],\n // when ScrollTrigger.saveStyles() is called, the inline styles are recorded in this Array in a sequential format like [element, cssText, gsCache, media]. This keeps it very memory-efficient and fast to iterate through.\n_revertRecorded = function _revertRecorded(media) {\n for (var i = 0; i < _savedStyles.length; i += 5) {\n if (!media || _savedStyles[i + 4] && _savedStyles[i + 4].query === media) {\n _savedStyles[i].style.cssText = _savedStyles[i + 1];\n _savedStyles[i].getBBox && _savedStyles[i].setAttribute(\"transform\", _savedStyles[i + 2] || \"\");\n _savedStyles[i + 3].uncache = 1;\n }\n }\n},\n _revertAll = function _revertAll(kill, media) {\n var trigger;\n\n for (_i = 0; _i < _triggers.length; _i++) {\n trigger = _triggers[_i];\n\n if (trigger && (!media || trigger._ctx === media)) {\n if (kill) {\n trigger.kill(1);\n } else {\n trigger.revert(true, true);\n }\n }\n }\n\n media && _revertRecorded(media);\n media || _dispatch(\"revert\");\n},\n _clearScrollMemory = function _clearScrollMemory(scrollRestoration, force) {\n // zero-out all the recorded scroll positions. Don't use _triggers because if, for example, .matchMedia() is used to create some ScrollTriggers and then the user resizes and it removes ALL ScrollTriggers, and then go back to a size where there are ScrollTriggers, it would have kept the position(s) saved from the initial state.\n _scrollers.cache++;\n (force || !_refreshingAll) && _scrollers.forEach(function (obj) {\n return _isFunction(obj) && obj.cacheID++ && (obj.rec = 0);\n });\n _isString(scrollRestoration) && (_win.history.scrollRestoration = _scrollRestoration = scrollRestoration);\n},\n _refreshingAll,\n _refreshID = 0,\n _queueRefreshID,\n _queueRefreshAll = function _queueRefreshAll() {\n // we don't want to call _refreshAll() every time we create a new ScrollTrigger (for performance reasons) - it's better to batch them. Some frameworks dynamically load content and we can't rely on the window's \"load\" or \"DOMContentLoaded\" events to trigger it.\n if (_queueRefreshID !== _refreshID) {\n var id = _queueRefreshID = _refreshID;\n requestAnimationFrame(function () {\n return id === _refreshID && _refreshAll(true);\n });\n }\n},\n _refreshAll = function _refreshAll(force, skipRevert) {\n if (_lastScrollTime && !force) {\n _addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\n return;\n }\n\n _refreshingAll = ScrollTrigger.isRefreshing = true;\n\n _scrollers.forEach(function (obj) {\n return _isFunction(obj) && obj.cacheID++ && (obj.rec = obj());\n }); // force the clearing of the cache because some browsers take a little while to dispatch the \"scroll\" event and the user may have changed the scroll position and then called ScrollTrigger.refresh() right away\n\n\n var refreshInits = _dispatch(\"refreshInit\");\n\n _sort && ScrollTrigger.sort();\n skipRevert || _revertAll();\n\n _scrollers.forEach(function (obj) {\n if (_isFunction(obj)) {\n obj.smooth && (obj.target.style.scrollBehavior = \"auto\"); // smooth scrolling interferes\n\n obj(0);\n }\n });\n\n _triggers.slice(0).forEach(function (t) {\n return t.refresh();\n }); // don't loop with _i because during a refresh() someone could call ScrollTrigger.update() which would iterate through _i resulting in a skip.\n\n\n _triggers.forEach(function (t, i) {\n // nested pins (pinnedContainer) with pinSpacing may expand the container, so we must accommodate that here.\n if (t._subPinOffset && t.pin) {\n var prop = t.vars.horizontal ? \"offsetWidth\" : \"offsetHeight\",\n original = t.pin[prop];\n t.revert(true, 1);\n t.adjustPinSpacing(t.pin[prop] - original);\n t.refresh();\n }\n });\n\n _triggers.forEach(function (t) {\n return t.vars.end === \"max\" && t.setPositions(t.start, Math.max(t.start + 1, _maxScroll(t.scroller, t._dir)));\n }); // the scroller's max scroll position may change after all the ScrollTriggers refreshed (like pinning could push it down), so we need to loop back and correct any with end: \"max\".\n\n\n refreshInits.forEach(function (result) {\n return result && result.render && result.render(-1);\n }); // if the onRefreshInit() returns an animation (typically a gsap.set()), revert it. This makes it easy to put things in a certain spot before refreshing for measurement purposes, and then put things back.\n\n _scrollers.forEach(function (obj) {\n if (_isFunction(obj)) {\n obj.smooth && requestAnimationFrame(function () {\n return obj.target.style.scrollBehavior = \"smooth\";\n });\n obj.rec && obj(obj.rec);\n }\n });\n\n _clearScrollMemory(_scrollRestoration, 1);\n\n _resizeDelay.pause();\n\n _refreshID++;\n _refreshingAll = 2;\n\n _updateAll(2);\n\n _triggers.forEach(function (t) {\n return _isFunction(t.vars.onRefresh) && t.vars.onRefresh(t);\n });\n\n _refreshingAll = ScrollTrigger.isRefreshing = false;\n\n _dispatch(\"refresh\");\n},\n _lastScroll = 0,\n _direction = 1,\n _primary,\n _updateAll = function _updateAll(force) {\n if (!_refreshingAll || force === 2) {\n ScrollTrigger.isUpdating = true;\n _primary && _primary.update(0); // ScrollSmoother uses refreshPriority -9999 to become the primary that gets updated before all others because it affects the scroll position.\n\n var l = _triggers.length,\n time = _getTime(),\n recordVelocity = time - _time1 >= 50,\n scroll = l && _triggers[0].scroll();\n\n _direction = _lastScroll > scroll ? -1 : 1;\n _refreshingAll || (_lastScroll = scroll);\n\n if (recordVelocity) {\n if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) {\n _lastScrollTime = 0;\n\n _dispatch(\"scrollEnd\");\n }\n\n _time2 = _time1;\n _time1 = time;\n }\n\n if (_direction < 0) {\n _i = l;\n\n while (_i-- > 0) {\n _triggers[_i] && _triggers[_i].update(0, recordVelocity);\n }\n\n _direction = 1;\n } else {\n for (_i = 0; _i < l; _i++) {\n _triggers[_i] && _triggers[_i].update(0, recordVelocity);\n }\n }\n\n ScrollTrigger.isUpdating = false;\n }\n\n _rafID = 0;\n},\n _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\"],\n _stateProps = _propNamesToCopy.concat([_width, _height, \"boxSizing\", \"max\" + _Width, \"max\" + _Height, \"position\", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]),\n _swapPinOut = function _swapPinOut(pin, spacer, state) {\n _setState(state);\n\n var cache = pin._gsap;\n\n if (cache.spacerIsNative) {\n _setState(cache.spacerState);\n } else if (pin._gsap.swappedIn) {\n var parent = spacer.parentNode;\n\n if (parent) {\n parent.insertBefore(pin, spacer);\n parent.removeChild(spacer);\n }\n }\n\n pin._gsap.swappedIn = false;\n},\n _swapPinIn = function _swapPinIn(pin, spacer, cs, spacerState) {\n if (!pin._gsap.swappedIn) {\n var i = _propNamesToCopy.length,\n spacerStyle = spacer.style,\n pinStyle = pin.style,\n p;\n\n while (i--) {\n p = _propNamesToCopy[i];\n spacerStyle[p] = cs[p];\n }\n\n spacerStyle.position = cs.position === \"absolute\" ? \"absolute\" : \"relative\";\n cs.display === \"inline\" && (spacerStyle.display = \"inline-block\");\n pinStyle[_bottom] = pinStyle[_right] = \"auto\";\n spacerStyle.flexBasis = cs.flexBasis || \"auto\";\n spacerStyle.overflow = \"visible\";\n spacerStyle.boxSizing = \"border-box\";\n spacerStyle[_width] = _getSize(pin, _horizontal) + _px;\n spacerStyle[_height] = _getSize(pin, _vertical) + _px;\n spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = \"0\";\n\n _setState(spacerState);\n\n pinStyle[_width] = pinStyle[\"max\" + _Width] = cs[_width];\n pinStyle[_height] = pinStyle[\"max\" + _Height] = cs[_height];\n pinStyle[_padding] = cs[_padding];\n\n if (pin.parentNode !== spacer) {\n pin.parentNode.insertBefore(spacer, pin);\n spacer.appendChild(pin);\n }\n\n pin._gsap.swappedIn = true;\n }\n},\n _capsExp = /([A-Z])/g,\n _setState = function _setState(state) {\n if (state) {\n var style = state.t.style,\n l = state.length,\n i = 0,\n p,\n value;\n (state.t._gsap || gsap.core.getCache(state.t)).uncache = 1; // otherwise transforms may be off\n\n for (; i < l; i += 2) {\n value = state[i + 1];\n p = state[i];\n\n if (value) {\n style[p] = value;\n } else if (style[p]) {\n style.removeProperty(p.replace(_capsExp, \"-$1\").toLowerCase());\n }\n }\n }\n},\n _getState = function _getState(element) {\n // returns an Array with alternating values like [property, value, property, value] and a \"t\" property pointing to the target (element). Makes it fast and cheap.\n var l = _stateProps.length,\n style = element.style,\n state = [],\n i = 0;\n\n for (; i < l; i++) {\n state.push(_stateProps[i], style[_stateProps[i]]);\n }\n\n state.t = element;\n return state;\n},\n _copyState = function _copyState(state, override, omitOffsets) {\n var result = [],\n l = state.length,\n i = omitOffsets ? 8 : 0,\n // skip top, left, right, bottom if omitOffsets is true\n p;\n\n for (; i < l; i += 2) {\n p = state[i];\n result.push(p, p in override ? override[p] : state[i + 1]);\n }\n\n result.t = state.t;\n return result;\n},\n _winOffsets = {\n left: 0,\n top: 0\n},\n // // potential future feature (?) Allow users to calculate where a trigger hits (scroll position) like getScrollPosition(\"#id\", \"top bottom\")\n// _getScrollPosition = (trigger, position, {scroller, containerAnimation, horizontal}) => {\n// \tscroller = _getTarget(scroller || _win);\n// \tlet direction = horizontal ? _horizontal : _vertical,\n// \t\tisViewport = _isViewport(scroller);\n// \t_getSizeFunc(scroller, isViewport, direction);\n// \treturn _parsePosition(position, _getTarget(trigger), _getSizeFunc(scroller, isViewport, direction)(), direction, _getScrollFunc(scroller, direction)(), 0, 0, 0, _getOffsetsFunc(scroller, isViewport)(), isViewport ? 0 : parseFloat(_getComputedStyle(scroller)[\"border\" + direction.p2 + _Width]) || 0, 0, containerAnimation ? containerAnimation.duration() : _maxScroll(scroller), containerAnimation);\n// },\n_parsePosition = function _parsePosition(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self, scrollerBounds, borderWidth, useFixedPosition, scrollerMax, containerAnimation) {\n _isFunction(value) && (value = value(self));\n\n if (_isString(value) && value.substr(0, 3) === \"max\") {\n value = scrollerMax + (value.charAt(4) === \"=\" ? _offsetToPx(\"0\" + value.substr(3), scrollerSize) : 0);\n }\n\n var time = containerAnimation ? containerAnimation.time() : 0,\n p1,\n p2,\n element;\n containerAnimation && containerAnimation.seek(0);\n\n if (!_isNumber(value)) {\n _isFunction(trigger) && (trigger = trigger(self));\n var offsets = (value || \"0\").split(\" \"),\n bounds,\n localOffset,\n globalOffset,\n display;\n element = _getTarget(trigger) || _body;\n bounds = _getBounds(element) || {};\n\n if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === \"none\") {\n // if display is \"none\", it won't report getBoundingClientRect() properly\n display = element.style.display;\n element.style.display = \"block\";\n bounds = _getBounds(element);\n display ? element.style.display = display : element.style.removeProperty(\"display\");\n }\n\n localOffset = _offsetToPx(offsets[0], bounds[direction.d]);\n globalOffset = _offsetToPx(offsets[1] || \"0\", scrollerSize);\n value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset;\n markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20);\n scrollerSize -= scrollerSize - globalOffset; // adjust for the marker\n } else {\n containerAnimation && (value = gsap.utils.mapRange(containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, 0, scrollerMax, value));\n markerScroller && _positionMarker(markerScroller, scrollerSize, direction, true);\n }\n\n if (marker) {\n var position = value + scrollerSize,\n isStart = marker._isStart;\n p1 = \"scroll\" + direction.d2;\n\n _positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body[p1], _docEl[p1]) : marker.parentNode[p1]) <= position + 1);\n\n if (useFixedPosition) {\n scrollerBounds = _getBounds(markerScroller);\n useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px);\n }\n }\n\n if (containerAnimation && element) {\n p1 = _getBounds(element);\n containerAnimation.seek(scrollerMax);\n p2 = _getBounds(element);\n containerAnimation._caScrollDist = p1[direction.p] - p2[direction.p];\n value = value / containerAnimation._caScrollDist * scrollerMax;\n }\n\n containerAnimation && containerAnimation.seek(time);\n return containerAnimation ? value : Math.round(value);\n},\n _prefixExp = /(webkit|moz|length|cssText|inset)/i,\n _reparent = function _reparent(element, parent, top, left) {\n if (element.parentNode !== parent) {\n var style = element.style,\n p,\n cs;\n\n if (parent === _body) {\n element._stOrig = style.cssText; // record original inline styles so we can revert them later\n\n cs = _getComputedStyle(element);\n\n for (p in cs) {\n // must copy all relevant styles to ensure that nothing changes visually when we reparent to the . Skip the vendor prefixed ones.\n if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === \"string\" && p !== \"0\") {\n style[p] = cs[p];\n }\n }\n\n style.top = top;\n style.left = left;\n } else {\n style.cssText = element._stOrig;\n }\n\n gsap.core.getCache(element).uncache = 1;\n parent.appendChild(element);\n }\n},\n _interruptionTracker = function _interruptionTracker(getValueFunc, initialValue, onInterrupt) {\n var last1 = initialValue,\n last2 = last1;\n return function (value) {\n var current = Math.round(getValueFunc()); // round because in some [very uncommon] Windows environments, scroll can get reported with decimals even though it was set without.\n\n if (current !== last1 && current !== last2 && Math.abs(current - last1) > 3 && Math.abs(current - last2) > 3) {\n // if the user scrolls, kill the tween. iOS Safari intermittently misreports the scroll position, it may be the most recently-set one or the one before that! When Safari is zoomed (CMD-+), it often misreports as 1 pixel off too! So if we set the scroll position to 125, for example, it'll actually report it as 124.\n value = current;\n onInterrupt && onInterrupt();\n }\n\n last2 = last1;\n last1 = value;\n return value;\n };\n},\n // _mergeAnimations = animations => {\n// \tlet tl = gsap.timeline({smoothChildTiming: true}).startTime(Math.min(...animations.map(a => a.globalTime(0))));\n// \tanimations.forEach(a => {let time = a.totalTime(); tl.add(a); a.totalTime(time); });\n// \ttl.smoothChildTiming = false;\n// \treturn tl;\n// },\n// returns a function that can be used to tween the scroll position in the direction provided, and when doing so it'll add a .tween property to the FUNCTION itself, and remove it when the tween completes or gets killed. This gives us a way to have multiple ScrollTriggers use a central function for any given scroller and see if there's a scroll tween running (which would affect if/how things get updated)\n_getTweenCreator = function _getTweenCreator(scroller, direction) {\n var getScroll = _getScrollFunc(scroller, direction),\n prop = \"_scroll\" + direction.p2,\n // add a tweenable property to the scroller that's a getter/setter function, like _scrollTop or _scrollLeft. This way, if someone does gsap.killTweensOf(scroller) it'll kill the scroll tween.\n lastScroll1,\n lastScroll2,\n getTween = function getTween(scrollTo, vars, initialValue, change1, change2) {\n var tween = getTween.tween,\n onComplete = vars.onComplete,\n modifiers = {};\n initialValue = initialValue || getScroll();\n\n var checkForInterruption = _interruptionTracker(getScroll, initialValue, function () {\n tween.kill();\n getTween.tween = 0;\n });\n\n change2 = change1 && change2 || 0; // if change1 is 0, we set that to the difference and ignore change2. Otherwise, there would be a compound effect.\n\n change1 = change1 || scrollTo - initialValue;\n tween && tween.kill();\n lastScroll1 = Math.round(initialValue);\n vars[prop] = scrollTo;\n vars.modifiers = modifiers;\n\n modifiers[prop] = function () {\n return checkForInterruption(initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio);\n };\n\n vars.onUpdate = function () {\n _scrollers.cache++;\n\n _updateAll();\n };\n\n vars.onComplete = function () {\n getTween.tween = 0;\n onComplete && onComplete.call(tween);\n };\n\n tween = getTween.tween = gsap.to(scroller, vars);\n return tween;\n };\n\n scroller[prop] = getScroll;\n\n getScroll.wheelHandler = function () {\n return getTween.tween && getTween.tween.kill() && (getTween.tween = 0);\n };\n\n _addListener(scroller, \"wheel\", getScroll.wheelHandler); // Windows machines handle mousewheel scrolling in chunks (like \"3 lines per scroll\") meaning the typical strategy for cancelling the scroll isn't as sensitive. It's much more likely to match one of the previous 2 scroll event positions. So we kill any snapping as soon as there's a wheel event.\n\n\n ScrollTrigger.isTouch && _addListener(scroller, \"touchmove\", getScroll.wheelHandler);\n return getTween;\n};\n\nexport var ScrollTrigger = /*#__PURE__*/function () {\n function ScrollTrigger(vars, animation) {\n _coreInitted || ScrollTrigger.register(gsap) || console.warn(\"Please gsap.registerPlugin(ScrollTrigger)\");\n this.init(vars, animation);\n }\n\n var _proto = ScrollTrigger.prototype;\n\n _proto.init = function init(vars, animation) {\n this.progress = this.start = 0;\n this.vars && this.kill(true, true); // in case it's being initted again\n\n if (!_enabled) {\n this.update = this.refresh = this.kill = _passThrough;\n return;\n }\n\n vars = _setDefaults(_isString(vars) || _isNumber(vars) || vars.nodeType ? {\n trigger: vars\n } : vars, _defaults);\n\n var _vars = vars,\n onUpdate = _vars.onUpdate,\n toggleClass = _vars.toggleClass,\n id = _vars.id,\n onToggle = _vars.onToggle,\n onRefresh = _vars.onRefresh,\n scrub = _vars.scrub,\n trigger = _vars.trigger,\n pin = _vars.pin,\n pinSpacing = _vars.pinSpacing,\n invalidateOnRefresh = _vars.invalidateOnRefresh,\n anticipatePin = _vars.anticipatePin,\n onScrubComplete = _vars.onScrubComplete,\n onSnapComplete = _vars.onSnapComplete,\n once = _vars.once,\n snap = _vars.snap,\n pinReparent = _vars.pinReparent,\n pinSpacer = _vars.pinSpacer,\n containerAnimation = _vars.containerAnimation,\n fastScrollEnd = _vars.fastScrollEnd,\n preventOverlaps = _vars.preventOverlaps,\n direction = vars.horizontal || vars.containerAnimation && vars.horizontal !== false ? _horizontal : _vertical,\n isToggle = !scrub && scrub !== 0,\n scroller = _getTarget(vars.scroller || _win),\n scrollerCache = gsap.core.getCache(scroller),\n isViewport = _isViewport(scroller),\n useFixedPosition = (\"pinType\" in vars ? vars.pinType : _getProxyProp(scroller, \"pinType\") || isViewport && \"fixed\") === \"fixed\",\n callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack],\n toggleActions = isToggle && vars.toggleActions.split(\" \"),\n markers = \"markers\" in vars ? vars.markers : _defaults.markers,\n borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)[\"border\" + direction.p2 + _Width]) || 0,\n self = this,\n onRefreshInit = vars.onRefreshInit && function () {\n return vars.onRefreshInit(self);\n },\n getScrollerSize = _getSizeFunc(scroller, isViewport, direction),\n getScrollerOffsets = _getOffsetsFunc(scroller, isViewport),\n lastSnap = 0,\n lastRefresh = 0,\n scrollFunc = _getScrollFunc(scroller, direction),\n tweenTo,\n pinCache,\n snapFunc,\n scroll1,\n scroll2,\n start,\n end,\n markerStart,\n markerEnd,\n markerStartTrigger,\n markerEndTrigger,\n markerVars,\n change,\n pinOriginalState,\n pinActiveState,\n pinState,\n spacer,\n offset,\n pinGetter,\n pinSetter,\n pinStart,\n pinChange,\n spacingStart,\n spacerState,\n markerStartSetter,\n pinMoves,\n markerEndSetter,\n cs,\n snap1,\n snap2,\n scrubTween,\n scrubSmooth,\n snapDurClamp,\n snapDelayedCall,\n prevProgress,\n prevScroll,\n prevAnimProgress,\n caMarkerSetter,\n customRevertReturn;\n\n _context(self);\n\n self._dir = direction;\n anticipatePin *= 45;\n self.scroller = scroller;\n self.scroll = containerAnimation ? containerAnimation.time.bind(containerAnimation) : scrollFunc;\n scroll1 = scrollFunc();\n self.vars = vars;\n animation = animation || vars.animation;\n\n if (\"refreshPriority\" in vars) {\n _sort = 1;\n vars.refreshPriority === -9999 && (_primary = self); // used by ScrollSmoother\n }\n\n scrollerCache.tweenScroll = scrollerCache.tweenScroll || {\n top: _getTweenCreator(scroller, _vertical),\n left: _getTweenCreator(scroller, _horizontal)\n };\n self.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];\n\n self.scrubDuration = function (value) {\n scrubSmooth = _isNumber(value) && value;\n\n if (!scrubSmooth) {\n scrubTween && scrubTween.progress(1).kill();\n scrubTween = 0;\n } else {\n scrubTween ? scrubTween.duration(value) : scrubTween = gsap.to(animation, {\n ease: \"expo\",\n totalProgress: \"+=0.001\",\n duration: scrubSmooth,\n paused: true,\n onComplete: function onComplete() {\n return onScrubComplete && onScrubComplete(self);\n }\n });\n }\n };\n\n if (animation) {\n animation.vars.lazy = false;\n animation._initted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.duration() && animation.render(0, true, true);\n self.animation = animation.pause();\n animation.scrollTrigger = self;\n self.scrubDuration(scrub);\n scrubTween && scrubTween.resetTo && scrubTween.resetTo(\"totalProgress\", 0); // otherwise the initial scrub progress value would start at 0.001 which normally is no big deal, but for containerAnimation it can be noticeable since the range is so tiny.\n\n snap1 = 0;\n id || (id = animation.vars.id);\n }\n\n _triggers.push(self);\n\n if (snap) {\n // TODO: potential idea: use legitimate CSS scroll snapping by pushing invisible elements into the DOM that serve as snap positions, and toggle the document.scrollingElement.style.scrollSnapType onToggle. See https://codepen.io/GreenSock/pen/JjLrgWM for a quick proof of concept.\n if (!_isObject(snap) || snap.push) {\n snap = {\n snapTo: snap\n };\n }\n\n \"scrollBehavior\" in _body.style && gsap.set(isViewport ? [_body, _docEl] : scroller, {\n scrollBehavior: \"auto\"\n }); // smooth scrolling doesn't work with snap.\n\n _scrollers.forEach(function (o) {\n return _isFunction(o) && o.target === (isViewport ? _doc.scrollingElement || _docEl : scroller) && (o.smooth = false);\n }); // note: set smooth to false on both the vertical and horizontal scroll getters/setters\n\n\n snapFunc = _isFunction(snap.snapTo) ? snap.snapTo : snap.snapTo === \"labels\" ? _getClosestLabel(animation) : snap.snapTo === \"labelsDirectional\" ? _getLabelAtDirection(animation) : snap.directional !== false ? function (value, st) {\n return _snapDirectional(snap.snapTo)(value, _getTime() - lastRefresh < 500 ? 0 : st.direction);\n } : gsap.utils.snap(snap.snapTo);\n snapDurClamp = snap.duration || {\n min: 0.1,\n max: 2\n };\n snapDurClamp = _isObject(snapDurClamp) ? _clamp(snapDurClamp.min, snapDurClamp.max) : _clamp(snapDurClamp, snapDurClamp);\n snapDelayedCall = gsap.delayedCall(snap.delay || scrubSmooth / 2 || 0.1, function () {\n var scroll = scrollFunc(),\n refreshedRecently = _getTime() - lastRefresh < 500,\n tween = tweenTo.tween;\n\n if ((refreshedRecently || Math.abs(self.getVelocity()) < 10) && !tween && !_pointerIsDown && lastSnap !== scroll) {\n var progress = (scroll - start) / change,\n totalProgress = animation && !isToggle ? animation.totalProgress() : progress,\n velocity = refreshedRecently ? 0 : (totalProgress - snap2) / (_getTime() - _time2) * 1000 || 0,\n change1 = gsap.utils.clamp(-progress, 1 - progress, _abs(velocity / 2) * velocity / 0.185),\n naturalEnd = progress + (snap.inertia === false ? 0 : change1),\n endValue = _clamp(0, 1, snapFunc(naturalEnd, self)),\n endScroll = Math.round(start + endValue * change),\n _snap = snap,\n onStart = _snap.onStart,\n _onInterrupt = _snap.onInterrupt,\n _onComplete = _snap.onComplete;\n\n if (scroll <= end && scroll >= start && endScroll !== scroll) {\n if (tween && !tween._initted && tween.data <= _abs(endScroll - scroll)) {\n // there's an overlapping snap! So we must figure out which one is closer and let that tween live.\n return;\n }\n\n if (snap.inertia === false) {\n change1 = endValue - progress;\n }\n\n tweenTo(endScroll, {\n duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)),\n ease: snap.ease || \"power3\",\n data: _abs(endScroll - scroll),\n // record the distance so that if another snap tween occurs (conflict) we can prioritize the closest snap.\n onInterrupt: function onInterrupt() {\n return snapDelayedCall.restart(true) && _onInterrupt && _onInterrupt(self);\n },\n onComplete: function onComplete() {\n self.update();\n lastSnap = scrollFunc();\n snap1 = snap2 = animation && !isToggle ? animation.totalProgress() : self.progress;\n onSnapComplete && onSnapComplete(self);\n _onComplete && _onComplete(self);\n }\n }, scroll, change1 * change, endScroll - scroll - change1 * change);\n onStart && onStart(self, tweenTo.tween);\n }\n } else if (self.isActive && lastSnap !== scroll) {\n snapDelayedCall.restart(true);\n }\n }).pause();\n }\n\n id && (_ids[id] = self);\n trigger = self.trigger = _getTarget(trigger || pin); // if a trigger has some kind of scroll-related effect applied that could contaminate the \"y\" or \"x\" position (like a ScrollSmoother effect), we needed a way to temporarily revert it, so we use the stRevert property of the gsCache. It can return another function that we'll call at the end so it can return to its normal state.\n\n customRevertReturn = trigger && trigger._gsap && trigger._gsap.stRevert;\n customRevertReturn && (customRevertReturn = customRevertReturn(self));\n pin = pin === true ? trigger : _getTarget(pin);\n _isString(toggleClass) && (toggleClass = {\n targets: trigger,\n className: toggleClass\n });\n\n if (pin) {\n pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && pin.parentNode && pin.parentNode.style && _getComputedStyle(pin.parentNode).display === \"flex\" ? false : _padding); // if the parent is display: flex, don't apply pinSpacing by default. We should check that pin.parentNode is an element (not shadow dom window)\n\n self.pin = pin;\n pinCache = gsap.core.getCache(pin);\n\n if (!pinCache.spacer) {\n // record the spacer and pinOriginalState on the cache in case someone tries pinning the same element with MULTIPLE ScrollTriggers - we don't want to have multiple spacers or record the \"original\" pin state after it has already been affected by another ScrollTrigger.\n if (pinSpacer) {\n pinSpacer = _getTarget(pinSpacer);\n pinSpacer && !pinSpacer.nodeType && (pinSpacer = pinSpacer.current || pinSpacer.nativeElement); // for React & Angular\n\n pinCache.spacerIsNative = !!pinSpacer;\n pinSpacer && (pinCache.spacerState = _getState(pinSpacer));\n }\n\n pinCache.spacer = spacer = pinSpacer || _doc.createElement(\"div\");\n spacer.classList.add(\"pin-spacer\");\n id && spacer.classList.add(\"pin-spacer-\" + id);\n pinCache.pinState = pinOriginalState = _getState(pin);\n } else {\n pinOriginalState = pinCache.pinState;\n }\n\n vars.force3D !== false && gsap.set(pin, {\n force3D: true\n });\n self.spacer = spacer = pinCache.spacer;\n cs = _getComputedStyle(pin);\n spacingStart = cs[pinSpacing + direction.os2];\n pinGetter = gsap.getProperty(pin);\n pinSetter = gsap.quickSetter(pin, direction.a, _px); // pin.firstChild && !_maxScroll(pin, direction) && (pin.style.overflow = \"hidden\"); // protects from collapsing margins, but can have unintended consequences as demonstrated here: https://codepen.io/GreenSock/pen/1e42c7a73bfa409d2cf1e184e7a4248d so it was removed in favor of just telling people to set up their CSS to avoid the collapsing margins (overflow: hidden | auto is just one option. Another is border-top: 1px solid transparent).\n\n _swapPinIn(pin, spacer, cs);\n\n pinState = _getState(pin);\n }\n\n if (markers) {\n markerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults;\n markerStartTrigger = _createMarker(\"scroller-start\", id, scroller, direction, markerVars, 0);\n markerEndTrigger = _createMarker(\"scroller-end\", id, scroller, direction, markerVars, 0, markerStartTrigger);\n offset = markerStartTrigger[\"offset\" + direction.op.d2];\n\n var content = _getTarget(_getProxyProp(scroller, \"content\") || scroller);\n\n markerStart = this.markerStart = _createMarker(\"start\", id, content, direction, markerVars, offset, 0, containerAnimation);\n markerEnd = this.markerEnd = _createMarker(\"end\", id, content, direction, markerVars, offset, 0, containerAnimation);\n containerAnimation && (caMarkerSetter = gsap.quickSetter([markerStart, markerEnd], direction.a, _px));\n\n if (!useFixedPosition && !(_proxies.length && _getProxyProp(scroller, \"fixedMarkers\") === true)) {\n _makePositionable(isViewport ? _body : scroller);\n\n gsap.set([markerStartTrigger, markerEndTrigger], {\n force3D: true\n });\n markerStartSetter = gsap.quickSetter(markerStartTrigger, direction.a, _px);\n markerEndSetter = gsap.quickSetter(markerEndTrigger, direction.a, _px);\n }\n }\n\n if (containerAnimation) {\n var oldOnUpdate = containerAnimation.vars.onUpdate,\n oldParams = containerAnimation.vars.onUpdateParams;\n containerAnimation.eventCallback(\"onUpdate\", function () {\n self.update(0, 0, 1);\n oldOnUpdate && oldOnUpdate.apply(containerAnimation, oldParams || []);\n });\n }\n\n self.previous = function () {\n return _triggers[_triggers.indexOf(self) - 1];\n };\n\n self.next = function () {\n return _triggers[_triggers.indexOf(self) + 1];\n };\n\n self.revert = function (revert, temp) {\n if (!temp) {\n return self.kill(true);\n } // for compatibility with gsap.context() and gsap.matchMedia() which call revert()\n\n\n var r = revert !== false || !self.enabled,\n prevRefreshing = _refreshing;\n\n if (r !== self.isReverted) {\n if (r) {\n // if (!self.scroll.rec && (_refreshing || _refreshingAll)) {\n // \tself.scroll.rec = scrollFunc();\n // \t_refreshingAll && scrollFunc(0);\n // }\n prevScroll = Math.max(scrollFunc(), self.scroll.rec || 0); // record the scroll so we can revert later (repositioning/pinning things can affect scroll position). In the static refresh() method, we first record all the scroll positions as a reference.\n\n prevProgress = self.progress;\n prevAnimProgress = animation && animation.progress();\n }\n\n markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {\n return m.style.display = r ? \"none\" : \"block\";\n });\n\n if (r) {\n _refreshing = self;\n self.update(r); // make sure the pin is back in its original position so that all the measurements are correct. do this BEFORE swapping the pin out\n }\n\n if (pin && (!pinReparent || !self.isActive)) {\n if (r) {\n _swapPinOut(pin, spacer, pinOriginalState);\n } else {\n _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState);\n }\n }\n\n r || self.update(r); // when we're restoring, the update should run AFTER swapping the pin into its pin-spacer.\n\n _refreshing = prevRefreshing; // restore. We set it to true during the update() so that things fire properly in there.\n\n self.isReverted = r;\n }\n };\n\n self.refresh = function (soft, force) {\n if ((_refreshing || !self.enabled) && !force) {\n return;\n }\n\n if (pin && soft && _lastScrollTime) {\n _addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\n return;\n }\n\n !_refreshingAll && onRefreshInit && onRefreshInit(self);\n _refreshing = self;\n lastRefresh = _getTime();\n\n if (tweenTo.tween) {\n tweenTo.tween.kill();\n tweenTo.tween = 0;\n }\n\n scrubTween && scrubTween.pause();\n invalidateOnRefresh && animation && animation.revert({\n kill: false\n }).invalidate();\n self.isReverted || self.revert(true, true);\n self._subPinOffset = false; // we'll set this to true in the sub-pins if we find any\n\n var size = getScrollerSize(),\n scrollerBounds = getScrollerOffsets(),\n max = containerAnimation ? containerAnimation.duration() : _maxScroll(scroller, direction),\n isFirstRefresh = change <= 0.01,\n offset = 0,\n otherPinOffset = 0,\n parsedEnd = vars.end,\n parsedEndTrigger = vars.endTrigger || trigger,\n parsedStart = vars.start || (vars.start === 0 || !trigger ? 0 : pin ? \"0 0\" : \"0 100%\"),\n pinnedContainer = self.pinnedContainer = vars.pinnedContainer && _getTarget(vars.pinnedContainer),\n triggerIndex = trigger && Math.max(0, _triggers.indexOf(self)) || 0,\n i = triggerIndex,\n cs,\n bounds,\n scroll,\n isVertical,\n override,\n curTrigger,\n curPin,\n oppositeScroll,\n initted,\n revertedPins,\n forcedOverflow;\n\n while (i--) {\n // user might try to pin the same element more than once, so we must find any prior triggers with the same pin, revert them, and determine how long they're pinning so that we can offset things appropriately. Make sure we revert from last to first so that things \"rewind\" properly.\n curTrigger = _triggers[i];\n curTrigger.end || curTrigger.refresh(0, 1) || (_refreshing = self); // if it's a timeline-based trigger that hasn't been fully initialized yet because it's waiting for 1 tick, just force the refresh() here, otherwise if it contains a pin that's supposed to affect other ScrollTriggers further down the page, they won't be adjusted properly.\n\n curPin = curTrigger.pin;\n\n if (curPin && (curPin === trigger || curPin === pin || curPin === pinnedContainer) && !curTrigger.isReverted) {\n revertedPins || (revertedPins = []);\n revertedPins.unshift(curTrigger); // we'll revert from first to last to make sure things reach their end state properly\n\n curTrigger.revert(true, true);\n }\n\n if (curTrigger !== _triggers[i]) {\n // in case it got removed.\n triggerIndex--;\n i--;\n }\n }\n\n _isFunction(parsedStart) && (parsedStart = parsedStart(self));\n start = _parsePosition(parsedStart, trigger, size, direction, scrollFunc(), markerStart, markerStartTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation) || (pin ? -0.001 : 0);\n _isFunction(parsedEnd) && (parsedEnd = parsedEnd(self));\n\n if (_isString(parsedEnd) && !parsedEnd.indexOf(\"+=\")) {\n if (~parsedEnd.indexOf(\" \")) {\n parsedEnd = (_isString(parsedStart) ? parsedStart.split(\" \")[0] : \"\") + parsedEnd;\n } else {\n offset = _offsetToPx(parsedEnd.substr(2), size);\n parsedEnd = _isString(parsedStart) ? parsedStart : (containerAnimation ? gsap.utils.mapRange(0, containerAnimation.duration(), containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, start) : start) + offset; // _parsePosition won't factor in the offset if the start is a number, so do it here.\n\n parsedEndTrigger = trigger;\n }\n }\n\n end = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? \"100% 0\" : max), parsedEndTrigger, size, direction, scrollFunc() + offset, markerEnd, markerEndTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation)) || -0.001;\n change = end - start || (start -= 0.01) && 0.001;\n offset = 0;\n i = triggerIndex;\n\n while (i--) {\n curTrigger = _triggers[i];\n curPin = curTrigger.pin;\n\n if (curPin && curTrigger.start - curTrigger._pinPush <= start && !containerAnimation && curTrigger.end > 0) {\n cs = curTrigger.end - curTrigger.start;\n\n if ((curPin === trigger && curTrigger.start - curTrigger._pinPush < start || curPin === pinnedContainer) && !_isNumber(parsedStart)) {\n // numeric start values shouldn't be offset at all - treat them as absolute\n offset += cs * (1 - curTrigger.progress);\n }\n\n curPin === pin && (otherPinOffset += cs);\n }\n }\n\n start += offset;\n end += offset;\n\n if (isFirstRefresh) {\n // on the very first refresh(), the prevProgress couldn't have been accurate yet because the start/end were never calculated, so we set it here. Before 3.11.5, it could lead to an inaccurate scroll position restoration with snapping.\n prevProgress = gsap.utils.clamp(0, 1, gsap.utils.normalize(start, end, prevScroll));\n }\n\n self._pinPush = otherPinOffset;\n\n if (markerStart && offset) {\n // offset the markers if necessary\n cs = {};\n cs[direction.a] = \"+=\" + offset;\n pinnedContainer && (cs[direction.p] = \"-=\" + scrollFunc());\n gsap.set([markerStart, markerEnd], cs);\n }\n\n if (pin) {\n cs = _getComputedStyle(pin);\n isVertical = direction === _vertical;\n scroll = scrollFunc(); // recalculate because the triggers can affect the scroll\n\n pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset;\n\n if (!max && end > 1) {\n // makes sure the scroller has a scrollbar, otherwise if something has width: 100%, for example, it would be too big (exclude the scrollbar). See https://greensock.com/forums/topic/25182-scrolltrigger-width-of-page-increase-where-markers-are-set-to-false/\n forcedOverflow = (isViewport ? _doc.scrollingElement || _docEl : scroller).style;\n forcedOverflow = {\n style: forcedOverflow,\n value: forcedOverflow[\"overflow\" + direction.a.toUpperCase()]\n };\n forcedOverflow.style[\"overflow\" + direction.a.toUpperCase()] = \"scroll\";\n }\n\n _swapPinIn(pin, spacer, cs);\n\n pinState = _getState(pin); // transforms will interfere with the top/left/right/bottom placement, so remove them temporarily. getBoundingClientRect() factors in transforms.\n\n bounds = _getBounds(pin, true);\n oppositeScroll = useFixedPosition && _getScrollFunc(scroller, isVertical ? _horizontal : _vertical)();\n\n if (pinSpacing) {\n spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px];\n spacerState.t = spacer;\n i = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0;\n i && spacerState.push(direction.d, i + _px); // for box-sizing: border-box (must include padding).\n\n _setState(spacerState);\n\n if (pinnedContainer) {\n // in ScrollTrigger.refresh(), we need to re-evaluate the pinContainer's size because this pinSpacing may stretch it out, but we can't just add the exact distance because depending on layout, it may not push things down or it may only do so partially.\n _triggers.forEach(function (t) {\n if (t.pin === pinnedContainer && t.vars.pinSpacing !== false) {\n t._subPinOffset = true;\n }\n });\n }\n\n useFixedPosition && scrollFunc(prevScroll);\n }\n\n if (useFixedPosition) {\n override = {\n top: bounds.top + (isVertical ? scroll - start : oppositeScroll) + _px,\n left: bounds.left + (isVertical ? oppositeScroll : scroll - start) + _px,\n boxSizing: \"border-box\",\n position: \"fixed\"\n };\n override[_width] = override[\"max\" + _Width] = Math.ceil(bounds.width) + _px;\n override[_height] = override[\"max\" + _Height] = Math.ceil(bounds.height) + _px;\n override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = \"0\";\n override[_padding] = cs[_padding];\n override[_padding + _Top] = cs[_padding + _Top];\n override[_padding + _Right] = cs[_padding + _Right];\n override[_padding + _Bottom] = cs[_padding + _Bottom];\n override[_padding + _Left] = cs[_padding + _Left];\n pinActiveState = _copyState(pinOriginalState, override, pinReparent);\n _refreshingAll && scrollFunc(0);\n }\n\n if (animation) {\n // the animation might be affecting the transform, so we must jump to the end, check the value, and compensate accordingly. Otherwise, when it becomes unpinned, the pinSetter() will get set to a value that doesn't include whatever the animation did.\n initted = animation._initted; // if not, we must invalidate() after this step, otherwise it could lock in starting values prematurely.\n\n _suppressOverwrites(1);\n\n animation.render(animation.duration(), true, true);\n pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset;\n pinMoves = Math.abs(change - pinChange) > 1;\n useFixedPosition && pinMoves && pinActiveState.splice(pinActiveState.length - 2, 2); // transform is the last property/value set in the state Array. Since the animation is controlling that, we should omit it.\n\n animation.render(0, true, true);\n initted || animation.invalidate(true);\n animation.parent || animation.totalTime(animation.totalTime()); // if, for example, a toggleAction called play() and then refresh() happens and when we render(1) above, it would cause the animation to complete and get removed from its parent, so this makes sure it gets put back in.\n\n _suppressOverwrites(0);\n } else {\n pinChange = change;\n }\n\n forcedOverflow && (forcedOverflow.value ? forcedOverflow.style[\"overflow\" + direction.a.toUpperCase()] = forcedOverflow.value : forcedOverflow.style.removeProperty(\"overflow-\" + direction.a));\n } else if (trigger && scrollFunc() && !containerAnimation) {\n // it may be INSIDE a pinned element, so walk up the tree and look for any elements with _pinOffset to compensate because anything with pinSpacing that's already scrolled would throw off the measurements in getBoundingClientRect()\n bounds = trigger.parentNode;\n\n while (bounds && bounds !== _body) {\n if (bounds._pinOffset) {\n start -= bounds._pinOffset;\n end -= bounds._pinOffset;\n }\n\n bounds = bounds.parentNode;\n }\n }\n\n revertedPins && revertedPins.forEach(function (t) {\n return t.revert(false, true);\n });\n self.start = start;\n self.end = end;\n scroll1 = scroll2 = _refreshingAll ? prevScroll : scrollFunc(); // reset velocity\n\n if (!containerAnimation && !_refreshingAll) {\n scroll1 < prevScroll && scrollFunc(prevScroll);\n self.scroll.rec = 0;\n }\n\n self.revert(false, true);\n\n if (snapDelayedCall) {\n lastSnap = -1;\n self.isActive && scrollFunc(start + change * prevProgress); // just so snapping gets re-enabled, clear out any recorded last value\n\n snapDelayedCall.restart(true);\n }\n\n _refreshing = 0;\n animation && isToggle && (animation._initted || prevAnimProgress) && animation.progress() !== prevAnimProgress && animation.progress(prevAnimProgress, true).render(animation.time(), true, true); // must force a re-render because if saveStyles() was used on the target(s), the styles could have been wiped out during the refresh().\n\n if (isFirstRefresh || prevProgress !== self.progress || containerAnimation) {\n // ensures that the direction is set properly (when refreshing, progress is set back to 0 initially, then back again to wherever it needs to be) and that callbacks are triggered.\n animation && !isToggle && animation.totalProgress(containerAnimation && start < -0.001 && !prevProgress ? gsap.utils.normalize(start, end, 0) : prevProgress, true); // to avoid issues where animation callbacks like onStart aren't triggered.\n\n self.progress = (scroll1 - start) / change === prevProgress ? 0 : prevProgress;\n }\n\n pin && pinSpacing && (spacer._pinOffset = Math.round(self.progress * pinChange));\n scrubTween && scrubTween.invalidate();\n onRefresh && !_refreshingAll && onRefresh(self); // when refreshing all, we do extra work to correct pinnedContainer sizes and ensure things don't exceed the maxScroll, so we should do all the refreshes at the end after all that work so that the start/end values are corrected.\n };\n\n self.getVelocity = function () {\n return (scrollFunc() - scroll2) / (_getTime() - _time2) * 1000 || 0;\n };\n\n self.endAnimation = function () {\n _endAnimation(self.callbackAnimation);\n\n if (animation) {\n scrubTween ? scrubTween.progress(1) : !animation.paused() ? _endAnimation(animation, animation.reversed()) : isToggle || _endAnimation(animation, self.direction < 0, 1);\n }\n };\n\n self.labelToScroll = function (label) {\n return animation && animation.labels && (start || self.refresh() || start) + animation.labels[label] / animation.duration() * change || 0;\n };\n\n self.getTrailing = function (name) {\n var i = _triggers.indexOf(self),\n a = self.direction > 0 ? _triggers.slice(0, i).reverse() : _triggers.slice(i + 1);\n\n return (_isString(name) ? a.filter(function (t) {\n return t.vars.preventOverlaps === name;\n }) : a).filter(function (t) {\n return self.direction > 0 ? t.end <= start : t.start >= end;\n });\n };\n\n self.update = function (reset, recordVelocity, forceFake) {\n if (containerAnimation && !forceFake && !reset) {\n return;\n }\n\n var scroll = _refreshingAll === true ? prevScroll : self.scroll(),\n p = reset ? 0 : (scroll - start) / change,\n clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0,\n prevProgress = self.progress,\n isActive,\n wasActive,\n toggleState,\n action,\n stateChanged,\n toggled,\n isAtMax,\n isTakingAction;\n\n if (recordVelocity) {\n scroll2 = scroll1;\n scroll1 = containerAnimation ? scrollFunc() : scroll;\n\n if (snap) {\n snap2 = snap1;\n snap1 = animation && !isToggle ? animation.totalProgress() : clipped;\n }\n } // anticipate the pinning a few ticks ahead of time based on velocity to avoid a visual glitch due to the fact that most browsers do scrolling on a separate thread (not synced with requestAnimationFrame).\n\n\n anticipatePin && !clipped && pin && !_refreshing && !_startup && _lastScrollTime && start < scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin && (clipped = 0.0001);\n\n if (clipped !== prevProgress && self.enabled) {\n isActive = self.isActive = !!clipped && clipped < 1;\n wasActive = !!prevProgress && prevProgress < 1;\n toggled = isActive !== wasActive;\n stateChanged = toggled || !!clipped !== !!prevProgress; // could go from start all the way to end, thus it didn't toggle but it did change state in a sense (may need to fire a callback)\n\n self.direction = clipped > prevProgress ? 1 : -1;\n self.progress = clipped;\n\n if (stateChanged && !_refreshing) {\n toggleState = clipped && !prevProgress ? 0 : clipped === 1 ? 1 : prevProgress === 1 ? 2 : 3; // 0 = enter, 1 = leave, 2 = enterBack, 3 = leaveBack (we prioritize the FIRST encounter, thus if you scroll really fast past the onEnter and onLeave in one tick, it'd prioritize onEnter.\n\n if (isToggle) {\n action = !toggled && toggleActions[toggleState + 1] !== \"none\" && toggleActions[toggleState + 1] || toggleActions[toggleState]; // if it didn't toggle, that means it shot right past and since we prioritize the \"enter\" action, we should switch to the \"leave\" in this case (but only if one is defined)\n\n isTakingAction = animation && (action === \"complete\" || action === \"reset\" || action in animation);\n }\n }\n\n preventOverlaps && (toggled || isTakingAction) && (isTakingAction || scrub || !animation) && (_isFunction(preventOverlaps) ? preventOverlaps(self) : self.getTrailing(preventOverlaps).forEach(function (t) {\n return t.endAnimation();\n }));\n\n if (!isToggle) {\n if (scrubTween && !_refreshing && !_startup) {\n scrubTween._dp._time - scrubTween._start !== scrubTween._time && scrubTween.render(scrubTween._dp._time - scrubTween._start); // if there's a scrub on both the container animation and this one (or a ScrollSmoother), the update order would cause this one not to have rendered yet, so it wouldn't make any progress before we .restart() it heading toward the new progress so it'd appear stuck thus we force a render here.\n\n if (scrubTween.resetTo) {\n scrubTween.resetTo(\"totalProgress\", clipped, animation._tTime / animation._tDur);\n } else {\n // legacy support (courtesy), before 3.10.0\n scrubTween.vars.totalProgress = clipped;\n scrubTween.invalidate().restart();\n }\n } else if (animation) {\n animation.totalProgress(clipped, !!_refreshing);\n }\n }\n\n if (pin) {\n reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart);\n\n if (!useFixedPosition) {\n pinSetter(_round(pinStart + pinChange * clipped));\n } else if (stateChanged) {\n isAtMax = !reset && clipped > prevProgress && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction); // if it's at the VERY end of the page, don't switch away from position: fixed because it's pointless and it could cause a brief flash when the user scrolls back up (when it gets pinned again)\n\n if (pinReparent) {\n if (!reset && (isActive || isAtMax)) {\n var bounds = _getBounds(pin, true),\n _offset = scroll - start;\n\n _reparent(pin, _body, bounds.top + (direction === _vertical ? _offset : 0) + _px, bounds.left + (direction === _vertical ? 0 : _offset) + _px);\n } else {\n _reparent(pin, spacer);\n }\n }\n\n _setState(isActive || isAtMax ? pinActiveState : pinState);\n\n pinMoves && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !isAtMax ? pinChange : 0));\n }\n }\n\n snap && !tweenTo.tween && !_refreshing && !_startup && snapDelayedCall.restart(true);\n toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function (el) {\n return el.classList[isActive || once ? \"add\" : \"remove\"](toggleClass.className);\n }); // classes could affect positioning, so do it even if reset or refreshing is true.\n\n onUpdate && !isToggle && !reset && onUpdate(self);\n\n if (stateChanged && !_refreshing) {\n if (isToggle) {\n if (isTakingAction) {\n if (action === \"complete\") {\n animation.pause().totalProgress(1);\n } else if (action === \"reset\") {\n animation.restart(true).pause();\n } else if (action === \"restart\") {\n animation.restart(true);\n } else {\n animation[action]();\n }\n }\n\n onUpdate && onUpdate(self);\n }\n\n if (toggled || !_limitCallbacks) {\n // on startup, the page could be scrolled and we don't want to fire callbacks that didn't toggle. For example onEnter shouldn't fire if the ScrollTrigger isn't actually entered.\n onToggle && toggled && _callback(self, onToggle);\n callbacks[toggleState] && _callback(self, callbacks[toggleState]);\n once && (clipped === 1 ? self.kill(false, 1) : callbacks[toggleState] = 0); // a callback shouldn't be called again if once is true.\n\n if (!toggled) {\n // it's possible to go completely past, like from before the start to after the end (or vice-versa) in which case BOTH callbacks should be fired in that order\n toggleState = clipped === 1 ? 1 : 3;\n callbacks[toggleState] && _callback(self, callbacks[toggleState]);\n }\n }\n\n if (fastScrollEnd && !isActive && Math.abs(self.getVelocity()) > (_isNumber(fastScrollEnd) ? fastScrollEnd : 2500)) {\n _endAnimation(self.callbackAnimation);\n\n scrubTween ? scrubTween.progress(1) : _endAnimation(animation, action === \"reverse\" ? 1 : !clipped, 1);\n }\n } else if (isToggle && onUpdate && !_refreshing) {\n onUpdate(self);\n }\n } // update absolutely-positioned markers (only if the scroller isn't the viewport)\n\n\n if (markerEndSetter) {\n var n = containerAnimation ? scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0) : scroll;\n markerStartSetter(n + (markerStartTrigger._isFlipped ? 1 : 0));\n markerEndSetter(n);\n }\n\n caMarkerSetter && caMarkerSetter(-scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0));\n };\n\n self.enable = function (reset, refresh) {\n if (!self.enabled) {\n self.enabled = true;\n\n _addListener(scroller, \"resize\", _onResize);\n\n _addListener(isViewport ? _doc : scroller, \"scroll\", _onScroll);\n\n onRefreshInit && _addListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\n if (reset !== false) {\n self.progress = prevProgress = 0;\n scroll1 = scroll2 = lastSnap = scrollFunc();\n }\n\n refresh !== false && self.refresh();\n }\n };\n\n self.getTween = function (snap) {\n return snap && tweenTo ? tweenTo.tween : scrubTween;\n };\n\n self.setPositions = function (newStart, newEnd) {\n // doesn't persist after refresh()! Intended to be a way to override values that were set during refresh(), like you could set it in onRefresh()\n if (pin) {\n pinStart += newStart - start;\n pinChange += newEnd - newStart - change;\n pinSpacing === _padding && self.adjustPinSpacing(newEnd - newStart - change);\n }\n\n self.start = start = newStart;\n self.end = end = newEnd;\n change = newEnd - newStart;\n self.update();\n };\n\n self.adjustPinSpacing = function (amount) {\n if (spacerState && amount) {\n var i = spacerState.indexOf(direction.d) + 1;\n spacerState[i] = parseFloat(spacerState[i]) + amount + _px;\n spacerState[1] = parseFloat(spacerState[1]) + amount + _px;\n\n _setState(spacerState);\n }\n };\n\n self.disable = function (reset, allowAnimation) {\n if (self.enabled) {\n reset !== false && self.revert(true, true);\n self.enabled = self.isActive = false;\n allowAnimation || scrubTween && scrubTween.pause();\n prevScroll = 0;\n pinCache && (pinCache.uncache = 1);\n onRefreshInit && _removeListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\n if (snapDelayedCall) {\n snapDelayedCall.pause();\n tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0);\n }\n\n if (!isViewport) {\n var i = _triggers.length;\n\n while (i--) {\n if (_triggers[i].scroller === scroller && _triggers[i] !== self) {\n return; //don't remove the listeners if there are still other triggers referencing it.\n }\n }\n\n _removeListener(scroller, \"resize\", _onResize);\n\n _removeListener(scroller, \"scroll\", _onScroll);\n }\n }\n };\n\n self.kill = function (revert, allowAnimation) {\n self.disable(revert, allowAnimation);\n scrubTween && !allowAnimation && scrubTween.kill();\n id && delete _ids[id];\n\n var i = _triggers.indexOf(self);\n\n i >= 0 && _triggers.splice(i, 1);\n i === _i && _direction > 0 && _i--; // if we're in the middle of a refresh() or update(), splicing would cause skips in the index, so adjust...\n // if no other ScrollTrigger instances of the same scroller are found, wipe out any recorded scroll position. Otherwise, in a single page application, for example, it could maintain scroll position when it really shouldn't.\n\n i = 0;\n\n _triggers.forEach(function (t) {\n return t.scroller === self.scroller && (i = 1);\n });\n\n i || _refreshingAll || (self.scroll.rec = 0);\n\n if (animation) {\n animation.scrollTrigger = null;\n revert && animation.revert({\n kill: false\n });\n allowAnimation || animation.kill();\n }\n\n markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {\n return m.parentNode && m.parentNode.removeChild(m);\n });\n _primary === self && (_primary = 0);\n\n if (pin) {\n pinCache && (pinCache.uncache = 1);\n i = 0;\n\n _triggers.forEach(function (t) {\n return t.pin === pin && i++;\n });\n\n i || (pinCache.spacer = 0); // if there aren't any more ScrollTriggers with the same pin, remove the spacer, otherwise it could be contaminated with old/stale values if the user re-creates a ScrollTrigger for the same element.\n }\n\n vars.onKill && vars.onKill(self);\n };\n\n self.enable(false, false);\n customRevertReturn && customRevertReturn(self);\n !animation || !animation.add || change ? self.refresh() : gsap.delayedCall(0.01, function () {\n return start || end || self.refresh();\n }) && (change = 0.01) && (start = end = 0); // if the animation is a timeline, it may not have been populated yet, so it wouldn't render at the proper place on the first refresh(), thus we should schedule one for the next tick. If \"change\" is defined, we know it must be re-enabling, thus we can refresh() right away.\n\n pin && _queueRefreshAll(); // pinning could affect the positions of other things, so make sure we queue a full refresh()\n };\n\n ScrollTrigger.register = function register(core) {\n if (!_coreInitted) {\n gsap = core || _getGSAP();\n _windowExists() && window.document && ScrollTrigger.enable();\n _coreInitted = _enabled;\n }\n\n return _coreInitted;\n };\n\n ScrollTrigger.defaults = function defaults(config) {\n if (config) {\n for (var p in config) {\n _defaults[p] = config[p];\n }\n }\n\n return _defaults;\n };\n\n ScrollTrigger.disable = function disable(reset, kill) {\n _enabled = 0;\n\n _triggers.forEach(function (trigger) {\n return trigger[kill ? \"kill\" : \"disable\"](reset);\n });\n\n _removeListener(_win, \"wheel\", _onScroll);\n\n _removeListener(_doc, \"scroll\", _onScroll);\n\n clearInterval(_syncInterval);\n\n _removeListener(_doc, \"touchcancel\", _passThrough);\n\n _removeListener(_body, \"touchstart\", _passThrough);\n\n _multiListener(_removeListener, _doc, \"pointerdown,touchstart,mousedown\", _pointerDownHandler);\n\n _multiListener(_removeListener, _doc, \"pointerup,touchend,mouseup\", _pointerUpHandler);\n\n _resizeDelay.kill();\n\n _iterateAutoRefresh(_removeListener);\n\n for (var i = 0; i < _scrollers.length; i += 3) {\n _wheelListener(_removeListener, _scrollers[i], _scrollers[i + 1]);\n\n _wheelListener(_removeListener, _scrollers[i], _scrollers[i + 2]);\n }\n };\n\n ScrollTrigger.enable = function enable() {\n _win = window;\n _doc = document;\n _docEl = _doc.documentElement;\n _body = _doc.body;\n\n if (gsap) {\n _toArray = gsap.utils.toArray;\n _clamp = gsap.utils.clamp;\n _context = gsap.core.context || _passThrough;\n _suppressOverwrites = gsap.core.suppressOverwrites || _passThrough;\n _scrollRestoration = _win.history.scrollRestoration || \"auto\";\n _lastScroll = _win.pageYOffset;\n gsap.core.globals(\"ScrollTrigger\", ScrollTrigger); // must register the global manually because in Internet Explorer, functions (classes) don't have a \"name\" property.\n\n if (_body) {\n _enabled = 1;\n\n _rafBugFix();\n\n Observer.register(gsap); // isTouch is 0 if no touch, 1 if ONLY touch, and 2 if it can accommodate touch but also other types like mouse/pointer.\n\n ScrollTrigger.isTouch = Observer.isTouch;\n _fixIOSBug = Observer.isTouch && /(iPad|iPhone|iPod|Mac)/g.test(navigator.userAgent); // since 2017, iOS has had a bug that causes event.clientX/Y to be inaccurate when a scroll occurs, thus we must alternate ignoring every other touchmove event to work around it. See https://bugs.webkit.org/show_bug.cgi?id=181954 and https://codepen.io/GreenSock/pen/ExbrPNa/087cef197dc35445a0951e8935c41503\n\n _addListener(_win, \"wheel\", _onScroll); // mostly for 3rd party smooth scrolling libraries.\n\n\n _root = [_win, _doc, _docEl, _body];\n\n if (gsap.matchMedia) {\n ScrollTrigger.matchMedia = function (vars) {\n var mm = gsap.matchMedia(),\n p;\n\n for (p in vars) {\n mm.add(p, vars[p]);\n }\n\n return mm;\n };\n\n gsap.addEventListener(\"matchMediaInit\", function () {\n return _revertAll();\n });\n gsap.addEventListener(\"matchMediaRevert\", function () {\n return _revertRecorded();\n });\n gsap.addEventListener(\"matchMedia\", function () {\n _refreshAll(0, 1);\n\n _dispatch(\"matchMedia\");\n });\n gsap.matchMedia(\"(orientation: portrait)\", function () {\n // when orientation changes, we should take new base measurements for the ignoreMobileResize feature.\n _setBaseDimensions();\n\n return _setBaseDimensions;\n });\n } else {\n console.warn(\"Requires GSAP 3.11.0 or later\");\n }\n\n _setBaseDimensions();\n\n _addListener(_doc, \"scroll\", _onScroll); // some browsers (like Chrome), the window stops dispatching scroll events on the window if you scroll really fast, but it's consistent on the document!\n\n\n var bodyStyle = _body.style,\n border = bodyStyle.borderTopStyle,\n AnimationProto = gsap.core.Animation.prototype,\n bounds,\n i;\n AnimationProto.revert || Object.defineProperty(AnimationProto, \"revert\", {\n value: function value() {\n return this.time(-0.01, true);\n }\n }); // only for backwards compatibility (Animation.revert() was added after 3.10.4)\n\n bodyStyle.borderTopStyle = \"solid\"; // works around an issue where a margin of a child element could throw off the bounds of the _body, making it seem like there's a margin when there actually isn't. The border ensures that the bounds are accurate.\n\n bounds = _getBounds(_body);\n _vertical.m = Math.round(bounds.top + _vertical.sc()) || 0; // accommodate the offset of the caused by margins and/or padding\n\n _horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0;\n border ? bodyStyle.borderTopStyle = border : bodyStyle.removeProperty(\"border-top-style\"); // TODO: (?) maybe move to leveraging the velocity mechanism in Observer and skip intervals.\n\n _syncInterval = setInterval(_sync, 250);\n gsap.delayedCall(0.5, function () {\n return _startup = 0;\n });\n\n _addListener(_doc, \"touchcancel\", _passThrough); // some older Android devices intermittently stop dispatching \"touchmove\" events if we don't listen for \"touchcancel\" on the document.\n\n\n _addListener(_body, \"touchstart\", _passThrough); //works around Safari bug: https://greensock.com/forums/topic/21450-draggable-in-iframe-on-mobile-is-buggy/\n\n\n _multiListener(_addListener, _doc, \"pointerdown,touchstart,mousedown\", _pointerDownHandler);\n\n _multiListener(_addListener, _doc, \"pointerup,touchend,mouseup\", _pointerUpHandler);\n\n _transformProp = gsap.utils.checkPrefix(\"transform\");\n\n _stateProps.push(_transformProp);\n\n _coreInitted = _getTime();\n _resizeDelay = gsap.delayedCall(0.2, _refreshAll).pause();\n _autoRefresh = [_doc, \"visibilitychange\", function () {\n var w = _win.innerWidth,\n h = _win.innerHeight;\n\n if (_doc.hidden) {\n _prevWidth = w;\n _prevHeight = h;\n } else if (_prevWidth !== w || _prevHeight !== h) {\n _onResize();\n }\n }, _doc, \"DOMContentLoaded\", _refreshAll, _win, \"load\", _refreshAll, _win, \"resize\", _onResize];\n\n _iterateAutoRefresh(_addListener);\n\n _triggers.forEach(function (trigger) {\n return trigger.enable(0, 1);\n });\n\n for (i = 0; i < _scrollers.length; i += 3) {\n _wheelListener(_removeListener, _scrollers[i], _scrollers[i + 1]);\n\n _wheelListener(_removeListener, _scrollers[i], _scrollers[i + 2]);\n }\n }\n }\n };\n\n ScrollTrigger.config = function config(vars) {\n \"limitCallbacks\" in vars && (_limitCallbacks = !!vars.limitCallbacks);\n var ms = vars.syncInterval;\n ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms);\n \"ignoreMobileResize\" in vars && (_ignoreMobileResize = ScrollTrigger.isTouch === 1 && vars.ignoreMobileResize);\n\n if (\"autoRefreshEvents\" in vars) {\n _iterateAutoRefresh(_removeListener) || _iterateAutoRefresh(_addListener, vars.autoRefreshEvents || \"none\");\n _ignoreResize = (vars.autoRefreshEvents + \"\").indexOf(\"resize\") === -1;\n }\n };\n\n ScrollTrigger.scrollerProxy = function scrollerProxy(target, vars) {\n var t = _getTarget(target),\n i = _scrollers.indexOf(t),\n isViewport = _isViewport(t);\n\n if (~i) {\n _scrollers.splice(i, isViewport ? 6 : 2);\n }\n\n if (vars) {\n isViewport ? _proxies.unshift(_win, vars, _body, vars, _docEl, vars) : _proxies.unshift(t, vars);\n }\n };\n\n ScrollTrigger.clearMatchMedia = function clearMatchMedia(query) {\n _triggers.forEach(function (t) {\n return t._ctx && t._ctx.query === query && t._ctx.kill(true, true);\n });\n };\n\n ScrollTrigger.isInViewport = function isInViewport(element, ratio, horizontal) {\n var bounds = (_isString(element) ? _getTarget(element) : element).getBoundingClientRect(),\n offset = bounds[horizontal ? _width : _height] * ratio || 0;\n return horizontal ? bounds.right - offset > 0 && bounds.left + offset < _win.innerWidth : bounds.bottom - offset > 0 && bounds.top + offset < _win.innerHeight;\n };\n\n ScrollTrigger.positionInViewport = function positionInViewport(element, referencePoint, horizontal) {\n _isString(element) && (element = _getTarget(element));\n var bounds = element.getBoundingClientRect(),\n size = bounds[horizontal ? _width : _height],\n offset = referencePoint == null ? size / 2 : referencePoint in _keywords ? _keywords[referencePoint] * size : ~referencePoint.indexOf(\"%\") ? parseFloat(referencePoint) * size / 100 : parseFloat(referencePoint) || 0;\n return horizontal ? (bounds.left + offset) / _win.innerWidth : (bounds.top + offset) / _win.innerHeight;\n };\n\n ScrollTrigger.killAll = function killAll(allowListeners) {\n _triggers.slice(0).forEach(function (t) {\n return t.vars.id !== \"ScrollSmoother\" && t.kill();\n });\n\n if (allowListeners !== true) {\n var listeners = _listeners.killAll || [];\n _listeners = {};\n listeners.forEach(function (f) {\n return f();\n });\n }\n };\n\n return ScrollTrigger;\n}();\nScrollTrigger.version = \"3.11.5\";\n\nScrollTrigger.saveStyles = function (targets) {\n return targets ? _toArray(targets).forEach(function (target) {\n // saved styles are recorded in a consecutive alternating Array, like [element, cssText, transform attribute, cache, matchMedia, ...]\n if (target && target.style) {\n var i = _savedStyles.indexOf(target);\n\n i >= 0 && _savedStyles.splice(i, 5);\n\n _savedStyles.push(target, target.style.cssText, target.getBBox && target.getAttribute(\"transform\"), gsap.core.getCache(target), _context());\n }\n }) : _savedStyles;\n};\n\nScrollTrigger.revert = function (soft, media) {\n return _revertAll(!soft, media);\n};\n\nScrollTrigger.create = function (vars, animation) {\n return new ScrollTrigger(vars, animation);\n};\n\nScrollTrigger.refresh = function (safe) {\n return safe ? _onResize() : (_coreInitted || ScrollTrigger.register()) && _refreshAll(true);\n};\n\nScrollTrigger.update = function (force) {\n return ++_scrollers.cache && _updateAll(force === true ? 2 : 0);\n};\n\nScrollTrigger.clearScrollMemory = _clearScrollMemory;\n\nScrollTrigger.maxScroll = function (element, horizontal) {\n return _maxScroll(element, horizontal ? _horizontal : _vertical);\n};\n\nScrollTrigger.getScrollFunc = function (element, horizontal) {\n return _getScrollFunc(_getTarget(element), horizontal ? _horizontal : _vertical);\n};\n\nScrollTrigger.getById = function (id) {\n return _ids[id];\n};\n\nScrollTrigger.getAll = function () {\n return _triggers.filter(function (t) {\n return t.vars.id !== \"ScrollSmoother\";\n });\n}; // it's common for people to ScrollTrigger.getAll(t => t.kill()) on page routes, for example, and we don't want it to ruin smooth scrolling by killing the main ScrollSmoother one.\n\n\nScrollTrigger.isScrolling = function () {\n return !!_lastScrollTime;\n};\n\nScrollTrigger.snapDirectional = _snapDirectional;\n\nScrollTrigger.addEventListener = function (type, callback) {\n var a = _listeners[type] || (_listeners[type] = []);\n ~a.indexOf(callback) || a.push(callback);\n};\n\nScrollTrigger.removeEventListener = function (type, callback) {\n var a = _listeners[type],\n i = a && a.indexOf(callback);\n i >= 0 && a.splice(i, 1);\n};\n\nScrollTrigger.batch = function (targets, vars) {\n var result = [],\n varsCopy = {},\n interval = vars.interval || 0.016,\n batchMax = vars.batchMax || 1e9,\n proxyCallback = function proxyCallback(type, callback) {\n var elements = [],\n triggers = [],\n delay = gsap.delayedCall(interval, function () {\n callback(elements, triggers);\n elements = [];\n triggers = [];\n }).pause();\n return function (self) {\n elements.length || delay.restart(true);\n elements.push(self.trigger);\n triggers.push(self);\n batchMax <= elements.length && delay.progress(1);\n };\n },\n p;\n\n for (p in vars) {\n varsCopy[p] = p.substr(0, 2) === \"on\" && _isFunction(vars[p]) && p !== \"onRefreshInit\" ? proxyCallback(p, vars[p]) : vars[p];\n }\n\n if (_isFunction(batchMax)) {\n batchMax = batchMax();\n\n _addListener(ScrollTrigger, \"refresh\", function () {\n return batchMax = vars.batchMax();\n });\n }\n\n _toArray(targets).forEach(function (target) {\n var config = {};\n\n for (p in varsCopy) {\n config[p] = varsCopy[p];\n }\n\n config.trigger = target;\n result.push(ScrollTrigger.create(config));\n });\n\n return result;\n}; // to reduce file size. clamps the scroll and also returns a duration multiplier so that if the scroll gets chopped shorter, the duration gets curtailed as well (otherwise if you're very close to the top of the page, for example, and swipe up really fast, it'll suddenly slow down and take a long time to reach the top).\n\n\nvar _clampScrollAndGetDurationMultiplier = function _clampScrollAndGetDurationMultiplier(scrollFunc, current, end, max) {\n current > max ? scrollFunc(max) : current < 0 && scrollFunc(0);\n return end > max ? (max - current) / (end - current) : end < 0 ? current / (current - end) : 1;\n},\n _allowNativePanning = function _allowNativePanning(target, direction) {\n if (direction === true) {\n target.style.removeProperty(\"touch-action\");\n } else {\n target.style.touchAction = direction === true ? \"auto\" : direction ? \"pan-\" + direction + (Observer.isTouch ? \" pinch-zoom\" : \"\") : \"none\"; // note: Firefox doesn't support it pinch-zoom properly, at least in addition to a pan-x or pan-y.\n }\n\n target === _docEl && _allowNativePanning(_body, direction);\n},\n _overflow = {\n auto: 1,\n scroll: 1\n},\n _nestedScroll = function _nestedScroll(_ref5) {\n var event = _ref5.event,\n target = _ref5.target,\n axis = _ref5.axis;\n\n var node = (event.changedTouches ? event.changedTouches[0] : event).target,\n cache = node._gsap || gsap.core.getCache(node),\n time = _getTime(),\n cs;\n\n if (!cache._isScrollT || time - cache._isScrollT > 2000) {\n // cache for 2 seconds to improve performance.\n while (node && node !== _body && (node.scrollHeight <= node.clientHeight && node.scrollWidth <= node.clientWidth || !(_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]))) {\n node = node.parentNode;\n }\n\n cache._isScroll = node && node !== target && !_isViewport(node) && (_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]);\n cache._isScrollT = time;\n }\n\n if (cache._isScroll || axis === \"x\") {\n event.stopPropagation();\n event._gsapAllow = true;\n }\n},\n // capture events on scrollable elements INSIDE the and allow those by calling stopPropagation() when we find a scrollable ancestor\n_inputObserver = function _inputObserver(target, type, inputs, nested) {\n return Observer.create({\n target: target,\n capture: true,\n debounce: false,\n lockAxis: true,\n type: type,\n onWheel: nested = nested && _nestedScroll,\n onPress: nested,\n onDrag: nested,\n onScroll: nested,\n onEnable: function onEnable() {\n return inputs && _addListener(_doc, Observer.eventTypes[0], _captureInputs, false, true);\n },\n onDisable: function onDisable() {\n return _removeListener(_doc, Observer.eventTypes[0], _captureInputs, true);\n }\n });\n},\n _inputExp = /(input|label|select|textarea)/i,\n _inputIsFocused,\n _captureInputs = function _captureInputs(e) {\n var isInput = _inputExp.test(e.target.tagName);\n\n if (isInput || _inputIsFocused) {\n e._gsapAllow = true;\n _inputIsFocused = isInput;\n }\n},\n _getScrollNormalizer = function _getScrollNormalizer(vars) {\n _isObject(vars) || (vars = {});\n vars.preventDefault = vars.isNormalizer = vars.allowClicks = true;\n vars.type || (vars.type = \"wheel,touch\");\n vars.debounce = !!vars.debounce;\n vars.id = vars.id || \"normalizer\";\n\n var _vars2 = vars,\n normalizeScrollX = _vars2.normalizeScrollX,\n momentum = _vars2.momentum,\n allowNestedScroll = _vars2.allowNestedScroll,\n onRelease = _vars2.onRelease,\n self,\n maxY,\n target = _getTarget(vars.target) || _docEl,\n smoother = gsap.core.globals().ScrollSmoother,\n smootherInstance = smoother && smoother.get(),\n content = _fixIOSBug && (vars.content && _getTarget(vars.content) || smootherInstance && vars.content !== false && !smootherInstance.smooth() && smootherInstance.content()),\n scrollFuncY = _getScrollFunc(target, _vertical),\n scrollFuncX = _getScrollFunc(target, _horizontal),\n scale = 1,\n initialScale = (Observer.isTouch && _win.visualViewport ? _win.visualViewport.scale * _win.visualViewport.width : _win.outerWidth) / _win.innerWidth,\n wheelRefresh = 0,\n resolveMomentumDuration = _isFunction(momentum) ? function () {\n return momentum(self);\n } : function () {\n return momentum || 2.8;\n },\n lastRefreshID,\n skipTouchMove,\n inputObserver = _inputObserver(target, vars.type, true, allowNestedScroll),\n resumeTouchMove = function resumeTouchMove() {\n return skipTouchMove = false;\n },\n scrollClampX = _passThrough,\n scrollClampY = _passThrough,\n updateClamps = function updateClamps() {\n maxY = _maxScroll(target, _vertical);\n scrollClampY = _clamp(_fixIOSBug ? 1 : 0, maxY);\n normalizeScrollX && (scrollClampX = _clamp(0, _maxScroll(target, _horizontal)));\n lastRefreshID = _refreshID;\n },\n removeContentOffset = function removeContentOffset() {\n content._gsap.y = _round(parseFloat(content._gsap.y) + scrollFuncY.offset) + \"px\";\n content.style.transform = \"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, \" + parseFloat(content._gsap.y) + \", 0, 1)\";\n scrollFuncY.offset = scrollFuncY.cacheID = 0;\n },\n ignoreDrag = function ignoreDrag() {\n if (skipTouchMove) {\n requestAnimationFrame(resumeTouchMove);\n\n var offset = _round(self.deltaY / 2),\n scroll = scrollClampY(scrollFuncY.v - offset);\n\n if (content && scroll !== scrollFuncY.v + scrollFuncY.offset) {\n scrollFuncY.offset = scroll - scrollFuncY.v;\n\n var y = _round((parseFloat(content && content._gsap.y) || 0) - scrollFuncY.offset);\n\n content.style.transform = \"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, \" + y + \", 0, 1)\";\n content._gsap.y = y + \"px\";\n scrollFuncY.cacheID = _scrollers.cache;\n\n _updateAll();\n }\n\n return true;\n }\n\n scrollFuncY.offset && removeContentOffset();\n skipTouchMove = true;\n },\n tween,\n startScrollX,\n startScrollY,\n onStopDelayedCall,\n onResize = function onResize() {\n // if the window resizes, like on an iPhone which Apple FORCES the address bar to show/hide even if we event.preventDefault(), it may be scrolling too far now that the address bar is showing, so we must dynamically adjust the momentum tween.\n updateClamps();\n\n if (tween.isActive() && tween.vars.scrollY > maxY) {\n scrollFuncY() > maxY ? tween.progress(1) && scrollFuncY(maxY) : tween.resetTo(\"scrollY\", maxY);\n }\n };\n\n content && gsap.set(content, {\n y: \"+=0\"\n }); // to ensure there's a cache (element._gsap)\n\n vars.ignoreCheck = function (e) {\n return _fixIOSBug && e.type === \"touchmove\" && ignoreDrag(e) || scale > 1.05 && e.type !== \"touchstart\" || self.isGesturing || e.touches && e.touches.length > 1;\n };\n\n vars.onPress = function () {\n skipTouchMove = false;\n var prevScale = scale;\n scale = _round((_win.visualViewport && _win.visualViewport.scale || 1) / initialScale);\n tween.pause();\n prevScale !== scale && _allowNativePanning(target, scale > 1.01 ? true : normalizeScrollX ? false : \"x\");\n startScrollX = scrollFuncX();\n startScrollY = scrollFuncY();\n updateClamps();\n lastRefreshID = _refreshID;\n };\n\n vars.onRelease = vars.onGestureStart = function (self, wasDragging) {\n scrollFuncY.offset && removeContentOffset();\n\n if (!wasDragging) {\n onStopDelayedCall.restart(true);\n } else {\n _scrollers.cache++; // make sure we're pulling the non-cached value\n // alternate algorithm: durX = Math.min(6, Math.abs(self.velocityX / 800)),\tdur = Math.max(durX, Math.min(6, Math.abs(self.velocityY / 800))); dur = dur * (0.4 + (1 - _power4In(dur / 6)) * 0.6)) * (momentumSpeed || 1)\n\n var dur = resolveMomentumDuration(),\n currentScroll,\n endScroll;\n\n if (normalizeScrollX) {\n currentScroll = scrollFuncX();\n endScroll = currentScroll + dur * 0.05 * -self.velocityX / 0.227; // the constant .227 is from power4(0.05). velocity is inverted because scrolling goes in the opposite direction.\n\n dur *= _clampScrollAndGetDurationMultiplier(scrollFuncX, currentScroll, endScroll, _maxScroll(target, _horizontal));\n tween.vars.scrollX = scrollClampX(endScroll);\n }\n\n currentScroll = scrollFuncY();\n endScroll = currentScroll + dur * 0.05 * -self.velocityY / 0.227; // the constant .227 is from power4(0.05)\n\n dur *= _clampScrollAndGetDurationMultiplier(scrollFuncY, currentScroll, endScroll, _maxScroll(target, _vertical));\n tween.vars.scrollY = scrollClampY(endScroll);\n tween.invalidate().duration(dur).play(0.01);\n\n if (_fixIOSBug && tween.vars.scrollY >= maxY || currentScroll >= maxY - 1) {\n // iOS bug: it'll show the address bar but NOT fire the window \"resize\" event until the animation is done but we must protect against overshoot so we leverage an onUpdate to do so.\n gsap.to({}, {\n onUpdate: onResize,\n duration: dur\n });\n }\n }\n\n onRelease && onRelease(self);\n };\n\n vars.onWheel = function () {\n tween._ts && tween.pause();\n\n if (_getTime() - wheelRefresh > 1000) {\n // after 1 second, refresh the clamps otherwise that'll only happen when ScrollTrigger.refresh() is called or for touch-scrolling.\n lastRefreshID = 0;\n wheelRefresh = _getTime();\n }\n };\n\n vars.onChange = function (self, dx, dy, xArray, yArray) {\n _refreshID !== lastRefreshID && updateClamps();\n dx && normalizeScrollX && scrollFuncX(scrollClampX(xArray[2] === dx ? startScrollX + (self.startX - self.x) : scrollFuncX() + dx - xArray[1])); // for more precision, we track pointer/touch movement from the start, otherwise it'll drift.\n\n if (dy) {\n scrollFuncY.offset && removeContentOffset();\n var isTouch = yArray[2] === dy,\n y = isTouch ? startScrollY + self.startY - self.y : scrollFuncY() + dy - yArray[1],\n yClamped = scrollClampY(y);\n isTouch && y !== yClamped && (startScrollY += yClamped - y);\n scrollFuncY(yClamped);\n }\n\n (dy || dx) && _updateAll();\n };\n\n vars.onEnable = function () {\n _allowNativePanning(target, normalizeScrollX ? false : \"x\");\n\n ScrollTrigger.addEventListener(\"refresh\", onResize);\n\n _addListener(_win, \"resize\", onResize);\n\n if (scrollFuncY.smooth) {\n scrollFuncY.target.style.scrollBehavior = \"auto\";\n scrollFuncY.smooth = scrollFuncX.smooth = false;\n }\n\n inputObserver.enable();\n };\n\n vars.onDisable = function () {\n _allowNativePanning(target, true);\n\n _removeListener(_win, \"resize\", onResize);\n\n ScrollTrigger.removeEventListener(\"refresh\", onResize);\n inputObserver.kill();\n };\n\n vars.lockAxis = vars.lockAxis !== false;\n self = new Observer(vars);\n self.iOS = _fixIOSBug; // used in the Observer getCachedScroll() function to work around an iOS bug that wreaks havoc with TouchEvent.clientY if we allow scroll to go all the way back to 0.\n\n _fixIOSBug && !scrollFuncY() && scrollFuncY(1); // iOS bug causes event.clientY values to freak out (wildly inaccurate) if the scroll position is exactly 0.\n\n _fixIOSBug && gsap.ticker.add(_passThrough); // prevent the ticker from sleeping\n\n onStopDelayedCall = self._dc;\n tween = gsap.to(self, {\n ease: \"power4\",\n paused: true,\n scrollX: normalizeScrollX ? \"+=0.1\" : \"+=0\",\n scrollY: \"+=0.1\",\n modifiers: {\n scrollY: _interruptionTracker(scrollFuncY, scrollFuncY(), function () {\n return tween.pause();\n })\n },\n onUpdate: _updateAll,\n onComplete: onStopDelayedCall.vars.onComplete\n }); // we need the modifier to sense if the scroll position is altered outside of the momentum tween (like with a scrollTo tween) so we can pause() it to prevent conflicts.\n\n return self;\n};\n\nScrollTrigger.sort = function (func) {\n return _triggers.sort(func || function (a, b) {\n return (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6);\n });\n};\n\nScrollTrigger.observe = function (vars) {\n return new Observer(vars);\n};\n\nScrollTrigger.normalizeScroll = function (vars) {\n if (typeof vars === \"undefined\") {\n return _normalizer;\n }\n\n if (vars === true && _normalizer) {\n return _normalizer.enable();\n }\n\n if (vars === false) {\n return _normalizer && _normalizer.kill();\n }\n\n var normalizer = vars instanceof Observer ? vars : _getScrollNormalizer(vars);\n _normalizer && _normalizer.target === normalizer.target && _normalizer.kill();\n _isViewport(normalizer.target) && (_normalizer = normalizer);\n return normalizer;\n};\n\nScrollTrigger.core = {\n // smaller file size way to leverage in ScrollSmoother and Observer\n _getVelocityProp: _getVelocityProp,\n _inputObserver: _inputObserver,\n _scrollers: _scrollers,\n _proxies: _proxies,\n bridge: {\n // when normalizeScroll sets the scroll position (ss = setScroll)\n ss: function ss() {\n _lastScrollTime || _dispatch(\"scrollStart\");\n _lastScrollTime = _getTime();\n },\n // a way to get the _refreshing value in Observer\n ref: function ref() {\n return _refreshing;\n }\n }\n};\n_getGSAP() && gsap.registerPlugin(ScrollTrigger);\nexport { ScrollTrigger as default };","function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/*!\n * GSAP 3.11.5\n * https://greensock.com\n *\n * @license Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar _config = {\n autoSleep: 120,\n force3D: \"auto\",\n nullTargetWarn: 1,\n units: {\n lineHeight: \"\"\n }\n},\n _defaults = {\n duration: .5,\n overwrite: false,\n delay: 0\n},\n _suppressOverwrites,\n _reverting,\n _context,\n _bigNum = 1e8,\n _tinyNum = 1 / _bigNum,\n _2PI = Math.PI * 2,\n _HALF_PI = _2PI / 4,\n _gsID = 0,\n _sqrt = Math.sqrt,\n _cos = Math.cos,\n _sin = Math.sin,\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n},\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n},\n _isUndefined = function _isUndefined(value) {\n return typeof value === \"undefined\";\n},\n _isObject = function _isObject(value) {\n return typeof value === \"object\";\n},\n _isNotFalse = function _isNotFalse(value) {\n return value !== false;\n},\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _isFuncOrString = function _isFuncOrString(value) {\n return _isFunction(value) || _isString(value);\n},\n _isTypedArray = typeof ArrayBuffer === \"function\" && ArrayBuffer.isView || function () {},\n // note: IE10 has ArrayBuffer, but NOT ArrayBuffer.isView().\n_isArray = Array.isArray,\n _strictNumExp = /(?:-?\\.?\\d|\\.)+/gi,\n //only numbers (including negatives and decimals) but NOT relative values.\n_numExp = /[-+=.]*\\d+[.e\\-+]*\\d*[e\\-+]*\\d*/g,\n //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.\n_numWithUnitExp = /[-+=.]*\\d+[.e-]*\\d*[a-z%]*/g,\n _complexStringNumExp = /[-+=.]*\\d+\\.?\\d*(?:e-|e\\+)?\\d*/gi,\n //duplicate so that while we're looping through matches from exec(), it doesn't contaminate the lastIndex of _numExp which we use to search for colors too.\n_relExp = /[+-]=-?[.\\d]+/,\n _delimitedValueExp = /[^,'\"\\[\\]\\s]+/gi,\n // previously /[#\\-+.]*\\b[a-z\\d\\-=+%.]+/gi but didn't catch special characters.\n_unitExp = /^[+\\-=e\\s\\d]*\\d+[.\\d]*([a-z]*|%)\\s*$/i,\n _globalTimeline,\n _win,\n _coreInitted,\n _doc,\n _globals = {},\n _installScope = {},\n _coreReady,\n _install = function _install(scope) {\n return (_installScope = _merge(scope, _globals)) && gsap;\n},\n _missingPlugin = function _missingPlugin(property, value) {\n return console.warn(\"Invalid property\", property, \"set to\", value, \"Missing plugin? gsap.registerPlugin()\");\n},\n _warn = function _warn(message, suppress) {\n return !suppress && console.warn(message);\n},\n _addGlobal = function _addGlobal(name, obj) {\n return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;\n},\n _emptyFunc = function _emptyFunc() {\n return 0;\n},\n _startAtRevertConfig = {\n suppressEvents: true,\n isStart: true,\n kill: false\n},\n _revertConfigNoKill = {\n suppressEvents: true,\n kill: false\n},\n _revertConfig = {\n suppressEvents: true\n},\n _reservedProps = {},\n _lazyTweens = [],\n _lazyLookup = {},\n _lastRenderedFrame,\n _plugins = {},\n _effects = {},\n _nextGCFrame = 30,\n _harnessPlugins = [],\n _callbackNames = \"\",\n _harness = function _harness(targets) {\n var target = targets[0],\n harnessPlugin,\n i;\n _isObject(target) || _isFunction(target) || (targets = [targets]);\n\n if (!(harnessPlugin = (target._gsap || {}).harness)) {\n // find the first target with a harness. We assume targets passed into an animation will be of similar type, meaning the same kind of harness can be used for them all (performance optimization)\n i = _harnessPlugins.length;\n\n while (i-- && !_harnessPlugins[i].targetTest(target)) {}\n\n harnessPlugin = _harnessPlugins[i];\n }\n\n i = targets.length;\n\n while (i--) {\n targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);\n }\n\n return targets;\n},\n _getCache = function _getCache(target) {\n return target._gsap || _harness(toArray(target))[0]._gsap;\n},\n _getProperty = function _getProperty(target, property, v) {\n return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;\n},\n _forEachName = function _forEachName(names, func) {\n return (names = names.split(\",\")).forEach(func) || names;\n},\n //split a comma-delimited list of names into an array, then run a forEach() function and return the split array (this is just a way to consolidate/shorten some code).\n_round = function _round(value) {\n return Math.round(value * 100000) / 100000 || 0;\n},\n _roundPrecise = function _roundPrecise(value) {\n return Math.round(value * 10000000) / 10000000 || 0;\n},\n // increased precision mostly for timing values.\n_parseRelative = function _parseRelative(start, value) {\n var operator = value.charAt(0),\n end = parseFloat(value.substr(2));\n start = parseFloat(start);\n return operator === \"+\" ? start + end : operator === \"-\" ? start - end : operator === \"*\" ? start * end : start / end;\n},\n _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {\n //searches one array to find matches for any of the items in the toFind array. As soon as one is found, it returns true. It does NOT return all the matches; it's simply a boolean search.\n var l = toFind.length,\n i = 0;\n\n for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}\n\n return i < l;\n},\n _lazyRender = function _lazyRender() {\n var l = _lazyTweens.length,\n a = _lazyTweens.slice(0),\n i,\n tween;\n\n _lazyLookup = {};\n _lazyTweens.length = 0;\n\n for (i = 0; i < l; i++) {\n tween = a[i];\n tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);\n }\n},\n _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {\n _lazyTweens.length && !_reverting && _lazyRender();\n animation.render(time, suppressEvents, force || _reverting && time < 0 && (animation._initted || animation._startAt));\n _lazyTweens.length && !_reverting && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.\n},\n _numericIfPossible = function _numericIfPossible(value) {\n var n = parseFloat(value);\n return (n || n === 0) && (value + \"\").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;\n},\n _passThrough = function _passThrough(p) {\n return p;\n},\n _setDefaults = function _setDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || (obj[p] = defaults[p]);\n }\n\n return obj;\n},\n _setKeyframeDefaults = function _setKeyframeDefaults(excludeDuration) {\n return function (obj, defaults) {\n for (var p in defaults) {\n p in obj || p === \"duration\" && excludeDuration || p === \"ease\" || (obj[p] = defaults[p]);\n }\n };\n},\n _merge = function _merge(base, toMerge) {\n for (var p in toMerge) {\n base[p] = toMerge[p];\n }\n\n return base;\n},\n _mergeDeep = function _mergeDeep(base, toMerge) {\n for (var p in toMerge) {\n p !== \"__proto__\" && p !== \"constructor\" && p !== \"prototype\" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);\n }\n\n return base;\n},\n _copyExcluding = function _copyExcluding(obj, excluding) {\n var copy = {},\n p;\n\n for (p in obj) {\n p in excluding || (copy[p] = obj[p]);\n }\n\n return copy;\n},\n _inheritDefaults = function _inheritDefaults(vars) {\n var parent = vars.parent || _globalTimeline,\n func = vars.keyframes ? _setKeyframeDefaults(_isArray(vars.keyframes)) : _setDefaults;\n\n if (_isNotFalse(vars.inherit)) {\n while (parent) {\n func(vars, parent.vars.defaults);\n parent = parent.parent || parent._dp;\n }\n }\n\n return vars;\n},\n _arraysMatch = function _arraysMatch(a1, a2) {\n var i = a1.length,\n match = i === a2.length;\n\n while (match && i-- && a1[i] === a2[i]) {}\n\n return i < 0;\n},\n _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = parent[lastProp],\n t;\n\n if (sortBy) {\n t = child[sortBy];\n\n while (prev && prev[sortBy] > t) {\n prev = prev._prev;\n }\n }\n\n if (prev) {\n child._next = prev._next;\n prev._next = child;\n } else {\n child._next = parent[firstProp];\n parent[firstProp] = child;\n }\n\n if (child._next) {\n child._next._prev = child;\n } else {\n parent[lastProp] = child;\n }\n\n child._prev = prev;\n child.parent = child._dp = parent;\n return child;\n},\n _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = child._prev,\n next = child._next;\n\n if (prev) {\n prev._next = next;\n } else if (parent[firstProp] === child) {\n parent[firstProp] = next;\n }\n\n if (next) {\n next._prev = prev;\n } else if (parent[lastProp] === child) {\n parent[lastProp] = prev;\n }\n\n child._next = child._prev = child.parent = null; // don't delete the _dp just so we can revert if necessary. But parent should be null to indicate the item isn't in a linked list.\n},\n _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {\n child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove(child);\n child._act = 0;\n},\n _uncache = function _uncache(animation, child) {\n if (animation && (!child || child._end > animation._dur || child._start < 0)) {\n // performance optimization: if a child animation is passed in we should only uncache if that child EXTENDS the animation (its end time is beyond the end)\n var a = animation;\n\n while (a) {\n a._dirty = 1;\n a = a.parent;\n }\n }\n\n return animation;\n},\n _recacheAncestors = function _recacheAncestors(animation) {\n var parent = animation.parent;\n\n while (parent && parent.parent) {\n //sometimes we must force a re-sort of all children and update the duration/totalDuration of all ancestor timelines immediately in case, for example, in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.\n parent._dirty = 1;\n parent.totalDuration();\n parent = parent.parent;\n }\n\n return animation;\n},\n _rewindStartAt = function _rewindStartAt(tween, totalTime, suppressEvents, force) {\n return tween._startAt && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween.vars.immediateRender && !tween.vars.autoRevert || tween._startAt.render(totalTime, true, force));\n},\n _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {\n return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);\n},\n _elapsedCycleDuration = function _elapsedCycleDuration(animation) {\n return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;\n},\n // feed in the totalTime and cycleDuration and it'll return the cycle (iteration minus 1) and if the playhead is exactly at the very END, it will NOT bump up to the next cycle.\n_animationCycle = function _animationCycle(tTime, cycleDuration) {\n var whole = Math.floor(tTime /= cycleDuration);\n return tTime && whole === tTime ? whole - 1 : whole;\n},\n _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {\n return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);\n},\n _setEnd = function _setEnd(animation) {\n return animation._end = _roundPrecise(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));\n},\n _alignPlayhead = function _alignPlayhead(animation, totalTime) {\n // adjusts the animation's _start and _end according to the provided totalTime (only if the parent's smoothChildTiming is true and the animation isn't paused). It doesn't do any rendering or forcing things back into parent timelines, etc. - that's what totalTime() is for.\n var parent = animation._dp;\n\n if (parent && parent.smoothChildTiming && animation._ts) {\n animation._start = _roundPrecise(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));\n\n _setEnd(animation);\n\n parent._dirty || _uncache(parent, animation); //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.\n }\n\n return animation;\n},\n\n/*\n_totalTimeToTime = (clampedTotalTime, duration, repeat, repeatDelay, yoyo) => {\n\tlet cycleDuration = duration + repeatDelay,\n\t\ttime = _round(clampedTotalTime % cycleDuration);\n\tif (time > duration) {\n\t\ttime = duration;\n\t}\n\treturn (yoyo && (~~(clampedTotalTime / cycleDuration) & 1)) ? duration - time : time;\n},\n*/\n_postAddChecks = function _postAddChecks(timeline, child) {\n var t;\n\n if (child._time || child._initted && !child._dur) {\n //in case, for example, the _start is moved on a tween that has already rendered. Imagine it's at its end state, then the startTime is moved WAY later (after the end of this timeline), it should render at its beginning.\n t = _parentToChildTotalTime(timeline.rawTime(), child);\n\n if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {\n child.render(t, true);\n }\n } //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.\n\n\n if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {\n //in case any of the ancestors had completed but should now be enabled...\n if (timeline._dur < timeline.duration()) {\n t = timeline;\n\n while (t._dp) {\n t.rawTime() >= 0 && t.totalTime(t._tTime); //moves the timeline (shifts its startTime) if necessary, and also enables it. If it's currently zero, though, it may not be scheduled to render until later so there's no need to force it to align with the current playhead position. Only move to catch up with the playhead.\n\n t = t._dp;\n }\n }\n\n timeline._zTime = -_tinyNum; // helps ensure that the next render() will be forced (crossingStart = true in render()), even if the duration hasn't changed (we're adding a child which would need to get rendered). Definitely an edge case. Note: we MUST do this AFTER the loop above where the totalTime() might trigger a render() because this _addToTimeline() method gets called from the Animation constructor, BEFORE tweens even record their targets, etc. so we wouldn't want things to get triggered in the wrong order.\n }\n},\n _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) {\n child.parent && _removeFromParent(child);\n child._start = _roundPrecise((_isNumber(position) ? position : position || timeline !== _globalTimeline ? _parsePosition(timeline, position, child) : timeline._time) + child._delay);\n child._end = _roundPrecise(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));\n\n _addLinkedListItem(timeline, child, \"_first\", \"_last\", timeline._sort ? \"_start\" : 0);\n\n _isFromOrFromStart(child) || (timeline._recent = child);\n skipChecks || _postAddChecks(timeline, child);\n timeline._ts < 0 && _alignPlayhead(timeline, timeline._tTime); // if the timeline is reversed and the new child makes it longer, we may need to adjust the parent's _start (push it back)\n\n return timeline;\n},\n _scrollTrigger = function _scrollTrigger(animation, trigger) {\n return (_globals.ScrollTrigger || _missingPlugin(\"scrollTrigger\", trigger)) && _globals.ScrollTrigger.create(trigger, animation);\n},\n _attemptInitTween = function _attemptInitTween(tween, time, force, suppressEvents, tTime) {\n _initTween(tween, time, tTime);\n\n if (!tween._initted) {\n return 1;\n }\n\n if (!force && tween._pt && !_reverting && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {\n _lazyTweens.push(tween);\n\n tween._lazy = [tTime, suppressEvents];\n return 1;\n }\n},\n _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart(_ref) {\n var parent = _ref.parent;\n return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent));\n},\n // check parent's _lock because when a timeline repeats/yoyos and does its artificial wrapping, we shouldn't force the ratio back to 0\n_isFromOrFromStart = function _isFromOrFromStart(_ref2) {\n var data = _ref2.data;\n return data === \"isFromStart\" || data === \"isStart\";\n},\n _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {\n var prevRatio = tween.ratio,\n ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1,\n // if the tween or its parent is reversed and the totalTime is 0, we should go to a ratio of 0. Edge case: if a from() or fromTo() stagger tween is placed later in a timeline, the \"startAt\" zero-duration tween could initially render at a time when the parent timeline's playhead is technically BEFORE where this tween is, so make sure that any \"from\" and \"fromTo\" startAt tweens are rendered the first time at a ratio of 1.\n repeatDelay = tween._rDelay,\n tTime = 0,\n pt,\n iteration,\n prevIteration;\n\n if (repeatDelay && tween._repeat) {\n // in case there's a zero-duration tween that has a repeat with a repeatDelay\n tTime = _clamp(0, tween._tDur, totalTime);\n iteration = _animationCycle(tTime, repeatDelay);\n tween._yoyo && iteration & 1 && (ratio = 1 - ratio);\n\n if (iteration !== _animationCycle(tween._tTime, repeatDelay)) {\n // if iteration changed\n prevRatio = 1 - ratio;\n tween.vars.repeatRefresh && tween._initted && tween.invalidate();\n }\n }\n\n if (ratio !== prevRatio || _reverting || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {\n if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents, tTime)) {\n // if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.\n return;\n }\n\n prevIteration = tween._zTime;\n tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); // when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n suppressEvents || (suppressEvents = totalTime && !prevIteration); // if it was rendered previously at exactly 0 (_zTime) and now the playhead is moving away, DON'T fire callbacks otherwise they'll seem like duplicates.\n\n tween.ratio = ratio;\n tween._from && (ratio = 1 - ratio);\n tween._time = 0;\n tween._tTime = tTime;\n pt = tween._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n totalTime < 0 && _rewindStartAt(tween, totalTime, suppressEvents, true);\n tween._onUpdate && !suppressEvents && _callback(tween, \"onUpdate\");\n tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, \"onRepeat\");\n\n if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {\n ratio && _removeFromParent(tween, 1);\n\n if (!suppressEvents && !_reverting) {\n _callback(tween, ratio ? \"onComplete\" : \"onReverseComplete\", true);\n\n tween._prom && tween._prom();\n }\n }\n } else if (!tween._zTime) {\n tween._zTime = totalTime;\n }\n},\n _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {\n var child;\n\n if (time > prevTime) {\n child = animation._first;\n\n while (child && child._start <= time) {\n if (child.data === \"isPause\" && child._start > prevTime) {\n return child;\n }\n\n child = child._next;\n }\n } else {\n child = animation._last;\n\n while (child && child._start >= time) {\n if (child.data === \"isPause\" && child._start < prevTime) {\n return child;\n }\n\n child = child._prev;\n }\n }\n},\n _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) {\n var repeat = animation._repeat,\n dur = _roundPrecise(duration) || 0,\n totalProgress = animation._tTime / animation._tDur;\n totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);\n animation._dur = dur;\n animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _roundPrecise(dur * (repeat + 1) + animation._rDelay * repeat);\n totalProgress > 0 && !leavePlayhead && _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress);\n animation.parent && _setEnd(animation);\n skipUncache || _uncache(animation.parent, animation);\n return animation;\n},\n _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {\n return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);\n},\n _zeroPosition = {\n _start: 0,\n endTime: _emptyFunc,\n totalDuration: _emptyFunc\n},\n _parsePosition = function _parsePosition(animation, position, percentAnimation) {\n var labels = animation.labels,\n recent = animation._recent || _zeroPosition,\n clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,\n //in case there's a child that infinitely repeats, users almost never intend for the insertion point of a new child to be based on a SUPER long value like that so we clip it and assume the most recently-added child's endTime should be used instead.\n i,\n offset,\n isPercent;\n\n if (_isString(position) && (isNaN(position) || position in labels)) {\n //if the string is a number like \"1\", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).\n offset = position.charAt(0);\n isPercent = position.substr(-1) === \"%\";\n i = position.indexOf(\"=\");\n\n if (offset === \"<\" || offset === \">\") {\n i >= 0 && (position = position.replace(/=/, \"\"));\n return (offset === \"<\" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);\n }\n\n if (i < 0) {\n position in labels || (labels[position] = clippedDuration);\n return labels[position];\n }\n\n offset = parseFloat(position.charAt(i - 1) + position.substr(i + 1));\n\n if (isPercent && percentAnimation) {\n offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();\n }\n\n return i > 1 ? _parsePosition(animation, position.substr(0, i - 1), percentAnimation) + offset : clippedDuration + offset;\n }\n\n return position == null ? clippedDuration : +position;\n},\n _createTweenType = function _createTweenType(type, params, timeline) {\n var isLegacy = _isNumber(params[1]),\n varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),\n vars = params[varsIndex],\n irVars,\n parent;\n\n isLegacy && (vars.duration = params[1]);\n vars.parent = timeline;\n\n if (type) {\n irVars = vars;\n parent = timeline;\n\n while (parent && !(\"immediateRender\" in irVars)) {\n // inheritance hasn't happened yet, but someone may have set a default in an ancestor timeline. We could do vars.immediateRender = _isNotFalse(_inheritDefaults(vars).immediateRender) but that'd exact a slight performance penalty because _inheritDefaults() also runs in the Tween constructor. We're paying a small kb price here to gain speed.\n irVars = parent.vars.defaults || {};\n parent = _isNotFalse(parent.vars.inherit) && parent.parent;\n }\n\n vars.immediateRender = _isNotFalse(irVars.immediateRender);\n type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1]; // \"from\" vars\n }\n\n return new Tween(params[0], vars, params[varsIndex + 1]);\n},\n _conditionalReturn = function _conditionalReturn(value, func) {\n return value || value === 0 ? func(value) : func;\n},\n _clamp = function _clamp(min, max, value) {\n return value < min ? min : value > max ? max : value;\n},\n getUnit = function getUnit(value, v) {\n return !_isString(value) || !(v = _unitExp.exec(value)) ? \"\" : v[1];\n},\n // note: protect against padded numbers as strings, like \"100.100\". That shouldn't return \"00\" as the unit. If it's numeric, return no unit.\nclamp = function clamp(min, max, value) {\n return _conditionalReturn(value, function (v) {\n return _clamp(min, max, v);\n });\n},\n _slice = [].slice,\n _isArrayLike = function _isArrayLike(value, nonEmpty) {\n return value && _isObject(value) && \"length\" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;\n},\n _flatten = function _flatten(ar, leaveStrings, accumulator) {\n if (accumulator === void 0) {\n accumulator = [];\n }\n\n return ar.forEach(function (value) {\n var _accumulator;\n\n return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);\n }) || accumulator;\n},\n //takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.\ntoArray = function toArray(value, scope, leaveStrings) {\n return _context && !scope && _context.selector ? _context.selector(value) : _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call((scope || _doc).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];\n},\n selector = function selector(value) {\n value = toArray(value)[0] || _warn(\"Invalid scope\") || {};\n return function (v) {\n var el = value.current || value.nativeElement || value;\n return toArray(v, el.querySelectorAll ? el : el === value ? _warn(\"Invalid scope\") || _doc.createElement(\"div\") : value);\n };\n},\n shuffle = function shuffle(a) {\n return a.sort(function () {\n return .5 - Math.random();\n });\n},\n // alternative that's a bit faster and more reliably diverse but bigger: for (let j, v, i = a.length; i; j = Math.floor(Math.random() * i), v = a[--i], a[i] = a[j], a[j] = v); return a;\n//for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following\ndistribute = function distribute(v) {\n if (_isFunction(v)) {\n return v;\n }\n\n var vars = _isObject(v) ? v : {\n each: v\n },\n //n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total \"amount\" that's chunked out among them all.\n ease = _parseEase(vars.ease),\n from = vars.from || 0,\n base = parseFloat(vars.base) || 0,\n cache = {},\n isDecimal = from > 0 && from < 1,\n ratios = isNaN(from) || isDecimal,\n axis = vars.axis,\n ratioX = from,\n ratioY = from;\n\n if (_isString(from)) {\n ratioX = ratioY = {\n center: .5,\n edges: .5,\n end: 1\n }[from] || 0;\n } else if (!isDecimal && ratios) {\n ratioX = from[0];\n ratioY = from[1];\n }\n\n return function (i, target, a) {\n var l = (a || vars).length,\n distances = cache[l],\n originX,\n originY,\n x,\n y,\n d,\n j,\n max,\n min,\n wrapAt;\n\n if (!distances) {\n wrapAt = vars.grid === \"auto\" ? 0 : (vars.grid || [1, _bigNum])[1];\n\n if (!wrapAt) {\n max = -_bigNum;\n\n while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}\n\n wrapAt--;\n }\n\n distances = cache[l] = [];\n originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;\n originY = wrapAt === _bigNum ? 0 : ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;\n max = 0;\n min = _bigNum;\n\n for (j = 0; j < l; j++) {\n x = j % wrapAt - originX;\n y = originY - (j / wrapAt | 0);\n distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === \"y\" ? y : x);\n d > max && (max = d);\n d < min && (min = d);\n }\n\n from === \"random\" && shuffle(distances);\n distances.max = max - min;\n distances.min = min;\n 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);\n distances.b = l < 0 ? base - l : base;\n distances.u = getUnit(vars.amount || vars.each) || 0; //unit\n\n ease = ease && l < 0 ? _invertEase(ease) : ease;\n }\n\n l = (distances[i] - distances.min) / distances.max || 0;\n return _roundPrecise(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; //round in order to work around floating point errors\n };\n},\n _roundModifier = function _roundModifier(v) {\n //pass in 0.1 get a function that'll round to the nearest tenth, or 5 to round to the closest 5, or 0.001 to the closest 1000th, etc.\n var p = Math.pow(10, ((v + \"\").split(\".\")[1] || \"\").length); //to avoid floating point math errors (like 24 * 0.1 == 2.4000000000000004), we chop off at a specific number of decimal places (much faster than toFixed())\n\n return function (raw) {\n var n = _roundPrecise(Math.round(parseFloat(raw) / v) * v * p);\n\n return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw)); // n - n % 1 replaces Math.floor() in order to handle negative values properly. For example, Math.floor(-150.00000000000003) is 151!\n };\n},\n snap = function snap(snapTo, value) {\n var isArray = _isArray(snapTo),\n radius,\n is2D;\n\n if (!isArray && _isObject(snapTo)) {\n radius = isArray = snapTo.radius || _bigNum;\n\n if (snapTo.values) {\n snapTo = toArray(snapTo.values);\n\n if (is2D = !_isNumber(snapTo[0])) {\n radius *= radius; //performance optimization so we don't have to Math.sqrt() in the loop.\n }\n } else {\n snapTo = _roundModifier(snapTo.increment);\n }\n }\n\n return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {\n is2D = snapTo(raw);\n return Math.abs(is2D - raw) <= radius ? is2D : raw;\n } : function (raw) {\n var x = parseFloat(is2D ? raw.x : raw),\n y = parseFloat(is2D ? raw.y : 0),\n min = _bigNum,\n closest = 0,\n i = snapTo.length,\n dx,\n dy;\n\n while (i--) {\n if (is2D) {\n dx = snapTo[i].x - x;\n dy = snapTo[i].y - y;\n dx = dx * dx + dy * dy;\n } else {\n dx = Math.abs(snapTo[i] - x);\n }\n\n if (dx < min) {\n min = dx;\n closest = i;\n }\n }\n\n closest = !radius || min <= radius ? snapTo[closest] : raw;\n return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);\n });\n},\n random = function random(min, max, roundingIncrement, returnFunction) {\n return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {\n return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + \"\").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;\n });\n},\n pipe = function pipe() {\n for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {\n functions[_key] = arguments[_key];\n }\n\n return function (value) {\n return functions.reduce(function (v, f) {\n return f(v);\n }, value);\n };\n},\n unitize = function unitize(func, unit) {\n return function (value) {\n return func(parseFloat(value)) + (unit || getUnit(value));\n };\n},\n normalize = function normalize(min, max, value) {\n return mapRange(min, max, 0, 1, value);\n},\n _wrapArray = function _wrapArray(a, wrapper, value) {\n return _conditionalReturn(value, function (index) {\n return a[~~wrapper(index)];\n });\n},\n wrap = function wrap(min, max, value) {\n // NOTE: wrap() CANNOT be an arrow function! A very odd compiling bug causes problems (unrelated to GSAP).\n var range = max - min;\n return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {\n return (range + (value - min) % range) % range + min;\n });\n},\n wrapYoyo = function wrapYoyo(min, max, value) {\n var range = max - min,\n total = range * 2;\n return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {\n value = (total + (value - min) % total) % total || 0;\n return min + (value > range ? total - value : value);\n });\n},\n _replaceRandom = function _replaceRandom(value) {\n //replaces all occurrences of random(...) in a string with the calculated random value. can be a range like random(-100, 100, 5) or an array like random([0, 100, 500])\n var prev = 0,\n s = \"\",\n i,\n nums,\n end,\n isArray;\n\n while (~(i = value.indexOf(\"random(\", prev))) {\n end = value.indexOf(\")\", i);\n isArray = value.charAt(i + 7) === \"[\";\n nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);\n s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);\n prev = end + 1;\n }\n\n return s + value.substr(prev, value.length - prev);\n},\n mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {\n var inRange = inMax - inMin,\n outRange = outMax - outMin;\n return _conditionalReturn(value, function (value) {\n return outMin + ((value - inMin) / inRange * outRange || 0);\n });\n},\n interpolate = function interpolate(start, end, progress, mutate) {\n var func = isNaN(start + end) ? 0 : function (p) {\n return (1 - p) * start + p * end;\n };\n\n if (!func) {\n var isString = _isString(start),\n master = {},\n p,\n i,\n interpolators,\n l,\n il;\n\n progress === true && (mutate = 1) && (progress = null);\n\n if (isString) {\n start = {\n p: start\n };\n end = {\n p: end\n };\n } else if (_isArray(start) && !_isArray(end)) {\n interpolators = [];\n l = start.length;\n il = l - 2;\n\n for (i = 1; i < l; i++) {\n interpolators.push(interpolate(start[i - 1], start[i])); //build the interpolators up front as a performance optimization so that when the function is called many times, it can just reuse them.\n }\n\n l--;\n\n func = function func(p) {\n p *= l;\n var i = Math.min(il, ~~p);\n return interpolators[i](p - i);\n };\n\n progress = end;\n } else if (!mutate) {\n start = _merge(_isArray(start) ? [] : {}, start);\n }\n\n if (!interpolators) {\n for (p in end) {\n _addPropTween.call(master, start, p, \"get\", end[p]);\n }\n\n func = function func(p) {\n return _renderPropTweens(p, master) || (isString ? start.p : start);\n };\n }\n }\n\n return _conditionalReturn(progress, func);\n},\n _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {\n //used for nextLabel() and previousLabel()\n var labels = timeline.labels,\n min = _bigNum,\n p,\n distance,\n label;\n\n for (p in labels) {\n distance = labels[p] - fromTime;\n\n if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {\n label = p;\n min = distance;\n }\n }\n\n return label;\n},\n _callback = function _callback(animation, type, executeLazyFirst) {\n var v = animation.vars,\n callback = v[type],\n prevContext = _context,\n context = animation._ctx,\n params,\n scope,\n result;\n\n if (!callback) {\n return;\n }\n\n params = v[type + \"Params\"];\n scope = v.callbackScope || animation;\n executeLazyFirst && _lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.\n\n context && (_context = context);\n result = params ? callback.apply(scope, params) : callback.call(scope);\n _context = prevContext;\n return result;\n},\n _interrupt = function _interrupt(animation) {\n _removeFromParent(animation);\n\n animation.scrollTrigger && animation.scrollTrigger.kill(!!_reverting);\n animation.progress() < 1 && _callback(animation, \"onInterrupt\");\n return animation;\n},\n _quickTween,\n _registerPluginQueue = [],\n _createPlugin = function _createPlugin(config) {\n if (!_windowExists()) {\n _registerPluginQueue.push(config);\n\n return;\n }\n\n config = !config.name && config[\"default\"] || config; //UMD packaging wraps things oddly, so for example MotionPathHelper becomes {MotionPathHelper:MotionPathHelper, default:MotionPathHelper}.\n\n var name = config.name,\n isFunc = _isFunction(config),\n Plugin = name && !isFunc && config.init ? function () {\n this._props = [];\n } : config,\n //in case someone passes in an object that's not a plugin, like CustomEase\n instanceDefaults = {\n init: _emptyFunc,\n render: _renderPropTweens,\n add: _addPropTween,\n kill: _killPropTweensOf,\n modifier: _addPluginModifier,\n rawVars: 0\n },\n statics = {\n targetTest: 0,\n get: 0,\n getSetter: _getSetter,\n aliases: {},\n register: 0\n };\n\n _wake();\n\n if (config !== Plugin) {\n if (_plugins[name]) {\n return;\n }\n\n _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics)); //static methods\n\n\n _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); //instance methods\n\n\n _plugins[Plugin.prop = name] = Plugin;\n\n if (config.targetTest) {\n _harnessPlugins.push(Plugin);\n\n _reservedProps[name] = 1;\n }\n\n name = (name === \"css\" ? \"CSS\" : name.charAt(0).toUpperCase() + name.substr(1)) + \"Plugin\"; //for the global name. \"motionPath\" should become MotionPathPlugin\n }\n\n _addGlobal(name, Plugin);\n\n config.register && config.register(gsap, Plugin, PropTween);\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * COLORS\n * --------------------------------------------------------------------------------------\n */\n_255 = 255,\n _colorLookup = {\n aqua: [0, _255, _255],\n lime: [0, _255, 0],\n silver: [192, 192, 192],\n black: [0, 0, 0],\n maroon: [128, 0, 0],\n teal: [0, 128, 128],\n blue: [0, 0, _255],\n navy: [0, 0, 128],\n white: [_255, _255, _255],\n olive: [128, 128, 0],\n yellow: [_255, _255, 0],\n orange: [_255, 165, 0],\n gray: [128, 128, 128],\n purple: [128, 0, 128],\n green: [0, 128, 0],\n red: [_255, 0, 0],\n pink: [_255, 192, 203],\n cyan: [0, _255, _255],\n transparent: [_255, _255, _255, 0]\n},\n // possible future idea to replace the hard-coded color name values - put this in the ticker.wake() where we set the _doc:\n// let ctx = _doc.createElement(\"canvas\").getContext(\"2d\");\n// _forEachName(\"aqua,lime,silver,black,maroon,teal,blue,navy,white,olive,yellow,orange,gray,purple,green,red,pink,cyan\", color => {ctx.fillStyle = color; _colorLookup[color] = splitColor(ctx.fillStyle)});\n_hue = function _hue(h, m1, m2) {\n h += h < 0 ? 1 : h > 1 ? -1 : 0;\n return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0;\n},\n splitColor = function splitColor(v, toHSL, forceAlpha) {\n var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,\n r,\n g,\n b,\n h,\n s,\n l,\n max,\n min,\n d,\n wasHSL;\n\n if (!a) {\n if (v.substr(-1) === \",\") {\n //sometimes a trailing comma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:\"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)\" - in this example \"blue,\" has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.\n v = v.substr(0, v.length - 1);\n }\n\n if (_colorLookup[v]) {\n a = _colorLookup[v];\n } else if (v.charAt(0) === \"#\") {\n if (v.length < 6) {\n //for shorthand like #9F0 or #9F0F (could have alpha)\n r = v.charAt(1);\n g = v.charAt(2);\n b = v.charAt(3);\n v = \"#\" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : \"\");\n }\n\n if (v.length === 9) {\n // hex with alpha, like #fd5e53ff\n a = parseInt(v.substr(1, 6), 16);\n return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];\n }\n\n v = parseInt(v.substr(1), 16);\n a = [v >> 16, v >> 8 & _255, v & _255];\n } else if (v.substr(0, 3) === \"hsl\") {\n a = wasHSL = v.match(_strictNumExp);\n\n if (!toHSL) {\n h = +a[0] % 360 / 360;\n s = +a[1] / 100;\n l = +a[2] / 100;\n g = l <= .5 ? l * (s + 1) : l + s - l * s;\n r = l * 2 - g;\n a.length > 3 && (a[3] *= 1); //cast as number\n\n a[0] = _hue(h + 1 / 3, r, g);\n a[1] = _hue(h, r, g);\n a[2] = _hue(h - 1 / 3, r, g);\n } else if (~v.indexOf(\"=\")) {\n //if relative values are found, just return the raw strings with the relative prefixes in place.\n a = v.match(_numExp);\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n }\n } else {\n a = v.match(_strictNumExp) || _colorLookup.transparent;\n }\n\n a = a.map(Number);\n }\n\n if (toHSL && !wasHSL) {\n r = a[0] / _255;\n g = a[1] / _255;\n b = a[2] / _255;\n max = Math.max(r, g, b);\n min = Math.min(r, g, b);\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;\n h *= 60;\n }\n\n a[0] = ~~(h + .5);\n a[1] = ~~(s * 100 + .5);\n a[2] = ~~(l * 100 + .5);\n }\n\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n},\n _colorOrderData = function _colorOrderData(v) {\n // strips out the colors from the string, finds all the numeric slots (with units) and returns an array of those. The Array also has a \"c\" property which is an Array of the index values where the colors belong. This is to help work around issues where there's a mis-matched order of color/numeric data like drop-shadow(#f00 0px 1px 2px) and drop-shadow(0x 1px 2px #f00). This is basically a helper function used in _formatColors()\n var values = [],\n c = [],\n i = -1;\n v.split(_colorExp).forEach(function (v) {\n var a = v.match(_numWithUnitExp) || [];\n values.push.apply(values, a);\n c.push(i += a.length + 1);\n });\n values.c = c;\n return values;\n},\n _formatColors = function _formatColors(s, toHSL, orderMatchData) {\n var result = \"\",\n colors = (s + result).match(_colorExp),\n type = toHSL ? \"hsla(\" : \"rgba(\",\n i = 0,\n c,\n shell,\n d,\n l;\n\n if (!colors) {\n return s;\n }\n\n colors = colors.map(function (color) {\n return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + \",\" + color[1] + \"%,\" + color[2] + \"%,\" + color[3] : color.join(\",\")) + \")\";\n });\n\n if (orderMatchData) {\n d = _colorOrderData(s);\n c = orderMatchData.c;\n\n if (c.join(result) !== d.c.join(result)) {\n shell = s.replace(_colorExp, \"1\").split(_numWithUnitExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + \"0,0,0,0)\" : (d.length ? d : colors.length ? colors : orderMatchData).shift());\n }\n }\n }\n\n if (!shell) {\n shell = s.split(_colorExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + colors[i];\n }\n }\n\n return result + shell[l];\n},\n _colorExp = function () {\n var s = \"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#(?:[0-9a-f]{3,4}){1,2}\\\\b\",\n //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.,\n p;\n\n for (p in _colorLookup) {\n s += \"|\" + p + \"\\\\b\";\n }\n\n return new RegExp(s + \")\", \"gi\");\n}(),\n _hslExp = /hsl[a]?\\(/,\n _colorStringFilter = function _colorStringFilter(a) {\n var combined = a.join(\" \"),\n toHSL;\n _colorExp.lastIndex = 0;\n\n if (_colorExp.test(combined)) {\n toHSL = _hslExp.test(combined);\n a[1] = _formatColors(a[1], toHSL);\n a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1])); // make sure the order of numbers/colors match with the END value.\n\n return true;\n }\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TICKER\n * --------------------------------------------------------------------------------------\n */\n_tickerActive,\n _ticker = function () {\n var _getTime = Date.now,\n _lagThreshold = 500,\n _adjustedLag = 33,\n _startTime = _getTime(),\n _lastUpdate = _startTime,\n _gap = 1000 / 240,\n _nextTime = _gap,\n _listeners = [],\n _id,\n _req,\n _raf,\n _self,\n _delta,\n _i,\n _tick = function _tick(v) {\n var elapsed = _getTime() - _lastUpdate,\n manual = v === true,\n overlap,\n dispatch,\n time,\n frame;\n\n elapsed > _lagThreshold && (_startTime += elapsed - _adjustedLag);\n _lastUpdate += elapsed;\n time = _lastUpdate - _startTime;\n overlap = time - _nextTime;\n\n if (overlap > 0 || manual) {\n frame = ++_self.frame;\n _delta = time - _self.time * 1000;\n _self.time = time = time / 1000;\n _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);\n dispatch = 1;\n }\n\n manual || (_id = _req(_tick)); //make sure the request is made before we dispatch the \"tick\" event so that timing is maintained. Otherwise, if processing the \"tick\" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.\n\n if (dispatch) {\n for (_i = 0; _i < _listeners.length; _i++) {\n // use _i and check _listeners.length instead of a variable because a listener could get removed during the loop, and if that happens to an element less than the current index, it'd throw things off in the loop.\n _listeners[_i](time, _delta, frame, v);\n }\n }\n };\n\n _self = {\n time: 0,\n frame: 0,\n tick: function tick() {\n _tick(true);\n },\n deltaRatio: function deltaRatio(fps) {\n return _delta / (1000 / (fps || 60));\n },\n wake: function wake() {\n if (_coreReady) {\n if (!_coreInitted && _windowExists()) {\n _win = _coreInitted = window;\n _doc = _win.document || {};\n _globals.gsap = gsap;\n (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);\n\n _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});\n\n _raf = _win.requestAnimationFrame;\n\n _registerPluginQueue.forEach(_createPlugin);\n }\n\n _id && _self.sleep();\n\n _req = _raf || function (f) {\n return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0);\n };\n\n _tickerActive = 1;\n\n _tick(2);\n }\n },\n sleep: function sleep() {\n (_raf ? _win.cancelAnimationFrame : clearTimeout)(_id);\n _tickerActive = 0;\n _req = _emptyFunc;\n },\n lagSmoothing: function lagSmoothing(threshold, adjustedLag) {\n _lagThreshold = threshold || Infinity; // zero should be interpreted as basically unlimited\n\n _adjustedLag = Math.min(adjustedLag || 33, _lagThreshold);\n },\n fps: function fps(_fps) {\n _gap = 1000 / (_fps || 240);\n _nextTime = _self.time * 1000 + _gap;\n },\n add: function add(callback, once, prioritize) {\n var func = once ? function (t, d, f, v) {\n callback(t, d, f, v);\n\n _self.remove(func);\n } : callback;\n\n _self.remove(callback);\n\n _listeners[prioritize ? \"unshift\" : \"push\"](func);\n\n _wake();\n\n return func;\n },\n remove: function remove(callback, i) {\n ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;\n },\n _listeners: _listeners\n };\n return _self;\n}(),\n _wake = function _wake() {\n return !_tickerActive && _ticker.wake();\n},\n //also ensures the core classes are initialized.\n\n/*\n* -------------------------------------------------\n* EASING\n* -------------------------------------------------\n*/\n_easeMap = {},\n _customEaseExp = /^[\\d.\\-M][\\d.\\-,\\s]/,\n _quotesExp = /[\"']/g,\n _parseObjectInString = function _parseObjectInString(value) {\n //takes a string like \"{wiggles:10, type:anticipate})\" and turns it into a real object. Notice it ends in \")\" and includes the {} wrappers. This is because we only use this function for parsing ease configs and prioritized optimization rather than reusability.\n var obj = {},\n split = value.substr(1, value.length - 3).split(\":\"),\n key = split[0],\n i = 1,\n l = split.length,\n index,\n val,\n parsedVal;\n\n for (; i < l; i++) {\n val = split[i];\n index = i !== l - 1 ? val.lastIndexOf(\",\") : val.length;\n parsedVal = val.substr(0, index);\n obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, \"\").trim() : +parsedVal;\n key = val.substr(index + 1).trim();\n }\n\n return obj;\n},\n _valueInParentheses = function _valueInParentheses(value) {\n var open = value.indexOf(\"(\") + 1,\n close = value.indexOf(\")\"),\n nested = value.indexOf(\"(\", open);\n return value.substring(open, ~nested && nested < close ? value.indexOf(\")\", close + 1) : close);\n},\n _configEaseFromString = function _configEaseFromString(name) {\n //name can be a string like \"elastic.out(1,0.5)\", and pass in _easeMap as obj and it'll parse it out and call the actual function like _easeMap.Elastic.easeOut.config(1,0.5). It will also parse custom ease strings as long as CustomEase is loaded and registered (internally as _easeMap._CE).\n var split = (name + \"\").split(\"(\"),\n ease = _easeMap[split[0]];\n return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf(\"{\") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(\",\").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE(\"\", name) : ease;\n},\n _invertEase = function _invertEase(ease) {\n return function (p) {\n return 1 - ease(1 - p);\n };\n},\n // allow yoyoEase to be set in children and have those affected when the parent/ancestor timeline yoyos.\n_propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) {\n var child = timeline._first,\n ease;\n\n while (child) {\n if (child instanceof Timeline) {\n _propagateYoyoEase(child, isYoyo);\n } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {\n if (child.timeline) {\n _propagateYoyoEase(child.timeline, isYoyo);\n } else {\n ease = child._ease;\n child._ease = child._yEase;\n child._yEase = ease;\n child._yoyo = isYoyo;\n }\n }\n\n child = child._next;\n }\n},\n _parseEase = function _parseEase(ease, defaultEase) {\n return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;\n},\n _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {\n if (easeOut === void 0) {\n easeOut = function easeOut(p) {\n return 1 - easeIn(1 - p);\n };\n }\n\n if (easeInOut === void 0) {\n easeInOut = function easeInOut(p) {\n return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;\n };\n }\n\n var ease = {\n easeIn: easeIn,\n easeOut: easeOut,\n easeInOut: easeInOut\n },\n lowercaseName;\n\n _forEachName(names, function (name) {\n _easeMap[name] = _globals[name] = ease;\n _easeMap[lowercaseName = name.toLowerCase()] = easeOut;\n\n for (var p in ease) {\n _easeMap[lowercaseName + (p === \"easeIn\" ? \".in\" : p === \"easeOut\" ? \".out\" : \".inOut\")] = _easeMap[name + \".\" + p] = ease[p];\n }\n });\n\n return ease;\n},\n _easeInOutFromOut = function _easeInOutFromOut(easeOut) {\n return function (p) {\n return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;\n };\n},\n _configElastic = function _configElastic(type, amplitude, period) {\n var p1 = amplitude >= 1 ? amplitude : 1,\n //note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1.\n p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),\n p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),\n easeOut = function easeOut(p) {\n return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n p2 = _2PI / p2; //precalculate to optimize\n\n ease.config = function (amplitude, period) {\n return _configElastic(type, amplitude, period);\n };\n\n return ease;\n},\n _configBack = function _configBack(type, overshoot) {\n if (overshoot === void 0) {\n overshoot = 1.70158;\n }\n\n var easeOut = function easeOut(p) {\n return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n ease.config = function (overshoot) {\n return _configBack(type, overshoot);\n };\n\n return ease;\n}; // a cheaper (kb and cpu) but more mild way to get a parameterized weighted ease by feeding in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEase = ratio => {\n// \tlet y = 0.5 + ratio / 2;\n// \treturn p => (2 * (1 - p) * p * y + p * p);\n// },\n// a stronger (but more expensive kb/cpu) parameterized weighted ease that lets you feed in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEaseStrong = ratio => {\n// \tratio = .5 + ratio / 2;\n// \tlet o = 1 / 3 * (ratio < .5 ? ratio : 1 - ratio),\n// \t\tb = ratio - o,\n// \t\tc = ratio + o;\n// \treturn p => p === 1 ? p : 3 * b * (1 - p) * (1 - p) * p + 3 * c * (1 - p) * p * p + p * p * p;\n// };\n\n\n_forEachName(\"Linear,Quad,Cubic,Quart,Quint,Strong\", function (name, i) {\n var power = i < 5 ? i + 1 : i;\n\n _insertEase(name + \",Power\" + (power - 1), i ? function (p) {\n return Math.pow(p, power);\n } : function (p) {\n return p;\n }, function (p) {\n return 1 - Math.pow(1 - p, power);\n }, function (p) {\n return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;\n });\n});\n\n_easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;\n\n_insertEase(\"Elastic\", _configElastic(\"in\"), _configElastic(\"out\"), _configElastic());\n\n(function (n, c) {\n var n1 = 1 / c,\n n2 = 2 * n1,\n n3 = 2.5 * n1,\n easeOut = function easeOut(p) {\n return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375;\n };\n\n _insertEase(\"Bounce\", function (p) {\n return 1 - easeOut(1 - p);\n }, easeOut);\n})(7.5625, 2.75);\n\n_insertEase(\"Expo\", function (p) {\n return p ? Math.pow(2, 10 * (p - 1)) : 0;\n});\n\n_insertEase(\"Circ\", function (p) {\n return -(_sqrt(1 - p * p) - 1);\n});\n\n_insertEase(\"Sine\", function (p) {\n return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;\n});\n\n_insertEase(\"Back\", _configBack(\"in\"), _configBack(\"out\"), _configBack());\n\n_easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {\n config: function config(steps, immediateStart) {\n if (steps === void 0) {\n steps = 1;\n }\n\n var p1 = 1 / steps,\n p2 = steps + (immediateStart ? 0 : 1),\n p3 = immediateStart ? 1 : 0,\n max = 1 - _tinyNum;\n return function (p) {\n return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;\n };\n }\n};\n_defaults.ease = _easeMap[\"quad.out\"];\n\n_forEachName(\"onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt\", function (name) {\n return _callbackNames += name + \",\" + name + \"Params,\";\n});\n/*\n * --------------------------------------------------------------------------------------\n * CACHE\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var GSCache = function GSCache(target, harness) {\n this.id = _gsID++;\n target._gsap = this;\n this.target = target;\n this.harness = harness;\n this.get = harness ? harness.get : _getProperty;\n this.set = harness ? harness.getSetter : _getSetter;\n};\n/*\n * --------------------------------------------------------------------------------------\n * ANIMATION\n * --------------------------------------------------------------------------------------\n */\n\nexport var Animation = /*#__PURE__*/function () {\n function Animation(vars) {\n this.vars = vars;\n this._delay = +vars.delay || 0;\n\n if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {\n // TODO: repeat: Infinity on a timeline's children must flag that timeline internally and affect its totalDuration, otherwise it'll stop in the negative direction when reaching the start.\n this._rDelay = vars.repeatDelay || 0;\n this._yoyo = !!vars.yoyo || !!vars.yoyoEase;\n }\n\n this._ts = 1;\n\n _setDuration(this, +vars.duration, 1, 1);\n\n this.data = vars.data;\n\n if (_context) {\n this._ctx = _context;\n\n _context.data.push(this);\n }\n\n _tickerActive || _ticker.wake();\n }\n\n var _proto = Animation.prototype;\n\n _proto.delay = function delay(value) {\n if (value || value === 0) {\n this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);\n this._delay = value;\n return this;\n }\n\n return this._delay;\n };\n\n _proto.duration = function duration(value) {\n return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;\n };\n\n _proto.totalDuration = function totalDuration(value) {\n if (!arguments.length) {\n return this._tDur;\n }\n\n this._dirty = 0;\n return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));\n };\n\n _proto.totalTime = function totalTime(_totalTime, suppressEvents) {\n _wake();\n\n if (!arguments.length) {\n return this._tTime;\n }\n\n var parent = this._dp;\n\n if (parent && parent.smoothChildTiming && this._ts) {\n _alignPlayhead(this, _totalTime);\n\n !parent._dp || parent.parent || _postAddChecks(parent, this); // edge case: if this is a child of a timeline that already completed, for example, we must re-activate the parent.\n //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The start of that child would get pushed out, but one of the ancestors may have completed.\n\n while (parent && parent.parent) {\n if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {\n parent.totalTime(parent._tTime, true);\n }\n\n parent = parent.parent;\n }\n\n if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {\n //if the animation doesn't have a parent, put it back into its last parent (recorded as _dp for exactly cases like this). Limit to parents with autoRemoveChildren (like globalTimeline) so that if the user manually removes an animation from a timeline and then alters its playhead, it doesn't get added back in.\n _addToTimeline(this._dp, this, this._start - this._delay);\n }\n }\n\n if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {\n // check for _ptLookup on a Tween instance to ensure it has actually finished being instantiated, otherwise if this.reverse() gets called in the Animation constructor, it could trigger a render() here even though the _targets weren't populated, thus when _init() is called there won't be any PropTweens (it'll act like the tween is non-functional)\n this._ts || (this._pTime = _totalTime); // otherwise, if an animation is paused, then the playhead is moved back to zero, then resumed, it'd revert back to the original time at the pause\n //if (!this._lock) { // avoid endless recursion (not sure we need this yet or if it's worth the performance hit)\n // this._lock = 1;\n\n _lazySafeRender(this, _totalTime, suppressEvents); // this._lock = 0;\n //}\n\n }\n\n return this;\n };\n\n _proto.time = function time(value, suppressEvents) {\n return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time; // note: if the modulus results in 0, the playhead could be exactly at the end or the beginning, and we always defer to the END with a non-zero value, otherwise if you set the time() to the very end (duration()), it would render at the START!\n };\n\n _proto.totalProgress = function totalProgress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.ratio;\n };\n\n _proto.progress = function progress(value, suppressEvents) {\n 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;\n };\n\n _proto.iteration = function iteration(value, suppressEvents) {\n var cycleDuration = this.duration() + this._rDelay;\n\n return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;\n } // potential future addition:\n // isPlayingBackwards() {\n // \tlet animation = this,\n // \t\torientation = 1; // 1 = forward, -1 = backward\n // \twhile (animation) {\n // \t\torientation *= animation.reversed() || (animation.repeat() && !(animation.iteration() & 1)) ? -1 : 1;\n // \t\tanimation = animation.parent;\n // \t}\n // \treturn orientation < 0;\n // }\n ;\n\n _proto.timeScale = function timeScale(value) {\n if (!arguments.length) {\n return this._rts === -_tinyNum ? 0 : this._rts; // recorded timeScale. Special case: if someone calls reverse() on an animation with timeScale of 0, we assign it -_tinyNum to remember it's reversed.\n }\n\n if (this._rts === value) {\n return this;\n }\n\n var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; // make sure to do the parentToChildTotalTime() BEFORE setting the new _ts because the old one must be used in that calculation.\n // future addition? Up side: fast and minimal file size. Down side: only works on this animation; if a timeline is reversed, for example, its childrens' onReverse wouldn't get called.\n //(+value < 0 && this._rts >= 0) && _callback(this, \"onReverse\", true);\n // prioritize rendering where the parent's playhead lines up instead of this._tTime because there could be a tween that's animating another tween's timeScale in the same rendering loop (same parent), thus if the timeScale tween renders first, it would alter _start BEFORE _tTime was set on that tick (in the rendering loop), effectively freezing it until the timeScale tween finishes.\n\n this._rts = +value || 0;\n this._ts = this._ps || value === -_tinyNum ? 0 : this._rts; // _ts is the functional timeScale which would be 0 if the animation is paused.\n\n this.totalTime(_clamp(-Math.abs(this._delay), this._tDur, tTime), true);\n\n _setEnd(this); // if parent.smoothChildTiming was false, the end time didn't get updated in the _alignPlayhead() method, so do it here.\n\n\n return _recacheAncestors(this);\n };\n\n _proto.paused = function paused(value) {\n if (!arguments.length) {\n return this._ps;\n }\n\n if (this._ps !== value) {\n this._ps = value;\n\n if (value) {\n this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); // if the pause occurs during the delay phase, make sure that's factored in when resuming.\n\n this._ts = this._act = 0; // _ts is the functional timeScale, so a paused tween would effectively have a timeScale of 0. We record the \"real\" timeScale as _rts (recorded time scale)\n } else {\n _wake();\n\n this._ts = this._rts; //only defer to _pTime (pauseTime) if tTime is zero. Remember, someone could pause() an animation, then scrub the playhead and resume(). If the parent doesn't have smoothChildTiming, we render at the rawTime() because the startTime won't get updated.\n\n this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum)); // edge case: animation.progress(1).pause().play() wouldn't render again because the playhead is already at the end, but the call to totalTime() below will add it back to its parent...and not remove it again (since removing only happens upon rendering at a new time). Offsetting the _tTime slightly is done simply to cause the final render in totalTime() that'll pop it off its timeline (if autoRemoveChildren is true, of course). Check to make sure _zTime isn't -_tinyNum to avoid an edge case where the playhead is pushed to the end but INSIDE a tween/callback, the timeline itself is paused thus halting rendering and leaving a few unrendered. When resuming, it wouldn't render those otherwise.\n }\n }\n\n return this;\n };\n\n _proto.startTime = function startTime(value) {\n if (arguments.length) {\n this._start = value;\n var parent = this.parent || this._dp;\n parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);\n return this;\n }\n\n return this._start;\n };\n\n _proto.endTime = function endTime(includeRepeats) {\n return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1);\n };\n\n _proto.rawTime = function rawTime(wrapRepeats) {\n var parent = this.parent || this._dp; // _dp = detached parent\n\n 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);\n };\n\n _proto.revert = function revert(config) {\n if (config === void 0) {\n config = _revertConfig;\n }\n\n var prevIsReverting = _reverting;\n _reverting = config;\n\n if (this._initted || this._startAt) {\n this.timeline && this.timeline.revert(config);\n this.totalTime(-0.01, config.suppressEvents);\n }\n\n this.data !== \"nested\" && config.kill !== false && this.kill();\n _reverting = prevIsReverting;\n return this;\n };\n\n _proto.globalTime = function globalTime(rawTime) {\n var animation = this,\n time = arguments.length ? rawTime : animation.rawTime();\n\n while (animation) {\n time = animation._start + time / (animation._ts || 1);\n animation = animation._dp;\n }\n\n return !this.parent && this._sat ? this._sat.vars.immediateRender ? -1 : this._sat.globalTime(rawTime) : time; // the _startAt tweens for .fromTo() and .from() that have immediateRender should always be FIRST in the timeline (important for context.revert()). \"_sat\" stands for _startAtTween, referring to the parent tween that created the _startAt. We must discern if that tween had immediateRender so that we can know whether or not to prioritize it in revert().\n };\n\n _proto.repeat = function repeat(value) {\n if (arguments.length) {\n this._repeat = value === Infinity ? -2 : value;\n return _onUpdateTotalDuration(this);\n }\n\n return this._repeat === -2 ? Infinity : this._repeat;\n };\n\n _proto.repeatDelay = function repeatDelay(value) {\n if (arguments.length) {\n var time = this._time;\n this._rDelay = value;\n\n _onUpdateTotalDuration(this);\n\n return time ? this.time(time) : this;\n }\n\n return this._rDelay;\n };\n\n _proto.yoyo = function yoyo(value) {\n if (arguments.length) {\n this._yoyo = value;\n return this;\n }\n\n return this._yoyo;\n };\n\n _proto.seek = function seek(position, suppressEvents) {\n return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));\n };\n\n _proto.restart = function restart(includeDelay, suppressEvents) {\n return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));\n };\n\n _proto.play = function play(from, suppressEvents) {\n from != null && this.seek(from, suppressEvents);\n return this.reversed(false).paused(false);\n };\n\n _proto.reverse = function reverse(from, suppressEvents) {\n from != null && this.seek(from || this.totalDuration(), suppressEvents);\n return this.reversed(true).paused(false);\n };\n\n _proto.pause = function pause(atTime, suppressEvents) {\n atTime != null && this.seek(atTime, suppressEvents);\n return this.paused(true);\n };\n\n _proto.resume = function resume() {\n return this.paused(false);\n };\n\n _proto.reversed = function reversed(value) {\n if (arguments.length) {\n !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0)); // in case timeScale is zero, reversing would have no effect so we use _tinyNum.\n\n return this;\n }\n\n return this._rts < 0;\n };\n\n _proto.invalidate = function invalidate() {\n this._initted = this._act = 0;\n this._zTime = -_tinyNum;\n return this;\n };\n\n _proto.isActive = function isActive() {\n var parent = this.parent || this._dp,\n start = this._start,\n rawTime;\n return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);\n };\n\n _proto.eventCallback = function eventCallback(type, callback, params) {\n var vars = this.vars;\n\n if (arguments.length > 1) {\n if (!callback) {\n delete vars[type];\n } else {\n vars[type] = callback;\n params && (vars[type + \"Params\"] = params);\n type === \"onUpdate\" && (this._onUpdate = callback);\n }\n\n return this;\n }\n\n return vars[type];\n };\n\n _proto.then = function then(onFulfilled) {\n var self = this;\n return new Promise(function (resolve) {\n var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,\n _resolve = function _resolve() {\n var _then = self.then;\n self.then = null; // temporarily null the then() method to avoid an infinite loop (see https://github.com/greensock/GSAP/issues/322)\n\n _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);\n resolve(f);\n self.then = _then;\n };\n\n if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {\n _resolve();\n } else {\n self._prom = _resolve;\n }\n });\n };\n\n _proto.kill = function kill() {\n _interrupt(this);\n };\n\n return Animation;\n}();\n\n_setDefaults(Animation.prototype, {\n _time: 0,\n _start: 0,\n _end: 0,\n _tTime: 0,\n _tDur: 0,\n _dirty: 0,\n _repeat: 0,\n _yoyo: false,\n parent: null,\n _initted: false,\n _rDelay: 0,\n _ts: 1,\n _dp: 0,\n ratio: 0,\n _zTime: -_tinyNum,\n _prom: 0,\n _ps: false,\n _rts: 1\n});\n/*\n * -------------------------------------------------\n * TIMELINE\n * -------------------------------------------------\n */\n\n\nexport var Timeline = /*#__PURE__*/function (_Animation) {\n _inheritsLoose(Timeline, _Animation);\n\n function Timeline(vars, position) {\n var _this;\n\n if (vars === void 0) {\n vars = {};\n }\n\n _this = _Animation.call(this, vars) || this;\n _this.labels = {};\n _this.smoothChildTiming = !!vars.smoothChildTiming;\n _this.autoRemoveChildren = !!vars.autoRemoveChildren;\n _this._sort = _isNotFalse(vars.sortChildren);\n _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position);\n vars.reversed && _this.reverse();\n vars.paused && _this.paused(true);\n vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);\n return _this;\n }\n\n var _proto2 = Timeline.prototype;\n\n _proto2.to = function to(targets, vars, position) {\n _createTweenType(0, arguments, this);\n\n return this;\n };\n\n _proto2.from = function from(targets, vars, position) {\n _createTweenType(1, arguments, this);\n\n return this;\n };\n\n _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {\n _createTweenType(2, arguments, this);\n\n return this;\n };\n\n _proto2.set = function set(targets, vars, position) {\n vars.duration = 0;\n vars.parent = this;\n _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);\n vars.immediateRender = !!vars.immediateRender;\n new Tween(targets, vars, _parsePosition(this, position), 1);\n return this;\n };\n\n _proto2.call = function call(callback, params, position) {\n return _addToTimeline(this, Tween.delayedCall(0, callback, params), position);\n } //ONLY for backward compatibility! Maybe delete?\n ;\n\n _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.duration = duration;\n vars.stagger = vars.stagger || stagger;\n vars.onComplete = onCompleteAll;\n vars.onCompleteParams = onCompleteAllParams;\n vars.parent = this;\n new Tween(targets, vars, _parsePosition(this, position));\n return this;\n };\n\n _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.runBackwards = 1;\n _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);\n return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {\n toVars.startAt = fromVars;\n _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);\n return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._dirty ? this.totalDuration() : this._tDur,\n dur = this._dur,\n tTime = totalTime <= 0 ? 0 : _roundPrecise(totalTime),\n // if a paused timeline is resumed (or its _start is updated for another reason...which rounds it), that could result in the playhead shifting a **tiny** amount and a zero-duration child at that spot may get rendered at a different ratio, like its totalTime in render() may be 1e-17 instead of 0, for example.\n crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),\n time,\n child,\n next,\n iteration,\n cycleDuration,\n prevPaused,\n pauseTween,\n timeScale,\n prevStart,\n prevIteration,\n yoyo,\n isYoyo;\n this !== _globalTimeline && tTime > tDur && totalTime >= 0 && (tTime = tDur);\n\n if (tTime !== this._tTime || force || crossingStart) {\n if (prevTime !== this._time && dur) {\n //if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).\n tTime += this._time - prevTime;\n totalTime += this._time - prevTime;\n }\n\n time = tTime;\n prevStart = this._start;\n timeScale = this._ts;\n prevPaused = !timeScale;\n\n if (crossingStart) {\n dur || (prevTime = this._zTime); //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n (totalTime || !suppressEvents) && (this._zTime = totalTime);\n }\n\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n yoyo = this._yoyo;\n cycleDuration = dur + this._rDelay;\n\n if (this._repeat < -1 && totalTime < 0) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n\n time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n\n if (iteration && iteration === tTime / cycleDuration) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n !prevTime && this._tTime && prevIteration !== iteration && this._tTime - prevIteration * cycleDuration - this._dur <= 0 && (prevIteration = iteration); // edge case - if someone does addPause() at the very beginning of a repeating timeline, that pause is technically at the same spot as the end which causes this._time to get set to 0 when the totalTime would normally place the playhead at the end. See https://greensock.com/forums/topic/23823-closing-nav-animation-not-working-on-ie-and-iphone-6-maybe-other-older-browser/?tab=comments#comment-113005 also, this._tTime - prevIteration * cycleDuration - this._dur <= 0 just checks to make sure it wasn't previously in the \"repeatDelay\" portion\n\n if (yoyo && iteration & 1) {\n time = dur - time;\n isYoyo = 1;\n }\n /*\n make sure children at the end/beginning of the timeline are rendered properly. If, for example,\n a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which\n would get translated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there\n could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So\n we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must\n ensure that zero-duration tweens at the very beginning or end of the Timeline work.\n */\n\n\n if (iteration !== prevIteration && !this._lock) {\n var rewinding = yoyo && prevIteration & 1,\n doesWrap = rewinding === (yoyo && iteration & 1);\n iteration < prevIteration && (rewinding = !rewinding);\n prevTime = rewinding ? 0 : dur;\n this._lock = 1;\n this.render(prevTime || (isYoyo ? 0 : _roundPrecise(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;\n this._tTime = tTime; // if a user gets the iteration() inside the onRepeat, for example, it should be accurate.\n\n !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);\n\n if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {\n // if prevTime is 0 and we render at the very end, _time will be the end, thus won't match. So in this edge case, prevTime won't match _time but that's okay. If it gets killed in the onRepeat, eject as well.\n return this;\n }\n\n dur = this._dur; // in case the duration changed in the onRepeat\n\n tDur = this._tDur;\n\n if (doesWrap) {\n this._lock = 2;\n prevTime = rewinding ? dur : -0.0001;\n this.render(prevTime, true);\n this.vars.repeatRefresh && !isYoyo && this.invalidate();\n }\n\n this._lock = 0;\n\n if (!this._ts && !prevPaused) {\n return this;\n } //in order for yoyoEase to work properly when there's a stagger, we must swap out the ease in each sub-tween.\n\n\n _propagateYoyoEase(this, isYoyo);\n }\n }\n\n if (this._hasPause && !this._forcing && this._lock < 2) {\n pauseTween = _findNextPauseTween(this, _roundPrecise(prevTime), _roundPrecise(time));\n\n if (pauseTween) {\n tTime -= time - (time = pauseTween._start);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n this._act = !timeScale; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n if (!this._initted) {\n this._onUpdate = this.vars.onUpdate;\n this._initted = 1;\n this._zTime = totalTime;\n prevTime = 0; // upon init, the playhead should always go forward; someone could invalidate() a completed timeline and then if they restart(), that would make child tweens render in reverse order which could lock in the wrong starting values if they build on each other, like tl.to(obj, {x: 100}).to(obj, {x: 0}).\n }\n\n if (!prevTime && time && !suppressEvents && !iteration) {\n _callback(this, \"onStart\");\n\n if (this._tTime !== tTime) {\n // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n return this;\n }\n }\n\n if (time >= prevTime && totalTime >= 0) {\n child = this._first;\n\n while (child) {\n next = child._next;\n\n if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);\n\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = -_tinyNum); // it didn't finish rendering, so flag zTime as negative so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n\n child = next;\n }\n } else {\n child = this._last;\n var adjustedTime = totalTime < 0 ? totalTime : time; //when the playhead goes backward beyond the start of this timeline, we must pass that information down to the child animations so that zero-duration tweens know whether to render their starting or ending values.\n\n while (child) {\n next = child._prev;\n\n if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force || _reverting && (child._initted || child._startAt)); // if reverting, we should always force renders of initted tweens (but remember that .fromTo() or .from() may have a _startAt but not _initted yet). If, for example, a .fromTo() tween with a stagger (which creates an internal timeline) gets reverted BEFORE some of its child tweens render for the first time, it may not properly trigger them to revert.\n\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum); // it didn't finish rendering, so adjust zTime so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n\n child = next;\n }\n }\n\n if (pauseTween && !suppressEvents) {\n this.pause();\n pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;\n\n if (this._ts) {\n //the callback resumed playback! So since we may have held back the playhead due to where the pause is positioned, go ahead and jump to where it's SUPPOSED to be (if no pause happened).\n this._start = prevStart; //if the pause was at an earlier time and the user resumed in the callback, it could reposition the timeline (changing its startTime), throwing things off slightly, so we make sure the _start doesn't shift.\n\n _setEnd(this);\n\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._onUpdate && !suppressEvents && _callback(this, \"onUpdate\", true);\n if (tTime === tDur && this._tTime >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {\n // remember, a child's callback may alter this timeline's playhead or timeScale which is why we need to add some of these checks.\n (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {\n _callback(this, tTime === tDur && totalTime >= 0 ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto2.add = function add(child, position) {\n var _this2 = this;\n\n _isNumber(position) || (position = _parsePosition(this, position, child));\n\n if (!(child instanceof Animation)) {\n if (_isArray(child)) {\n child.forEach(function (obj) {\n return _this2.add(obj, position);\n });\n return this;\n }\n\n if (_isString(child)) {\n return this.addLabel(child, position);\n }\n\n if (_isFunction(child)) {\n child = Tween.delayedCall(0, child);\n } else {\n return this;\n }\n }\n\n return this !== child ? _addToTimeline(this, child, position) : this; //don't allow a timeline to be added to itself as a child!\n };\n\n _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {\n if (nested === void 0) {\n nested = true;\n }\n\n if (tweens === void 0) {\n tweens = true;\n }\n\n if (timelines === void 0) {\n timelines = true;\n }\n\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = -_bigNum;\n }\n\n var a = [],\n child = this._first;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n if (child instanceof Tween) {\n tweens && a.push(child);\n } else {\n timelines && a.push(child);\n nested && a.push.apply(a, child.getChildren(true, tweens, timelines));\n }\n }\n\n child = child._next;\n }\n\n return a;\n };\n\n _proto2.getById = function getById(id) {\n var animations = this.getChildren(1, 1, 1),\n i = animations.length;\n\n while (i--) {\n if (animations[i].vars.id === id) {\n return animations[i];\n }\n }\n };\n\n _proto2.remove = function remove(child) {\n if (_isString(child)) {\n return this.removeLabel(child);\n }\n\n if (_isFunction(child)) {\n return this.killTweensOf(child);\n }\n\n _removeLinkedListItem(this, child);\n\n if (child === this._recent) {\n this._recent = this._last;\n }\n\n return _uncache(this);\n };\n\n _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {\n if (!arguments.length) {\n return this._tTime;\n }\n\n this._forcing = 1;\n\n if (!this._dp && this._ts) {\n //special case for the global timeline (or any other that has no parent or detached parent).\n this._start = _roundPrecise(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));\n }\n\n _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);\n\n this._forcing = 0;\n return this;\n };\n\n _proto2.addLabel = function addLabel(label, position) {\n this.labels[label] = _parsePosition(this, position);\n return this;\n };\n\n _proto2.removeLabel = function removeLabel(label) {\n delete this.labels[label];\n return this;\n };\n\n _proto2.addPause = function addPause(position, callback, params) {\n var t = Tween.delayedCall(0, callback || _emptyFunc, params);\n t.data = \"isPause\";\n this._hasPause = 1;\n return _addToTimeline(this, t, _parsePosition(this, position));\n };\n\n _proto2.removePause = function removePause(position) {\n var child = this._first;\n position = _parsePosition(this, position);\n\n while (child) {\n if (child._start === position && child.data === \"isPause\") {\n _removeFromParent(child);\n }\n\n child = child._next;\n }\n };\n\n _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n var tweens = this.getTweensOf(targets, onlyActive),\n i = tweens.length;\n\n while (i--) {\n _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);\n }\n\n return this;\n };\n\n _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {\n var a = [],\n parsedTargets = toArray(targets),\n child = this._first,\n isGlobalTime = _isNumber(onlyActive),\n // a number is interpreted as a global time. If the animation spans\n children;\n\n while (child) {\n if (child instanceof Tween) {\n if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {\n // note: if this is for overwriting, it should only be for tweens that aren't paused and are initted.\n a.push(child);\n }\n } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {\n a.push.apply(a, children);\n }\n\n child = child._next;\n }\n\n return a;\n } // potential future feature - targets() on timelines\n // targets() {\n // \tlet result = [];\n // \tthis.getChildren(true, true, false).forEach(t => result.push(...t.targets()));\n // \treturn result.filter((v, i) => result.indexOf(v) === i);\n // }\n ;\n\n _proto2.tweenTo = function tweenTo(position, vars) {\n vars = vars || {};\n\n var tl = this,\n endTime = _parsePosition(tl, position),\n _vars = vars,\n startAt = _vars.startAt,\n _onStart = _vars.onStart,\n onStartParams = _vars.onStartParams,\n immediateRender = _vars.immediateRender,\n initted,\n tween = Tween.to(tl, _setDefaults({\n ease: vars.ease || \"none\",\n lazy: false,\n immediateRender: false,\n time: endTime,\n overwrite: \"auto\",\n duration: vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,\n onStart: function onStart() {\n tl.pause();\n\n if (!initted) {\n var duration = vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale());\n tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);\n initted = 1;\n }\n\n _onStart && _onStart.apply(tween, onStartParams || []); //in case the user had an onStart in the vars - we don't want to overwrite it.\n }\n }, vars));\n\n return immediateRender ? tween.render(0) : tween;\n };\n\n _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {\n return this.tweenTo(toPosition, _setDefaults({\n startAt: {\n time: _parsePosition(this, fromPosition)\n }\n }, vars));\n };\n\n _proto2.recent = function recent() {\n return this._recent;\n };\n\n _proto2.nextLabel = function nextLabel(afterTime) {\n if (afterTime === void 0) {\n afterTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, afterTime));\n };\n\n _proto2.previousLabel = function previousLabel(beforeTime) {\n if (beforeTime === void 0) {\n beforeTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);\n };\n\n _proto2.currentLabel = function currentLabel(value) {\n return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);\n };\n\n _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = 0;\n }\n\n var child = this._first,\n labels = this.labels,\n p;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n child._start += amount;\n child._end += amount;\n }\n\n child = child._next;\n }\n\n if (adjustLabels) {\n for (p in labels) {\n if (labels[p] >= ignoreBeforeTime) {\n labels[p] += amount;\n }\n }\n }\n\n return _uncache(this);\n };\n\n _proto2.invalidate = function invalidate(soft) {\n var child = this._first;\n this._lock = 0;\n\n while (child) {\n child.invalidate(soft);\n child = child._next;\n }\n\n return _Animation.prototype.invalidate.call(this, soft);\n };\n\n _proto2.clear = function clear(includeLabels) {\n if (includeLabels === void 0) {\n includeLabels = true;\n }\n\n var child = this._first,\n next;\n\n while (child) {\n next = child._next;\n this.remove(child);\n child = next;\n }\n\n this._dp && (this._time = this._tTime = this._pTime = 0);\n includeLabels && (this.labels = {});\n return _uncache(this);\n };\n\n _proto2.totalDuration = function totalDuration(value) {\n var max = 0,\n self = this,\n child = self._last,\n prevStart = _bigNum,\n prev,\n start,\n parent;\n\n if (arguments.length) {\n return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));\n }\n\n if (self._dirty) {\n parent = self.parent;\n\n while (child) {\n prev = child._prev; //record it here in case the tween changes position in the sequence...\n\n child._dirty && child.totalDuration(); //could change the tween._startTime, so make sure the animation's cache is clean before analyzing it.\n\n start = child._start;\n\n if (start > prevStart && self._sort && child._ts && !self._lock) {\n //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence\n self._lock = 1; //prevent endless recursive calls - there are methods that get triggered that check duration/totalDuration when we add().\n\n _addToTimeline(self, child, start - child._delay, 1)._lock = 0;\n } else {\n prevStart = start;\n }\n\n if (start < 0 && child._ts) {\n //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.\n max -= start;\n\n if (!parent && !self._dp || parent && parent.smoothChildTiming) {\n self._start += start / self._ts;\n self._time -= start;\n self._tTime -= start;\n }\n\n self.shiftChildren(-start, false, -1e999);\n prevStart = 0;\n }\n\n child._end > max && child._ts && (max = child._end);\n child = prev;\n }\n\n _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1);\n\n self._dirty = 0;\n }\n\n return self._tDur;\n };\n\n Timeline.updateRoot = function updateRoot(time) {\n if (_globalTimeline._ts) {\n _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));\n\n _lastRenderedFrame = _ticker.frame;\n }\n\n if (_ticker.frame >= _nextGCFrame) {\n _nextGCFrame += _config.autoSleep || 120;\n var child = _globalTimeline._first;\n if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {\n while (child && !child._ts) {\n child = child._next;\n }\n\n child || _ticker.sleep();\n }\n }\n };\n\n return Timeline;\n}(Animation);\n\n_setDefaults(Timeline.prototype, {\n _lock: 0,\n _hasPause: 0,\n _forcing: 0\n});\n\nvar _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {\n //note: we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),\n index = 0,\n matchIndex = 0,\n result,\n startNums,\n color,\n endNum,\n chunk,\n startNum,\n hasRandom,\n a;\n pt.b = start;\n pt.e = end;\n start += \"\"; //ensure values are strings\n\n end += \"\";\n\n if (hasRandom = ~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (stringFilter) {\n a = [start, end];\n stringFilter(a, target, prop); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.\n\n start = a[0];\n end = a[1];\n }\n\n startNums = start.match(_complexStringNumExp) || [];\n\n while (result = _complexStringNumExp.exec(end)) {\n endNum = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\") {\n color = 1;\n }\n\n if (endNum !== startNums[matchIndex++]) {\n startNum = parseFloat(startNums[matchIndex - 1]) || 0; //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: endNum.charAt(1) === \"=\" ? _parseRelative(startNum, endNum) - startNum : parseFloat(endNum) - startNum,\n m: color && color < 4 ? Math.round : 0\n };\n index = _complexStringNumExp.lastIndex;\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n\n pt.fp = funcParam;\n\n if (_relExp.test(end) || hasRandom) {\n pt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n }\n\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n},\n _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam, optional) {\n _isFunction(end) && (end = end(index || 0, target, targets));\n var currentValue = target[prop],\n parsedStart = start !== \"get\" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf(\"set\") || !_isFunction(target[\"get\" + prop.substr(3)]) ? prop : \"get\" + prop.substr(3)](funcParam) : target[prop](),\n setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,\n pt;\n\n if (_isString(end)) {\n if (~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (end.charAt(1) === \"=\") {\n pt = _parseRelative(parsedStart, end) + (getUnit(parsedStart) || 0);\n\n if (pt || pt === 0) {\n // to avoid isNaN, like if someone passes in a value like \"!= whatever\"\n end = pt;\n }\n }\n }\n\n if (!optional || parsedStart !== end || _forceAllPropTweens) {\n if (!isNaN(parsedStart * end) && end !== \"\") {\n // fun fact: any number multiplied by \"\" is evaluated as the number 0!\n pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === \"boolean\" ? _renderBoolean : _renderPlain, 0, setter);\n funcParam && (pt.fp = funcParam);\n modifier && pt.modifier(modifier, this, target);\n return this._pt = pt;\n }\n\n !currentValue && !(prop in target) && _missingPlugin(prop, end);\n return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);\n }\n},\n //creates a copy of the vars object and processes any function-based values (putting the resulting values directly into the copy) as well as strings with \"random()\" in them. It does NOT process relative values.\n_processVars = function _processVars(vars, index, target, targets, tween) {\n _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));\n\n if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {\n return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;\n }\n\n var copy = {},\n p;\n\n for (p in vars) {\n copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);\n }\n\n return copy;\n},\n _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {\n var plugin, pt, ptLookup, i;\n\n if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n if (tween !== _quickTween) {\n ptLookup = tween._ptLookup[tween._targets.indexOf(target)]; //note: we can't use tween._ptLookup[index] because for staggered tweens, the index from the fullTargets array won't match what it is in each individual tween that spawns from the stagger.\n\n i = plugin._props.length;\n\n while (i--) {\n ptLookup[plugin._props[i]] = pt;\n }\n }\n }\n\n return plugin;\n},\n _overwritingTween,\n //store a reference temporarily so we can avoid overwriting itself.\n_forceAllPropTweens,\n _initTween = function _initTween(tween, time, tTime) {\n var vars = tween.vars,\n ease = vars.ease,\n startAt = vars.startAt,\n immediateRender = vars.immediateRender,\n lazy = vars.lazy,\n onUpdate = vars.onUpdate,\n onUpdateParams = vars.onUpdateParams,\n callbackScope = vars.callbackScope,\n runBackwards = vars.runBackwards,\n yoyoEase = vars.yoyoEase,\n keyframes = vars.keyframes,\n autoRevert = vars.autoRevert,\n dur = tween._dur,\n prevStartAt = tween._startAt,\n targets = tween._targets,\n parent = tween.parent,\n fullTargets = parent && parent.data === \"nested\" ? parent.vars.targets : targets,\n autoOverwrite = tween._overwrite === \"auto\" && !_suppressOverwrites,\n tl = tween.timeline,\n cleanVars,\n i,\n p,\n pt,\n target,\n hasPriority,\n gsData,\n harness,\n plugin,\n ptLookup,\n index,\n harnessVars,\n overwritten;\n tl && (!keyframes || !ease) && (ease = \"none\");\n tween._ease = _parseEase(ease, _defaults.ease);\n tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;\n\n if (yoyoEase && tween._yoyo && !tween._repeat) {\n //there must have been a parent timeline with yoyo:true that is currently in its yoyo phase, so flip the eases.\n yoyoEase = tween._yEase;\n tween._yEase = tween._ease;\n tween._ease = yoyoEase;\n }\n\n tween._from = !tl && !!vars.runBackwards; //nested timelines should never run backwards - the backwards-ness is in the child tweens.\n\n if (!tl || keyframes && !vars.stagger) {\n //if there's an internal timeline, skip all the parsing because we passed that task down the chain.\n harness = targets[0] ? _getCache(targets[0]).harness : 0;\n harnessVars = harness && vars[harness.prop]; //someone may need to specify CSS-specific values AND non-CSS values, like if the element has an \"x\" property plus it's a standard DOM element. We allow people to distinguish by wrapping plugin-specific stuff in a css:{} object for example.\n\n cleanVars = _copyExcluding(vars, _reservedProps);\n\n if (prevStartAt) {\n prevStartAt._zTime < 0 && prevStartAt.progress(1); // in case it's a lazy startAt that hasn't rendered yet.\n\n time < 0 && runBackwards && immediateRender && !autoRevert ? prevStartAt.render(-1, true) : prevStartAt.revert(runBackwards && dur ? _revertConfigNoKill : _startAtRevertConfig); // if it's a \"startAt\" (not \"from()\" or runBackwards: true), we only need to do a shallow revert (keep transforms cached in CSSPlugin)\n // don't just _removeFromParent(prevStartAt.render(-1, true)) because that'll leave inline styles. We're creating a new _startAt for \"startAt\" tweens that re-capture things to ensure that if the pre-tween values changed since the tween was created, they're recorded.\n\n prevStartAt._lazy = 0;\n }\n\n if (startAt) {\n _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({\n data: \"isStart\",\n overwrite: false,\n parent: parent,\n immediateRender: true,\n lazy: !prevStartAt && _isNotFalse(lazy),\n startAt: null,\n delay: 0,\n onUpdate: onUpdate,\n onUpdateParams: onUpdateParams,\n callbackScope: callbackScope,\n stagger: 0\n }, startAt))); //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, from, to).fromTo(e, to, from);\n\n\n tween._startAt._dp = 0; // don't allow it to get put back into root timeline! Like when revert() is called and totalTime() gets set.\n\n tween._startAt._sat = tween; // used in globalTime(). _sat stands for _startAtTween\n\n time < 0 && (_reverting || !immediateRender && !autoRevert) && tween._startAt.revert(_revertConfigNoKill); // rare edge case, like if a render is forced in the negative direction of a non-initted tween.\n\n if (immediateRender) {\n if (dur && time <= 0 && tTime <= 0) {\n // check tTime here because in the case of a yoyo tween whose playhead gets pushed to the end like tween.progress(1), we should allow it through so that the onComplete gets fired properly.\n time && (tween._zTime = time);\n return; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a Timeline, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.\n }\n }\n } else if (runBackwards && dur) {\n //from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)\n if (!prevStartAt) {\n time && (immediateRender = false); //in rare cases (like if a from() tween runs and then is invalidate()-ed), immediateRender could be true but the initial forced-render gets skipped, so there's no need to force the render in this context when the _time is greater than 0\n\n p = _setDefaults({\n overwrite: false,\n data: \"isFromStart\",\n //we tag the tween with as \"isFromStart\" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a \"from()\" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:\"height\", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.\n lazy: immediateRender && !prevStartAt && _isNotFalse(lazy),\n immediateRender: immediateRender,\n //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)\n stagger: 0,\n parent: parent //ensures that nested tweens that had a stagger are handled properly, like gsap.from(\".class\", {y:gsap.utils.wrap([-100,100])})\n\n }, cleanVars);\n harnessVars && (p[harness.prop] = harnessVars); // in case someone does something like .from(..., {css:{}})\n\n _removeFromParent(tween._startAt = Tween.set(targets, p));\n\n tween._startAt._dp = 0; // don't allow it to get put back into root timeline!\n\n tween._startAt._sat = tween; // used in globalTime()\n\n time < 0 && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween._startAt.render(-1, true));\n tween._zTime = time;\n\n if (!immediateRender) {\n _initTween(tween._startAt, _tinyNum, _tinyNum); //ensures that the initial values are recorded\n\n } else if (!time) {\n return;\n }\n }\n }\n\n tween._pt = tween._ptCache = 0;\n lazy = dur && _isNotFalse(lazy) || lazy && !dur;\n\n for (i = 0; i < targets.length; i++) {\n target = targets[i];\n gsData = target._gsap || _harness(targets)[i]._gsap;\n tween._ptLookup[i] = ptLookup = {};\n _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)\n\n index = fullTargets === targets ? i : fullTargets.indexOf(target);\n\n if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n plugin._props.forEach(function (name) {\n ptLookup[name] = pt;\n });\n\n plugin.priority && (hasPriority = 1);\n }\n\n if (!harness || harnessVars) {\n for (p in cleanVars) {\n if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {\n plugin.priority && (hasPriority = 1);\n } else {\n ptLookup[p] = pt = _addPropTween.call(tween, target, p, \"get\", cleanVars[p], index, fullTargets, 0, vars.stringFilter);\n }\n }\n }\n\n tween._op && tween._op[i] && tween.kill(target, tween._op[i]);\n\n if (autoOverwrite && tween._pt) {\n _overwritingTween = tween;\n\n _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(time)); // make sure the overwriting doesn't overwrite THIS tween!!!\n\n\n overwritten = !tween.parent;\n _overwritingTween = 0;\n }\n\n tween._pt && lazy && (_lazyLookup[gsData.id] = 1);\n }\n\n hasPriority && _sortPropTweensByPriority(tween);\n tween._onInit && tween._onInit(tween); //plugins like RoundProps must wait until ALL of the PropTweens are instantiated. In the plugin's init() function, it sets the _onInit on the tween instance. May not be pretty/intuitive, but it's fast and keeps file size down.\n }\n\n tween._onUpdate = onUpdate;\n tween._initted = (!tween._op || tween._pt) && !overwritten; // if overwrittenProps resulted in the entire tween being killed, do NOT flag it as initted or else it may render for one tick.\n\n keyframes && time <= 0 && tl.render(_bigNum, true, true); // if there's a 0% keyframe, it'll render in the \"before\" state for any staggered/delayed animations thus when the following tween initializes, it'll use the \"before\" state instead of the \"after\" state as the initial values.\n},\n _updatePropTweens = function _updatePropTweens(tween, property, value, start, startIsRelative, ratio, time) {\n var ptCache = (tween._pt && tween._ptCache || (tween._ptCache = {}))[property],\n pt,\n rootPT,\n lookup,\n i;\n\n if (!ptCache) {\n ptCache = tween._ptCache[property] = [];\n lookup = tween._ptLookup;\n i = tween._targets.length;\n\n while (i--) {\n pt = lookup[i][property];\n\n if (pt && pt.d && pt.d._pt) {\n // it's a plugin, so find the nested PropTween\n pt = pt.d._pt;\n\n while (pt && pt.p !== property && pt.fp !== property) {\n // \"fp\" is functionParam for things like setting CSS variables which require .setProperty(\"--var-name\", value)\n pt = pt._next;\n }\n }\n\n if (!pt) {\n // there is no PropTween associated with that property, so we must FORCE one to be created and ditch out of this\n // if the tween has other properties that already rendered at new positions, we'd normally have to rewind to put them back like tween.render(0, true) before forcing an _initTween(), but that can create another edge case like tweening a timeline's progress would trigger onUpdates to fire which could move other things around. It's better to just inform users that .resetTo() should ONLY be used for tweens that already have that property. For example, you can't gsap.to(...{ y: 0 }) and then tween.restTo(\"x\", 200) for example.\n _forceAllPropTweens = 1; // otherwise, when we _addPropTween() and it finds no change between the start and end values, it skips creating a PropTween (for efficiency...why tween when there's no difference?) but in this case we NEED that PropTween created so we can edit it.\n\n tween.vars[property] = \"+=0\";\n\n _initTween(tween, time);\n\n _forceAllPropTweens = 0;\n return 1;\n }\n\n ptCache.push(pt);\n }\n }\n\n i = ptCache.length;\n\n while (i--) {\n rootPT = ptCache[i];\n pt = rootPT._pt || rootPT; // complex values may have nested PropTweens. We only accommodate the FIRST value.\n\n pt.s = (start || start === 0) && !startIsRelative ? start : pt.s + (start || 0) + ratio * pt.c;\n pt.c = value - pt.s;\n rootPT.e && (rootPT.e = _round(value) + getUnit(rootPT.e)); // mainly for CSSPlugin (end value)\n\n rootPT.b && (rootPT.b = pt.s + getUnit(rootPT.b)); // (beginning value)\n }\n},\n _addAliasesToVars = function _addAliasesToVars(targets, vars) {\n var harness = targets[0] ? _getCache(targets[0]).harness : 0,\n propertyAliases = harness && harness.aliases,\n copy,\n p,\n i,\n aliases;\n\n if (!propertyAliases) {\n return vars;\n }\n\n copy = _merge({}, vars);\n\n for (p in propertyAliases) {\n if (p in copy) {\n aliases = propertyAliases[p].split(\",\");\n i = aliases.length;\n\n while (i--) {\n copy[aliases[i]] = copy[p];\n }\n }\n }\n\n return copy;\n},\n // parses multiple formats, like {\"0%\": {x: 100}, {\"50%\": {x: -20}} and { x: {\"0%\": 100, \"50%\": -20} }, and an \"ease\" can be set on any object. We populate an \"allProps\" object with an Array for each property, like {x: [{}, {}], y:[{}, {}]} with data for each property tween. The objects have a \"t\" (time), \"v\", (value), and \"e\" (ease) property. This allows us to piece together a timeline later.\n_parseKeyframe = function _parseKeyframe(prop, obj, allProps, easeEach) {\n var ease = obj.ease || easeEach || \"power1.inOut\",\n p,\n a;\n\n if (_isArray(obj)) {\n a = allProps[prop] || (allProps[prop] = []); // t = time (out of 100), v = value, e = ease\n\n obj.forEach(function (value, i) {\n return a.push({\n t: i / (obj.length - 1) * 100,\n v: value,\n e: ease\n });\n });\n } else {\n for (p in obj) {\n a = allProps[p] || (allProps[p] = []);\n p === \"ease\" || a.push({\n t: parseFloat(prop),\n v: obj[p],\n e: ease\n });\n }\n }\n},\n _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {\n return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf(\"random(\") ? _replaceRandom(value) : value;\n},\n _staggerTweenProps = _callbackNames + \"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert\",\n _staggerPropsToSkip = {};\n\n_forEachName(_staggerTweenProps + \",id,stagger,delay,duration,paused,scrollTrigger\", function (name) {\n return _staggerPropsToSkip[name] = 1;\n});\n/*\n * --------------------------------------------------------------------------------------\n * TWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var Tween = /*#__PURE__*/function (_Animation2) {\n _inheritsLoose(Tween, _Animation2);\n\n function Tween(targets, vars, position, skipInherit) {\n var _this3;\n\n if (typeof vars === \"number\") {\n position.duration = vars;\n vars = position;\n position = null;\n }\n\n _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this;\n var _this3$vars = _this3.vars,\n duration = _this3$vars.duration,\n delay = _this3$vars.delay,\n immediateRender = _this3$vars.immediateRender,\n stagger = _this3$vars.stagger,\n overwrite = _this3$vars.overwrite,\n keyframes = _this3$vars.keyframes,\n defaults = _this3$vars.defaults,\n scrollTrigger = _this3$vars.scrollTrigger,\n yoyoEase = _this3$vars.yoyoEase,\n parent = vars.parent || _globalTimeline,\n parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : \"length\" in vars) ? [targets] : toArray(targets),\n tl,\n i,\n copy,\n l,\n p,\n curTarget,\n staggerFunc,\n staggerVarsToMerge;\n _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn(\"GSAP target \" + targets + \" not found. https://greensock.com\", !_config.nullTargetWarn) || [];\n _this3._ptLookup = []; //PropTween lookup. An array containing an object for each target, having keys for each tweening property\n\n _this3._overwrite = overwrite;\n\n if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n vars = _this3.vars;\n tl = _this3.timeline = new Timeline({\n data: \"nested\",\n defaults: defaults || {},\n targets: parent && parent.data === \"nested\" ? parent.vars.targets : parsedTargets\n }); // we need to store the targets because for staggers and keyframes, we end up creating an individual tween for each but function-based values need to know the index and the whole Array of targets.\n\n tl.kill();\n tl.parent = tl._dp = _assertThisInitialized(_this3);\n tl._start = 0;\n\n if (stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n l = parsedTargets.length;\n staggerFunc = stagger && distribute(stagger);\n\n if (_isObject(stagger)) {\n //users can pass in callbacks like onStart/onComplete in the stagger object. These should fire with each individual tween.\n for (p in stagger) {\n if (~_staggerTweenProps.indexOf(p)) {\n staggerVarsToMerge || (staggerVarsToMerge = {});\n staggerVarsToMerge[p] = stagger[p];\n }\n }\n }\n\n for (i = 0; i < l; i++) {\n copy = _copyExcluding(vars, _staggerPropsToSkip);\n copy.stagger = 0;\n yoyoEase && (copy.yoyoEase = yoyoEase);\n staggerVarsToMerge && _merge(copy, staggerVarsToMerge);\n curTarget = parsedTargets[i]; //don't just copy duration or delay because if they're a string or function, we'd end up in an infinite loop because _isFuncOrString() would evaluate as true in the child tweens, entering this loop, etc. So we parse the value straight from vars and default to 0.\n\n copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);\n copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;\n\n if (!stagger && l === 1 && copy.delay) {\n // if someone does delay:\"random(1, 5)\", repeat:-1, for example, the delay shouldn't be inside the repeat.\n _this3._delay = delay = copy.delay;\n _this3._start += delay;\n copy.delay = 0;\n }\n\n tl.to(curTarget, copy, staggerFunc ? staggerFunc(i, curTarget, parsedTargets) : 0);\n tl._ease = _easeMap.none;\n }\n\n tl.duration() ? duration = delay = 0 : _this3.timeline = 0; // if the timeline's duration is 0, we don't need a timeline internally!\n } else if (keyframes) {\n _inheritDefaults(_setDefaults(tl.vars.defaults, {\n ease: \"none\"\n }));\n\n tl._ease = _parseEase(keyframes.ease || vars.ease || \"none\");\n var time = 0,\n a,\n kf,\n v;\n\n if (_isArray(keyframes)) {\n keyframes.forEach(function (frame) {\n return tl.to(parsedTargets, frame, \">\");\n });\n tl.duration(); // to ensure tl._dur is cached because we tap into it for performance purposes in the render() method.\n } else {\n copy = {};\n\n for (p in keyframes) {\n p === \"ease\" || p === \"easeEach\" || _parseKeyframe(p, keyframes[p], copy, keyframes.easeEach);\n }\n\n for (p in copy) {\n a = copy[p].sort(function (a, b) {\n return a.t - b.t;\n });\n time = 0;\n\n for (i = 0; i < a.length; i++) {\n kf = a[i];\n v = {\n ease: kf.e,\n duration: (kf.t - (i ? a[i - 1].t : 0)) / 100 * duration\n };\n v[p] = kf.v;\n tl.to(parsedTargets, v, time);\n time += v.duration;\n }\n }\n\n tl.duration() < duration && tl.to({}, {\n duration: duration - tl.duration()\n }); // in case keyframes didn't go to 100%\n }\n }\n\n duration || _this3.duration(duration = tl.duration());\n } else {\n _this3.timeline = 0; //speed optimization, faster lookups (no going up the prototype chain)\n }\n\n if (overwrite === true && !_suppressOverwrites) {\n _overwritingTween = _assertThisInitialized(_this3);\n\n _globalTimeline.killTweensOf(parsedTargets);\n\n _overwritingTween = 0;\n }\n\n _addToTimeline(parent, _assertThisInitialized(_this3), position);\n\n vars.reversed && _this3.reverse();\n vars.paused && _this3.paused(true);\n\n if (immediateRender || !duration && !keyframes && _this3._start === _roundPrecise(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== \"nested\") {\n _this3._tTime = -_tinyNum; //forces a render without having to set the render() \"force\" parameter to true because we want to allow lazying by default (using the \"force\" parameter always forces an immediate full render)\n\n _this3.render(Math.max(0, -delay) || 0); //in case delay is negative\n\n }\n\n scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);\n return _this3;\n }\n\n var _proto3 = Tween.prototype;\n\n _proto3.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._tDur,\n dur = this._dur,\n isNegative = totalTime < 0,\n tTime = totalTime > tDur - _tinyNum && !isNegative ? tDur : totalTime < _tinyNum ? 0 : totalTime,\n time,\n pt,\n iteration,\n cycleDuration,\n prevIteration,\n isYoyo,\n ratio,\n timeline,\n yoyoEase;\n\n if (!dur) {\n _renderZeroDurationTween(this, totalTime, suppressEvents, force);\n } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== isNegative) {\n //this senses if we're crossing over the start time, in which case we must record _zTime and force the render, but we do it in this lengthy conditional way for performance reasons (usually we can skip the calculations): this._initted && (this._zTime < 0) !== (totalTime < 0)\n time = tTime;\n timeline = this.timeline;\n\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n cycleDuration = dur + this._rDelay;\n\n if (this._repeat < -1 && isNegative) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n\n time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n\n if (iteration && iteration === tTime / cycleDuration) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n isYoyo = this._yoyo && iteration & 1;\n\n if (isYoyo) {\n yoyoEase = this._yEase;\n time = dur - time;\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n\n if (time === prevTime && !force && this._initted) {\n //could be during the repeatDelay part. No need to render and fire callbacks.\n this._tTime = tTime;\n return this;\n }\n\n if (iteration !== prevIteration) {\n timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo); //repeatRefresh functionality\n\n if (this.vars.repeatRefresh && !isYoyo && !this._lock) {\n this._lock = force = 1; //force, otherwise if lazy is true, the _attemptInitTween() will return and we'll jump out and get caught bouncing on each tick.\n\n this.render(_roundPrecise(cycleDuration * iteration), true).invalidate()._lock = 0;\n }\n }\n }\n\n if (!this._initted) {\n if (_attemptInitTween(this, isNegative ? totalTime : time, force, suppressEvents, tTime)) {\n this._tTime = 0; // in constructor if immediateRender is true, we set _tTime to -_tinyNum to have the playhead cross the starting point but we can't leave _tTime as a negative number.\n\n return this;\n }\n\n if (prevTime !== this._time) {\n // rare edge case - during initialization, an onUpdate in the _startAt (.fromTo()) might force this tween to render at a different spot in which case we should ditch this render() call so that it doesn't revert the values.\n return this;\n }\n\n if (dur !== this._dur) {\n // while initting, a plugin like InertiaPlugin might alter the duration, so rerun from the start to ensure everything renders as it should.\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n\n if (!this._act && this._ts) {\n this._act = 1; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n this._lazy = 0;\n }\n\n this.ratio = ratio = (yoyoEase || this._ease)(time / dur);\n\n if (this._from) {\n this.ratio = ratio = 1 - ratio;\n }\n\n if (time && !prevTime && !suppressEvents && !iteration) {\n _callback(this, \"onStart\");\n\n if (this._tTime !== tTime) {\n // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n return this;\n }\n }\n\n pt = this._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n timeline && timeline.render(totalTime < 0 ? totalTime : !time && isYoyo ? -_tinyNum : timeline._dur * timeline._ease(time / this._dur), suppressEvents, force) || this._startAt && (this._zTime = totalTime);\n\n if (this._onUpdate && !suppressEvents) {\n isNegative && _rewindStartAt(this, totalTime, suppressEvents, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.\n\n _callback(this, \"onUpdate\");\n }\n\n this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n\n if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {\n isNegative && !this._onUpdate && _rewindStartAt(this, totalTime, true, true);\n (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if we're rendering at exactly a time of 0, as there could be autoRevert values that should get set on the next tick (if the playhead goes backward beyond the startTime, negative totalTime). Don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(isNegative && !prevTime) && (tTime || prevTime || isYoyo)) {\n // if prevTime and tTime are zero, we shouldn't fire the onReverseComplete. This could happen if you gsap.to(... {paused:true}).play();\n _callback(this, tTime === tDur ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto3.targets = function targets() {\n return this._targets;\n };\n\n _proto3.invalidate = function invalidate(soft) {\n // \"soft\" gives us a way to clear out everything EXCEPT the recorded pre-\"from\" portion of from() tweens. Otherwise, for example, if you tween.progress(1).render(0, true true).invalidate(), the \"from\" values would persist and then on the next render, the from() tweens would initialize and the current value would match the \"from\" values, thus animate from the same value to the same value (no animation). We tap into this in ScrollTrigger's refresh() where we must push a tween to completion and then back again but honor its init state in case the tween is dependent on another tween further up on the page.\n (!soft || !this.vars.runBackwards) && (this._startAt = 0);\n this._pt = this._op = this._onUpdate = this._lazy = this.ratio = 0;\n this._ptLookup = [];\n this.timeline && this.timeline.invalidate(soft);\n return _Animation2.prototype.invalidate.call(this, soft);\n };\n\n _proto3.resetTo = function resetTo(property, value, start, startIsRelative) {\n _tickerActive || _ticker.wake();\n this._ts || this.play();\n var time = Math.min(this._dur, (this._dp._time - this._start) * this._ts),\n ratio;\n this._initted || _initTween(this, time);\n ratio = this._ease(time / this._dur); // don't just get tween.ratio because it may not have rendered yet.\n // possible future addition to allow an object with multiple values to update, like tween.resetTo({x: 100, y: 200}); At this point, it doesn't seem worth the added kb given the fact that most users will likely opt for the convenient gsap.quickTo() way of interacting with this method.\n // if (_isObject(property)) { // performance optimization\n // \tfor (p in property) {\n // \t\tif (_updatePropTweens(this, p, property[p], value ? value[p] : null, start, ratio, time)) {\n // \t\t\treturn this.resetTo(property, value, start, startIsRelative); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.\n // \t\t}\n // \t}\n // } else {\n\n if (_updatePropTweens(this, property, value, start, startIsRelative, ratio, time)) {\n return this.resetTo(property, value, start, startIsRelative); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.\n } //}\n\n\n _alignPlayhead(this, 0);\n\n this.parent || _addLinkedListItem(this._dp, this, \"_first\", \"_last\", this._dp._sort ? \"_start\" : 0);\n return this.render(0);\n };\n\n _proto3.kill = function kill(targets, vars) {\n if (vars === void 0) {\n vars = \"all\";\n }\n\n if (!targets && (!vars || vars === \"all\")) {\n this._lazy = this._pt = 0;\n return this.parent ? _interrupt(this) : this;\n }\n\n if (this.timeline) {\n var tDur = this.timeline.totalDuration();\n this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this); // if nothing is left tweening, interrupt.\n\n this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1); // if a nested tween is killed that changes the duration, it should affect this tween's duration. We must use the ratio, though, because sometimes the internal timeline is stretched like for keyframes where they don't all add up to whatever the parent tween's duration was set to.\n\n return this;\n }\n\n var parsedTargets = this._targets,\n killingTargets = targets ? toArray(targets) : parsedTargets,\n propTweenLookup = this._ptLookup,\n firstPT = this._pt,\n overwrittenProps,\n curLookup,\n curOverwriteProps,\n props,\n p,\n pt,\n i;\n\n if ((!vars || vars === \"all\") && _arraysMatch(parsedTargets, killingTargets)) {\n vars === \"all\" && (this._pt = 0);\n return _interrupt(this);\n }\n\n overwrittenProps = this._op = this._op || [];\n\n if (vars !== \"all\") {\n //so people can pass in a comma-delimited list of property names\n if (_isString(vars)) {\n p = {};\n\n _forEachName(vars, function (name) {\n return p[name] = 1;\n });\n\n vars = p;\n }\n\n vars = _addAliasesToVars(parsedTargets, vars);\n }\n\n i = parsedTargets.length;\n\n while (i--) {\n if (~killingTargets.indexOf(parsedTargets[i])) {\n curLookup = propTweenLookup[i];\n\n if (vars === \"all\") {\n overwrittenProps[i] = vars;\n props = curLookup;\n curOverwriteProps = {};\n } else {\n curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};\n props = vars;\n }\n\n for (p in props) {\n pt = curLookup && curLookup[p];\n\n if (pt) {\n if (!(\"kill\" in pt.d) || pt.d.kill(p) === true) {\n _removeLinkedListItem(this, pt, \"_pt\");\n }\n\n delete curLookup[p];\n }\n\n if (curOverwriteProps !== \"all\") {\n curOverwriteProps[p] = 1;\n }\n }\n }\n }\n\n this._initted && !this._pt && firstPT && _interrupt(this); //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.\n\n return this;\n };\n\n Tween.to = function to(targets, vars) {\n return new Tween(targets, vars, arguments[2]);\n };\n\n Tween.from = function from(targets, vars) {\n return _createTweenType(1, arguments);\n };\n\n Tween.delayedCall = function delayedCall(delay, callback, params, scope) {\n return new Tween(callback, 0, {\n immediateRender: false,\n lazy: false,\n overwrite: false,\n delay: delay,\n onComplete: callback,\n onReverseComplete: callback,\n onCompleteParams: params,\n onReverseCompleteParams: params,\n callbackScope: scope\n }); // we must use onReverseComplete too for things like timeline.add(() => {...}) which should be triggered in BOTH directions (forward and reverse)\n };\n\n Tween.fromTo = function fromTo(targets, fromVars, toVars) {\n return _createTweenType(2, arguments);\n };\n\n Tween.set = function set(targets, vars) {\n vars.duration = 0;\n vars.repeatDelay || (vars.repeat = 0);\n return new Tween(targets, vars);\n };\n\n Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n return _globalTimeline.killTweensOf(targets, props, onlyActive);\n };\n\n return Tween;\n}(Animation);\n\n_setDefaults(Tween.prototype, {\n _targets: [],\n _lazy: 0,\n _startAt: 0,\n _op: 0,\n _onInit: 0\n}); //add the pertinent timeline methods to Tween instances so that users can chain conveniently and create a timeline automatically. (removed due to concerns that it'd ultimately add to more confusion especially for beginners)\n// _forEachName(\"to,from,fromTo,set,call,add,addLabel,addPause\", name => {\n// \tTween.prototype[name] = function() {\n// \t\tlet tl = new Timeline();\n// \t\treturn _addToTimeline(tl, this)[name].apply(tl, toArray(arguments));\n// \t}\n// });\n//for backward compatibility. Leverage the timeline calls.\n\n\n_forEachName(\"staggerTo,staggerFrom,staggerFromTo\", function (name) {\n Tween[name] = function () {\n var tl = new Timeline(),\n params = _slice.call(arguments, 0);\n\n params.splice(name === \"staggerFromTo\" ? 5 : 4, 0, 0);\n return tl[name].apply(tl, params);\n };\n});\n/*\n * --------------------------------------------------------------------------------------\n * PROPTWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _setterPlain = function _setterPlain(target, property, value) {\n return target[property] = value;\n},\n _setterFunc = function _setterFunc(target, property, value) {\n return target[property](value);\n},\n _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {\n return target[property](data.fp, value);\n},\n _setterAttribute = function _setterAttribute(target, property, value) {\n return target.setAttribute(property, value);\n},\n _getSetter = function _getSetter(target, property) {\n return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;\n},\n _renderPlain = function _renderPlain(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1000000) / 1000000, data);\n},\n _renderBoolean = function _renderBoolean(ratio, data) {\n return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);\n},\n _renderComplexString = function _renderComplexString(ratio, data) {\n var pt = data._pt,\n s = \"\";\n\n if (!ratio && data.b) {\n //b = beginning string\n s = data.b;\n } else if (ratio === 1 && data.e) {\n //e = ending string\n s = data.e;\n } else {\n while (pt) {\n s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s; //we use the \"p\" property for the text inbetween (like a suffix). And in the context of a complex string, the modifier (m) is typically just Math.round(), like for RGB colors.\n\n pt = pt._next;\n }\n\n s += data.c; //we use the \"c\" of the PropTween to store the final chunk of non-numeric text.\n }\n\n data.set(data.t, data.p, s, data);\n},\n _renderPropTweens = function _renderPropTweens(ratio, data) {\n var pt = data._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n},\n _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {\n var pt = this._pt,\n next;\n\n while (pt) {\n next = pt._next;\n pt.p === property && pt.modifier(modifier, tween, target);\n pt = next;\n }\n},\n _killPropTweensOf = function _killPropTweensOf(property) {\n var pt = this._pt,\n hasNonDependentRemaining,\n next;\n\n while (pt) {\n next = pt._next;\n\n if (pt.p === property && !pt.op || pt.op === property) {\n _removeLinkedListItem(this, pt, \"_pt\");\n } else if (!pt.dep) {\n hasNonDependentRemaining = 1;\n }\n\n pt = next;\n }\n\n return !hasNonDependentRemaining;\n},\n _setterWithModifier = function _setterWithModifier(target, property, value, data) {\n data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);\n},\n _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {\n var pt = parent._pt,\n next,\n pt2,\n first,\n last; //sorts the PropTween linked list in order of priority because some plugins need to do their work after ALL of the PropTweens were created (like RoundPropsPlugin and ModifiersPlugin)\n\n while (pt) {\n next = pt._next;\n pt2 = first;\n\n while (pt2 && pt2.pr > pt.pr) {\n pt2 = pt2._next;\n }\n\n if (pt._prev = pt2 ? pt2._prev : last) {\n pt._prev._next = pt;\n } else {\n first = pt;\n }\n\n if (pt._next = pt2) {\n pt2._prev = pt;\n } else {\n last = pt;\n }\n\n pt = next;\n }\n\n parent._pt = first;\n}; //PropTween key: t = target, p = prop, r = renderer, d = data, s = start, c = change, op = overwriteProperty (ONLY populated when it's different than p), pr = priority, _next/_prev for the linked list siblings, set = setter, m = modifier, mSet = modifierSetter (the original setter, before a modifier was added)\n\n\nexport var PropTween = /*#__PURE__*/function () {\n function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {\n this.t = target;\n this.s = start;\n this.c = change;\n this.p = prop;\n this.r = renderer || _renderPlain;\n this.d = data || this;\n this.set = setter || _setterPlain;\n this.pr = priority || 0;\n this._next = next;\n\n if (next) {\n next._prev = this;\n }\n }\n\n var _proto4 = PropTween.prototype;\n\n _proto4.modifier = function modifier(func, tween, target) {\n this.mSet = this.mSet || this.set; //in case it was already set (a PropTween can only have one modifier)\n\n this.set = _setterWithModifier;\n this.m = func;\n this.mt = target; //modifier target\n\n this.tween = tween;\n };\n\n return PropTween;\n}(); //Initialization tasks\n\n_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) {\n return _reservedProps[name] = 1;\n});\n\n_globals.TweenMax = _globals.TweenLite = Tween;\n_globals.TimelineLite = _globals.TimelineMax = Timeline;\n_globalTimeline = new Timeline({\n sortChildren: false,\n defaults: _defaults,\n autoRemoveChildren: true,\n id: \"root\",\n smoothChildTiming: true\n});\n_config.stringFilter = _colorStringFilter;\n\nvar _media = [],\n _listeners = {},\n _emptyArray = [],\n _lastMediaTime = 0,\n _dispatch = function _dispatch(type) {\n return (_listeners[type] || _emptyArray).map(function (f) {\n return f();\n });\n},\n _onMediaChange = function _onMediaChange() {\n var time = Date.now(),\n matches = [];\n\n if (time - _lastMediaTime > 2) {\n _dispatch(\"matchMediaInit\");\n\n _media.forEach(function (c) {\n var queries = c.queries,\n conditions = c.conditions,\n match,\n p,\n anyMatch,\n toggled;\n\n for (p in queries) {\n match = _win.matchMedia(queries[p]).matches; // Firefox doesn't update the \"matches\" property of the MediaQueryList object correctly - it only does so as it calls its change handler - so we must re-create a media query here to ensure it's accurate.\n\n match && (anyMatch = 1);\n\n if (match !== conditions[p]) {\n conditions[p] = match;\n toggled = 1;\n }\n }\n\n if (toggled) {\n c.revert();\n anyMatch && matches.push(c);\n }\n });\n\n _dispatch(\"matchMediaRevert\");\n\n matches.forEach(function (c) {\n return c.onMatch(c);\n });\n _lastMediaTime = time;\n\n _dispatch(\"matchMedia\");\n }\n};\n\nvar Context = /*#__PURE__*/function () {\n function Context(func, scope) {\n this.selector = scope && selector(scope);\n this.data = [];\n this._r = []; // returned/cleanup functions\n\n this.isReverted = false;\n func && this.add(func);\n }\n\n var _proto5 = Context.prototype;\n\n _proto5.add = function add(name, func, scope) {\n // possible future addition if we need the ability to add() an animation to a context and for whatever reason cannot create that animation inside of a context.add(() => {...}) function.\n // if (name && _isFunction(name.revert)) {\n // \tthis.data.push(name);\n // \treturn (name._ctx = this);\n // }\n if (_isFunction(name)) {\n scope = func;\n func = name;\n name = _isFunction;\n }\n\n var self = this,\n f = function f() {\n var prev = _context,\n prevSelector = self.selector,\n result;\n prev && prev !== self && prev.data.push(self);\n scope && (self.selector = selector(scope));\n _context = self;\n result = func.apply(self, arguments);\n _isFunction(result) && self._r.push(result);\n _context = prev;\n self.selector = prevSelector;\n self.isReverted = false;\n return result;\n };\n\n self.last = f;\n return name === _isFunction ? f(self) : name ? self[name] = f : f;\n };\n\n _proto5.ignore = function ignore(func) {\n var prev = _context;\n _context = null;\n func(this);\n _context = prev;\n };\n\n _proto5.getTweens = function getTweens() {\n var a = [];\n this.data.forEach(function (e) {\n return e instanceof Context ? a.push.apply(a, e.getTweens()) : e instanceof Tween && !(e.parent && e.parent.data === \"nested\") && a.push(e);\n });\n return a;\n };\n\n _proto5.clear = function clear() {\n this._r.length = this.data.length = 0;\n };\n\n _proto5.kill = function kill(revert, matchMedia) {\n var _this4 = this;\n\n if (revert) {\n var tweens = this.getTweens();\n this.data.forEach(function (t) {\n // Flip plugin tweens are very different in that they should actually be pushed to their end. The plugin replaces the timeline's .revert() method to do exactly that. But we also need to remove any of those nested tweens inside the flip timeline so that they don't get individually reverted.\n if (t.data === \"isFlip\") {\n t.revert();\n t.getChildren(true, true, false).forEach(function (tween) {\n return tweens.splice(tweens.indexOf(tween), 1);\n });\n }\n }); // save as an object so that we can cache the globalTime for each tween to optimize performance during the sort\n\n tweens.map(function (t) {\n return {\n g: t.globalTime(0),\n t: t\n };\n }).sort(function (a, b) {\n return b.g - a.g || -1;\n }).forEach(function (o) {\n return o.t.revert(revert);\n }); // note: all of the _startAt tweens should be reverted in reverse order that they were created, and they'll all have the same globalTime (-1) so the \" || -1\" in the sort keeps the order properly.\n\n this.data.forEach(function (e) {\n return !(e instanceof Animation) && e.revert && e.revert(revert);\n });\n\n this._r.forEach(function (f) {\n return f(revert, _this4);\n });\n\n this.isReverted = true;\n } else {\n this.data.forEach(function (e) {\n return e.kill && e.kill();\n });\n }\n\n this.clear();\n\n if (matchMedia) {\n var i = _media.indexOf(this);\n\n !!~i && _media.splice(i, 1);\n }\n };\n\n _proto5.revert = function revert(config) {\n this.kill(config || {});\n };\n\n return Context;\n}();\n\nvar MatchMedia = /*#__PURE__*/function () {\n function MatchMedia(scope) {\n this.contexts = [];\n this.scope = scope;\n }\n\n var _proto6 = MatchMedia.prototype;\n\n _proto6.add = function add(conditions, func, scope) {\n _isObject(conditions) || (conditions = {\n matches: conditions\n });\n var context = new Context(0, scope || this.scope),\n cond = context.conditions = {},\n mq,\n p,\n active;\n this.contexts.push(context);\n func = context.add(\"onMatch\", func);\n context.queries = conditions;\n\n for (p in conditions) {\n if (p === \"all\") {\n active = 1;\n } else {\n mq = _win.matchMedia(conditions[p]);\n\n if (mq) {\n _media.indexOf(context) < 0 && _media.push(context);\n (cond[p] = mq.matches) && (active = 1);\n mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener(\"change\", _onMediaChange);\n }\n }\n }\n\n active && func(context);\n return this;\n } // refresh() {\n // \tlet time = _lastMediaTime,\n // \t\tmedia = _media;\n // \t_lastMediaTime = -1;\n // \t_media = this.contexts;\n // \t_onMediaChange();\n // \t_lastMediaTime = time;\n // \t_media = media;\n // }\n ;\n\n _proto6.revert = function revert(config) {\n this.kill(config || {});\n };\n\n _proto6.kill = function kill(revert) {\n this.contexts.forEach(function (c) {\n return c.kill(revert, true);\n });\n };\n\n return MatchMedia;\n}();\n/*\n * --------------------------------------------------------------------------------------\n * GSAP\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _gsap = {\n registerPlugin: function registerPlugin() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n args.forEach(function (config) {\n return _createPlugin(config);\n });\n },\n timeline: function timeline(vars) {\n return new Timeline(vars);\n },\n getTweensOf: function getTweensOf(targets, onlyActive) {\n return _globalTimeline.getTweensOf(targets, onlyActive);\n },\n getProperty: function getProperty(target, property, unit, uncache) {\n _isString(target) && (target = toArray(target)[0]); //in case selector text or an array is passed in\n\n var getter = _getCache(target || {}).get,\n format = unit ? _passThrough : _numericIfPossible;\n\n unit === \"native\" && (unit = \"\");\n return !target ? target : !property ? function (property, unit, uncache) {\n return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n },\n quickSetter: function quickSetter(target, property, unit) {\n target = toArray(target);\n\n if (target.length > 1) {\n var setters = target.map(function (t) {\n return gsap.quickSetter(t, property, unit);\n }),\n l = setters.length;\n return function (value) {\n var i = l;\n\n while (i--) {\n setters[i](value);\n }\n };\n }\n\n target = target[0] || {};\n\n var Plugin = _plugins[property],\n cache = _getCache(target),\n p = cache.harness && (cache.harness.aliases || {})[property] || property,\n // in case it's an alias, like \"rotate\" for \"rotation\".\n setter = Plugin ? function (value) {\n var p = new Plugin();\n _quickTween._pt = 0;\n p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);\n p.render(1, p);\n _quickTween._pt && _renderPropTweens(1, _quickTween);\n } : cache.set(target, p);\n\n return Plugin ? setter : function (value) {\n return setter(target, p, unit ? value + unit : value, cache, 1);\n };\n },\n quickTo: function quickTo(target, property, vars) {\n var _merge2;\n\n var tween = gsap.to(target, _merge((_merge2 = {}, _merge2[property] = \"+=0.1\", _merge2.paused = true, _merge2), vars || {})),\n func = function func(value, start, startIsRelative) {\n return tween.resetTo(property, value, start, startIsRelative);\n };\n\n func.tween = tween;\n return func;\n },\n isTweening: function isTweening(targets) {\n return _globalTimeline.getTweensOf(targets, true).length > 0;\n },\n defaults: function defaults(value) {\n value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));\n return _mergeDeep(_defaults, value || {});\n },\n config: function config(value) {\n return _mergeDeep(_config, value || {});\n },\n registerEffect: function registerEffect(_ref3) {\n var name = _ref3.name,\n effect = _ref3.effect,\n plugins = _ref3.plugins,\n defaults = _ref3.defaults,\n extendTimeline = _ref3.extendTimeline;\n (plugins || \"\").split(\",\").forEach(function (pluginName) {\n return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + \" effect requires \" + pluginName + \" plugin.\");\n });\n\n _effects[name] = function (targets, vars, tl) {\n return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);\n };\n\n if (extendTimeline) {\n Timeline.prototype[name] = function (targets, vars, position) {\n return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);\n };\n }\n },\n registerEase: function registerEase(name, ease) {\n _easeMap[name] = _parseEase(ease);\n },\n parseEase: function parseEase(ease, defaultEase) {\n return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;\n },\n getById: function getById(id) {\n return _globalTimeline.getById(id);\n },\n exportRoot: function exportRoot(vars, includeDelayedCalls) {\n if (vars === void 0) {\n vars = {};\n }\n\n var tl = new Timeline(vars),\n child,\n next;\n tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);\n\n _globalTimeline.remove(tl);\n\n tl._dp = 0; //otherwise it'll get re-activated when adding children and be re-introduced into _globalTimeline's linked list (then added to itself).\n\n tl._time = tl._tTime = _globalTimeline._time;\n child = _globalTimeline._first;\n\n while (child) {\n next = child._next;\n\n if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {\n _addToTimeline(tl, child, child._start - child._delay);\n }\n\n child = next;\n }\n\n _addToTimeline(_globalTimeline, tl, 0);\n\n return tl;\n },\n context: function context(func, scope) {\n return func ? new Context(func, scope) : _context;\n },\n matchMedia: function matchMedia(scope) {\n return new MatchMedia(scope);\n },\n matchMediaRefresh: function matchMediaRefresh() {\n return _media.forEach(function (c) {\n var cond = c.conditions,\n found,\n p;\n\n for (p in cond) {\n if (cond[p]) {\n cond[p] = false;\n found = 1;\n }\n }\n\n found && c.revert();\n }) || _onMediaChange();\n },\n addEventListener: function addEventListener(type, callback) {\n var a = _listeners[type] || (_listeners[type] = []);\n ~a.indexOf(callback) || a.push(callback);\n },\n removeEventListener: function removeEventListener(type, callback) {\n var a = _listeners[type],\n i = a && a.indexOf(callback);\n i >= 0 && a.splice(i, 1);\n },\n utils: {\n wrap: wrap,\n wrapYoyo: wrapYoyo,\n distribute: distribute,\n random: random,\n snap: snap,\n normalize: normalize,\n getUnit: getUnit,\n clamp: clamp,\n splitColor: splitColor,\n toArray: toArray,\n selector: selector,\n mapRange: mapRange,\n pipe: pipe,\n unitize: unitize,\n interpolate: interpolate,\n shuffle: shuffle\n },\n install: _install,\n effects: _effects,\n ticker: _ticker,\n updateRoot: Timeline.updateRoot,\n plugins: _plugins,\n globalTimeline: _globalTimeline,\n core: {\n PropTween: PropTween,\n globals: _addGlobal,\n Tween: Tween,\n Timeline: Timeline,\n Animation: Animation,\n getCache: _getCache,\n _removeLinkedListItem: _removeLinkedListItem,\n reverting: function reverting() {\n return _reverting;\n },\n context: function context(toAdd) {\n if (toAdd && _context) {\n _context.data.push(toAdd);\n\n toAdd._ctx = _context;\n }\n\n return _context;\n },\n suppressOverwrites: function suppressOverwrites(value) {\n return _suppressOverwrites = value;\n }\n }\n};\n\n_forEachName(\"to,from,fromTo,delayedCall,set,killTweensOf\", function (name) {\n return _gsap[name] = Tween[name];\n});\n\n_ticker.add(Timeline.updateRoot);\n\n_quickTween = _gsap.to({}, {\n duration: 0\n}); // ---- EXTRA PLUGINS --------------------------------------------------------\n\nvar _getPluginPropTween = function _getPluginPropTween(plugin, prop) {\n var pt = plugin._pt;\n\n while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {\n pt = pt._next;\n }\n\n return pt;\n},\n _addModifiers = function _addModifiers(tween, modifiers) {\n var targets = tween._targets,\n p,\n i,\n pt;\n\n for (p in modifiers) {\n i = targets.length;\n\n while (i--) {\n pt = tween._ptLookup[i][p];\n\n if (pt && (pt = pt.d)) {\n if (pt._pt) {\n // is a plugin\n pt = _getPluginPropTween(pt, p);\n }\n\n pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);\n }\n }\n }\n},\n _buildModifierPlugin = function _buildModifierPlugin(name, modifier) {\n return {\n name: name,\n rawVars: 1,\n //don't pre-process function-based values or \"random()\" strings.\n init: function init(target, vars, tween) {\n tween._onInit = function (tween) {\n var temp, p;\n\n if (_isString(vars)) {\n temp = {};\n\n _forEachName(vars, function (name) {\n return temp[name] = 1;\n }); //if the user passes in a comma-delimited list of property names to roundProps, like \"x,y\", we round to whole numbers.\n\n\n vars = temp;\n }\n\n if (modifier) {\n temp = {};\n\n for (p in vars) {\n temp[p] = modifier(vars[p]);\n }\n\n vars = temp;\n }\n\n _addModifiers(tween, vars);\n };\n }\n };\n}; //register core plugins\n\n\nexport var gsap = _gsap.registerPlugin({\n name: \"attr\",\n init: function init(target, vars, tween, index, targets) {\n var p, pt, v;\n this.tween = tween;\n\n for (p in vars) {\n v = target.getAttribute(p) || \"\";\n pt = this.add(target, \"setAttribute\", (v || 0) + \"\", vars[p], index, targets, 0, 0, p);\n pt.op = p;\n pt.b = v; // record the beginning value so we can revert()\n\n this._props.push(p);\n }\n },\n render: function render(ratio, data) {\n var pt = data._pt;\n\n while (pt) {\n _reverting ? pt.set(pt.t, pt.p, pt.b, pt) : pt.r(ratio, pt.d); // if reverting, go back to the original (pt.b)\n\n pt = pt._next;\n }\n }\n}, {\n name: \"endArray\",\n init: function init(target, value) {\n var i = value.length;\n\n while (i--) {\n this.add(target, i, target[i] || 0, value[i], 0, 0, 0, 0, 0, 1);\n }\n }\n}, _buildModifierPlugin(\"roundProps\", _roundModifier), _buildModifierPlugin(\"modifiers\"), _buildModifierPlugin(\"snap\", snap)) || _gsap; //to prevent the core plugins from being dropped via aggressive tree shaking, we must include them in the variable declaration in this way.\n\nTween.version = Timeline.version = gsap.version = \"3.11.5\";\n_coreReady = 1;\n_windowExists() && _wake();\nvar Power0 = _easeMap.Power0,\n Power1 = _easeMap.Power1,\n Power2 = _easeMap.Power2,\n Power3 = _easeMap.Power3,\n Power4 = _easeMap.Power4,\n Linear = _easeMap.Linear,\n Quad = _easeMap.Quad,\n Cubic = _easeMap.Cubic,\n Quart = _easeMap.Quart,\n Quint = _easeMap.Quint,\n Strong = _easeMap.Strong,\n Elastic = _easeMap.Elastic,\n Back = _easeMap.Back,\n SteppedEase = _easeMap.SteppedEase,\n Bounce = _easeMap.Bounce,\n Sine = _easeMap.Sine,\n Expo = _easeMap.Expo,\n Circ = _easeMap.Circ;\nexport { Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };\nexport { Tween as TweenMax, Tween as TweenLite, Timeline as TimelineMax, Timeline as TimelineLite, gsap as default, wrap, wrapYoyo, distribute, random, snap, normalize, getUnit, clamp, splitColor, toArray, selector, mapRange, pipe, unitize, interpolate, shuffle }; //export some internal methods/orojects for use in CSSPlugin so that we can externalize that file and allow custom builds that exclude it.\n\nexport { _getProperty, _numExp, _numWithUnitExp, _isString, _isUndefined, _renderComplexString, _relExp, _setDefaults, _removeLinkedListItem, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _replaceRandom, _checkPlugin, _plugins, _ticker, _config, _roundModifier, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _parseRelative };","import { gsap, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ, TweenLite, TimelineLite, TimelineMax } from \"./gsap-core.js\";\nimport { CSSPlugin } from \"./CSSPlugin.js\";\nvar gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap,\n // to protect from tree shaking\nTweenMaxWithCSS = gsapWithCSS.core.Tween;\nexport { gsapWithCSS as gsap, gsapWithCSS as default, CSSPlugin, TweenMaxWithCSS as TweenMax, TweenLite, TimelineMax, TimelineLite, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };","/*!\n * matrix 3.11.5\n * https://greensock.com\n *\n * Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar _doc,\n _win,\n _docElement,\n _body,\n _divContainer,\n _svgContainer,\n _identityMatrix,\n _gEl,\n _transformProp = \"transform\",\n _transformOriginProp = _transformProp + \"Origin\",\n _hasOffsetBug,\n _setDoc = function _setDoc(element) {\n var doc = element.ownerDocument || element;\n\n if (!(_transformProp in element.style) && \"msTransform\" in element.style) {\n //to improve compatibility with old Microsoft browsers\n _transformProp = \"msTransform\";\n _transformOriginProp = _transformProp + \"Origin\";\n }\n\n while (doc.parentNode && (doc = doc.parentNode)) {}\n\n _win = window;\n _identityMatrix = new Matrix2D();\n\n if (doc) {\n _doc = doc;\n _docElement = doc.documentElement;\n _body = doc.body;\n _gEl = _doc.createElementNS(\"http://www.w3.org/2000/svg\", \"g\"); // prevent any existing CSS from transforming it\n\n _gEl.style.transform = \"none\"; // now test for the offset reporting bug. Use feature detection instead of browser sniffing to make things more bulletproof and future-proof. Hopefully Safari will fix their bug soon but it's 2020 and it's still not fixed.\n\n var d1 = doc.createElement(\"div\"),\n d2 = doc.createElement(\"div\");\n\n _body.appendChild(d1);\n\n d1.appendChild(d2);\n d1.style.position = \"static\";\n d1.style[_transformProp] = \"translate3d(0,0,1px)\";\n _hasOffsetBug = d2.offsetParent !== d1;\n\n _body.removeChild(d1);\n }\n\n return doc;\n},\n _forceNonZeroScale = function _forceNonZeroScale(e) {\n // walks up the element's ancestors and finds any that had their scale set to 0 via GSAP, and changes them to 0.0001 to ensure that measurements work. Firefox has a bug that causes it to incorrectly report getBoundingClientRect() when scale is 0.\n var a, cache;\n\n while (e && e !== _body) {\n cache = e._gsap;\n cache && cache.uncache && cache.get(e, \"x\"); // force re-parsing of transforms if necessary\n\n if (cache && !cache.scaleX && !cache.scaleY && cache.renderTransform) {\n cache.scaleX = cache.scaleY = 1e-4;\n cache.renderTransform(1, cache);\n a ? a.push(cache) : a = [cache];\n }\n\n e = e.parentNode;\n }\n\n return a;\n},\n // possible future addition: pass an element to _forceDisplay() and it'll walk up all its ancestors and make sure anything with display: none is set to display: block, and if there's no parentNode, it'll add it to the body. It returns an Array that you can then feed to _revertDisplay() to have it revert all the changes it made.\n// _forceDisplay = e => {\n// \tlet a = [],\n// \t\tparent;\n// \twhile (e && e !== _body) {\n// \t\tparent = e.parentNode;\n// \t\t(_win.getComputedStyle(e).display === \"none\" || !parent) && a.push(e, e.style.display, parent) && (e.style.display = \"block\");\n// \t\tparent || _body.appendChild(e);\n// \t\te = parent;\n// \t}\n// \treturn a;\n// },\n// _revertDisplay = a => {\n// \tfor (let i = 0; i < a.length; i+=3) {\n// \t\ta[i+1] ? (a[i].style.display = a[i+1]) : a[i].style.removeProperty(\"display\");\n// \t\ta[i+2] || a[i].parentNode.removeChild(a[i]);\n// \t}\n// },\n_svgTemps = [],\n //we create 3 elements for SVG, and 3 for other DOM elements and cache them for performance reasons. They get nested in _divContainer and _svgContainer so that just one element is added to the DOM on each successive attempt. Again, performance is key.\n_divTemps = [],\n _getDocScrollTop = function _getDocScrollTop() {\n return _win.pageYOffset || _doc.scrollTop || _docElement.scrollTop || _body.scrollTop || 0;\n},\n _getDocScrollLeft = function _getDocScrollLeft() {\n return _win.pageXOffset || _doc.scrollLeft || _docElement.scrollLeft || _body.scrollLeft || 0;\n},\n _svgOwner = function _svgOwner(element) {\n return element.ownerSVGElement || ((element.tagName + \"\").toLowerCase() === \"svg\" ? element : null);\n},\n _isFixed = function _isFixed(element) {\n if (_win.getComputedStyle(element).position === \"fixed\") {\n return true;\n }\n\n element = element.parentNode;\n\n if (element && element.nodeType === 1) {\n // avoid document fragments which will throw an error.\n return _isFixed(element);\n }\n},\n _createSibling = function _createSibling(element, i) {\n if (element.parentNode && (_doc || _setDoc(element))) {\n var svg = _svgOwner(element),\n ns = svg ? svg.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\" : \"http://www.w3.org/1999/xhtml\",\n type = svg ? i ? \"rect\" : \"g\" : \"div\",\n x = i !== 2 ? 0 : 100,\n y = i === 3 ? 100 : 0,\n css = \"position:absolute;display:block;pointer-events:none;margin:0;padding:0;\",\n e = _doc.createElementNS ? _doc.createElementNS(ns.replace(/^https/, \"http\"), type) : _doc.createElement(type);\n\n if (i) {\n if (!svg) {\n if (!_divContainer) {\n _divContainer = _createSibling(element);\n _divContainer.style.cssText = css;\n }\n\n e.style.cssText = css + \"width:0.1px;height:0.1px;top:\" + y + \"px;left:\" + x + \"px\";\n\n _divContainer.appendChild(e);\n } else {\n _svgContainer || (_svgContainer = _createSibling(element));\n e.setAttribute(\"width\", 0.01);\n e.setAttribute(\"height\", 0.01);\n e.setAttribute(\"transform\", \"translate(\" + x + \",\" + y + \")\");\n\n _svgContainer.appendChild(e);\n }\n }\n\n return e;\n }\n\n throw \"Need document and parent.\";\n},\n _consolidate = function _consolidate(m) {\n // replaces SVGTransformList.consolidate() because a bug in Firefox causes it to break pointer events. See https://greensock.com/forums/topic/23248-touch-is-not-working-on-draggable-in-firefox-windows-v324/?tab=comments#comment-109800\n var c = new Matrix2D(),\n i = 0;\n\n for (; i < m.numberOfItems; i++) {\n c.multiply(m.getItem(i).matrix);\n }\n\n return c;\n},\n _getCTM = function _getCTM(svg) {\n var m = svg.getCTM(),\n transform;\n\n if (!m) {\n // Firefox returns null for getCTM() on root elements, so this is a workaround using a that we temporarily append.\n transform = svg.style[_transformProp];\n svg.style[_transformProp] = \"none\"; // a bug in Firefox causes css transforms to contaminate the getCTM()\n\n svg.appendChild(_gEl);\n m = _gEl.getCTM();\n svg.removeChild(_gEl);\n transform ? svg.style[_transformProp] = transform : svg.style.removeProperty(_transformProp.replace(/([A-Z])/g, \"-$1\").toLowerCase());\n }\n\n return m || _identityMatrix.clone(); // Firefox will still return null if the has a width/height of 0 in the browser.\n},\n _placeSiblings = function _placeSiblings(element, adjustGOffset) {\n var svg = _svgOwner(element),\n isRootSVG = element === svg,\n siblings = svg ? _svgTemps : _divTemps,\n parent = element.parentNode,\n container,\n m,\n b,\n x,\n y,\n cs;\n\n if (element === _win) {\n return element;\n }\n\n siblings.length || siblings.push(_createSibling(element, 1), _createSibling(element, 2), _createSibling(element, 3));\n container = svg ? _svgContainer : _divContainer;\n\n if (svg) {\n if (isRootSVG) {\n b = _getCTM(element);\n x = -b.e / b.a;\n y = -b.f / b.d;\n m = _identityMatrix;\n } else if (element.getBBox) {\n b = element.getBBox();\n m = element.transform ? element.transform.baseVal : {}; // IE11 doesn't follow the spec.\n\n m = !m.numberOfItems ? _identityMatrix : m.numberOfItems > 1 ? _consolidate(m) : m.getItem(0).matrix; // don't call m.consolidate().matrix because a bug in Firefox makes pointer events not work when consolidate() is called on the same tick as getBoundingClientRect()! See https://greensock.com/forums/topic/23248-touch-is-not-working-on-draggable-in-firefox-windows-v324/?tab=comments#comment-109800\n\n x = m.a * b.x + m.c * b.y;\n y = m.b * b.x + m.d * b.y;\n } else {\n // may be a which has no getBBox() so just use defaults instead of throwing errors.\n m = new Matrix2D();\n x = y = 0;\n }\n\n if (adjustGOffset && element.tagName.toLowerCase() === \"g\") {\n x = y = 0;\n }\n\n (isRootSVG ? svg : parent).appendChild(container);\n container.setAttribute(\"transform\", \"matrix(\" + m.a + \",\" + m.b + \",\" + m.c + \",\" + m.d + \",\" + (m.e + x) + \",\" + (m.f + y) + \")\");\n } else {\n x = y = 0;\n\n if (_hasOffsetBug) {\n // some browsers (like Safari) have a bug that causes them to misreport offset values. When an ancestor element has a transform applied, it's supposed to treat it as if it's position: relative (new context). Safari botches this, so we need to find the closest ancestor (between the element and its offsetParent) that has a transform applied and if one is found, grab its offsetTop/Left and subtract them to compensate.\n m = element.offsetParent;\n b = element;\n\n while (b && (b = b.parentNode) && b !== m && b.parentNode) {\n if ((_win.getComputedStyle(b)[_transformProp] + \"\").length > 4) {\n x = b.offsetLeft;\n y = b.offsetTop;\n b = 0;\n }\n }\n }\n\n cs = _win.getComputedStyle(element);\n\n if (cs.position !== \"absolute\" && cs.position !== \"fixed\") {\n m = element.offsetParent;\n\n while (parent && parent !== m) {\n // if there's an ancestor element between the element and its offsetParent that's scrolled, we must factor that in.\n x += parent.scrollLeft || 0;\n y += parent.scrollTop || 0;\n parent = parent.parentNode;\n }\n }\n\n b = container.style;\n b.top = element.offsetTop - y + \"px\";\n b.left = element.offsetLeft - x + \"px\";\n b[_transformProp] = cs[_transformProp];\n b[_transformOriginProp] = cs[_transformOriginProp]; // b.border = m.border;\n // b.borderLeftStyle = m.borderLeftStyle;\n // b.borderTopStyle = m.borderTopStyle;\n // b.borderLeftWidth = m.borderLeftWidth;\n // b.borderTopWidth = m.borderTopWidth;\n\n b.position = cs.position === \"fixed\" ? \"fixed\" : \"absolute\";\n element.parentNode.appendChild(container);\n }\n\n return container;\n},\n _setMatrix = function _setMatrix(m, a, b, c, d, e, f) {\n m.a = a;\n m.b = b;\n m.c = c;\n m.d = d;\n m.e = e;\n m.f = f;\n return m;\n};\n\nexport var Matrix2D = /*#__PURE__*/function () {\n function Matrix2D(a, b, c, d, e, f) {\n if (a === void 0) {\n a = 1;\n }\n\n if (b === void 0) {\n b = 0;\n }\n\n if (c === void 0) {\n c = 0;\n }\n\n if (d === void 0) {\n d = 1;\n }\n\n if (e === void 0) {\n e = 0;\n }\n\n if (f === void 0) {\n f = 0;\n }\n\n _setMatrix(this, a, b, c, d, e, f);\n }\n\n var _proto = Matrix2D.prototype;\n\n _proto.inverse = function inverse() {\n var a = this.a,\n b = this.b,\n c = this.c,\n d = this.d,\n e = this.e,\n f = this.f,\n determinant = a * d - b * c || 1e-10;\n return _setMatrix(this, d / determinant, -b / determinant, -c / determinant, a / determinant, (c * f - d * e) / determinant, -(a * f - b * e) / determinant);\n };\n\n _proto.multiply = function multiply(matrix) {\n var a = this.a,\n b = this.b,\n c = this.c,\n d = this.d,\n e = this.e,\n f = this.f,\n a2 = matrix.a,\n b2 = matrix.c,\n c2 = matrix.b,\n d2 = matrix.d,\n e2 = matrix.e,\n f2 = matrix.f;\n return _setMatrix(this, a2 * a + c2 * c, a2 * b + c2 * d, b2 * a + d2 * c, b2 * b + d2 * d, e + e2 * a + f2 * c, f + e2 * b + f2 * d);\n };\n\n _proto.clone = function clone() {\n return new Matrix2D(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n\n _proto.equals = function equals(matrix) {\n var a = this.a,\n b = this.b,\n c = this.c,\n d = this.d,\n e = this.e,\n f = this.f;\n return a === matrix.a && b === matrix.b && c === matrix.c && d === matrix.d && e === matrix.e && f === matrix.f;\n };\n\n _proto.apply = function apply(point, decoratee) {\n if (decoratee === void 0) {\n decoratee = {};\n }\n\n var x = point.x,\n y = point.y,\n a = this.a,\n b = this.b,\n c = this.c,\n d = this.d,\n e = this.e,\n f = this.f;\n decoratee.x = x * a + y * c + e || 0;\n decoratee.y = x * b + y * d + f || 0;\n return decoratee;\n };\n\n return Matrix2D;\n}(); // Feed in an element and it'll return a 2D matrix (optionally inverted) so that you can translate between coordinate spaces.\n// Inverting lets you translate a global point into a local coordinate space. No inverting lets you go the other way.\n// We needed this to work around various browser bugs, like Firefox doesn't accurately report getScreenCTM() when there\n// are transforms applied to ancestor elements.\n// The matrix math to convert any x/y coordinate is as follows, which is wrapped in a convenient apply() method of Matrix2D above:\n// tx = m.a * x + m.c * y + m.e\n// ty = m.b * x + m.d * y + m.f\n\nexport function getGlobalMatrix(element, inverse, adjustGOffset, includeScrollInFixed) {\n // adjustGOffset is typically used only when grabbing an element's PARENT's global matrix, and it ignores the x/y offset of any SVG elements because they behave in a special way.\n if (!element || !element.parentNode || (_doc || _setDoc(element)).documentElement === element) {\n return new Matrix2D();\n }\n\n var zeroScales = _forceNonZeroScale(element),\n svg = _svgOwner(element),\n temps = svg ? _svgTemps : _divTemps,\n container = _placeSiblings(element, adjustGOffset),\n b1 = temps[0].getBoundingClientRect(),\n b2 = temps[1].getBoundingClientRect(),\n b3 = temps[2].getBoundingClientRect(),\n parent = container.parentNode,\n isFixed = !includeScrollInFixed && _isFixed(element),\n m = new Matrix2D((b2.left - b1.left) / 100, (b2.top - b1.top) / 100, (b3.left - b1.left) / 100, (b3.top - b1.top) / 100, b1.left + (isFixed ? 0 : _getDocScrollLeft()), b1.top + (isFixed ? 0 : _getDocScrollTop()));\n\n parent.removeChild(container);\n\n if (zeroScales) {\n b1 = zeroScales.length;\n\n while (b1--) {\n b2 = zeroScales[b1];\n b2.scaleX = b2.scaleY = 0;\n b2.renderTransform(1, b2);\n }\n }\n\n return inverse ? m.inverse() : m;\n}\nexport { _getDocScrollTop, _getDocScrollLeft, _setDoc, _isFixed, _getCTM }; // export function getMatrix(element) {\n// \t_doc || _setDoc(element);\n// \tlet m = (_win.getComputedStyle(element)[_transformProp] + \"\").substr(7).match(/[-.]*\\d+[.e\\-+]*\\d*[e\\-\\+]*\\d*/g),\n// \t\tis2D = m && m.length === 6;\n// \treturn !m || m.length < 6 ? new Matrix2D() : new Matrix2D(+m[0], +m[1], +m[is2D ? 2 : 4], +m[is2D ? 3 : 5], +m[is2D ? 4 : 12], +m[is2D ? 5 : 13]);\n// }","/*!\n * paths 3.11.5\n * https://greensock.com\n *\n * Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar _svgPathExp = /[achlmqstvz]|(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[0-9]/ig,\n _numbersExp = /(?:(-)?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[0-9]/ig,\n _scientific = /[\\+\\-]?\\d*\\.?\\d+e[\\+\\-]?\\d+/ig,\n _selectorExp = /(^[#\\.][a-z]|[a-y][a-z])/i,\n _DEG2RAD = Math.PI / 180,\n _RAD2DEG = 180 / Math.PI,\n _sin = Math.sin,\n _cos = Math.cos,\n _abs = Math.abs,\n _sqrt = Math.sqrt,\n _atan2 = Math.atan2,\n _largeNum = 1e8,\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n},\n _isUndefined = function _isUndefined(value) {\n return typeof value === \"undefined\";\n},\n _temp = {},\n _temp2 = {},\n _roundingNum = 1e5,\n _wrapProgress = function _wrapProgress(progress) {\n return Math.round((progress + _largeNum) % 1 * _roundingNum) / _roundingNum || (progress < 0 ? 0 : 1);\n},\n //if progress lands on 1, the % will make it 0 which is why we || 1, but not if it's negative because it makes more sense for motion to end at 0 in that case.\n_round = function _round(value) {\n return Math.round(value * _roundingNum) / _roundingNum || 0;\n},\n _roundPrecise = function _roundPrecise(value) {\n return Math.round(value * 1e10) / 1e10 || 0;\n},\n _splitSegment = function _splitSegment(rawPath, segIndex, i, t) {\n var segment = rawPath[segIndex],\n shift = t === 1 ? 6 : subdivideSegment(segment, i, t);\n\n if (shift && shift + i + 2 < segment.length) {\n rawPath.splice(segIndex, 0, segment.slice(0, i + shift + 2));\n segment.splice(0, i + shift);\n return 1;\n }\n},\n _getSampleIndex = function _getSampleIndex(samples, length, progress) {\n // slightly slower way than doing this (when there's no lookup): segment.lookup[progress < 1 ? ~~(length / segment.minLength) : segment.lookup.length - 1] || 0;\n var l = samples.length,\n i = ~~(progress * l);\n\n if (samples[i] > length) {\n while (--i && samples[i] > length) {}\n\n i < 0 && (i = 0);\n } else {\n while (samples[++i] < length && i < l) {}\n }\n\n return i < l ? i : l - 1;\n},\n _reverseRawPath = function _reverseRawPath(rawPath, skipOuter) {\n var i = rawPath.length;\n skipOuter || rawPath.reverse();\n\n while (i--) {\n rawPath[i].reversed || reverseSegment(rawPath[i]);\n }\n},\n _copyMetaData = function _copyMetaData(source, copy) {\n copy.totalLength = source.totalLength;\n\n if (source.samples) {\n //segment\n copy.samples = source.samples.slice(0);\n copy.lookup = source.lookup.slice(0);\n copy.minLength = source.minLength;\n copy.resolution = source.resolution;\n } else if (source.totalPoints) {\n //rawPath\n copy.totalPoints = source.totalPoints;\n }\n\n return copy;\n},\n //pushes a new segment into a rawPath, but if its starting values match the ending values of the last segment, it'll merge it into that same segment (to reduce the number of segments)\n_appendOrMerge = function _appendOrMerge(rawPath, segment) {\n var index = rawPath.length,\n prevSeg = rawPath[index - 1] || [],\n l = prevSeg.length;\n\n if (index && segment[0] === prevSeg[l - 2] && segment[1] === prevSeg[l - 1]) {\n segment = prevSeg.concat(segment.slice(2));\n index--;\n }\n\n rawPath[index] = segment;\n},\n _bestDistance;\n/* TERMINOLOGY\n - RawPath - an array of arrays, one for each Segment. A single RawPath could have multiple \"M\" commands, defining Segments (paths aren't always connected).\n - Segment - an array containing a sequence of Cubic Bezier coordinates in alternating x, y, x, y format. Starting anchor, then control point 1, control point 2, and ending anchor, then the next control point 1, control point 2, anchor, etc. Uses less memory than an array with a bunch of {x, y} points.\n - Bezier - a single cubic Bezier with a starting anchor, two control points, and an ending anchor.\n - the variable \"t\" is typically the position along an individual Bezier path (time) and it's NOT linear, meaning it could accelerate/decelerate based on the control points whereas the \"p\" or \"progress\" value is linearly mapped to the whole path, so it shouldn't really accelerate/decelerate based on control points. So a progress of 0.2 would be almost exactly 20% along the path. \"t\" is ONLY in an individual Bezier piece.\n */\n//accepts basic selector text, a path instance, a RawPath instance, or a Segment and returns a RawPath (makes it easy to homogenize things). If an element or selector text is passed in, it'll also cache the value so that if it's queried again, it'll just take the path data from there instead of parsing it all over again (as long as the path data itself hasn't changed - it'll check).\n\n\nexport function getRawPath(value) {\n value = _isString(value) && _selectorExp.test(value) ? document.querySelector(value) || value : value;\n var e = value.getAttribute ? value : 0,\n rawPath;\n\n if (e && (value = value.getAttribute(\"d\"))) {\n //implements caching\n if (!e._gsPath) {\n e._gsPath = {};\n }\n\n rawPath = e._gsPath[value];\n return rawPath && !rawPath._dirty ? rawPath : e._gsPath[value] = stringToRawPath(value);\n }\n\n return !value ? console.warn(\"Expecting a element or an SVG path data string\") : _isString(value) ? stringToRawPath(value) : _isNumber(value[0]) ? [value] : value;\n} //copies a RawPath WITHOUT the length meta data (for speed)\n\nexport function copyRawPath(rawPath) {\n var a = [],\n i = 0;\n\n for (; i < rawPath.length; i++) {\n a[i] = _copyMetaData(rawPath[i], rawPath[i].slice(0));\n }\n\n return _copyMetaData(rawPath, a);\n}\nexport function reverseSegment(segment) {\n var i = 0,\n y;\n segment.reverse(); //this will invert the order y, x, y, x so we must flip it back.\n\n for (; i < segment.length; i += 2) {\n y = segment[i];\n segment[i] = segment[i + 1];\n segment[i + 1] = y;\n }\n\n segment.reversed = !segment.reversed;\n}\n\nvar _createPath = function _createPath(e, ignore) {\n var path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\"),\n attr = [].slice.call(e.attributes),\n i = attr.length,\n name;\n ignore = \",\" + ignore + \",\";\n\n while (--i > -1) {\n name = attr[i].nodeName.toLowerCase(); //in Microsoft Edge, if you don't set the attribute with a lowercase name, it doesn't render correctly! Super weird.\n\n if (ignore.indexOf(\",\" + name + \",\") < 0) {\n path.setAttributeNS(null, name, attr[i].nodeValue);\n }\n }\n\n return path;\n},\n _typeAttrs = {\n rect: \"rx,ry,x,y,width,height\",\n circle: \"r,cx,cy\",\n ellipse: \"rx,ry,cx,cy\",\n line: \"x1,x2,y1,y2\"\n},\n _attrToObj = function _attrToObj(e, attrs) {\n var props = attrs ? attrs.split(\",\") : [],\n obj = {},\n i = props.length;\n\n while (--i > -1) {\n obj[props[i]] = +e.getAttribute(props[i]) || 0;\n }\n\n return obj;\n}; //converts an SVG shape like , , , , , etc. to a , swapping it in and copying the attributes to match.\n\n\nexport function convertToPath(element, swap) {\n var type = element.tagName.toLowerCase(),\n circ = 0.552284749831,\n data,\n x,\n y,\n r,\n ry,\n path,\n rcirc,\n rycirc,\n points,\n w,\n h,\n x2,\n x3,\n x4,\n x5,\n x6,\n y2,\n y3,\n y4,\n y5,\n y6,\n attr;\n\n if (type === \"path\" || !element.getBBox) {\n return element;\n }\n\n path = _createPath(element, \"x,y,width,height,cx,cy,rx,ry,r,x1,x2,y1,y2,points\");\n attr = _attrToObj(element, _typeAttrs[type]);\n\n if (type === \"rect\") {\n r = attr.rx;\n ry = attr.ry || r;\n x = attr.x;\n y = attr.y;\n w = attr.width - r * 2;\n h = attr.height - ry * 2;\n\n if (r || ry) {\n //if there are rounded corners, render cubic beziers\n x2 = x + r * (1 - circ);\n x3 = x + r;\n x4 = x3 + w;\n x5 = x4 + r * circ;\n x6 = x4 + r;\n y2 = y + ry * (1 - circ);\n y3 = y + ry;\n y4 = y3 + h;\n y5 = y4 + ry * circ;\n y6 = y4 + ry;\n 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\";\n } else {\n data = \"M\" + (x + w) + \",\" + y + \" v\" + h + \" h\" + -w + \" v\" + -h + \" h\" + w + \"z\";\n }\n } else if (type === \"circle\" || type === \"ellipse\") {\n if (type === \"circle\") {\n r = ry = attr.r;\n rycirc = r * circ;\n } else {\n r = attr.rx;\n ry = attr.ry;\n rycirc = ry * circ;\n }\n\n x = attr.cx;\n y = attr.cy;\n rcirc = r * circ;\n 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\";\n } else if (type === \"line\") {\n data = \"M\" + attr.x1 + \",\" + attr.y1 + \" L\" + attr.x2 + \",\" + attr.y2; //previously, we just converted to \"Mx,y Lx,y\" but Safari has bugs that cause that not to render properly when using a stroke-dasharray that's not fully visible! Using a cubic bezier fixes that issue.\n } else if (type === \"polyline\" || type === \"polygon\") {\n points = (element.getAttribute(\"points\") + \"\").match(_numbersExp) || [];\n x = points.shift();\n y = points.shift();\n data = \"M\" + x + \",\" + y + \" L\" + points.join(\",\");\n\n if (type === \"polygon\") {\n data += \",\" + x + \",\" + y + \"z\";\n }\n }\n\n path.setAttribute(\"d\", rawPathToString(path._gsRawPath = stringToRawPath(data)));\n\n if (swap && element.parentNode) {\n element.parentNode.insertBefore(path, element);\n element.parentNode.removeChild(element);\n }\n\n return path;\n} //returns the rotation (in degrees) at a particular progress on a rawPath (the slope of the tangent)\n\nexport function getRotationAtProgress(rawPath, progress) {\n var d = getProgressData(rawPath, progress >= 1 ? 1 - 1e-9 : progress ? progress : 1e-9);\n return getRotationAtBezierT(d.segment, d.i, d.t);\n}\n\nfunction getRotationAtBezierT(segment, i, t) {\n var a = segment[i],\n b = segment[i + 2],\n c = segment[i + 4],\n x;\n a += (b - a) * t;\n b += (c - b) * t;\n a += (b - a) * t;\n x = b + (c + (segment[i + 6] - c) * t - b) * t - a;\n a = segment[i + 1];\n b = segment[i + 3];\n c = segment[i + 5];\n a += (b - a) * t;\n b += (c - b) * t;\n a += (b - a) * t;\n return _round(_atan2(b + (c + (segment[i + 7] - c) * t - b) * t - a, x) * _RAD2DEG);\n}\n\nexport function sliceRawPath(rawPath, start, end) {\n end = _isUndefined(end) ? 1 : _roundPrecise(end) || 0; // we must round to avoid issues like 4.15 / 8 = 0.8300000000000001 instead of 0.83 or 2.8 / 5 = 0.5599999999999999 instead of 0.56 and if someone is doing a loop like start: 2.8 / 0.5, end: 2.8 / 0.5 + 1.\n\n start = _roundPrecise(start) || 0;\n var loops = Math.max(0, ~~(_abs(end - start) - 1e-8)),\n path = copyRawPath(rawPath);\n\n if (start > end) {\n start = 1 - start;\n end = 1 - end;\n\n _reverseRawPath(path);\n\n path.totalLength = 0;\n }\n\n if (start < 0 || end < 0) {\n var offset = Math.abs(~~Math.min(start, end)) + 1;\n start += offset;\n end += offset;\n }\n\n path.totalLength || cacheRawPathMeasurements(path);\n var wrap = end > 1,\n s = getProgressData(path, start, _temp, true),\n e = getProgressData(path, end, _temp2),\n eSeg = e.segment,\n sSeg = s.segment,\n eSegIndex = e.segIndex,\n sSegIndex = s.segIndex,\n ei = e.i,\n si = s.i,\n sameSegment = sSegIndex === eSegIndex,\n sameBezier = ei === si && sameSegment,\n wrapsBehind,\n sShift,\n eShift,\n i,\n copy,\n totalSegments,\n l,\n j;\n\n if (wrap || loops) {\n wrapsBehind = eSegIndex < sSegIndex || sameSegment && ei < si || sameBezier && e.t < s.t;\n\n if (_splitSegment(path, sSegIndex, si, s.t)) {\n sSegIndex++;\n\n if (!wrapsBehind) {\n eSegIndex++;\n\n if (sameBezier) {\n e.t = (e.t - s.t) / (1 - s.t);\n ei = 0;\n } else if (sameSegment) {\n ei -= si;\n }\n }\n }\n\n if (Math.abs(1 - (end - start)) < 1e-5) {\n eSegIndex = sSegIndex - 1;\n } else if (!e.t && eSegIndex) {\n eSegIndex--;\n } else if (_splitSegment(path, eSegIndex, ei, e.t) && wrapsBehind) {\n sSegIndex++;\n }\n\n if (s.t === 1) {\n sSegIndex = (sSegIndex + 1) % path.length;\n }\n\n copy = [];\n totalSegments = path.length;\n l = 1 + totalSegments * loops;\n j = sSegIndex;\n l += (totalSegments - sSegIndex + eSegIndex) % totalSegments;\n\n for (i = 0; i < l; i++) {\n _appendOrMerge(copy, path[j++ % totalSegments]);\n }\n\n path = copy;\n } else {\n eShift = e.t === 1 ? 6 : subdivideSegment(eSeg, ei, e.t);\n\n if (start !== end) {\n sShift = subdivideSegment(sSeg, si, sameBezier ? s.t / e.t : s.t);\n sameSegment && (eShift += sShift);\n eSeg.splice(ei + eShift + 2);\n (sShift || si) && sSeg.splice(0, si + sShift);\n i = path.length;\n\n while (i--) {\n //chop off any extra segments\n (i < sSegIndex || i > eSegIndex) && path.splice(i, 1);\n }\n } else {\n eSeg.angle = getRotationAtBezierT(eSeg, ei + eShift, 0); //record the value before we chop because it'll be impossible to determine the angle after its length is 0!\n\n ei += eShift;\n s = eSeg[ei];\n e = eSeg[ei + 1];\n eSeg.length = eSeg.totalLength = 0;\n eSeg.totalPoints = path.totalPoints = 8;\n eSeg.push(s, e, s, e, s, e, s, e);\n }\n }\n\n path.totalLength = 0;\n return path;\n} //measures a Segment according to its resolution (so if segment.resolution is 6, for example, it'll take 6 samples equally across each Bezier) and create/populate a \"samples\" Array that has the length up to each of those sample points (always increasing from the start) as well as a \"lookup\" array that's broken up according to the smallest distance between 2 samples. This gives us a very fast way of looking up a progress position rather than looping through all the points/Beziers. You can optionally have it only measure a subset, starting at startIndex and going for a specific number of beziers (remember, there are 3 x/y pairs each, for a total of 6 elements for each Bezier). It will also populate a \"totalLength\" property, but that's not generally super accurate because by default it'll only take 6 samples per Bezier. But for performance reasons, it's perfectly adequate for measuring progress values along the path. If you need a more accurate totalLength, either increase the resolution or use the more advanced bezierToPoints() method which keeps adding points until they don't deviate by more than a certain precision value.\n\nfunction measureSegment(segment, startIndex, bezierQty) {\n startIndex = startIndex || 0;\n\n if (!segment.samples) {\n segment.samples = [];\n segment.lookup = [];\n }\n\n var resolution = ~~segment.resolution || 12,\n inc = 1 / resolution,\n endIndex = bezierQty ? startIndex + bezierQty * 6 + 1 : segment.length,\n x1 = segment[startIndex],\n y1 = segment[startIndex + 1],\n samplesIndex = startIndex ? startIndex / 6 * resolution : 0,\n samples = segment.samples,\n lookup = segment.lookup,\n min = (startIndex ? segment.minLength : _largeNum) || _largeNum,\n prevLength = samples[samplesIndex + bezierQty * resolution - 1],\n length = startIndex ? samples[samplesIndex - 1] : 0,\n i,\n j,\n x4,\n x3,\n x2,\n xd,\n xd1,\n y4,\n y3,\n y2,\n yd,\n yd1,\n inv,\n t,\n lengthIndex,\n l,\n segLength;\n samples.length = lookup.length = 0;\n\n for (j = startIndex + 2; j < endIndex; j += 6) {\n x4 = segment[j + 4] - x1;\n x3 = segment[j + 2] - x1;\n x2 = segment[j] - x1;\n y4 = segment[j + 5] - y1;\n y3 = segment[j + 3] - y1;\n y2 = segment[j + 1] - y1;\n xd = xd1 = yd = yd1 = 0;\n\n if (_abs(x4) < .01 && _abs(y4) < .01 && _abs(x2) + _abs(y2) < .01) {\n //dump points that are sufficiently close (basically right on top of each other, making a bezier super tiny or 0 length)\n if (segment.length > 8) {\n segment.splice(j, 6);\n j -= 6;\n endIndex -= 6;\n }\n } else {\n for (i = 1; i <= resolution; i++) {\n t = inc * i;\n inv = 1 - t;\n xd = xd1 - (xd1 = (t * t * x4 + 3 * inv * (t * x3 + inv * x2)) * t);\n yd = yd1 - (yd1 = (t * t * y4 + 3 * inv * (t * y3 + inv * y2)) * t);\n l = _sqrt(yd * yd + xd * xd);\n\n if (l < min) {\n min = l;\n }\n\n length += l;\n samples[samplesIndex++] = length;\n }\n }\n\n x1 += x4;\n y1 += y4;\n }\n\n if (prevLength) {\n prevLength -= length;\n\n for (; samplesIndex < samples.length; samplesIndex++) {\n samples[samplesIndex] += prevLength;\n }\n }\n\n if (samples.length && min) {\n segment.totalLength = segLength = samples[samples.length - 1] || 0;\n segment.minLength = min;\n\n if (segLength / min < 9999) {\n // if the lookup would require too many values (memory problem), we skip this and instead we use a loop to lookup values directly in the samples Array\n l = lengthIndex = 0;\n\n for (i = 0; i < segLength; i += min) {\n lookup[l++] = samples[lengthIndex] < i ? ++lengthIndex : lengthIndex;\n }\n }\n } else {\n segment.totalLength = samples[0] = 0;\n }\n\n return startIndex ? length - samples[startIndex / 2 - 1] : length;\n}\n\nexport function cacheRawPathMeasurements(rawPath, resolution) {\n var pathLength, points, i;\n\n for (i = pathLength = points = 0; i < rawPath.length; i++) {\n rawPath[i].resolution = ~~resolution || 12; //steps per Bezier curve (anchor, 2 control points, to anchor)\n\n points += rawPath[i].length;\n pathLength += measureSegment(rawPath[i]);\n }\n\n rawPath.totalPoints = points;\n rawPath.totalLength = pathLength;\n return rawPath;\n} //divide segment[i] at position t (value between 0 and 1, progress along that particular cubic bezier segment that starts at segment[i]). Returns how many elements were spliced into the segment array (either 0 or 6)\n\nexport function subdivideSegment(segment, i, t) {\n if (t <= 0 || t >= 1) {\n return 0;\n }\n\n var ax = segment[i],\n ay = segment[i + 1],\n cp1x = segment[i + 2],\n cp1y = segment[i + 3],\n cp2x = segment[i + 4],\n cp2y = segment[i + 5],\n bx = segment[i + 6],\n by = segment[i + 7],\n x1a = ax + (cp1x - ax) * t,\n x2 = cp1x + (cp2x - cp1x) * t,\n y1a = ay + (cp1y - ay) * t,\n y2 = cp1y + (cp2y - cp1y) * t,\n x1 = x1a + (x2 - x1a) * t,\n y1 = y1a + (y2 - y1a) * t,\n x2a = cp2x + (bx - cp2x) * t,\n y2a = cp2y + (by - cp2y) * t;\n x2 += (x2a - x2) * t;\n y2 += (y2a - y2) * t;\n segment.splice(i + 2, 4, _round(x1a), //first control point\n _round(y1a), _round(x1), //second control point\n _round(y1), _round(x1 + (x2 - x1) * t), //new fabricated anchor on line\n _round(y1 + (y2 - y1) * t), _round(x2), //third control point\n _round(y2), _round(x2a), //fourth control point\n _round(y2a));\n segment.samples && segment.samples.splice(i / 6 * segment.resolution | 0, 0, 0, 0, 0, 0, 0, 0);\n return 6;\n} // returns an object {path, segment, segIndex, i, t}\n\nfunction getProgressData(rawPath, progress, decoratee, pushToNextIfAtEnd) {\n decoratee = decoratee || {};\n rawPath.totalLength || cacheRawPathMeasurements(rawPath);\n\n if (progress < 0 || progress > 1) {\n progress = _wrapProgress(progress);\n }\n\n var segIndex = 0,\n segment = rawPath[0],\n samples,\n resolution,\n length,\n min,\n max,\n i,\n t;\n\n if (!progress) {\n t = i = segIndex = 0;\n segment = rawPath[0];\n } else if (progress === 1) {\n t = 1;\n segIndex = rawPath.length - 1;\n segment = rawPath[segIndex];\n i = segment.length - 8;\n } else {\n if (rawPath.length > 1) {\n //speed optimization: most of the time, there's only one segment so skip the recursion.\n length = rawPath.totalLength * progress;\n max = i = 0;\n\n while ((max += rawPath[i++].totalLength) < length) {\n segIndex = i;\n }\n\n segment = rawPath[segIndex];\n min = max - segment.totalLength;\n progress = (length - min) / (max - min) || 0;\n }\n\n samples = segment.samples;\n resolution = segment.resolution; //how many samples per cubic bezier chunk\n\n length = segment.totalLength * progress;\n i = segment.lookup.length ? segment.lookup[~~(length / segment.minLength)] || 0 : _getSampleIndex(samples, length, progress);\n min = i ? samples[i - 1] : 0;\n max = samples[i];\n\n if (max < length) {\n min = max;\n max = samples[++i];\n }\n\n t = 1 / resolution * ((length - min) / (max - min) + i % resolution);\n i = ~~(i / resolution) * 6;\n\n if (pushToNextIfAtEnd && t === 1) {\n if (i + 6 < segment.length) {\n i += 6;\n t = 0;\n } else if (segIndex + 1 < rawPath.length) {\n i = t = 0;\n segment = rawPath[++segIndex];\n }\n }\n }\n\n decoratee.t = t;\n decoratee.i = i;\n decoratee.path = rawPath;\n decoratee.segment = segment;\n decoratee.segIndex = segIndex;\n return decoratee;\n}\n\nexport function getPositionOnPath(rawPath, progress, includeAngle, point) {\n var segment = rawPath[0],\n result = point || {},\n samples,\n resolution,\n length,\n min,\n max,\n i,\n t,\n a,\n inv;\n\n if (progress < 0 || progress > 1) {\n progress = _wrapProgress(progress);\n }\n\n segment.lookup || cacheRawPathMeasurements(rawPath);\n\n if (rawPath.length > 1) {\n //speed optimization: most of the time, there's only one segment so skip the recursion.\n length = rawPath.totalLength * progress;\n max = i = 0;\n\n while ((max += rawPath[i++].totalLength) < length) {\n segment = rawPath[i];\n }\n\n min = max - segment.totalLength;\n progress = (length - min) / (max - min) || 0;\n }\n\n samples = segment.samples;\n resolution = segment.resolution;\n length = segment.totalLength * progress;\n i = segment.lookup.length ? segment.lookup[progress < 1 ? ~~(length / segment.minLength) : segment.lookup.length - 1] || 0 : _getSampleIndex(samples, length, progress);\n min = i ? samples[i - 1] : 0;\n max = samples[i];\n\n if (max < length) {\n min = max;\n max = samples[++i];\n }\n\n t = 1 / resolution * ((length - min) / (max - min) + i % resolution) || 0;\n inv = 1 - t;\n i = ~~(i / resolution) * 6;\n a = segment[i];\n result.x = _round((t * t * (segment[i + 6] - a) + 3 * inv * (t * (segment[i + 4] - a) + inv * (segment[i + 2] - a))) * t + a);\n result.y = _round((t * t * (segment[i + 7] - (a = segment[i + 1])) + 3 * inv * (t * (segment[i + 5] - a) + inv * (segment[i + 3] - a))) * t + a);\n\n if (includeAngle) {\n result.angle = segment.totalLength ? getRotationAtBezierT(segment, i, t >= 1 ? 1 - 1e-9 : t ? t : 1e-9) : segment.angle || 0;\n }\n\n return result;\n} //applies a matrix transform to RawPath (or a segment in a RawPath) and returns whatever was passed in (it transforms the values in the array(s), not a copy).\n\nexport function transformRawPath(rawPath, a, b, c, d, tx, ty) {\n var j = rawPath.length,\n segment,\n l,\n i,\n x,\n y;\n\n while (--j > -1) {\n segment = rawPath[j];\n l = segment.length;\n\n for (i = 0; i < l; i += 2) {\n x = segment[i];\n y = segment[i + 1];\n segment[i] = x * a + y * c + tx;\n segment[i + 1] = x * b + y * d + ty;\n }\n }\n\n rawPath._dirty = 1;\n return rawPath;\n} // translates SVG arc data into a segment (cubic beziers). Angle is in degrees.\n\nfunction arcToSegment(lastX, lastY, rx, ry, angle, largeArcFlag, sweepFlag, x, y) {\n if (lastX === x && lastY === y) {\n return;\n }\n\n rx = _abs(rx);\n ry = _abs(ry);\n\n var angleRad = angle % 360 * _DEG2RAD,\n cosAngle = _cos(angleRad),\n sinAngle = _sin(angleRad),\n PI = Math.PI,\n TWOPI = PI * 2,\n dx2 = (lastX - x) / 2,\n dy2 = (lastY - y) / 2,\n x1 = cosAngle * dx2 + sinAngle * dy2,\n y1 = -sinAngle * dx2 + cosAngle * dy2,\n x1_sq = x1 * x1,\n y1_sq = y1 * y1,\n radiiCheck = x1_sq / (rx * rx) + y1_sq / (ry * ry);\n\n if (radiiCheck > 1) {\n rx = _sqrt(radiiCheck) * rx;\n ry = _sqrt(radiiCheck) * ry;\n }\n\n var rx_sq = rx * rx,\n ry_sq = ry * ry,\n sq = (rx_sq * ry_sq - rx_sq * y1_sq - ry_sq * x1_sq) / (rx_sq * y1_sq + ry_sq * x1_sq);\n\n if (sq < 0) {\n sq = 0;\n }\n\n var coef = (largeArcFlag === sweepFlag ? -1 : 1) * _sqrt(sq),\n cx1 = coef * (rx * y1 / ry),\n cy1 = coef * -(ry * x1 / rx),\n sx2 = (lastX + x) / 2,\n sy2 = (lastY + y) / 2,\n cx = sx2 + (cosAngle * cx1 - sinAngle * cy1),\n cy = sy2 + (sinAngle * cx1 + cosAngle * cy1),\n ux = (x1 - cx1) / rx,\n uy = (y1 - cy1) / ry,\n vx = (-x1 - cx1) / rx,\n vy = (-y1 - cy1) / ry,\n temp = ux * ux + uy * uy,\n angleStart = (uy < 0 ? -1 : 1) * Math.acos(ux / _sqrt(temp)),\n angleExtent = (ux * vy - uy * vx < 0 ? -1 : 1) * Math.acos((ux * vx + uy * vy) / _sqrt(temp * (vx * vx + vy * vy)));\n\n isNaN(angleExtent) && (angleExtent = PI); //rare edge case. Math.cos(-1) is NaN.\n\n if (!sweepFlag && angleExtent > 0) {\n angleExtent -= TWOPI;\n } else if (sweepFlag && angleExtent < 0) {\n angleExtent += TWOPI;\n }\n\n angleStart %= TWOPI;\n angleExtent %= TWOPI;\n\n var segments = Math.ceil(_abs(angleExtent) / (TWOPI / 4)),\n rawPath = [],\n angleIncrement = angleExtent / segments,\n controlLength = 4 / 3 * _sin(angleIncrement / 2) / (1 + _cos(angleIncrement / 2)),\n ma = cosAngle * rx,\n mb = sinAngle * rx,\n mc = sinAngle * -ry,\n md = cosAngle * ry,\n i;\n\n for (i = 0; i < segments; i++) {\n angle = angleStart + i * angleIncrement;\n x1 = _cos(angle);\n y1 = _sin(angle);\n ux = _cos(angle += angleIncrement);\n uy = _sin(angle);\n rawPath.push(x1 - controlLength * y1, y1 + controlLength * x1, ux + controlLength * uy, uy - controlLength * ux, ux, uy);\n } //now transform according to the actual size of the ellipse/arc (the beziers were noramlized, between 0 and 1 on a circle).\n\n\n for (i = 0; i < rawPath.length; i += 2) {\n x1 = rawPath[i];\n y1 = rawPath[i + 1];\n rawPath[i] = x1 * ma + y1 * mc + cx;\n rawPath[i + 1] = x1 * mb + y1 * md + cy;\n }\n\n rawPath[i - 2] = x; //always set the end to exactly where it's supposed to be\n\n rawPath[i - 1] = y;\n return rawPath;\n} //Spits back a RawPath with absolute coordinates. Each segment starts with a \"moveTo\" command (x coordinate, then y) and then 2 control points (x, y, x, y), then anchor. The goal is to minimize memory and maximize speed.\n\n\nexport function stringToRawPath(d) {\n var a = (d + \"\").replace(_scientific, function (m) {\n var n = +m;\n return n < 0.0001 && n > -0.0001 ? 0 : n;\n }).match(_svgPathExp) || [],\n //some authoring programs spit out very small numbers in scientific notation like \"1e-5\", so make sure we round that down to 0 first.\n path = [],\n relativeX = 0,\n relativeY = 0,\n twoThirds = 2 / 3,\n elements = a.length,\n points = 0,\n errorMessage = \"ERROR: malformed path: \" + d,\n i,\n j,\n x,\n y,\n command,\n isRelative,\n segment,\n startX,\n startY,\n difX,\n difY,\n beziers,\n prevCommand,\n flag1,\n flag2,\n line = function line(sx, sy, ex, ey) {\n difX = (ex - sx) / 3;\n difY = (ey - sy) / 3;\n segment.push(sx + difX, sy + difY, ex - difX, ey - difY, ex, ey);\n };\n\n if (!d || !isNaN(a[0]) || isNaN(a[1])) {\n console.log(errorMessage);\n return path;\n }\n\n for (i = 0; i < elements; i++) {\n prevCommand = command;\n\n if (isNaN(a[i])) {\n command = a[i].toUpperCase();\n isRelative = command !== a[i]; //lower case means relative\n } else {\n //commands like \"C\" can be strung together without any new command characters between.\n i--;\n }\n\n x = +a[i + 1];\n y = +a[i + 2];\n\n if (isRelative) {\n x += relativeX;\n y += relativeY;\n }\n\n if (!i) {\n startX = x;\n startY = y;\n } // \"M\" (move)\n\n\n if (command === \"M\") {\n if (segment) {\n if (segment.length < 8) {\n //if the path data was funky and just had a M with no actual drawing anywhere, skip it.\n path.length -= 1;\n } else {\n points += segment.length;\n }\n }\n\n relativeX = startX = x;\n relativeY = startY = y;\n segment = [x, y];\n path.push(segment);\n i += 2;\n command = \"L\"; //an \"M\" with more than 2 values gets interpreted as \"lineTo\" commands (\"L\").\n // \"C\" (cubic bezier)\n } else if (command === \"C\") {\n if (!segment) {\n segment = [0, 0];\n }\n\n if (!isRelative) {\n relativeX = relativeY = 0;\n } //note: \"*1\" is just a fast/short way to cast the value as a Number. WAAAY faster in Chrome, slightly slower in Firefox.\n\n\n segment.push(x, y, relativeX + a[i + 3] * 1, relativeY + a[i + 4] * 1, relativeX += a[i + 5] * 1, relativeY += a[i + 6] * 1);\n i += 6; // \"S\" (continuation of cubic bezier)\n } else if (command === \"S\") {\n difX = relativeX;\n difY = relativeY;\n\n if (prevCommand === \"C\" || prevCommand === \"S\") {\n difX += relativeX - segment[segment.length - 4];\n difY += relativeY - segment[segment.length - 3];\n }\n\n if (!isRelative) {\n relativeX = relativeY = 0;\n }\n\n segment.push(difX, difY, x, y, relativeX += a[i + 3] * 1, relativeY += a[i + 4] * 1);\n i += 4; // \"Q\" (quadratic bezier)\n } else if (command === \"Q\") {\n difX = relativeX + (x - relativeX) * twoThirds;\n difY = relativeY + (y - relativeY) * twoThirds;\n\n if (!isRelative) {\n relativeX = relativeY = 0;\n }\n\n relativeX += a[i + 3] * 1;\n relativeY += a[i + 4] * 1;\n segment.push(difX, difY, relativeX + (x - relativeX) * twoThirds, relativeY + (y - relativeY) * twoThirds, relativeX, relativeY);\n i += 4; // \"T\" (continuation of quadratic bezier)\n } else if (command === \"T\") {\n difX = relativeX - segment[segment.length - 4];\n difY = relativeY - segment[segment.length - 3];\n segment.push(relativeX + difX, relativeY + difY, x + (relativeX + difX * 1.5 - x) * twoThirds, y + (relativeY + difY * 1.5 - y) * twoThirds, relativeX = x, relativeY = y);\n i += 2; // \"H\" (horizontal line)\n } else if (command === \"H\") {\n line(relativeX, relativeY, relativeX = x, relativeY);\n i += 1; // \"V\" (vertical line)\n } else if (command === \"V\") {\n //adjust values because the first (and only one) isn't x in this case, it's y.\n line(relativeX, relativeY, relativeX, relativeY = x + (isRelative ? relativeY - relativeX : 0));\n i += 1; // \"L\" (line) or \"Z\" (close)\n } else if (command === \"L\" || command === \"Z\") {\n if (command === \"Z\") {\n x = startX;\n y = startY;\n segment.closed = true;\n }\n\n if (command === \"L\" || _abs(relativeX - x) > 0.5 || _abs(relativeY - y) > 0.5) {\n line(relativeX, relativeY, x, y);\n\n if (command === \"L\") {\n i += 2;\n }\n }\n\n relativeX = x;\n relativeY = y; // \"A\" (arc)\n } else if (command === \"A\") {\n flag1 = a[i + 4];\n flag2 = a[i + 5];\n difX = a[i + 6];\n difY = a[i + 7];\n j = 7;\n\n if (flag1.length > 1) {\n // for cases when the flags are merged, like \"a8 8 0 018 8\" (the 0 and 1 flags are WITH the x value of 8, but it could also be \"a8 8 0 01-8 8\" so it may include x or not)\n if (flag1.length < 3) {\n difY = difX;\n difX = flag2;\n j--;\n } else {\n difY = flag2;\n difX = flag1.substr(2);\n j -= 2;\n }\n\n flag2 = flag1.charAt(1);\n flag1 = flag1.charAt(0);\n }\n\n 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);\n i += j;\n\n if (beziers) {\n for (j = 0; j < beziers.length; j++) {\n segment.push(beziers[j]);\n }\n }\n\n relativeX = segment[segment.length - 2];\n relativeY = segment[segment.length - 1];\n } else {\n console.log(errorMessage);\n }\n }\n\n i = segment.length;\n\n if (i < 6) {\n //in case there's odd SVG like a M0,0 command at the very end.\n path.pop();\n i = 0;\n } else if (segment[0] === segment[i - 2] && segment[1] === segment[i - 1]) {\n segment.closed = true;\n }\n\n path.totalPoints = points + i;\n return path;\n} //populates the points array in alternating x/y values (like [x, y, x, y...] instead of individual point objects [{x, y}, {x, y}...] to conserve memory and stay in line with how we're handling segment arrays\n\nexport function bezierToPoints(x1, y1, x2, y2, x3, y3, x4, y4, threshold, points, index) {\n var x12 = (x1 + x2) / 2,\n y12 = (y1 + y2) / 2,\n x23 = (x2 + x3) / 2,\n y23 = (y2 + y3) / 2,\n x34 = (x3 + x4) / 2,\n y34 = (y3 + y4) / 2,\n x123 = (x12 + x23) / 2,\n y123 = (y12 + y23) / 2,\n x234 = (x23 + x34) / 2,\n y234 = (y23 + y34) / 2,\n x1234 = (x123 + x234) / 2,\n y1234 = (y123 + y234) / 2,\n dx = x4 - x1,\n dy = y4 - y1,\n d2 = _abs((x2 - x4) * dy - (y2 - y4) * dx),\n d3 = _abs((x3 - x4) * dy - (y3 - y4) * dx),\n length;\n\n if (!points) {\n points = [x1, y1, x4, y4];\n index = 2;\n }\n\n points.splice(index || points.length - 2, 0, x1234, y1234);\n\n if ((d2 + d3) * (d2 + d3) > threshold * (dx * dx + dy * dy)) {\n length = points.length;\n bezierToPoints(x1, y1, x12, y12, x123, y123, x1234, y1234, threshold, points, index);\n bezierToPoints(x1234, y1234, x234, y234, x34, y34, x4, y4, threshold, points, index + 2 + (points.length - length));\n }\n\n return points;\n}\n/*\nfunction getAngleBetweenPoints(x0, y0, x1, y1, x2, y2) { //angle between 3 points in radians\n\tvar dx1 = x1 - x0,\n\t\tdy1 = y1 - y0,\n\t\tdx2 = x2 - x1,\n\t\tdy2 = y2 - y1,\n\t\tdx3 = x2 - x0,\n\t\tdy3 = y2 - y0,\n\t\ta = dx1 * dx1 + dy1 * dy1,\n\t\tb = dx2 * dx2 + dy2 * dy2,\n\t\tc = dx3 * dx3 + dy3 * dy3;\n\treturn Math.acos( (a + b - c) / _sqrt(4 * a * b) );\n},\n*/\n//pointsToSegment() doesn't handle flat coordinates (where y is always 0) the way we need (the resulting control points are always right on top of the anchors), so this function basically makes the control points go directly up and down, varying in length based on the curviness (more curvy, further control points)\n\nexport function flatPointsToSegment(points, curviness) {\n if (curviness === void 0) {\n curviness = 1;\n }\n\n var x = points[0],\n y = 0,\n segment = [x, y],\n i = 2;\n\n for (; i < points.length; i += 2) {\n segment.push(x, y, points[i], y = (points[i] - x) * curviness / 2, x = points[i], -y);\n }\n\n return segment;\n} //points is an array of x/y points, like [x, y, x, y, x, y]\n\nexport function pointsToSegment(points, curviness) {\n //points = simplifyPoints(points, tolerance);\n _abs(points[0] - points[2]) < 1e-4 && _abs(points[1] - points[3]) < 1e-4 && (points = points.slice(2)); // if the first two points are super close, dump the first one.\n\n var l = points.length - 2,\n x = +points[0],\n y = +points[1],\n nextX = +points[2],\n nextY = +points[3],\n segment = [x, y, x, y],\n dx2 = nextX - x,\n dy2 = nextY - y,\n closed = Math.abs(points[l] - x) < 0.001 && Math.abs(points[l + 1] - y) < 0.001,\n prevX,\n prevY,\n i,\n dx1,\n dy1,\n r1,\n r2,\n r3,\n tl,\n mx1,\n mx2,\n mxm,\n my1,\n my2,\n mym;\n\n if (closed) {\n // if the start and end points are basically on top of each other, close the segment by adding the 2nd point to the end, and the 2nd-to-last point to the beginning (we'll remove them at the end, but this allows the curvature to look perfect)\n points.push(nextX, nextY);\n nextX = x;\n nextY = y;\n x = points[l - 2];\n y = points[l - 1];\n points.unshift(x, y);\n l += 4;\n }\n\n curviness = curviness || curviness === 0 ? +curviness : 1;\n\n for (i = 2; i < l; i += 2) {\n prevX = x;\n prevY = y;\n x = nextX;\n y = nextY;\n nextX = +points[i + 2];\n nextY = +points[i + 3];\n\n if (x === nextX && y === nextY) {\n continue;\n }\n\n dx1 = dx2;\n dy1 = dy2;\n dx2 = nextX - x;\n dy2 = nextY - y;\n r1 = _sqrt(dx1 * dx1 + dy1 * dy1); // r1, r2, and r3 correlate x and y (and z in the future). Basically 2D or 3D hypotenuse\n\n r2 = _sqrt(dx2 * dx2 + dy2 * dy2);\n r3 = _sqrt(Math.pow(dx2 / r2 + dx1 / r1, 2) + Math.pow(dy2 / r2 + dy1 / r1, 2));\n tl = (r1 + r2) * curviness * 0.25 / r3;\n mx1 = x - (x - prevX) * (r1 ? tl / r1 : 0);\n mx2 = x + (nextX - x) * (r2 ? tl / r2 : 0);\n mxm = x - (mx1 + ((mx2 - mx1) * (r1 * 3 / (r1 + r2) + 0.5) / 4 || 0));\n my1 = y - (y - prevY) * (r1 ? tl / r1 : 0);\n my2 = y + (nextY - y) * (r2 ? tl / r2 : 0);\n mym = y - (my1 + ((my2 - my1) * (r1 * 3 / (r1 + r2) + 0.5) / 4 || 0));\n\n if (x !== prevX || y !== prevY) {\n segment.push(_round(mx1 + mxm), // first control point\n _round(my1 + mym), _round(x), // anchor\n _round(y), _round(mx2 + mxm), // second control point\n _round(my2 + mym));\n }\n }\n\n x !== nextX || y !== nextY || segment.length < 4 ? segment.push(_round(nextX), _round(nextY), _round(nextX), _round(nextY)) : segment.length -= 2;\n\n if (segment.length === 2) {\n // only one point!\n segment.push(x, y, x, y, x, y);\n } else if (closed) {\n segment.splice(0, 6);\n segment.length = segment.length - 6;\n }\n\n return segment;\n} //returns the squared distance between an x/y coordinate and a segment between x1/y1 and x2/y2\n\nfunction pointToSegDist(x, y, x1, y1, x2, y2) {\n var dx = x2 - x1,\n dy = y2 - y1,\n t;\n\n if (dx || dy) {\n t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n\n if (t > 1) {\n x1 = x2;\n y1 = y2;\n } else if (t > 0) {\n x1 += dx * t;\n y1 += dy * t;\n }\n }\n\n return Math.pow(x - x1, 2) + Math.pow(y - y1, 2);\n}\n\nfunction simplifyStep(points, first, last, tolerance, simplified) {\n var maxSqDist = tolerance,\n firstX = points[first],\n firstY = points[first + 1],\n lastX = points[last],\n lastY = points[last + 1],\n index,\n i,\n d;\n\n for (i = first + 2; i < last; i += 2) {\n d = pointToSegDist(points[i], points[i + 1], firstX, firstY, lastX, lastY);\n\n if (d > maxSqDist) {\n index = i;\n maxSqDist = d;\n }\n }\n\n if (maxSqDist > tolerance) {\n index - first > 2 && simplifyStep(points, first, index, tolerance, simplified);\n simplified.push(points[index], points[index + 1]);\n last - index > 2 && simplifyStep(points, index, last, tolerance, simplified);\n }\n} //points is an array of x/y values like [x, y, x, y, x, y]\n\n\nexport function simplifyPoints(points, tolerance) {\n var prevX = parseFloat(points[0]),\n prevY = parseFloat(points[1]),\n temp = [prevX, prevY],\n l = points.length - 2,\n i,\n x,\n y,\n dx,\n dy,\n result,\n last;\n tolerance = Math.pow(tolerance || 1, 2);\n\n for (i = 2; i < l; i += 2) {\n x = parseFloat(points[i]);\n y = parseFloat(points[i + 1]);\n dx = prevX - x;\n dy = prevY - y;\n\n if (dx * dx + dy * dy > tolerance) {\n temp.push(x, y);\n prevX = x;\n prevY = y;\n }\n }\n\n temp.push(parseFloat(points[l]), parseFloat(points[l + 1]));\n last = temp.length - 2;\n result = [temp[0], temp[1]];\n simplifyStep(temp, 0, last, tolerance, result);\n result.push(temp[last], temp[last + 1]);\n return result;\n}\n\nfunction getClosestProgressOnBezier(iterations, px, py, start, end, slices, x0, y0, x1, y1, x2, y2, x3, y3) {\n var inc = (end - start) / slices,\n best = 0,\n t = start,\n x,\n y,\n d,\n dx,\n dy,\n inv;\n _bestDistance = _largeNum;\n\n while (t <= end) {\n inv = 1 - t;\n x = inv * inv * inv * x0 + 3 * inv * inv * t * x1 + 3 * inv * t * t * x2 + t * t * t * x3;\n y = inv * inv * inv * y0 + 3 * inv * inv * t * y1 + 3 * inv * t * t * y2 + t * t * t * y3;\n dx = x - px;\n dy = y - py;\n d = dx * dx + dy * dy;\n\n if (d < _bestDistance) {\n _bestDistance = d;\n best = t;\n }\n\n t += inc;\n }\n\n return iterations > 1 ? getClosestProgressOnBezier(iterations - 1, px, py, Math.max(best - inc, 0), Math.min(best + inc, 1), slices, x0, y0, x1, y1, x2, y2, x3, y3) : best;\n}\n\nexport function getClosestData(rawPath, x, y, slices) {\n //returns an object with the closest j, i, and t (j is the segment index, i is the index of the point in that segment, and t is the time/progress along that bezier)\n var closest = {\n j: 0,\n i: 0,\n t: 0\n },\n bestDistance = _largeNum,\n i,\n j,\n t,\n segment;\n\n for (j = 0; j < rawPath.length; j++) {\n segment = rawPath[j];\n\n for (i = 0; i < segment.length; i += 6) {\n t = getClosestProgressOnBezier(1, x, y, 0, 1, slices || 20, segment[i], segment[i + 1], segment[i + 2], segment[i + 3], segment[i + 4], segment[i + 5], segment[i + 6], segment[i + 7]);\n\n if (bestDistance > _bestDistance) {\n bestDistance = _bestDistance;\n closest.j = j;\n closest.i = i;\n closest.t = t;\n }\n }\n }\n\n return closest;\n} //subdivide a Segment closest to a specific x,y coordinate\n\nexport function subdivideSegmentNear(x, y, segment, slices, iterations) {\n var l = segment.length,\n bestDistance = _largeNum,\n bestT = 0,\n bestSegmentIndex = 0,\n t,\n i;\n slices = slices || 20;\n iterations = iterations || 3;\n\n for (i = 0; i < l; i += 6) {\n t = getClosestProgressOnBezier(1, x, y, 0, 1, slices, segment[i], segment[i + 1], segment[i + 2], segment[i + 3], segment[i + 4], segment[i + 5], segment[i + 6], segment[i + 7]);\n\n if (bestDistance > _bestDistance) {\n bestDistance = _bestDistance;\n bestT = t;\n bestSegmentIndex = i;\n }\n }\n\n t = getClosestProgressOnBezier(iterations, x, y, bestT - 0.05, bestT + 0.05, slices, segment[bestSegmentIndex], segment[bestSegmentIndex + 1], segment[bestSegmentIndex + 2], segment[bestSegmentIndex + 3], segment[bestSegmentIndex + 4], segment[bestSegmentIndex + 5], segment[bestSegmentIndex + 6], segment[bestSegmentIndex + 7]);\n subdivideSegment(segment, bestSegmentIndex, t);\n return bestSegmentIndex + 6;\n}\n/*\nTakes any of the following and converts it to an all Cubic Bezier SVG data string:\n- A data string like \"M0,0 L2,4 v20,15 H100\"\n- A RawPath, like [[x, y, x, y, x, y, x, y][[x, y, x, y, x, y, x, y]]\n- A Segment, like [x, y, x, y, x, y, x, y]\n\nNote: all numbers are rounded down to the closest 0.001 to minimize memory, maximize speed, and avoid odd numbers like 1e-13\n*/\n\nexport function rawPathToString(rawPath) {\n if (_isNumber(rawPath[0])) {\n //in case a segment is passed in instead\n rawPath = [rawPath];\n }\n\n var result = \"\",\n l = rawPath.length,\n sl,\n s,\n i,\n segment;\n\n for (s = 0; s < l; s++) {\n segment = rawPath[s];\n result += \"M\" + _round(segment[0]) + \",\" + _round(segment[1]) + \" C\";\n sl = segment.length;\n\n for (i = 2; i < sl; i++) {\n result += _round(segment[i++]) + \",\" + _round(segment[i++]) + \" \" + _round(segment[i++]) + \",\" + _round(segment[i++]) + \" \" + _round(segment[i++]) + \",\" + _round(segment[i]) + \" \";\n }\n\n if (segment.closed) {\n result += \"z\";\n }\n }\n\n return result;\n}\n/*\n// takes a segment with coordinates [x, y, x, y, ...] and converts the control points into angles and lengths [x, y, angle, length, angle, length, x, y, angle, length, ...] so that it animates more cleanly and avoids odd breaks/kinks. For example, if you animate from 1 o'clock to 6 o'clock, it'd just go directly/linearly rather than around. So the length would be very short in the middle of the tween.\nexport function cpCoordsToAngles(segment, copy) {\n\tvar result = copy ? segment.slice(0) : segment,\n\t\tx, y, i;\n\tfor (i = 0; i < segment.length; i+=6) {\n\t\tx = segment[i+2] - segment[i];\n\t\ty = segment[i+3] - segment[i+1];\n\t\tresult[i+2] = Math.atan2(y, x);\n\t\tresult[i+3] = Math.sqrt(x * x + y * y);\n\t\tx = segment[i+6] - segment[i+4];\n\t\ty = segment[i+7] - segment[i+5];\n\t\tresult[i+4] = Math.atan2(y, x);\n\t\tresult[i+5] = Math.sqrt(x * x + y * y);\n\t}\n\treturn result;\n}\n\n// takes a segment that was converted with cpCoordsToAngles() to have angles and lengths instead of coordinates for the control points, and converts it BACK into coordinates.\nexport function cpAnglesToCoords(segment, copy) {\n\tvar result = copy ? segment.slice(0) : segment,\n\t\tlength = segment.length,\n\t\trnd = 1000,\n\t\tangle, l, i, j;\n\tfor (i = 0; i < length; i+=6) {\n\t\tangle = segment[i+2];\n\t\tl = segment[i+3]; //length\n\t\tresult[i+2] = (((segment[i] + Math.cos(angle) * l) * rnd) | 0) / rnd;\n\t\tresult[i+3] = (((segment[i+1] + Math.sin(angle) * l) * rnd) | 0) / rnd;\n\t\tangle = segment[i+4];\n\t\tl = segment[i+5]; //length\n\t\tresult[i+4] = (((segment[i+6] - Math.cos(angle) * l) * rnd) | 0) / rnd;\n\t\tresult[i+5] = (((segment[i+7] - Math.sin(angle) * l) * rnd) | 0) / rnd;\n\t}\n\treturn result;\n}\n\n//adds an \"isSmooth\" array to each segment and populates it with a boolean value indicating whether or not it's smooth (the control points have basically the same slope). For any smooth control points, it converts the coordinates into angle (x, in radians) and length (y) and puts them into the same index value in a smoothData array.\nexport function populateSmoothData(rawPath) {\n\tlet j = rawPath.length,\n\t\tsmooth, segment, x, y, x2, y2, i, l, a, a2, isSmooth, smoothData;\n\twhile (--j > -1) {\n\t\tsegment = rawPath[j];\n\t\tisSmooth = segment.isSmooth = segment.isSmooth || [0, 0, 0, 0];\n\t\tsmoothData = segment.smoothData = segment.smoothData || [0, 0, 0, 0];\n\t\tisSmooth.length = 4;\n\t\tl = segment.length - 2;\n\t\tfor (i = 6; i < l; i += 6) {\n\t\t\tx = segment[i] - segment[i - 2];\n\t\t\ty = segment[i + 1] - segment[i - 1];\n\t\t\tx2 = segment[i + 2] - segment[i];\n\t\t\ty2 = segment[i + 3] - segment[i + 1];\n\t\t\ta = _atan2(y, x);\n\t\t\ta2 = _atan2(y2, x2);\n\t\t\tsmooth = (Math.abs(a - a2) < 0.09);\n\t\t\tif (smooth) {\n\t\t\t\tsmoothData[i - 2] = a;\n\t\t\t\tsmoothData[i + 2] = a2;\n\t\t\t\tsmoothData[i - 1] = _sqrt(x * x + y * y);\n\t\t\t\tsmoothData[i + 3] = _sqrt(x2 * x2 + y2 * y2);\n\t\t\t}\n\t\t\tisSmooth.push(smooth, smooth, 0, 0, smooth, smooth);\n\t\t}\n\t\t//if the first and last points are identical, check to see if there's a smooth transition. We must handle this a bit differently due to their positions in the array.\n\t\tif (segment[l] === segment[0] && segment[l+1] === segment[1]) {\n\t\t\tx = segment[0] - segment[l-2];\n\t\t\ty = segment[1] - segment[l-1];\n\t\t\tx2 = segment[2] - segment[0];\n\t\t\ty2 = segment[3] - segment[1];\n\t\t\ta = _atan2(y, x);\n\t\t\ta2 = _atan2(y2, x2);\n\t\t\tif (Math.abs(a - a2) < 0.09) {\n\t\t\t\tsmoothData[l-2] = a;\n\t\t\t\tsmoothData[2] = a2;\n\t\t\t\tsmoothData[l-1] = _sqrt(x * x + y * y);\n\t\t\t\tsmoothData[3] = _sqrt(x2 * x2 + y2 * y2);\n\t\t\t\tisSmooth[l-2] = isSmooth[l-1] = true; //don't change indexes 2 and 3 because we'll trigger everything from the END, and this will optimize file size a bit.\n\t\t\t}\n\t\t}\n\t}\n\treturn rawPath;\n}\nexport function pointToScreen(svgElement, point) {\n\tif (arguments.length < 2) { //by default, take the first set of coordinates in the path as the point\n\t\tlet rawPath = getRawPath(svgElement);\n\t\tpoint = svgElement.ownerSVGElement.createSVGPoint();\n\t\tpoint.x = rawPath[0][0];\n\t\tpoint.y = rawPath[0][1];\n\t}\n\treturn point.matrixTransform(svgElement.getScreenCTM());\n}\n\n*/","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","/*!\r\n * DrawSVGPlugin 3.5.0\r\n * https://greensock.com\r\n *\r\n * @license Copyright 2008-2020, GreenSock. All rights reserved.\r\n * Subject to the terms at https://greensock.com/standard-license or for\r\n * Club GreenSock members, the agreement issued with that membership.\r\n * @author: Jack Doyle, jack@greensock.com\r\n*/\r\n\r\n/* eslint-disable */\r\nvar gsap,\r\n _toArray,\r\n _doc,\r\n _win,\r\n _isEdge,\r\n _coreInitted,\r\n _windowExists = function _windowExists() {\r\n return typeof window !== \"undefined\";\r\n},\r\n _getGSAP = function _getGSAP() {\r\n return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;\r\n},\r\n _numExp = /[-+=\\.]*\\d+[\\.e\\-\\+]*\\d*[e\\-\\+]*\\d*/gi,\r\n //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.\r\n_types = {\r\n rect: [\"width\", \"height\"],\r\n circle: [\"r\", \"r\"],\r\n ellipse: [\"rx\", \"ry\"],\r\n line: [\"x2\", \"y2\"]\r\n},\r\n _round = function _round(value) {\r\n return Math.round(value * 10000) / 10000;\r\n},\r\n _parseNum = function _parseNum(value) {\r\n return parseFloat(value || 0);\r\n},\r\n _getAttributeAsNumber = function _getAttributeAsNumber(target, attr) {\r\n return _parseNum(target.getAttribute(attr));\r\n},\r\n _sqrt = Math.sqrt,\r\n _getDistance = function _getDistance(x1, y1, x2, y2, scaleX, scaleY) {\r\n return _sqrt(Math.pow((_parseNum(x2) - _parseNum(x1)) * scaleX, 2) + Math.pow((_parseNum(y2) - _parseNum(y1)) * scaleY, 2));\r\n},\r\n _warn = function _warn(message) {\r\n return console.warn(message);\r\n},\r\n _hasNonScalingStroke = function _hasNonScalingStroke(target) {\r\n return target.getAttribute(\"vector-effect\") === \"non-scaling-stroke\";\r\n},\r\n _bonusValidated = 1,\r\n //DrawSVGPlugin\r\n//accepts values like \"100%\" or \"20% 80%\" or \"20 50\" and parses it into an absolute start and end position on the line/stroke based on its length. Returns an an array with the start and end values, like [0, 243]\r\n_parse = function _parse(value, length, defaultStart) {\r\n var i = value.indexOf(\" \"),\r\n s,\r\n e;\r\n\r\n if (i < 0) {\r\n s = defaultStart !== undefined ? defaultStart + \"\" : value;\r\n e = value;\r\n } else {\r\n s = value.substr(0, i);\r\n e = value.substr(i + 1);\r\n }\r\n\r\n s = ~s.indexOf(\"%\") ? _parseNum(s) / 100 * length : _parseNum(s);\r\n e = ~e.indexOf(\"%\") ? _parseNum(e) / 100 * length : _parseNum(e);\r\n return s > e ? [e, s] : [s, e];\r\n},\r\n _getLength = function _getLength(target) {\r\n target = _toArray(target)[0];\r\n\r\n if (!target) {\r\n return 0;\r\n }\r\n\r\n var type = target.tagName.toLowerCase(),\r\n style = target.style,\r\n scaleX = 1,\r\n scaleY = 1,\r\n length,\r\n bbox,\r\n points,\r\n prevPoint,\r\n i,\r\n rx,\r\n ry;\r\n\r\n if (_hasNonScalingStroke(target)) {\r\n //non-scaling-stroke basically scales the shape and then strokes it at the screen-level (after transforms), thus we need to adjust the length accordingly.\r\n scaleY = target.getScreenCTM();\r\n scaleX = _sqrt(scaleY.a * scaleY.a + scaleY.b * scaleY.b);\r\n scaleY = _sqrt(scaleY.d * scaleY.d + scaleY.c * scaleY.c);\r\n }\r\n\r\n try {\r\n //IE bug: calling .getTotalLength() locks the repaint area of the stroke to whatever its current dimensions are on that frame/tick. To work around that, we must call getBBox() to force IE to recalculate things.\r\n bbox = target.getBBox(); //solely for fixing bug in IE - we don't actually use the bbox.\r\n } catch (e) {\r\n //firefox has a bug that throws an error if the element isn't visible.\r\n _warn(\"Some browsers won't measure invisible elements (like display:none or masks inside defs).\");\r\n }\r\n\r\n var _ref = bbox || {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n },\r\n x = _ref.x,\r\n y = _ref.y,\r\n width = _ref.width,\r\n height = _ref.height;\r\n\r\n if ((!bbox || !width && !height) && _types[type]) {\r\n //if the element isn't visible, try to discern width/height using its attributes.\r\n width = _getAttributeAsNumber(target, _types[type][0]);\r\n height = _getAttributeAsNumber(target, _types[type][1]);\r\n\r\n if (type !== \"rect\" && type !== \"line\") {\r\n //double the radius for circles and ellipses\r\n width *= 2;\r\n height *= 2;\r\n }\r\n\r\n if (type === \"line\") {\r\n x = _getAttributeAsNumber(target, \"x1\");\r\n y = _getAttributeAsNumber(target, \"y1\");\r\n width = Math.abs(width - x);\r\n height = Math.abs(height - y);\r\n }\r\n }\r\n\r\n if (type === \"path\") {\r\n prevPoint = style.strokeDasharray;\r\n style.strokeDasharray = \"none\";\r\n length = target.getTotalLength() || 0;\r\n\r\n if (scaleX !== scaleY) {\r\n _warn(\"Warning: length cannot be measured when vector-effect is non-scaling-stroke and the element isn't proportionally scaled.\");\r\n }\r\n\r\n length *= (scaleX + scaleY) / 2;\r\n style.strokeDasharray = prevPoint;\r\n } else if (type === \"rect\") {\r\n length = width * 2 * scaleX + height * 2 * scaleY;\r\n } else if (type === \"line\") {\r\n length = _getDistance(x, y, x + width, y + height, scaleX, scaleY);\r\n } else if (type === \"polyline\" || type === \"polygon\") {\r\n points = target.getAttribute(\"points\").match(_numExp) || [];\r\n\r\n if (type === \"polygon\") {\r\n points.push(points[0], points[1]);\r\n }\r\n\r\n length = 0;\r\n\r\n for (i = 2; i < points.length; i += 2) {\r\n length += _getDistance(points[i - 2], points[i - 1], points[i], points[i + 1], scaleX, scaleY) || 0;\r\n }\r\n } else if (type === \"circle\" || type === \"ellipse\") {\r\n rx = width / 2 * scaleX;\r\n ry = height / 2 * scaleY;\r\n length = Math.PI * (3 * (rx + ry) - _sqrt((3 * rx + ry) * (rx + 3 * ry)));\r\n }\r\n\r\n return length || 0;\r\n},\r\n _getPosition = function _getPosition(target, length) {\r\n target = _toArray(target)[0];\r\n\r\n if (!target) {\r\n return [0, 0];\r\n }\r\n\r\n if (!length) {\r\n length = _getLength(target) + 1;\r\n }\r\n\r\n var cs = _win.getComputedStyle(target),\r\n dash = cs.strokeDasharray || \"\",\r\n offset = _parseNum(cs.strokeDashoffset),\r\n i = dash.indexOf(\",\");\r\n\r\n if (i < 0) {\r\n i = dash.indexOf(\" \");\r\n }\r\n\r\n dash = i < 0 ? length : _parseNum(dash.substr(0, i)) || 1e-5;\r\n\r\n if (dash > length) {\r\n dash = length;\r\n }\r\n\r\n return [Math.max(0, -offset), Math.max(0, dash - offset)];\r\n},\r\n _initCore = function _initCore() {\r\n if (_windowExists()) {\r\n _doc = document;\r\n _win = window;\r\n _coreInitted = gsap = _getGSAP();\r\n _toArray = gsap.utils.toArray;\r\n _isEdge = ((_win.navigator || {}).userAgent || \"\").indexOf(\"Edge\") !== -1; //Microsoft Edge has a bug that causes it not to redraw the path correctly if the stroke-linecap is anything other than \"butt\" (like \"round\") and it doesn't match the stroke-linejoin. A way to trigger it is to change the stroke-miterlimit, so we'll only do that if/when we have to (to maximize performance)\r\n }\r\n};\r\n\r\nexport var DrawSVGPlugin = {\r\n version: \"3.5.0\",\r\n name: \"drawSVG\",\r\n register: function register(core) {\r\n gsap = core;\r\n\r\n _initCore();\r\n },\r\n init: function init(target, value, tween, index, targets) {\r\n if (!target.getBBox) {\r\n return false;\r\n }\r\n\r\n if (!_coreInitted) {\r\n _initCore();\r\n }\r\n\r\n var length = _getLength(target) + 1,\r\n start,\r\n end,\r\n overage,\r\n cs;\r\n this._style = target.style;\r\n this._target = target;\r\n\r\n if (value + \"\" === \"true\") {\r\n value = \"0 100%\";\r\n } else if (!value) {\r\n value = \"0 0\";\r\n } else if ((value + \"\").indexOf(\" \") === -1) {\r\n value = \"0 \" + value;\r\n }\r\n\r\n start = _getPosition(target, length);\r\n end = _parse(value, length, start[0]);\r\n this._length = _round(length + 10);\r\n\r\n if (start[0] === 0 && end[0] === 0) {\r\n overage = Math.max(0.00001, end[1] - length); //allow people to go past the end, like values of 105% because for some paths, Firefox doesn't return an accurate getTotalLength(), so it could end up coming up short.\r\n\r\n this._dash = _round(length + overage);\r\n this._offset = _round(length - start[1] + overage);\r\n this._offsetPT = this.add(this, \"_offset\", this._offset, _round(length - end[1] + overage));\r\n } else {\r\n this._dash = _round(start[1] - start[0]) || 0.000001; //some browsers render artifacts if dash is 0, so we use a very small number in that case.\r\n\r\n this._offset = _round(-start[0]);\r\n this._dashPT = this.add(this, \"_dash\", this._dash, _round(end[1] - end[0]) || 0.00001);\r\n this._offsetPT = this.add(this, \"_offset\", this._offset, _round(-end[0]));\r\n }\r\n\r\n if (_isEdge) {\r\n //to work around a bug in Microsoft Edge, animate the stroke-miterlimit by 0.0001 just to trigger the repaint (unnecessary if it's \"round\" and stroke-linejoin is also \"round\"). Imperceptible, relatively high-performance, and effective. Another option was to set the \"d\" attribute to its current value on every tick, but that seems like it'd be much less performant.\r\n cs = _win.getComputedStyle(target);\r\n\r\n if (cs.strokeLinecap !== cs.strokeLinejoin) {\r\n end = _parseNum(cs.strokeMiterlimit);\r\n this.add(target.style, \"strokeMiterlimit\", end, end + 0.01);\r\n }\r\n }\r\n\r\n this._live = _hasNonScalingStroke(target) || ~(value + \"\").indexOf(\"live\");\r\n\r\n this._props.push(\"drawSVG\");\r\n\r\n return _bonusValidated;\r\n },\r\n render: function render(ratio, data) {\r\n var pt = data._pt,\r\n style = data._style,\r\n length,\r\n lengthRatio,\r\n dash,\r\n offset;\r\n\r\n if (pt) {\r\n //when the element has vector-effect=\"non-scaling-stroke\" and the SVG is resized (like on a window resize), it actually changes the length of the stroke! So we must sense that and make the proper adjustments.\r\n if (data._live) {\r\n length = _getLength(data._target) + 11;\r\n\r\n if (length !== data._length) {\r\n lengthRatio = length / data._length;\r\n data._length = length;\r\n data._offsetPT.s *= lengthRatio;\r\n data._offsetPT.c *= lengthRatio;\r\n\r\n if (data._dashPT) {\r\n data._dashPT.s *= lengthRatio;\r\n data._dashPT.c *= lengthRatio;\r\n } else {\r\n data._dash *= lengthRatio;\r\n }\r\n }\r\n }\r\n\r\n while (pt) {\r\n pt.r(ratio, pt.d);\r\n pt = pt._next;\r\n }\r\n\r\n dash = data._dash;\r\n offset = data._offset;\r\n length = data._length;\r\n style.strokeDashoffset = data._offset;\r\n\r\n if (ratio === 1 || !ratio) {\r\n if (dash - offset < 0.001 && length - dash <= 10) {\r\n //works around a bug in Safari that caused strokes with rounded ends to still show initially when they shouldn't.\r\n style.strokeDashoffset = offset + 1;\r\n }\r\n\r\n style.strokeDasharray = offset < 0.001 && length - dash <= 10 ? \"none\" : offset === dash ? \"0px, 999999px\" : dash + \"px,\" + length + \"px\";\r\n } else {\r\n style.strokeDasharray = dash + \"px,\" + length + \"px\";\r\n }\r\n }\r\n },\r\n getLength: _getLength,\r\n getPosition: _getPosition\r\n};\r\n_getGSAP() && gsap.registerPlugin(DrawSVGPlugin);\r\nexport { DrawSVGPlugin as default };","/*!\r\n * SplitText: 3.5.0\r\n * https://greensock.com\r\n *\r\n * @license Copyright 2008-2020, GreenSock. All rights reserved.\r\n * Subject to the terms at https://greensock.com/standard-license or for\r\n * Club GreenSock members, the agreement issued with that membership.\r\n * @author: Jack Doyle, jack@greensock.com\r\n*/\r\n\r\n/* eslint-disable */\r\nimport { emojiExp, getText } from \"./utils/strings.js\";\r\n\r\nvar _doc,\r\n _win,\r\n _coreInitted,\r\n _stripExp = /(?:\\r|\\n|\\t\\t)/g,\r\n //find carriage returns, new line feeds and double-tabs.\r\n_multipleSpacesExp = /(?:\\s\\s+)/g,\r\n _initCore = function _initCore() {\r\n _doc = document;\r\n _win = window;\r\n _coreInitted = 1;\r\n},\r\n _bonusValidated = 1,\r\n //SplitText\r\n_getComputedStyle = function _getComputedStyle(element) {\r\n return _win.getComputedStyle(element);\r\n},\r\n _isArray = Array.isArray,\r\n _slice = [].slice,\r\n _toArray = function _toArray(value, leaveStrings) {\r\n //takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.\r\n var type;\r\n return _isArray(value) ? value : (type = typeof value) === \"string\" && !leaveStrings && value ? _slice.call(_doc.querySelectorAll(value), 0) : value && type === \"object\" && \"length\" in value ? _slice.call(value, 0) : value ? [value] : [];\r\n},\r\n _isAbsolute = function _isAbsolute(vars) {\r\n return vars.position === \"absolute\" || vars.absolute === true;\r\n},\r\n //some characters are combining marks (think diacritics/accents in European languages) which involve 2 or 4 characters that combine in the browser to form a single character. Pass in the remaining text and an array of the special characters to search for and if the text starts with one of those special characters, it'll spit back the number of characters to retain (often 2 or 4). Used in the specialChars features that was introduced in 0.6.0.\r\n_findSpecialChars = function _findSpecialChars(text, chars) {\r\n var i = chars.length,\r\n s;\r\n\r\n while (--i > -1) {\r\n s = chars[i];\r\n\r\n if (text.substr(0, s.length) === s) {\r\n return s.length;\r\n }\r\n }\r\n},\r\n _divStart = \" style='position:relative;display:inline-block;'\",\r\n _cssClassFunc = function _cssClassFunc(cssClass, tag) {\r\n if (cssClass === void 0) {\r\n cssClass = \"\";\r\n }\r\n\r\n var iterate = ~cssClass.indexOf(\"++\"),\r\n num = 1;\r\n\r\n if (iterate) {\r\n cssClass = cssClass.split(\"++\").join(\"\");\r\n }\r\n\r\n return function () {\r\n return \"<\" + tag + _divStart + (cssClass ? \" class='\" + cssClass + (iterate ? num++ : \"\") + \"'>\" : \">\");\r\n };\r\n},\r\n _swapText = function _swapText(element, oldText, newText) {\r\n var type = element.nodeType;\r\n\r\n if (type === 1 || type === 9 || type === 11) {\r\n for (element = element.firstChild; element; element = element.nextSibling) {\r\n _swapText(element, oldText, newText);\r\n }\r\n } else if (type === 3 || type === 4) {\r\n element.nodeValue = element.nodeValue.split(oldText).join(newText);\r\n }\r\n},\r\n _pushReversed = function _pushReversed(a, merge) {\r\n var i = merge.length;\r\n\r\n while (--i > -1) {\r\n a.push(merge[i]);\r\n }\r\n},\r\n _isBeforeWordDelimiter = function _isBeforeWordDelimiter(e, root, wordDelimiter) {\r\n var next;\r\n\r\n while (e && e !== root) {\r\n next = e._next || e.nextSibling;\r\n\r\n if (next) {\r\n return next.textContent.charAt(0) === wordDelimiter;\r\n }\r\n\r\n e = e.parentNode || e._parent;\r\n }\r\n},\r\n _deWordify = function _deWordify(e) {\r\n var children = _toArray(e.childNodes),\r\n l = children.length,\r\n i,\r\n child;\r\n\r\n for (i = 0; i < l; i++) {\r\n child = children[i];\r\n\r\n if (child._isSplit) {\r\n _deWordify(child);\r\n } else {\r\n if (i && child.previousSibling.nodeType === 3) {\r\n child.previousSibling.nodeValue += child.nodeType === 3 ? child.nodeValue : child.firstChild.nodeValue;\r\n } else if (child.nodeType !== 3) {\r\n e.insertBefore(child.firstChild, child);\r\n }\r\n\r\n e.removeChild(child);\r\n }\r\n }\r\n},\r\n _getStyleAsNumber = function _getStyleAsNumber(name, computedStyle) {\r\n return parseFloat(computedStyle[name]) || 0;\r\n},\r\n _setPositionsAfterSplit = function _setPositionsAfterSplit(element, vars, allChars, allWords, allLines, origWidth, origHeight) {\r\n var cs = _getComputedStyle(element),\r\n paddingLeft = _getStyleAsNumber(\"paddingLeft\", cs),\r\n lineOffsetY = -999,\r\n borderTopAndBottom = _getStyleAsNumber(\"borderBottomWidth\", cs) + _getStyleAsNumber(\"borderTopWidth\", cs),\r\n borderLeftAndRight = _getStyleAsNumber(\"borderLeftWidth\", cs) + _getStyleAsNumber(\"borderRightWidth\", cs),\r\n padTopAndBottom = _getStyleAsNumber(\"paddingTop\", cs) + _getStyleAsNumber(\"paddingBottom\", cs),\r\n padLeftAndRight = _getStyleAsNumber(\"paddingLeft\", cs) + _getStyleAsNumber(\"paddingRight\", cs),\r\n lineThreshold = _getStyleAsNumber(\"fontSize\", cs) * 0.2,\r\n textAlign = cs.textAlign,\r\n charArray = [],\r\n wordArray = [],\r\n lineArray = [],\r\n wordDelimiter = vars.wordDelimiter || \" \",\r\n tag = vars.tag ? vars.tag : vars.span ? \"span\" : \"div\",\r\n types = vars.type || vars.split || \"chars,words,lines\",\r\n lines = allLines && ~types.indexOf(\"lines\") ? [] : null,\r\n words = ~types.indexOf(\"words\"),\r\n chars = ~types.indexOf(\"chars\"),\r\n absolute = _isAbsolute(vars),\r\n linesClass = vars.linesClass,\r\n iterateLine = ~(linesClass || \"\").indexOf(\"++\"),\r\n spaceNodesToRemove = [],\r\n i,\r\n j,\r\n l,\r\n node,\r\n nodes,\r\n isChild,\r\n curLine,\r\n addWordSpaces,\r\n style,\r\n lineNode,\r\n lineWidth,\r\n offset;\r\n\r\n if (iterateLine) {\r\n linesClass = linesClass.split(\"++\").join(\"\");\r\n } //copy all the descendant nodes into an array (we can't use a regular nodeList because it's live and we may need to renest things)\r\n\r\n\r\n j = element.getElementsByTagName(\"*\");\r\n l = j.length;\r\n nodes = [];\r\n\r\n for (i = 0; i < l; i++) {\r\n nodes[i] = j[i];\r\n } //for absolute positioning, we need to record the x/y offsets and width/height for every
. And even if we're not positioning things absolutely, in order to accommodate lines, we must figure out where the y offset changes so that we can sense where the lines break, and we populate the lines array.\r\n\r\n\r\n if (lines || absolute) {\r\n for (i = 0; i < l; i++) {\r\n node = nodes[i];\r\n isChild = node.parentNode === element;\r\n\r\n if (isChild || absolute || chars && !words) {\r\n offset = node.offsetTop;\r\n\r\n if (lines && isChild && Math.abs(offset - lineOffsetY) > lineThreshold && (node.nodeName !== \"BR\" || i === 0)) {\r\n //we found some rare occasions where a certain character like ‑ could cause the offsetTop to be off by 1 pixel, so we build in a threshold.\r\n curLine = [];\r\n lines.push(curLine);\r\n lineOffsetY = offset;\r\n }\r\n\r\n if (absolute) {\r\n //record offset x and y, as well as width and height so that we can access them later for positioning. Grabbing them at once ensures we don't trigger a browser paint & we maximize performance.\r\n node._x = node.offsetLeft;\r\n node._y = offset;\r\n node._w = node.offsetWidth;\r\n node._h = node.offsetHeight;\r\n }\r\n\r\n if (lines) {\r\n if (node._isSplit && isChild || !chars && isChild || words && isChild || !words && node.parentNode.parentNode === element && !node.parentNode._isSplit) {\r\n curLine.push(node);\r\n node._x -= paddingLeft;\r\n\r\n if (_isBeforeWordDelimiter(node, element, wordDelimiter)) {\r\n node._wordEnd = true;\r\n }\r\n }\r\n\r\n if (node.nodeName === \"BR\" && (node.nextSibling && node.nextSibling.nodeName === \"BR\" || i === 0)) {\r\n //two consecutive
tags signify a new [empty] line. Also, if the entire block of content STARTS with a
, add a line.\r\n lines.push([]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (i = 0; i < l; i++) {\r\n node = nodes[i];\r\n isChild = node.parentNode === element;\r\n\r\n if (node.nodeName === \"BR\") {\r\n if (lines || absolute) {\r\n if (node.parentNode) {\r\n node.parentNode.removeChild(node);\r\n }\r\n\r\n nodes.splice(i--, 1);\r\n l--;\r\n } else if (!words) {\r\n element.appendChild(node);\r\n }\r\n\r\n continue;\r\n }\r\n\r\n if (absolute) {\r\n style = node.style;\r\n\r\n if (!words && !isChild) {\r\n node._x += node.parentNode._x;\r\n node._y += node.parentNode._y;\r\n }\r\n\r\n style.left = node._x + \"px\";\r\n style.top = node._y + \"px\";\r\n style.position = \"absolute\";\r\n style.display = \"block\"; //if we don't set the width/height, things collapse in older versions of IE and the origin for transforms is thrown off in all browsers.\r\n\r\n style.width = node._w + 1 + \"px\"; //IE is 1px short sometimes. Avoid wrapping\r\n\r\n style.height = node._h + \"px\";\r\n }\r\n\r\n if (!words && chars) {\r\n //we always start out wrapping words in their own
so that line breaks happen correctly, but here we'll remove those
tags if necessary and renest the characters directly into the element rather than inside the word
\r\n if (node._isSplit) {\r\n node._next = node.nextSibling;\r\n node.parentNode.appendChild(node); //put it at the end to keep the order correct.\r\n } else if (node.parentNode._isSplit) {\r\n node._parent = node.parentNode;\r\n\r\n if (!node.previousSibling && node.firstChild) {\r\n node.firstChild._isFirst = true;\r\n }\r\n\r\n if (node.nextSibling && node.nextSibling.textContent === \" \" && !node.nextSibling.nextSibling) {\r\n //if the last node inside a nested element is just a space (like Tnested ), remove it otherwise it'll get placed in the wrong order. Don't remove it right away, though, because we need to sense when words/characters are before a space like _isBeforeWordDelimiter(). Removing it now would make that a false negative.\r\n spaceNodesToRemove.push(node.nextSibling);\r\n }\r\n\r\n node._next = node.nextSibling && node.nextSibling._isFirst ? null : node.nextSibling;\r\n node.parentNode.removeChild(node);\r\n nodes.splice(i--, 1);\r\n l--;\r\n } else if (!isChild) {\r\n offset = !node.nextSibling && _isBeforeWordDelimiter(node.parentNode, element, wordDelimiter); //if this is the last letter in the word (and we're not breaking by lines and not positioning things absolutely), we need to add a space afterwards so that the characters don't just mash together\r\n\r\n if (node.parentNode._parent) {\r\n node.parentNode._parent.appendChild(node);\r\n }\r\n\r\n if (offset) {\r\n node.parentNode.appendChild(_doc.createTextNode(\" \"));\r\n }\r\n\r\n if (tag === \"span\") {\r\n node.style.display = \"inline\"; //so that word breaks are honored properly.\r\n }\r\n\r\n charArray.push(node);\r\n }\r\n } else if (node.parentNode._isSplit && !node._isSplit && node.innerHTML !== \"\") {\r\n wordArray.push(node);\r\n } else if (chars && !node._isSplit) {\r\n if (tag === \"span\") {\r\n node.style.display = \"inline\";\r\n }\r\n\r\n charArray.push(node);\r\n }\r\n }\r\n\r\n i = spaceNodesToRemove.length;\r\n\r\n while (--i > -1) {\r\n spaceNodesToRemove[i].parentNode.removeChild(spaceNodesToRemove[i]);\r\n }\r\n\r\n if (lines) {\r\n //the next 7 lines just give us the line width in the most reliable way and figure out the left offset (if position isn't relative or absolute). We must set the width along with text-align to ensure everything works properly for various alignments.\r\n if (absolute) {\r\n lineNode = _doc.createElement(tag);\r\n element.appendChild(lineNode);\r\n lineWidth = lineNode.offsetWidth + \"px\";\r\n offset = lineNode.offsetParent === element ? 0 : element.offsetLeft;\r\n element.removeChild(lineNode);\r\n }\r\n\r\n style = element.style.cssText;\r\n element.style.cssText = \"display:none;\"; //to improve performance, set display:none on the element so that the browser doesn't have to worry about reflowing or rendering while we're renesting things. We'll revert the cssText later.\r\n //we can't use element.innerHTML = \"\" because that causes IE to literally delete all the nodes and their content even though we've stored them in an array! So we must loop through the children and remove them.\r\n\r\n while (element.firstChild) {\r\n element.removeChild(element.firstChild);\r\n }\r\n\r\n addWordSpaces = wordDelimiter === \" \" && (!absolute || !words && !chars);\r\n\r\n for (i = 0; i < lines.length; i++) {\r\n curLine = lines[i];\r\n lineNode = _doc.createElement(tag);\r\n lineNode.style.cssText = \"display:block;text-align:\" + textAlign + \";position:\" + (absolute ? \"absolute;\" : \"relative;\");\r\n\r\n if (linesClass) {\r\n lineNode.className = linesClass + (iterateLine ? i + 1 : \"\");\r\n }\r\n\r\n lineArray.push(lineNode);\r\n l = curLine.length;\r\n\r\n for (j = 0; j < l; j++) {\r\n if (curLine[j].nodeName !== \"BR\") {\r\n node = curLine[j];\r\n lineNode.appendChild(node);\r\n\r\n if (addWordSpaces && node._wordEnd) {\r\n lineNode.appendChild(_doc.createTextNode(\" \"));\r\n }\r\n\r\n if (absolute) {\r\n if (j === 0) {\r\n lineNode.style.top = node._y + \"px\";\r\n lineNode.style.left = paddingLeft + offset + \"px\";\r\n }\r\n\r\n node.style.top = \"0px\";\r\n\r\n if (offset) {\r\n node.style.left = node._x - offset + \"px\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (l === 0) {\r\n //if there are no nodes in the line (typically meaning there were two consecutive
tags, just add a non-breaking space so that things display properly.\r\n lineNode.innerHTML = \" \";\r\n } else if (!words && !chars) {\r\n _deWordify(lineNode);\r\n\r\n _swapText(lineNode, String.fromCharCode(160), \" \");\r\n }\r\n\r\n if (absolute) {\r\n lineNode.style.width = lineWidth;\r\n lineNode.style.height = node._h + \"px\";\r\n }\r\n\r\n element.appendChild(lineNode);\r\n }\r\n\r\n element.style.cssText = style;\r\n } //if everything shifts to being position:absolute, the container can collapse in terms of height or width, so fix that here.\r\n\r\n\r\n if (absolute) {\r\n if (origHeight > element.clientHeight) {\r\n element.style.height = origHeight - padTopAndBottom + \"px\";\r\n\r\n if (element.clientHeight < origHeight) {\r\n //IE8 and earlier use a different box model - we must include padding and borders\r\n element.style.height = origHeight + borderTopAndBottom + \"px\";\r\n }\r\n }\r\n\r\n if (origWidth > element.clientWidth) {\r\n element.style.width = origWidth - padLeftAndRight + \"px\";\r\n\r\n if (element.clientWidth < origWidth) {\r\n //IE8 and earlier use a different box model - we must include padding and borders\r\n element.style.width = origWidth + borderLeftAndRight + \"px\";\r\n }\r\n }\r\n }\r\n\r\n _pushReversed(allChars, charArray);\r\n\r\n if (words) {\r\n _pushReversed(allWords, wordArray);\r\n }\r\n\r\n _pushReversed(allLines, lineArray);\r\n},\r\n _splitRawText = function _splitRawText(element, vars, wordStart, charStart) {\r\n var tag = vars.tag ? vars.tag : vars.span ? \"span\" : \"div\",\r\n types = vars.type || vars.split || \"chars,words,lines\",\r\n //words = (types.indexOf(\"words\") !== -1),\r\n chars = ~types.indexOf(\"chars\"),\r\n absolute = _isAbsolute(vars),\r\n wordDelimiter = vars.wordDelimiter || \" \",\r\n space = wordDelimiter !== \" \" ? \"\" : absolute ? \"­ \" : \" \",\r\n wordEnd = \"\",\r\n wordIsOpen = 1,\r\n specialChars = vars.specialChars ? typeof vars.specialChars === \"function\" ? vars.specialChars : _findSpecialChars : null,\r\n //specialChars can be an array or a function. For performance reasons, we always set this local \"specialChars\" to a function to which we pass the remaining text and whatever the original vars.specialChars was so that if it's an array, it works with the _findSpecialChars() function.\r\n text,\r\n splitText,\r\n i,\r\n j,\r\n l,\r\n character,\r\n hasTagStart,\r\n testResult,\r\n container = _doc.createElement(\"div\"),\r\n parent = element.parentNode;\r\n\r\n parent.insertBefore(container, element);\r\n container.textContent = element.nodeValue;\r\n parent.removeChild(element);\r\n element = container;\r\n text = getText(element);\r\n hasTagStart = text.indexOf(\"<\") !== -1;\r\n\r\n if (vars.reduceWhiteSpace !== false) {\r\n text = text.replace(_multipleSpacesExp, \" \").replace(_stripExp, \"\");\r\n }\r\n\r\n if (hasTagStart) {\r\n text = text.split(\"<\").join(\"{{LT}}\"); //we can't leave \"<\" in the string, or when we set the innerHTML, it can be interpreted as a node\r\n }\r\n\r\n l = text.length;\r\n splitText = (text.charAt(0) === \" \" ? space : \"\") + wordStart();\r\n\r\n for (i = 0; i < l; i++) {\r\n character = text.charAt(i);\r\n\r\n if (specialChars && (testResult = specialChars(text.substr(i), vars.specialChars))) {\r\n // look for any specialChars that were declared. Remember, they can be passed in like {specialChars:[\"मी\", \"पा\", \"है\"]} or a function could be defined instead. Either way, the function should return the number of characters that should be grouped together for this \"character\".\r\n character = text.substr(i, testResult || 1);\r\n splitText += chars && character !== \" \" ? charStart() + character + \"\" : character;\r\n i += testResult - 1;\r\n } else if (character === wordDelimiter && text.charAt(i - 1) !== wordDelimiter && i) {\r\n splitText += wordIsOpen ? wordEnd : \"\";\r\n wordIsOpen = 0;\r\n\r\n while (text.charAt(i + 1) === wordDelimiter) {\r\n //skip over empty spaces (to avoid making them words)\r\n splitText += space;\r\n i++;\r\n }\r\n\r\n if (i === l - 1) {\r\n splitText += space;\r\n } else if (text.charAt(i + 1) !== \")\") {\r\n splitText += space + wordStart();\r\n wordIsOpen = 1;\r\n }\r\n } else if (character === \"{\" && text.substr(i, 6) === \"{{LT}}\") {\r\n splitText += chars ? charStart() + \"{{LT}}\" + \"\" : \"{{LT}}\";\r\n i += 5;\r\n } else if (character.charCodeAt(0) >= 0xD800 && character.charCodeAt(0) <= 0xDBFF || text.charCodeAt(i + 1) >= 0xFE00 && text.charCodeAt(i + 1) <= 0xFE0F) {\r\n //special emoji characters use 2 or 4 unicode characters that we must keep together.\r\n j = ((text.substr(i, 12).split(emojiExp) || [])[1] || \"\").length || 2;\r\n splitText += chars && character !== \" \" ? charStart() + text.substr(i, j) + \"\" : text.substr(i, j);\r\n i += j - 1;\r\n } else {\r\n splitText += chars && character !== \" \" ? charStart() + character + \"\" : character;\r\n }\r\n }\r\n\r\n element.outerHTML = splitText + (wordIsOpen ? wordEnd : \"\");\r\n\r\n if (hasTagStart) {\r\n _swapText(parent, \"{{LT}}\", \"<\"); //note: don't perform this on \"element\" because that gets replaced with all new elements when we set element.outerHTML.\r\n\r\n }\r\n},\r\n _split = function _split(element, vars, wordStart, charStart) {\r\n var children = _toArray(element.childNodes),\r\n l = children.length,\r\n absolute = _isAbsolute(vars),\r\n i,\r\n child;\r\n\r\n if (element.nodeType !== 3 || l > 1) {\r\n vars.absolute = false;\r\n\r\n for (i = 0; i < l; i++) {\r\n child = children[i];\r\n\r\n if (child.nodeType !== 3 || /\\S+/.test(child.nodeValue)) {\r\n if (absolute && child.nodeType !== 3 && _getComputedStyle(child).display === \"inline\") {\r\n //if there's a child node that's display:inline, switch it to inline-block so that absolute positioning works properly (most browsers don't report offsetTop/offsetLeft properly inside a for example)\r\n child.style.display = \"inline-block\";\r\n child.style.position = \"relative\";\r\n }\r\n\r\n child._isSplit = true;\r\n\r\n _split(child, vars, wordStart, charStart); //don't split lines on child elements\r\n\r\n }\r\n }\r\n\r\n vars.absolute = absolute;\r\n element._isSplit = true;\r\n return;\r\n }\r\n\r\n _splitRawText(element, vars, wordStart, charStart);\r\n};\r\n\r\nexport var SplitText = /*#__PURE__*/function () {\r\n function SplitText(element, vars) {\r\n if (!_coreInitted) {\r\n _initCore();\r\n }\r\n\r\n this.elements = _toArray(element);\r\n this.chars = [];\r\n this.words = [];\r\n this.lines = [];\r\n this._originals = [];\r\n this.vars = vars || {};\r\n\r\n if (_bonusValidated) {\r\n this.split(vars);\r\n }\r\n }\r\n\r\n var _proto = SplitText.prototype;\r\n\r\n _proto.split = function split(vars) {\r\n if (this.isSplit) {\r\n this.revert();\r\n }\r\n\r\n this.vars = vars = vars || this.vars;\r\n this._originals.length = this.chars.length = this.words.length = this.lines.length = 0;\r\n\r\n var i = this.elements.length,\r\n tag = vars.tag ? vars.tag : vars.span ? \"span\" : \"div\",\r\n wordStart = _cssClassFunc(vars.wordsClass, tag),\r\n charStart = _cssClassFunc(vars.charsClass, tag),\r\n origHeight,\r\n origWidth,\r\n e; //we split in reversed order so that if/when we position:absolute elements, they don't affect the position of the ones after them in the document flow (shifting them up as they're taken out of the document flow).\r\n\r\n\r\n while (--i > -1) {\r\n e = this.elements[i];\r\n this._originals[i] = e.innerHTML;\r\n origHeight = e.clientHeight;\r\n origWidth = e.clientWidth;\r\n\r\n _split(e, vars, wordStart, charStart);\r\n\r\n _setPositionsAfterSplit(e, vars, this.chars, this.words, this.lines, origWidth, origHeight);\r\n }\r\n\r\n this.chars.reverse();\r\n this.words.reverse();\r\n this.lines.reverse();\r\n this.isSplit = true;\r\n return this;\r\n };\r\n\r\n _proto.revert = function revert() {\r\n var originals = this._originals;\r\n\r\n if (!originals) {\r\n throw \"revert() call wasn't scoped properly.\";\r\n }\r\n\r\n this.elements.forEach(function (e, i) {\r\n return e.innerHTML = originals[i];\r\n });\r\n this.chars = [];\r\n this.words = [];\r\n this.lines = [];\r\n this.isSplit = false;\r\n return this;\r\n };\r\n\r\n SplitText.create = function create(element, vars) {\r\n return new SplitText(element, vars);\r\n };\r\n\r\n return SplitText;\r\n}();\r\nSplitText.version = \"3.5.0\";\r\nexport { SplitText as default };","/*!\r\n * strings: 3.5.0\r\n * https://greensock.com\r\n *\r\n * Copyright 2008-2020, GreenSock. All rights reserved.\r\n * Subject to the terms at https://greensock.com/standard-license or for\r\n * Club GreenSock members, the agreement issued with that membership.\r\n * @author: Jack Doyle, jack@greensock.com\r\n*/\r\n\r\n/* eslint-disable */\r\nvar _trimExp = /(^\\s+|\\s+$)/g;\r\nexport 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)/;\r\nexport function getText(e) {\r\n var type = e.nodeType,\r\n result = \"\";\r\n\r\n if (type === 1 || type === 9 || type === 11) {\r\n if (typeof e.textContent === \"string\") {\r\n return e.textContent;\r\n } else {\r\n for (e = e.firstChild; e; e = e.nextSibling) {\r\n result += getText(e);\r\n }\r\n }\r\n } else if (type === 3 || type === 4) {\r\n return e.nodeValue;\r\n }\r\n\r\n return result;\r\n}\r\nexport function splitInnerHTML(element, delimiter, trim) {\r\n var node = element.firstChild,\r\n result = [];\r\n\r\n while (node) {\r\n if (node.nodeType === 3) {\r\n result.push.apply(result, emojiSafeSplit((node.nodeValue + \"\").replace(/^\\n+/g, \"\").replace(/\\s+/g, \" \"), delimiter, trim));\r\n } else if ((node.nodeName + \"\").toLowerCase() === \"br\") {\r\n result[result.length - 1] += \"
\";\r\n } else {\r\n result.push(node.outerHTML);\r\n }\r\n\r\n node = node.nextSibling;\r\n }\r\n\r\n return result;\r\n}\r\n/*\r\n//smaller kb version that only handles the simpler emoji's, which is often perfectly adequate.\r\n\r\nlet _emoji = \"[\\uE000-\\uF8FF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDFFF]|[\\u2694-\\u2697]|\\uD83E[\\uDD10-\\uDD5D]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\",\r\n\t_emojiExp = new RegExp(_emoji),\r\n\t_emojiAndCharsExp = new RegExp(_emoji + \"|.\", \"g\"),\r\n\t_emojiSafeSplit = (text, delimiter, trim) => {\r\n\t\tif (trim) {\r\n\t\t\ttext = text.replace(_trimExp, \"\");\r\n\t\t}\r\n\t\treturn ((delimiter === \"\" || !delimiter) && _emojiExp.test(text)) ? text.match(_emojiAndCharsExp) : text.split(delimiter || \"\");\r\n\t};\r\n */\r\n\r\nexport function emojiSafeSplit(text, delimiter, trim) {\r\n text += \"\"; // make sure it's cast as a string. Someone may pass in a number.\r\n\r\n if (trim) {\r\n text = text.replace(_trimExp, \"\");\r\n }\r\n\r\n if (delimiter && delimiter !== \"\") {\r\n return text.replace(/>/g, \">\").replace(/= 0xD800 && character.charCodeAt(0) <= 0xDBFF || text.charCodeAt(i + 1) >= 0xFE00 && text.charCodeAt(i + 1) <= 0xFE0F) {\r\n //special emoji characters use 2 or 4 unicode characters that we must keep together.\r\n j = ((text.substr(i, 12).split(emojiExp) || [])[1] || \"\").length || 2;\r\n character = text.substr(i, j);\r\n result.emoji = 1;\r\n i += j - 1;\r\n }\r\n\r\n result.push(character === \">\" ? \">\" : character === \"<\" ? \"<\" : character);\r\n }\r\n\r\n return result;\r\n}","import { gsap } from 'gsap';\r\n\r\nexport class Accordion {\r\n constructor(container, options) {\r\n this.container = typeof (container) === 'string' ? document.querySelector(container) : container;\r\n this.options = Object.assign({ enableCondition: () => { return true; }, startOpen: true, multiOpen: false }, options);\r\n }\r\n\r\n init() {\r\n this.items = this.container?.querySelectorAll('.accordion-item');\r\n this._setState();\r\n window.addEventListener('resize', function () {\r\n clearTimeout(this._timeout);\r\n this._timeout = setTimeout(this._setState.bind(this), 100);\r\n }.bind(this));\r\n }\r\n\r\n disable() {\r\n this.items.forEach((item, i) => {\r\n if (item._timeline) {\r\n item._timeline.pause();\r\n }\r\n var title = item.querySelector('.accordion-title');\r\n var marker = item.querySelector('.accordion-marker');\r\n var others = title.parentElement.querySelectorAll(':scope>*:not(.accordion-title):not(.accordion-marker)');\r\n gsap.set(title, { clearProps: 'all' });\r\n gsap.set(marker, { clearProps: 'all' });\r\n gsap.set(others, { clearProps: 'all' });\r\n item.removeEventListener('click', item._clickHandler);\r\n item._open = false;\r\n delete item._timeline;\r\n delete item._clickHandler;\r\n });\r\n }\r\n\r\n _setState() {\r\n var wasActive = this._active;\r\n this._active = this.options.enableCondition();\r\n if (this._active) {\r\n this._buildAnimations();\r\n }\r\n else if (wasActive) {\r\n this.disable();\r\n }\r\n }\r\n\r\n _buildAnimations() {\r\n this.items.forEach((item, i) => {\r\n if (item._timeline) {\r\n item._timeline.progress(1);\r\n }\r\n var title = item.querySelector('.accordion-title');\r\n var marker = item.querySelector('.accordion-marker');\r\n var others = title.parentElement.querySelectorAll(':scope>*:not(.accordion-title):not(.accordion-marker)');\r\n item._timeline = gsap.timeline({\r\n paused: true\r\n })\r\n .addLabel('start')\r\n .from(title, .3, { marginTop: 0, marginBottom: 0 }, 'start')\r\n .to(marker, .3, { opacity: .6, rotation: 180 }, 'start')\r\n .from(others, .3, { overflow: 'hidden', height: 0, marginTop: 0, marginBottom: 0 }, 'start');\r\n if (!item._clickHandler) {\r\n item._clickHandler = function (e) {\r\n this._toggleAccordionItem(e, item);\r\n }.bind(this);\r\n item.addEventListener('click', item._clickHandler);\r\n }\r\n if (this.options.startOpen && i === 0) {\r\n item._open = true;\r\n item._timeline.progress(1);\r\n }\r\n })\r\n }\r\n\r\n _toggleAccordionItem(e, item) {\r\n item._open = !item._open;\r\n var isLink = item.tagName.toLowerCase() === 'a';\r\n if (item._open) {\r\n if (isLink) {\r\n e.preventDefault();\r\n }\r\n item._timeline.play();\r\n if (!this.options.multiOpen) {\r\n this.items.forEach(otherItem => {\r\n if (otherItem !== item) {\r\n otherItem._open = false;\r\n otherItem._timeline.reverse();\r\n }\r\n })\r\n }\r\n }\r\n else {\r\n if (!isLink) {\r\n item._timeline.reverse();\r\n }\r\n }\r\n\r\n }\r\n}","import { gsap } from 'gsap';\r\nimport { isMobile } from './isMobile';\r\nimport { SnapperInstance } from './snapper';\r\n\r\n//let tlSurvival = gsap.timeline();\r\n//tlSurvival.to('.slider-wrap.active', 0.3, {opacity: 0});\r\n//tlSurvival.to('.survival-slider', 0.3, {opacity: 1}, '+=0.3');\r\n//tlSurvival.from('.survival-slider .hero-third-scene__grid-item > a', 0.8, {\r\n// opacity: 0,\r\n// stagger: {\r\n// each: 0.3,\r\n// ease: 'power1.out',\r\n// }\r\n//}, '+=0.3');\r\n//tlSurvival.pause();\r\nlet buttons = $('.hero-second-scene__circle-graphics .link');\r\nvar previousTimeline;\r\nvar previousTarget;\r\nvar currentIndex = 0;\r\nexport function CircleScene() {\r\n buttons.on('click', (event) => {\r\n var index = $(event.target).closest('.link').index();\r\n setActive(index, true);\r\n });\r\n\r\n setActive(0, false);\r\n var grid = document.querySelector('.hero-third-scene__grid');\r\n if (isMobile()) {\r\n SnapperInstance.attachLocker(document.querySelector('.hero-third-scene__grid'));\r\n }\r\n}\r\n\r\nfunction setActive(index, animate) {\r\n if (index !== currentIndex) {\r\n $(buttons[currentIndex]).removeClass('active');\r\n $(buttons[index]).addClass('active');\r\n currentIndex = index;\r\n }\r\n if (previousTimeline) {\r\n previousTimeline.progress(1);\r\n previousTimeline.pause();\r\n }\r\n document.querySelector('.slider-wrap.active').classList.remove('active');\r\n var target = $('.slider-wrap:eq(' + index + ')');\r\n target.addClass('active');\r\n var backgrounds = document.querySelectorAll('.solution-backgrounds');\r\n var summaries = document.querySelectorAll('.solution-summary');\r\n for (var i = 0; i < backgrounds.length; i++) {\r\n if (i === index) {\r\n backgrounds[i].classList.add('active');\r\n summaries[i].classList.add('active');\r\n }\r\n else if (backgrounds[i].classList.contains('active')) {\r\n backgrounds[i].classList.remove('active');\r\n summaries[i].classList.remove('active');\r\n }\r\n }\r\n previousTimeline = gsap.timeline();\r\n if (previousTarget) {\r\n previousTimeline.to(previousTarget, .3, { autoAlpha: 0, zIndex: 1 });\r\n }\r\n var links = target.find('.hero-third-scene__grid-item > a');\r\n previousTimeline = gsap.timeline()\r\n .set(target, { autoAlpha: 1, zIndex: 2 });\r\n if (links.length && animate) {\r\n previousTimeline.fromTo(links[0], 0.8, {\r\n autoAlpha: 0,\r\n }, {\r\n autoAlpha: 1\r\n }, '+=0.3');\r\n if (links[1]) {\r\n previousTimeline.fromTo(links[1], 0.8, {\r\n autoAlpha: 0,\r\n }, {\r\n autoAlpha: 1\r\n }, '-=.6');\r\n }\r\n\r\n if (links[3]) {\r\n previousTimeline.fromTo(links[3], 0.8, {\r\n autoAlpha: 0,\r\n }, {\r\n autoAlpha: 1\r\n }, '-=.6');\r\n }\r\n\r\n if (links[2]) {\r\n previousTimeline.fromTo(links[2], 0.8, {\r\n autoAlpha: 0,\r\n }, {\r\n autoAlpha: 1\r\n }, '-=.6');\r\n }\r\n }\r\n else {\r\n previousTimeline.set(links, { autoAlpha: 1 });\r\n }\r\n previousTarget = target;\r\n}\r\n\r\n//if (isMobile()) {\r\n// let items = document.querySelectorAll('.hero-third-scene__grid-item a');\r\n// items.forEach(el => {\r\n// el.addEventListener('click', (e) => {\r\n// if (!el.classList.contains('active-item')) {\r\n// e.preventDefault();\r\n// if (el.parentNode.querySelector('a.active-item')) {\r\n// el.parentNode.querySelector('a.active-item').classList.remove('active-item');\r\n// }\r\n// el.classList.add('active-item');\r\n// }\r\n// });\r\n// });\r\n//}","import { gsap } from 'gsap';\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger.js';\r\nimport { breakpoints, isMobile, isTabletDown } from './isMobile';\r\nimport { SnapperInstance } from './snapper';\r\n\r\ngsap.registerPlugin(ScrollTrigger);\r\n\r\nexport function EightScene() {\r\n\r\n let tl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.seven-section',\r\n start: 'top top',\r\n end: '100%',\r\n scrub: 1,\r\n invalidateOnRefresh: true\r\n }\r\n });\r\n tl.to('.seven-section__text-block', 1, { y: '-=80vh' });\r\n tl.to('.seven-section', 1, { autoAlpha: 0 }, '-=0.2');\r\n tl.to('.eight-section .backgrounds', 1, { autoAlpha: 1 }, '-=1');\r\n tl.fromTo('.eight-section__text-block h2', 1, { autoAlpha: 0 }, { autoAlpha: 1 }, '-=0.5');\r\n tl.fromTo('.eight-section__tab', 1, {\r\n autoAlpha: 0\r\n }, {\r\n autoAlpha: 1,\r\n stagger: {\r\n each: 0.5,\r\n ease: 'power1.out',\r\n }\r\n }, '-=0.3');\r\n var currentIndex = 0;\r\n SnapperInstance.attachLocker(document.querySelector('.eight-section__bg-box'));\r\n var tabs = document.querySelectorAll('.eight-section__tab');\r\n var backgrounds = $('.eight-section .backgrounds div');\r\n var timeline;\r\n var resizeTimeout;\r\n\r\n var settings = {};\r\n settings[breakpoints.tabletDown] = function () {\r\n tabs.forEach((tab, i) => {\r\n tab.removeEventListener('mouseenter', tab._mouseEnterListener);\r\n });\r\n window.removeEventListener('resize', handleResize);\r\n }\r\n settings[breakpoints.desktop] = function () {\r\n tabs.forEach((tab, i) => {\r\n tab._mouseEnterListener = switchBackground(i);\r\n tab.addEventListener('mouseenter', tab._mouseEnterListener);\r\n });\r\n window.addEventListener('resize', handleResize);\r\n }\r\n ScrollTrigger.matchMedia(settings);\r\n\r\n function handleResize() {\r\n clearTimeout(resizeTimeout);\r\n resizeTimeout = setTimeout(function () {\r\n if (currentIndex > 0) {\r\n var offset = index === 0 ? 0 : $(tabs[currentIndex]).offset().left - $(tabs[0]).offset().left;\r\n gsap.to('.eight-section__active-tab', .5, { x: offset });\r\n }\r\n }, 100);\r\n }\r\n\r\n function switchBackground(newIndex) {\r\n return function () {\r\n console.log(newIndex);\r\n if (currentIndex !== newIndex) {\r\n shiftBackground(newIndex);\r\n }\r\n }\r\n }\r\n\r\n function shiftBackground(index) {\r\n var target = $(tabs[index]);\r\n var previous = $(tabs[currentIndex]);\r\n var offset = index === 0 ? 0 : target.offset().left - $(tabs[0]).offset().left;\r\n if (timeline) {\r\n timeline.pause();\r\n gsap\r\n .to(previous.find('span'), .3, { y: 16, opacity: 0 });\r\n }\r\n timeline = gsap.timeline()\r\n .addLabel('start', timeline ? \"+=.15\" : \"+=0\")\r\n .set(backgrounds[currentIndex], { zIndex: 2 })\r\n .set(backgrounds[index], { zIndex: 3 })\r\n .to(backgrounds[index], .5, { opacity: 1 }, \"start\")\r\n .to('.eight-section__active-tab', .5, { x: offset }, \"start\")\r\n .set(backgrounds[currentIndex], { zIndex: 1, opacity: 0 })\r\n .fromTo(target.find('span'), .3, { y: 16, opacity: 0 }, { y: 0, opacity: 1 }, '-=.15');\r\n currentIndex = index;\r\n }\r\n}","import { ScrollTrigger } from 'gsap/ScrollTrigger.js';\r\nimport { DrawSVGPlugin } from '../greensock/DrawSVGPlugin';\r\nimport { gsap } from 'gsap';\r\nimport { CountUp } from 'countup.js';\r\n\r\ngsap.registerPlugin(ScrollTrigger);\r\ngsap.registerPlugin(DrawSVGPlugin);\r\nexport function FiveScene() {\r\n var rawCounts = $('.fifth-section__counter').attr('numbers').split(',');\r\n var counts = [];\r\n for (var i = 0; i < rawCounts.length; i++) {\r\n counts.push(parseInt(rawCounts[i]));\r\n }\r\n const MEALS_COUNT = 924298;\r\n const BLANKETS_COUNT = 32121;\r\n const options = {\r\n duration: 1,\r\n };\r\n\r\n var descriptionContainer = document.querySelector('.fifth-section__description');\r\n var descriptions = descriptionContainer.querySelectorAll('.wrapper');\r\n var icons = document.querySelectorAll('.fifth-section__info-icon > span');\r\n var count = $('#counter');\r\n var previousCounter;\r\n var percent = 100 / counts.length;\r\n\r\n for (var i = 1; i < counts.length; i++) {\r\n let tl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: i === 1 ? '.fifth-section' : '.fifth-section__spacer.stat-' + i,\r\n start: 'top top',\r\n end: '100%',\r\n scrub: 1,\r\n invalidateOnRefresh: true\r\n }\r\n });\r\n tl\r\n .to(icons[i - 1].querySelector('span'), 1, { y: '100%' }, '+=2')\r\n .to(descriptions[i - 1].querySelector('span'), 1, { y: '100%' }, '-=.8')\r\n .to('.fifth-section__counter span', 1, {\r\n y: '0%'\r\n }, '-=.8')\r\n .set(descriptionContainer, { height: function () { return this.clientHeight }.bind(descriptions[i]) })\r\n .to(icons[i], 1, { y: '-100%' }, '+=2')\r\n .to(descriptions[i], 1, { y: '-100%' }, '-=.8')\r\n .to('.fifth-section__counter span', 1, {\r\n y: '-100%',\r\n onStart: function () {\r\n if (previousCounter) {\r\n previousCounter.pauseResume();\r\n }\r\n count.text(0);\r\n },\r\n onComplete: function () {\r\n previousCounter = new CountUp('counter', counts[this], options);\r\n previousCounter.start();\r\n }.bind(i),\r\n onReverseComplete: function () {\r\n count.text(i > 0 ? (counts[this - 1] || 0).toLocaleString() : '0');\r\n }.bind(i)\r\n }, '-=.8')\r\n .fromTo('#statistics-background circle', 2, { drawSVG: percent * i + '%' }, { drawSVG: percent * (i + 1) + '%' })\r\n .addLabel('stat-' + i);\r\n }\r\n\r\n var background = document.querySelector('#statistics-scroll-background');\r\n gsap.set('.main-story-link', { scale: 0.3, y: '-30%', autoAlpha: 0 });\r\n gsap.set('.six-section__text-block', { autoAlpha: 0, y: '50%' });\r\n\r\n let tl2 = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.fifth-section__second-scene',\r\n start: () => 'top top',\r\n end: () => '+=100%',\r\n scrub: 1,\r\n invalidateOnRefresh: true\r\n }\r\n })\r\n .to('.fifth-section__info-wrapper', 2.5, { y: () => '-=20vh' }, '+=2')\r\n .to(background, { duration: 2, y: () => background.clientHeight - document.body.clientHeight }, '-=1.5')\r\n .to('.fifth-section__info-wrapper', 1, { autoAlpha: 0, scale: 0.4 }, '-=1')\r\n .to('.fifth-section', 1, { autoAlpha: 0, zIndex: 'auto' }, '-=0.5')\r\n .to('.six-section__bg', 1, { autoAlpha: 1 }, '-=1')\r\n .to('.main-story-link', 2, { scale: 1, y: 0, autoAlpha: 1 }, '+=1')\r\n .to('.six-section__text-block', 1, { autoAlpha: 1, y: 0 }, '-=1');\r\n}","import { gsap } from 'gsap';\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger.js';\r\nimport { DrawSVGPlugin } from '../greensock/DrawSVGPlugin';\r\nimport { CountUp } from 'countup.js';\r\n\r\ngsap.registerPlugin(ScrollTrigger);\r\ngsap.registerPlugin(DrawSVGPlugin);\r\n\r\nconst MEALS_COUNT = 924298;\r\nconst options = {\r\n duration: 1,\r\n};\r\n\r\nexport function FourScene() {\r\n let tl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.fourth-section',\r\n start: 'top top',\r\n end: '100%',\r\n scrub: 1,\r\n invalidateOnRefresh: true\r\n }\r\n });\r\n\r\n tl.to('.fourth-section__text-block', 5, { y: '-=80vh' });\r\n tl.to('.fourth-section', 1, { opacity: 0, zIndex: 'auto' });\r\n tl\r\n .set('.fifth-section', { 'pointer-events': 'auto', zIndex: 4 })\r\n .set('#statistics-background circle', { drawSVG: '0% 0%' })\r\n .fromTo('.fifth-section__box', 3, { autoAlpha: 0, scale: 1.2 }, { autoAlpha: 1, scale: 1 })\r\n .fromTo('.fifth-section__info-wrapper', 1, {\r\n autoAlpha: 0, y: '30vh'\r\n }, {\r\n autoAlpha: 1, y: 0\r\n }, '-=0.5');\r\n\r\n var rawCounts = $('.fifth-section__counter').attr('numbers').split(',');\r\n var counts = [];\r\n for (var i = 0; i < rawCounts.length; i++) {\r\n counts.push(parseInt(rawCounts[i]));\r\n }\r\n\r\n var descriptionContainer = $('.fifth-section__description');\r\n var descriptions = descriptionContainer.find('> span');\r\n var icons = $('.fifth-section__info-icon > span');\r\n var count = $('#counter');\r\n var previousCounter;\r\n var percent = 100 / counts.length;\r\n tl\r\n .set(descriptionContainer, { height: () => descriptions[0].clientHeight })\r\n .to(icons[0], { duration: 1, y: '-100%' }, '+=2')\r\n .to(descriptions[0], { duration: 1, y: '-100%' }, '-=.8')\r\n .to('.fifth-section__counter > span', 1, {\r\n y: '-100%',\r\n onStart: function () {\r\n if (previousCounter) {\r\n previousCounter.pauseResume();\r\n }\r\n count.text(0);\r\n },\r\n onComplete: function () {\r\n previousCounter = new CountUp('counter', counts[0], options);\r\n previousCounter.start();\r\n },\r\n onReverseComplete: function () {\r\n count.text('0');\r\n }\r\n }, '-=.8')\r\n .fromTo('#statistics-background circle', 2, { drawSVG: '0%' }, { drawSVG: percent + '%' });\r\n}","import { gsap } from 'gsap';\r\nimport { breakpoints, isTabletDown } from './isMobile';\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger.js';\r\nimport { DrawSVGPlugin } from '../greensock/DrawSVGPlugin';\r\nimport { SnapperInstance } from './snapper';\r\ngsap.registerPlugin(ScrollTrigger);\r\ngsap.registerPlugin(DrawSVGPlugin);\r\n\r\nvar searchContainer = $('#search-container');\r\nvar searchInput = searchContainer.find('input');\r\nvar searchOverlay = $('#search-overlay');\r\nvar scroller = $('#content');\r\nvar tl = gsap.timeline({\r\n paused: true,\r\n onStart: function () {\r\n searchInput.val('');\r\n },\r\n onComplete: function () {\r\n searchInput.focus();\r\n }\r\n})\r\n .to(searchContainer.find('form'), .6, { width: 220 })\r\n .to(searchOverlay, .6, { delay: -.6, autoAlpha: 1 });\r\nvar open = false;\r\nsearchContainer\r\n .on('submit', function (event) {\r\n if (!open) {\r\n event.preventDefault();\r\n open = true;\r\n tl.play();\r\n }\r\n else {\r\n tl.reverse();\r\n }\r\n });\r\nsearchInput\r\n .on('blur', function () {\r\n open = false;\r\n tl.reverse();\r\n });\r\nif (scroller.length) {\r\n var settings = {};\r\n var desktopSettings = function () {\r\n gsap.timeline({\r\n scrollTrigger: {\r\n trigger: scroller.find('> *:first-child'),\r\n scroller: scroller,\r\n start: 0,\r\n end: 100,\r\n scrub: true\r\n }\r\n })\r\n .to('.header__banner', 1, { height: 0 })\r\n .to('.header__container .grid-container', 1, { height: '7rem' })\r\n .to('.header__logo', 1, { marginTop: '-=1.125rem' }, '-=1');\r\n }\r\n var mobileSettings = function () {\r\n gsap.timeline({\r\n scrollTrigger: {\r\n trigger: scroller.find('> *:first-child'),\r\n scroller: scroller,\r\n start: 0,\r\n end: 100,\r\n scrub: true\r\n }\r\n })\r\n .to('.header__banner', 1, { height: 0 })\r\n .to('.header__container .grid-container', 1, { height: '5.688rem' })\r\n .to('.header__logo', 1, { marginTop: '-=1.125rem' }, '-=1');\r\n }\r\n settings[breakpoints.desktop] = desktopSettings;\r\n settings[breakpoints.mobile] = mobileSettings;\r\n settings[breakpoints.tablet] = desktopSettings;\r\n ScrollTrigger.matchMedia(settings);\r\n}\r\n\r\nvar header = document.querySelector('.header');\r\nvar subMenus = document.querySelectorAll('.header__middle > nav > ul > li');\r\n\r\nsubMenus.forEach(menu => {\r\n menu.addEventListener('mouseenter', () => {\r\n menu.classList.add('active');\r\n var navbar = menu.querySelector('.header__navbar');\r\n var navbarItem = navbar.querySelector('.header__navbar-item');\r\n SnapperInstance.lock();\r\n var height = Math.min(navbarItem.clientHeight + 112, document.body.clientHeight - header.clientHeight - 16);\r\n if (height < navbarItem.clientHeight + 112) {\r\n gsap.set(navbar, {\r\n overflowY: 'auto',\r\n overflowX: 'hidden'\r\n });\r\n height = Math.min(navbarItem.clientHeight + 112, document.body.clientHeight - header.clientHeight - 16);\r\n }\r\n menu._timeline = gsap.timeline()\r\n .to(navbar, {\r\n duration: .3,\r\n autoAlpha: 1,\r\n height: height,\r\n paddingTop: 56,\r\n paddingBottom: 56,\r\n onReverseComplete: () => {\r\n menu.classList.remove('active');\r\n gsap.set(navbar, {\r\n clearProps: 'all'\r\n });\r\n }\r\n });\r\n });\r\n menu.addEventListener('mouseleave', () => {\r\n SnapperInstance.unlock();\r\n menu._timeline.reverse();\r\n });\r\n});\r\n\r\ndocument.fonts.ready.then(function () {\r\n subMenus.forEach(menu => {\r\n menu.querySelector('.spacer').style.width = menu.clientWidth + 'px';\r\n });\r\n});\r\n\r\nvar donateButtons = document.querySelectorAll('.header .btn-donate');\r\ndonateButtons.forEach(button => {\r\n var svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\r\n var radius = button.clientHeight / 2 + 2;\r\n var innerRadius = radius - 1;\r\n button._previousWidth = button.clientWidth;\r\n var width = button.clientWidth + 4;\r\n var height = button.clientHeight + 4;\r\n svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);\r\n var path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\r\n path.setAttribute('d',\r\n `M ${radius} 1 L ${width - radius} 1 A ${innerRadius} ${innerRadius} 180 0 1 ${width - radius} ${height - 1} L ${radius} ${height - 1} A ${innerRadius} ${innerRadius} 180 0 1 ${radius} 1 Z`\r\n )\r\n var path2 = path.cloneNode();\r\n svg.appendChild(path);\r\n svg.appendChild(path2);\r\n button.append(svg);\r\n button._timeline = gsap.timeline({\r\n repeat: -1\r\n })\r\n .fromTo(path, { drawSVG: '0% 25%' }, { duration: 2.1, drawSVG: '75% 100%', ease: 'linear' })\r\n .to(path, { duration: .7, drawSVG: '100% 100%', ease: 'linear' })\r\n .fromTo(path2, { drawSVG: '0%' }, { duration: .7, drawSVG: '0 25%', ease: 'linear' }, '-=.7');\r\n});\r\n\r\nvar resizeTimeout;\r\n\r\nwindow.addEventListener('resize', () => {\r\n clearTimeout(resizeTimeout);\r\n resizeTimeout = setTimeout(() => {\r\n donateButtons.forEach(button => {\r\n if (button._previousWidth !== button.clientWidth) {\r\n button._timeline.kill();\r\n var svg = button.querySelector('svg');\r\n var radius = button.clientHeight / 2 + 2;\r\n var innerRadius = radius - 1;\r\n button._previousWidth = button.clientWidth;\r\n var width = button.clientWidth + 4;\r\n var height = button.clientHeight + 4;\r\n svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);\r\n var paths = svg.querySelectorAll('path');\r\n gsap.set(paths, { clearProps: 'all' });\r\n paths.forEach(path => {\r\n path.setAttribute('d',\r\n `M ${radius} 1 L ${width - radius} 1 A ${innerRadius} ${innerRadius} 180 0 1 ${width - radius} ${height - 1} L ${radius} ${height - 1} A ${innerRadius} ${innerRadius} 180 0 1 ${radius} 1 Z`\r\n )\r\n });\r\n button._timeline = gsap.timeline({\r\n repeat: -1\r\n })\r\n .fromTo(paths[0], { drawSVG: '0% 25%' }, { duration: 2.1, drawSVG: '75% 100%', ease: 'linear' })\r\n .to(paths[0], { duration: .7, drawSVG: '100% 100%', ease: 'linear' })\r\n .fromTo(paths[1], { drawSVG: '0%' }, { duration: .7, drawSVG: '0 25%', ease: 'linear' }, '-=.7');\r\n }\r\n })\r\n\r\n }, 100);\r\n})","import { gsap } from 'gsap';\r\nimport { isMobile, isTablet, isTabletDown } from './isMobile';\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger.js';\r\nimport { ScrollToPlugin } from 'gsap/ScrollToPlugin';\r\nimport { SnapperInstance } from './snapper';\r\n\r\ngsap.registerPlugin(ScrollTrigger);\r\ngsap.registerPlugin(ScrollToPlugin);\r\n\r\nexport function HeroScene() {\r\n var hasVideo = document.getElementById('intro-video');\r\n var hasMobileVideo = document.getElementById('intro-video-mobile');\r\n\r\n if (hasMobileVideo && hasVideo) {\r\n hasVideo.style.display = isMobile() ? 'none' : ''\r\n }\r\n\r\n\r\n window.addEventListener('resize', () => {\r\n if (hasMobileVideo && hasVideo) {\r\n hasVideo.style.display = isMobile() ? 'none' : ''\r\n }\r\n });\r\n\r\n $('.hero__scroll-down-icon').on('click', function () {\r\n SnapperInstance.snapTo(1);\r\n })\r\n var heroContainer = document.querySelector('.hero__clip-container');\r\n var heroImage = $('.hero__img-block');\r\n var pos = heroImage.attr('focal-point').split(',');\r\n var rawWidth = parseInt(heroImage.attr('raw-width'));\r\n var rawHeight = parseInt(heroImage.attr('raw-height'));\r\n var width = parseInt(heroImage.attr('current-width'));\r\n var height = parseInt(heroImage.attr('current-height'));\r\n var textBlock = document.querySelector('.hero-second-scene__text-block');\r\n var textAlignment = heroImage.attr('text-align');\r\n var header = document.querySelector('.header__container');\r\n var rawRatio = rawWidth / rawHeight;\r\n var ratio = width / height;\r\n if (heroImage.width() / heroImage.height() < ratio) {\r\n heroImage.width(heroImage.height() * ratio);\r\n }\r\n if (width > rawWidth && rawRatio < ratio) {\r\n rawHeight = width / rawWidth * rawHeight;\r\n rawWidth = width;\r\n }\r\n else if (height > rawHeight) {\r\n rawWidth = height / rawHeight * rawWidth;\r\n rawHeight = height;\r\n }\r\n var oldFocalPoint = pos.length < 3 ? {\r\n x: parseFloat(pos[1]),\r\n y: parseFloat(pos[0])\r\n } : {\r\n x: (parseFloat(pos[0]) + parseFloat(pos[2])) / 2,\r\n y: (parseFloat(pos[1]) + parseFloat(pos[2])) / 2\r\n };\r\n if (pos.length > 2) {\r\n var scale = 1 / (parseFloat(pos[3]) - parseFloat(pos[0]));\r\n rawWidth *= scale;\r\n rawHeight *= scale;\r\n }\r\n var centerX = width / 2;\r\n var centerY = height / 2;\r\n var oldX = oldFocalPoint.x * rawWidth;\r\n var oldY = oldFocalPoint.y * rawHeight;\r\n var targetRadius = window.innerWidth * .144;\r\n var endPoint = {\r\n x: window.innerWidth * .27916,\r\n y: window.innerHeight * .5 + header.clientHeight / 2\r\n }\r\n if (isTablet()) {\r\n targetRadius = 150;\r\n endPoint = {\r\n x: window.innerWidth * .5,\r\n y: heroContainer.clientHeight * .5\r\n }\r\n }\r\n else if (isMobile()) {\r\n targetRadius = 94;\r\n endPoint = {\r\n x: window.innerWidth * .5,\r\n y: heroContainer.clientHeight * .5\r\n }\r\n }\r\n\r\n targetRadius * 3.333333;\r\n var upScale = (rawWidth / width);\r\n var scaledCenterX = centerX * upScale;\r\n var scaledCenterY = centerY * upScale;\r\n var newStartX = oldX - scaledCenterX;\r\n var newEndX = oldX + scaledCenterX;\r\n if (newStartX < 0) {\r\n newEndX -= newStartX;\r\n newStartX = 0;\r\n }\r\n else if (newEndX > rawWidth) {\r\n newStartX -= (newEndX - rawWidth);\r\n newEndX = rawWidth;\r\n }\r\n\r\n var newStartY = oldY - scaledCenterY;\r\n var newEndY = oldY + scaledCenterY;\r\n if (newStartY < 0) {\r\n newEndY -= newStartY;\r\n newStartY = 0;\r\n }\r\n else if (newEndY > rawHeight) {\r\n newStartY -= (newEndY - rawHeight);\r\n newEndY = rawHeight;\r\n }\r\n\r\n var newFocalPoint = {\r\n x: (oldX - newStartX) / (width * upScale),\r\n y: (oldY - newStartY) / (height * upScale)\r\n };\r\n\r\n var imageWidth = heroImage.width();\r\n var imageHeight = heroImage.height();\r\n var shrunkWidth = imageWidth * .4;\r\n var shrunkHeight = imageHeight * .4;\r\n var shift = (heroContainer.clientWidth - heroImage.width()) / 2;\r\n if (isMobile()) {\r\n shift = textAlignment === 'right' ? -(shrunkWidth * newFocalPoint.x) : heroContainer.clientWidth - heroImage.width();\r\n }\r\n\r\n var boundaries = {\r\n top: shrunkHeight * newFocalPoint.y,\r\n right: (imageWidth * .6) + shrunkWidth * newFocalPoint.x,\r\n bottom: (imageHeight * .6) + shrunkHeight * newFocalPoint.y,\r\n left: shrunkWidth * newFocalPoint.x\r\n };\r\n var targetBoundaries = {\r\n top: endPoint.y - targetRadius,\r\n right: endPoint.x + targetRadius,\r\n bottom: endPoint.y + targetRadius,\r\n left: endPoint.x - targetRadius\r\n }\r\n var ratio = Math.max(width / imageWidth, height / imageHeight);\r\n var xPos = newFocalPoint.x * 100;\r\n var yPos = newFocalPoint.y * 100;\r\n gsap.set(heroImage, {\r\n transformOrigin: xPos + '% ' + yPos + '%',\r\n x: shift\r\n });\r\n var offset = {\r\n x: endPoint.x - newFocalPoint.x * heroImage.width(),\r\n y: endPoint.y - newFocalPoint.y * heroImage.height()\r\n }\r\n if (offset.y > targetBoundaries.top - boundaries.top) {\r\n offset.y = targetBoundaries.top - boundaries.top;\r\n }\r\n if (offset.y < targetBoundaries.bottom - boundaries.bottom) {\r\n offset.y = targetBoundaries.bottom - boundaries.bottom;\r\n }\r\n if (offset.x > targetBoundaries.left - boundaries.left) {\r\n offset.x = targetBoundaries.left - boundaries.left;\r\n }\r\n if (offset.x < targetBoundaries.right - boundaries.right) {\r\n offset.x = targetBoundaries.right - boundaries.right;\r\n }\r\n\r\n if (!hasVideo || !hasMobileVideo) {\r\n gsap.to(heroImage, 1, {\r\n x: offset.x,\r\n y: offset.y,\r\n scale: .6,\r\n scrollTrigger: {\r\n trigger: '.hero',\r\n start: 'bottom 50%',\r\n end: '100%',\r\n scrub: 1\r\n },\r\n });\r\n }\r\n else {\r\n gsap.set(heroImage, {\r\n x: offset.x,\r\n y: offset.y,\r\n scale: .6\r\n });\r\n }\r\n\r\n\r\n //ScrollTrigger.create({\r\n // trigger: '.hero',\r\n // start: 'top top',\r\n // end: '300%',\r\n // pin: '.hero__clip-container',\r\n // pinSpacing: false,\r\n // scrub: 1,\r\n //});\r\n\r\n let tl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.hero',\r\n start: 'top top',\r\n end: '100%',\r\n scrub: 1,\r\n }\r\n })\r\n\r\n if (document.querySelector(\".header__banner\") != null) {\r\n if (document.body.clientWidth < 768) {\r\n tl.to('.header__banner', 1, { maxHeight: 0 }).fromTo(\"#navigator\", 1, { height: window.innerHeight - (document.querySelector(\".header__banner\").clientHeight + document.querySelector(\".header__container\").clientHeight) + \"px\" }, { height: window.innerHeight - document.querySelector(\".header__container\").clientHeight + \"px\" }, '-=1');\r\n }\r\n else {\r\n tl.to('.header__banner', 1, { maxHeight: 0 })\r\n }\r\n }\r\n if (!isTabletDown()) {\r\n tl.to('.header__container .grid-container', 1, { height: '7rem' }, '-=1');\r\n tl.to('.header__logo', 1, { marginTop: '-=1.125rem' }, '-=1');\r\n if (hasVideo || hasMobileVideo) {\r\n tl.set('.hero__clip-container', { clipPath: 'circle(14.4vw at 27.916vw ' + endPoint.y + 'px)' }, ' -= 1');\r\n }\r\n else {\r\n tl.to('.hero__clip-container', 5, { clipPath: 'circle(14.4vw at 27.916vw ' + endPoint.y + 'px)' }, '-=1');\r\n }\r\n } else if (isTablet()) {\r\n if (hasVideo || hasMobileVideo) {\r\n tl\r\n .set('.hero__clip-container', { clipPath: 'circle(150px at 50% 50%)', y: 16 + textBlock.clientHeight }, '-=1');\r\n }\r\n else {\r\n tl\r\n .to('.hero__clip-container', 5, { clipPath: 'circle(150px at 50% 50%)', y: 16 + textBlock.clientHeight }, '-=1')\r\n }\r\n }\r\n else {\r\n if (hasVideo || hasMobileVideo) {\r\n tl.set('.hero__clip-container', { clipPath: 'circle(94px at 50% 50%)', y: 16 + textBlock.clientHeight }, '-=1');\r\n } else {\r\n tl.to('.hero__clip-container', 5, { clipPath: 'circle(94px at 50% 50%)', y: 16 + textBlock.clientHeight }, '-=1');\r\n }\r\n }\r\n if (!hasVideo || !hasMobileVideo) {\r\n tl.to('.hero__text-block', 5, { y: () => '-=145vh' }, '-=4.5');\r\n }\r\n else {\r\n if (hasVideo.style.display != 'none') {\r\n tl.to('#intro-video', 3, { autoAlpha: 0, zIndex: 1 });\r\n }\r\n\r\n if (hasMobileVideo.style.display != 'none') {\r\n tl.to('#intro-video-mobile', 3, { autoAlpha: 0, zIndex: 1 });\r\n }\r\n }\r\n tl.to('.hero__scroll-down-icon', 1, { opacity: 0 });\r\n if (hasVideo || hasMobileVideo) {\r\n tl.to('.hero__clip-container', 1, { autoAlpha: 1 });\r\n }\r\n tl.to('.hero-second-scene__text-block h2', 1, { opacity: 1 }, hasVideo || hasMobileVideo ? '-=.5' : '+=2.5');\r\n tl.to('.hero-second-scene__text-block p', 1, { opacity: 1 }, '-=0.9');\r\n}","import { gsap } from 'gsap';\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger.js';\r\nimport { MotionPathPlugin } from 'gsap/MotionPathPlugin';\r\nimport { isMobile, isTabletDown, isTablet } from './isMobile';\r\n\r\ngsap.registerPlugin(ScrollTrigger);\r\ngsap.registerPlugin(MotionPathPlugin);\r\nexport function HeroSecondScene() {\r\n //ScrollTrigger.create({\r\n // trigger: '.hero-second-scene',\r\n // start: () => 'top top',\r\n // end: () => '+=75%',\r\n // pinSpacing: false,\r\n // pin: '.hero-second-scene__grid',\r\n // scrub: 1,\r\n //});\r\n if (!isTabletDown()) {\r\n //ScrollTrigger.create({\r\n // trigger: '.hero-second-scene',\r\n // start: () => 'top top',\r\n // end: () => '+=500%',\r\n // pinSpacing: false,\r\n // pin: '.hero-second-scene__circle-graphics',\r\n // scrub: 1,\r\n //});\r\n\r\n //ScrollTrigger.create({\r\n // trigger: '.hero-second-scene',\r\n // start: () => 'top top',\r\n // end: () => '+=50%',\r\n // pinSpacing: false,\r\n // pin: '.hero-second-scene__text-block',\r\n // scrub: 1,\r\n //});\r\n\r\n let tl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.hero-second-scene',\r\n start: () => 'top top',\r\n end: () => '+=50%',\r\n scrub: 1,\r\n }\r\n });\r\n tl\r\n .set('.hero', { zIndex: 5, pointerEvents: 'none' })\r\n .to('#marker-path', {\r\n duration: .001,\r\n motionPath: {\r\n path: '#arrow-path',\r\n align: '#arrow-path',\r\n autoRotate: true,\r\n alignOrigin: [.5, .5]\r\n }\r\n })\r\n .to('.hero-second-scene__text-block', 1, { autoAlpha: 0 }, '+=1.2')\r\n .to('.hero__clip-container', 2, { scale: 0.5, y: () => '+=0.6%', transformOrigin: '25% center' }, '-=.4')\r\n .to('.hero-second-scene__circle-graphics', 3, {\r\n rotate: 0\r\n //onComplete: function () {\r\n // gsap.set('.hero-third-scene .slider-wrap:first-child', { autoAlpha: 1 })\r\n // gsap.fromTo('.hero-third-scene .slider-wrap:first-child .hero-third-scene__grid-item > a',\r\n // {\r\n // opacity: 0\r\n // },\r\n // {\r\n // opacity: 1,\r\n // duration: 0.3,\r\n // stagger: {\r\n // each: 0.3,\r\n // ease: 'power1.out',\r\n // }\r\n // }\r\n // );\r\n //},\r\n }, '-=.6')\r\n .to('.hero-third-scene__grid', { duration: 1, autoAlpha: 1 })\r\n .set('.hero-second-scene__circle-graphics', { pointerEvents: 'none' })\r\n .set('.hero-second-scene__circle-graphics > div', { pointerEvents: 'auto' });\r\n\r\n\r\n gsap.to('.hero-second-scene__circle-graphics', 1, {\r\n autoAlpha: 1,\r\n scrollTrigger: {\r\n trigger: '.hero-second-scene',\r\n start: () => 'top top',\r\n end: () => '+=50%',\r\n scrub: 1,\r\n }\r\n });\r\n } else {\r\n //ScrollTrigger.create({\r\n // trigger: '.hero-second-scene',\r\n // start: () => 'top top',\r\n // end: () => '+=300%',\r\n // pinSpacing: false,\r\n // pin: '.hero-second-scene__circle-graphics',\r\n // scrub: 1,\r\n //});\r\n\r\n //ScrollTrigger.create({\r\n // trigger: '.hero-second-scene',\r\n // start: () => 'top top',\r\n // end: () => '+=100%',\r\n // pinSpacing: false,\r\n // pin: '.hero-second-scene__text-block',\r\n // scrub: 1,\r\n //});\r\n\r\n var circleSvg = document.querySelector('.hero-second-scene__circle-graphics svg');\r\n //var imageBlock = document.querySelector('.hero__img-block');\r\n var clipContainer = document.querySelector('.hero__clip-container');\r\n //var textBlock = document.querySelector('.hero-second-scene__text-block');\r\n var hero = document.querySelector('.hero');\r\n\r\n let tl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.hero-second-scene',\r\n start: () => 'top top',\r\n end: () => '+=100%',\r\n scrub: 1,\r\n onEnter: function () {\r\n hero.style.pointerEvents = 'none';\r\n },\r\n onEnterBack: function () {\r\n hero.style.pointerEvents = 'auto';\r\n },\r\n }\r\n });\r\n tl\r\n .set('.hero', { zIndex: 5, pointerEvents: 'none' })\r\n .to('#marker-path', {\r\n duration: .001,\r\n motionPath: {\r\n path: '#arrow-path',\r\n align: '#arrow-path',\r\n autoRotate: true,\r\n alignOrigin: [.5, .5]\r\n }\r\n })\r\n .to('.hero-second-scene__text-block', 1, { autoAlpha: 0 }, '+=1.2')\r\n .to('.hero__clip-container', 1, { scale: () => isTablet() ? '.6' : '-=0.07', y: () => { return circleSvg.getBoundingClientRect().top - 91 + (circleSvg.clientHeight - clipContainer.clientHeight) / 2; } }, '-=0.4')\r\n .to('.hero-second-scene__circle-graphics', 3, {\r\n rotate: 0,\r\n //onComplete: function () {\r\n // gsap.set('.hero-third-scene .slider-wrap:first-child', { autoAlpha: 1 })\r\n // gsap.fromTo('.hero-third-scene .slider-wrap:first-child .hero-third-scene__grid-item > a',\r\n // {\r\n // opacity: 0\r\n // },\r\n // {\r\n // opacity: 1,\r\n // duration: 0.3,\r\n // stagger: {\r\n // each: 0.3,\r\n // ease: 'power1.out',\r\n // }\r\n // }\r\n // );\r\n //},\r\n }, '-=.6')\r\n .to('.hero-third-scene__grid', { duration: 1, autoAlpha: 1 })\r\n .set('.hero-second-scene', { zIndex: 4, pointerEvents: 'none' })\r\n .set('.hero-second-scene__circle-graphics', { pointerEvents: 'auto' })\r\n .set('.hero-third-scene', { zIndex: 3 });\r\n\r\n gsap.to('.hero-second-scene__circle-graphics', 1, {\r\n autoAlpha: 1,\r\n scrollTrigger: {\r\n trigger: '.hero-second-scene',\r\n start: () => '80% top',\r\n end: () => '+=20%',\r\n scrub: 1,\r\n }\r\n });\r\n }\r\n}","import { gsap } from 'gsap';\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger.js';\r\nimport { isMobile, isTabletDown } from './isMobile';\r\n\r\ngsap.registerPlugin(ScrollTrigger);\r\n\r\nexport function HeroThirdScene() {\r\n let tl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.hero-second-scene',\r\n start: () => '100% top',\r\n end: () => '+=50%',\r\n scrub: 1,\r\n }\r\n });\r\n\r\n tl\r\n .set('.hero-second-scene', { zIndex: 4, pointerEvents: 'none' });\r\n if (!isTabletDown()) {\r\n tl\r\n .to('.hero-third-scene__grid', 1, { y: () => '-=80vh' });\r\n } else {\r\n tl\r\n .to('.hero-second-scene__circle-graphics', 1, { autoAlpha: 0, pointerEvents: 'none' }, '-=1')\r\n .to('.hero__clip-container', 1, { autoAlpha: 0 }, '-=1')\r\n .to('.hero-third-scene__grid', 3, { y: () => '-=50vh', autoAlpha: 0 }, '-=1')\r\n .set('.third-section', { zIndex: 4 })\r\n .set('.hero-second-scene', { zIndex: 6 });\r\n }\r\n}","export function isMobile() {\r\n return window.innerWidth <= 767;\r\n}\r\n\r\nexport function isTablet() {\r\n return window.innerWidth <= 1200 && window.innerWidth > 767;\r\n}\r\n\r\nexport function isTabletDown() {\r\n return window.innerWidth <= 1200;\r\n}\r\n\r\nexport let breakpoints = {\r\n mobile: '(max-width: 767px)',\r\n tablet: '(min-width: 768px) and (max-width: 1200px)',\r\n tabletDown: '(max-width: 1200px)',\r\n tabletUp: '(min-width: 768px)',\r\n desktop: '(min-width: 1201px)'\r\n}","import { gsap } from 'gsap';\r\nimport { isTabletDown } from './isMobile';\r\nif (isTabletDown()) {\r\n let openMenuBtn = document.querySelector('.menu-toggle');\r\n let mobileMenu = document.querySelector('.mobile-menu');\r\n let mobileMenuNavLinks = document.querySelectorAll('.mobile-menu .sub-menu-link');\r\n let back = document.querySelector('.mobile-menu .back');\r\n let searchBtn = document.querySelector('#search-container');\r\n let donateButtonPlacement = document.querySelector('#donate-button');\r\n let header = document.querySelector('.header');\r\n let isSubmenuOpen = false;\r\n var menuOpen = false;\r\n let timeLine;\r\n let timeLineSubMenu;\r\n let timeLineBack;\r\n \r\n openMenuBtn.addEventListener('click', () => {\r\n if (!menuOpen) {\r\n mobileMenu.style.height = (document.body.clientHeight - header.clientHeight) + 'px';\r\n openMenuBtn.classList.add('active');\r\n mobileMenu.classList.add('open');\r\n document.body.classList.add('open-menu');\r\n searchBtn.classList.add('show');\r\n donateButtonPlacement.classList.add('hide');\r\n timeLine = gsap.timeline();\r\n timeLine.to('.mobile-menu li', 0.5, {\r\n opacity: 1,\r\n x: '-=20vw',\r\n stagger: {\r\n each: 0.1,\r\n ease: 'power2.out',\r\n },\r\n });\r\n menuOpen = true;\r\n }\r\n else {\r\n\r\n if (timeLineBack) {\r\n timeLineBack.seek(0).pause();\r\n timeLineBack = null;\r\n }\r\n\r\n if (timeLineSubMenu) {\r\n timeLineSubMenu.seek(0).pause();\r\n timeLineSubMenu = null;\r\n }\r\n\r\n let activeSubmenu = document.querySelector('.sub-menu.open');\r\n if (activeSubmenu) {\r\n let activeSubmenuLinks = activeSubmenu.querySelectorAll('a');\r\n gsap.set(activeSubmenu, { clearProps: 'all' });\r\n gsap.set(activeSubmenuLinks, { clearProps: 'all' });\r\n gsap.set('.back', { clearProps: 'all' });\r\n activeSubmenu.classList.remove('open');\r\n isSubmenuOpen = false; \r\n }\r\n\r\n gsap.set('.mobile-menu li', { clearProps: 'all' });\r\n timeLine.seek(0).pause();\r\n menuOpen = false;\r\n timeLine = null;\r\n mobileMenu.classList.remove('open');\r\n document.body.classList.remove('open-menu');\r\n searchBtn.classList.remove('show');\r\n donateButtonPlacement.classList.remove('hide');\r\n openMenuBtn.classList.remove('active');\r\n \r\n \r\n /*if (isSubmenuOpen) {\r\n goBack();\r\n setTimeout(() => {\r\n closeMenu();\r\n }, 3000);\r\n }\r\n else {\r\n closeMenu();\r\n }*/\r\n }\r\n });\r\n\r\n \r\n\r\n back.addEventListener('click', () => {\r\n // console.log('test');\r\n goBack();\r\n });\r\n\r\n function setMenuNavLinksEvent() {\r\n mobileMenuNavLinks.forEach(el => {\r\n el.addEventListener('click', (e) => {\r\n if (document.querySelector('.sub-menu.open')) {\r\n e.stopPropagation();\r\n return;\r\n }\r\n\r\n isSubmenuOpen = true;\r\n timeLineSubMenu = null;\r\n timeLineSubMenu = gsap.timeline();\r\n const index = $(e.target).parent().index();\r\n if (index !== -1) {\r\n e.preventDefault();\r\n const submenu = document.querySelectorAll('.sub-menu')[index];\r\n const submenuLinks = submenu.querySelectorAll('a.sub-menu-link');\r\n\r\n timeLineSubMenu.set('.back', { visibility: 'visible' })\r\n .to('.mobile-menu li', 0.5, {\r\n opacity: 0,\r\n x: '-=40vw',\r\n stagger: {\r\n each: 0.1,\r\n ease: 'power2.out',\r\n },\r\n });\r\n timeLineSubMenu.to('.socials', 0.5, {\r\n opacity: 0,\r\n onComplete: () => {\r\n submenu.classList.add('open');\r\n }\r\n });\r\n timeLineSubMenu.to(submenuLinks, 1, {\r\n opacity: 1,\r\n x: '-=20vw',\r\n stagger: {\r\n each: 0.1,\r\n ease: 'power2.out',\r\n },\r\n delay: 1,\r\n onComplete: () => {\r\n timeLineSubMenu\r\n .to('.sub-menu .contact-block', 0.5, { opacity: 1, x: '-=20vw', })\r\n .to('.sub-menu .navbar-socials', 0.5, { opacity: 1, x: '-=20vw', })\r\n .to('.back', 0.5, { opacity: 1, x: '-=20vw',});\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n setMenuNavLinksEvent();\r\n \r\n function goBack() {\r\n let activeSubmenu = document.querySelector('.sub-menu.open');\r\n let activeSubmenuLinks = activeSubmenu?.querySelectorAll('a.sub-menu-link');\r\n\r\n timeLineBack = gsap.timeline();\r\n timeLineBack.to('.back', 0.5, { opacity: 0, x: '+=20vw',})\r\n .to('.sub-menu .contact-block', 0.5, { opacity: 0, x: '+=20vw', })\r\n .to('.sub-menu .navbar-socials', 0.5, { opacity: 0, x: '+=20vw', })\r\n .set('.back', { visibility: 'hidden' });\r\n timeLineBack.to(activeSubmenuLinks, 1, {\r\n opacity: 0,\r\n x: '+=20vw',\r\n stagger: {\r\n each: 0.1,\r\n ease: 'power2.out',\r\n },\r\n delay: 0.5,\r\n onComplete: () => {\r\n timeLineBack.to('.mobile-menu li', 0.5, {\r\n opacity: 1,\r\n x: '+=40vw',\r\n stagger: {\r\n each: 0.1,\r\n ease: 'power2.out',\r\n },\r\n onComplete: () => {\r\n timeLineBack.to('.socials', 0.5, {\r\n opacity: 1,\r\n onComplete: () => {\r\n activeSubmenu.classList.remove('open');\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n isSubmenuOpen = false;\r\n }\r\n \r\n function closeMenu() {\r\n gsap.to('.mobile-menu li', 0.5, {\r\n opacity: 0,\r\n x: '20vw',\r\n stagger: {\r\n each: 0.1,\r\n ease: 'power2.out',\r\n },\r\n onComplete: function() {\r\n mobileMenu.classList.remove('open');\r\n document.body.classList.remove('open-menu');\r\n searchBtn.classList.remove('show');\r\n donateButtonPlacement.classList.remove('hide');\r\n }\r\n });\r\n openMenuBtn.classList.remove('active');\r\n menuOpen = false;\r\n }\r\n}\r\n","import { gsap } from 'gsap';\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger.js';\r\nimport { SnapperInstance } from './snapper';\r\n\r\ngsap.registerPlugin(ScrollTrigger);\r\nexport function NineScene() {\r\n\r\n var content = document.querySelector('.nine-section');\r\n SnapperInstance.attachLocker(content);\r\n\r\n let tl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.eight-section',\r\n start: 'top top',\r\n end: '100%',\r\n scrub: 1,\r\n invalidateOnRefresh: true\r\n }\r\n });\r\n tl.set('.eight-section', { pointerEvents: 'none' });\r\n tl.to('.eight-section__text-block', 1, { y: '-=80vh' }, '+=2');\r\n tl.to('.eight-section, .first-bg, .second-bg, .third-bg, .overlay', 1, { opacity: 0 }, '-=0.1');\r\n tl.to('.nine-section__bg', 1, { opacity: 1 }, '-=1');\r\n tl.fromTo('.nine-section__text-block', 1, { y: '+=80vh', autoAlpha: 0 }, { y: 0, autoAlpha: 1 });\r\n if (content.getElementsByTagName('h2').length) {\r\n tl.fromTo('.nine-section h2', 1, { y: '+=10vh', autoAlpha: 0 }, { y: 0, autoAlpha: 1 }, '-=0.3');\r\n }\r\n if (content.getElementsByTagName('p').length) {\r\n tl.fromTo('.nine-section p', 1, { y: '+=10vh', autoAlpha: 0 }, { y: 0, autoAlpha: 1 }, '-=0.6');\r\n }\r\n tl.fromTo('.nine-section__img-block', 1, { y: '+=10vh', autoAlpha: 0 }, { y: 0, autoAlpha: 1 }, '-=0.6');\r\n}","import Splide from '@splidejs/splide';\r\nimport { isMobile } from './isMobile';\r\n\r\nlet popupSliderOptions;\r\n\r\nif (!isMobile()) {\r\n popupSliderOptions = {\r\n type: 'slide',\r\n perPage: 3,\r\n perMove: 1,\r\n focus: 'center',\r\n trimSpace: false,\r\n arrows: true,\r\n start: 1,\r\n pagination: false,\r\n gap: '',\r\n autoHeight: true,\r\n autoWidth: true,\r\n speed: 300\r\n };\r\n} else {\r\n popupSliderOptions = {\r\n type: 'slide',\r\n perPage: 1,\r\n perMove: 1,\r\n focus: 'center',\r\n trimSpace: false,\r\n arrows: true,\r\n start: 1,\r\n pagination: false,\r\n gap: '',\r\n autoHeight: true,\r\n autoWidth: true,\r\n speed: 300\r\n }\r\n}\r\nlet popupSlider = new Splide('#video-slider', popupSliderOptions).mount();\r\nvar slider = document.getElementById('video-slider');\r\n\r\npopupSlider.on('move', function () {\r\n if (document.querySelector('.right-slide')) {\r\n document.querySelector('.right-slide').classList.remove('right-slide');\r\n }\r\n\r\n if (document.querySelector('.left-slide')) {\r\n document.querySelector('.left-slide').classList.remove('left-slide');\r\n }\r\n});\r\npopupSlider.on('moved', function (newIndex, oldIndex) {\r\n if (document.querySelector('.popup .splide__slide.is-active').nextElementSibling) {\r\n document.querySelector('.popup .splide__slide.is-active').nextElementSibling.classList.add('right-slide');\r\n }\r\n\r\n if (document.querySelector('.popup .splide__slide.is-active').previousElementSibling) {\r\n document.querySelector('.popup .splide__slide.is-active').previousElementSibling.classList.add('left-slide');\r\n }\r\n\r\n var target = newIndex > oldIndex ? slider.querySelector('.splide__arrow--next') : slider.querySelector('.splide__arrow--prev');\r\n if (!target.classList.contains('animate')) {\r\n target.classList.add('animate');\r\n setTimeout(() => {\r\n target.classList.remove('animate');\r\n }, 1600);\r\n }\r\n if (currentPlayer) {\r\n currentPlayer.stopVideo();\r\n var playerId = document.querySelectorAll('#video-slider .player')[newIndex].id;\r\n if (players[playerId]) {\r\n currentPlayer = players[playerId];\r\n }\r\n }\r\n if (window.openingVideo) {\r\n var video = document.querySelectorAll('#video-slider .lazy-video')[newIndex];\r\n var videoId = video.querySelector('.player').id;\r\n if (players[videoId]) {\r\n currentPlayer = players[videoId];\r\n currentPlayer.playVideo();\r\n }\r\n else {\r\n video.dispatchEvent(new Event('click'));\r\n }\r\n window.openingVideo = false;\r\n }\r\n});\r\n\r\nlet closePopupBtn = document.querySelector('.close-popup');\r\nlet storyLinks = document.querySelectorAll('.story-link');\r\nclosePopupBtn.addEventListener('click', () => {\r\n document.querySelector('.popup').classList.remove('show');\r\n document.body.classList.remove('open-popup');\r\n storyLinks.forEach(el => {\r\n el.classList.remove('open-popup');\r\n });\r\n if (currentPlayer) {\r\n currentPlayer.stopVideo();\r\n }\r\n});\r\n\r\nvar apiLoaded = false;\r\nvar currentPlayer;\r\nvar players = {};\r\n\r\ndocument.querySelectorAll('#video-slider .lazy-video').forEach(self => {\r\n self.addEventListener('click', () => {\r\n var videoId = self.getAttribute('video-id');\r\n var playerId = self.querySelector('.player').id;\r\n if (!apiLoaded) {\r\n window.onYouTubeIframeAPIReady = function () {\r\n loadPlayer(videoId, playerId)\r\n };\r\n\r\n var tag = document.createElement('script');\r\n\r\n tag.src = \"https://www.youtube.com/iframe_api\";\r\n var firstScriptTag = document.getElementsByTagName('script')[0];\r\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\r\n apiLoaded = true;\r\n }\r\n else {\r\n loadPlayer(videoId, playerId);\r\n }\r\n });\r\n})\r\n\r\nfunction loadPlayer(videoId, playerId) {\r\n currentPlayer = players[playerId] = new YT.Player(playerId, {\r\n videoId: videoId,\r\n events: {\r\n 'onReady': function (event) {\r\n event.target.playVideo();\r\n }\r\n }\r\n })\r\n}\r\n\r\nexport default popupSlider;","import { gsap } from 'gsap';\r\nimport { isTabletDown } from './isMobile';\r\nimport { SnapperInstance } from './snapper';\r\n\r\nexport class SceneNavigator {\r\n constructor() {\r\n this.scene = 1;\r\n this.sceneCount = SnapperInstance.snapPoints.length + (isTabletDown() ? 0 : 1);\r\n }\r\n\r\n init() {\r\n var header = document.querySelector('.header');\r\n var navigator = document.querySelector('#navigator');\r\n //document.createElement('div');\r\n //navigator.id = 'navigator';\r\n var options = '';\r\n for (var i = 1; i <= this.sceneCount; i++) {\r\n options += '' + i + '';\r\n }\r\n navigator.innerHTML = `\r\n
\r\n
1
\r\n
\r\n
\r\n
\r\n
\r\n
${this.sceneCount}
\r\n
\r\n
    \r\n ${options}\r\n
\r\n `;\r\n if (isTabletDown()) {\r\n navigator.style.height = (document.body.clientHeight - header.clientHeight) + 'px';\r\n }\r\n header.append(navigator);\r\n\r\n var pages = navigator.querySelector('.pages');\r\n this._animation = gsap.timeline({\r\n paused: true,\r\n onReverseComplete: () => {\r\n pages.scrollTo(0, 0);\r\n }\r\n })\r\n .addLabel('start')\r\n .from('#navigator', { duration: .5, x: () => navigator.clientWidth }, 'start')\r\n .to('#navigator .marker > div:first-child', { duration: .3, autoAlpha: 0, x: -32 }, 'start')\r\n .to('#navigator .marker > div:last-child', { duration: .3, autoAlpha: 0, x: 32 }, 'start')\r\n .to('#navigator .divider > div:first-child', { duration: .5, rotate: 45 }, 'start')\r\n .to('#navigator .divider > div:last-child', { duration: .5, rotate: -45 }, 'start');\r\n\r\n pages.addEventListener('mouseenter', () => {\r\n clearTimeout(this._closeTimeout);\r\n SnapperInstance.lock();\r\n });\r\n pages.addEventListener('mouseleave', () => {\r\n if (!this._clicked) {\r\n SnapperInstance.unlock();\r\n }\r\n this._clicked = false;\r\n })\r\n \r\n\r\n this._options = pages.querySelectorAll('li');\r\n this._options.forEach(option => {\r\n option.addEventListener('click', function () {\r\n this._clicked = true;\r\n SnapperInstance.unlock();\r\n SnapperInstance.snapTo(parseInt(option.innerHTML) - 1);\r\n this._animation.reverse();\r\n this._open = false;\r\n }.bind(this));\r\n });\r\n\r\n var marker = navigator.querySelector('.marker');\r\n marker.addEventListener('click', function () {\r\n if (this._open) {\r\n this._animation.reverse();\r\n }\r\n else {\r\n this._animation.play();\r\n }\r\n this._open = !this._open;\r\n }.bind(this));\r\n navigator.addEventListener('mouseleave', function () {\r\n this._closeTimeout = setTimeout(function () {\r\n this._animation.reverse();\r\n this._open = false;\r\n }.bind(this), 500);\r\n }.bind(this));\r\n\r\n this._currentPage = marker.querySelector('div:first-child');\r\n\r\n SnapperInstance.addUpdateCallback(this._updatePage.bind(this));\r\n }\r\n\r\n _updatePage(index) {\r\n this._currentPage.innerHTML = index + 1;\r\n this._options.forEach((option, i) => {\r\n if (i === index) {\r\n option.classList.add('active');\r\n }\r\n else {\r\n option.classList.remove('active');\r\n }\r\n });\r\n }\r\n}","import { gsap } from 'gsap';\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger.js';\r\n\r\ngsap.registerPlugin(ScrollTrigger);\r\nexport function SevenScene() {\r\n let tl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.seven-section',\r\n start: '-30% top',\r\n end: '0%',\r\n scrub: 1,\r\n delay: 3,\r\n invalidateOnRefresh: true\r\n }\r\n });\r\n\r\n tl.to('.seven-section__bg-box', 1, { opacity: 1 });\r\n tl.fromTo('.seven-section .rte > *', 2, {\r\n autoAlpha: 0,\r\n y: '+=5vh'\r\n }, {\r\n autoAlpha: 1,\r\n y: 0,\r\n stagger: {\r\n each: 0.5,\r\n ease: 'power1.out',\r\n }\r\n });\r\n}","import Splide from '@splidejs/splide';\r\nimport PopupSlider from './popup';\r\nimport { gsap } from 'gsap';\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger.js';\r\nimport { breakpoints, isMobile } from './isMobile';\r\n\r\n\r\ngsap.registerPlugin(ScrollTrigger);\r\n\r\n//if (!isMobile()) {\r\n// ScrollTrigger.create({\r\n// trigger: '.six-section',\r\n// start: () => 'top top',\r\n// end: () => '+=200%',\r\n// pinSpacing: false,\r\n// pin: '.six-section__bg-box',\r\n// pinType: 'transform',\r\n// scrub: 1,\r\n// });\r\n//}\r\nexport function SixScene() {\r\n //let tl = gsap.timeline({\r\n // scrollTrigger: {\r\n // trigger: '.six-section',\r\n // start: () => '-20% top',\r\n // end: () => '+=20%',\r\n // scrub: 1,\r\n // }\r\n //});\r\n\r\n //tl.from('.main-story-link', 2, { scale: 0.3, y: '-30%', autoAlpha: 0 }, '+=1');\r\n //tl.from('.six-section__text-block', 1, { autoAlpha: 0, y: '50%' }, '-=1');\r\n\r\n gsap.set('.six-section__story-link', { autoAlpha: 0 });\r\n document.querySelector('.main-story-link').addEventListener('click', (e) => {\r\n openVideoCarousel(e, 0);\r\n })\r\n let storyLinks = document.querySelectorAll('.story-link');\r\n storyLinks.forEach(link => {\r\n link.addEventListener('click', openVideoCarousel.bind(link));\r\n });\r\n\r\n function openVideoCarousel(e, index) {\r\n e.preventDefault();\r\n window.openingVideo = true;\r\n PopupSlider.go(index === undefined ? [...this.parentNode.parentNode.children].indexOf(this.parentNode) + 1 : index);\r\n document.querySelector('.popup').classList.add('show');\r\n document.body.classList.add('open-popup');\r\n storyLinks.forEach(el => {\r\n el.classList.add('open-popup');\r\n })\r\n }\r\n var slider;\r\n var sliderElement = document.querySelector('.stories-slider');\r\n\r\n var settings = {};\r\n settings[breakpoints.mobile] = buildTimeline('mobile');\r\n settings[breakpoints.tabletUp] = buildTimeline('tabletUp');\r\n ScrollTrigger.matchMedia(settings);\r\n\r\n function buildTimeline(breakpoint) {\r\n return function () {\r\n if (breakpoint === 'mobile') {\r\n slider = new Splide('.stories-slider', {\r\n type: 'slide',\r\n perPage: 2,\r\n perMove: 2,\r\n gap: '5.07vw',\r\n speed: 300,\r\n pagination: false\r\n }).mount();\r\n\r\n slider.on('moved', function (newIndex, oldIndex) {\r\n var target = newIndex > oldIndex ? this.querySelector('.splide__arrow--next') : this.querySelector('.splide__arrow--prev');\r\n if (!target.classList.contains('animate')) {\r\n target.classList.add('animate');\r\n setTimeout(() => {\r\n target.classList.remove('animate');\r\n }, 1600);\r\n }\r\n }.bind(sliderElement));\r\n }\r\n else if (slider) {\r\n slider.destroy();\r\n slider = null;\r\n }\r\n let tl2 = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.six-section',\r\n start: () => 'top top',\r\n end: () => '+=100%',\r\n scrub: 1,\r\n invalidateOnRefresh: true\r\n }\r\n });\r\n\r\n tl2\r\n .to('.six-section__text-block > *', 1, { autoAlpha: 0 }, '+=1')\r\n .to('.main-story-link img', 1, { opacity: 0.57 }, '-=0.5');\r\n if (breakpoint === 'mobile') {\r\n tl2.to('.six-section__bg', 3, { backgroundPosition: '50% 25%' }, '+=3');\r\n } else {\r\n tl2.to('.six-section__bg', 3, { backgroundPosition: '50% 35%' }, '+=3');\r\n }\r\n tl2.to('.main-story-link img', 1, { opacity: 1 }, '-=2.7')\r\n .set('.main-story-link', { pointerEvents: 'auto' });\r\n if (breakpoint === 'mobile') {\r\n tl2.to('.stories-slider', 1, { autoAlpha: 1 });\r\n }\r\n tl2.fromTo('.six-section__story-link', 2, { autoAlpha: 0 }, {\r\n autoAlpha: 1,\r\n stagger: {\r\n each: 0.5,\r\n ease: 'power1.out',\r\n }\r\n });\r\n\r\n let tl3 = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.six-section__second-scene',\r\n start: () => 'top top',\r\n end: () => '+=100%',\r\n scrub: 1,\r\n invalidateOnRefresh: true\r\n }\r\n });\r\n\r\n if (breakpoint === 'mobile') {\r\n tl3.to('.six-section__story-link, .stories-slider', 1, { autoAlpha: 0 });\r\n tl3.to('.main-story-link', 3, { y: () => '-=100vh' });\r\n }\r\n tl3.to('.six-section__bg', 3, { opacity: 0 }, '-=4');\r\n tl3.to('.six-section__bg-box', 1, { y: '-100vh' }, '-=2.8');\r\n tl3.to('.six-section', 0.4, { opacity: 0 });\r\n };\r\n }\r\n}","import Splide from '@splidejs/splide';\r\nimport { gsap } from 'gsap';\r\n\r\nvar sliders = document.querySelectorAll('.hero-third-scene .splide');\r\nvar arrow = document.querySelector('.animated-arrow');\r\nvar animatedArrows = document.querySelectorAll('.animated-arrow use');\r\nvar arrowSize = arrow.clientWidth;\r\n\r\nconfigure();\r\nwindow.addEventListener('resize', configure)\r\nsliders.forEach(element => {\r\n var slider = new Splide(element, {\r\n type: 'fade',\r\n perPage: 1,\r\n gap: 0,\r\n speed: 0,\r\n breakpoints: {\r\n 767: {\r\n destroy: true\r\n }\r\n }\r\n }).mount();\r\n slider.on('active', function (e) {\r\n activeSliderHandler(e.slide);\r\n }).on('moved', function (newIndex, oldIndex) {\r\n if (newIndex !== oldIndex) {\r\n var target = newIndex > oldIndex ? this.querySelector('.splide__arrow--next') : this.querySelector('.splide__arrow--prev');\r\n if (!target.classList.contains('animate')) {\r\n target.classList.add('animate');\r\n setTimeout(() => {\r\n target.classList.remove('animate');\r\n }, 1600);\r\n }\r\n }\r\n }.bind(element));\r\n});\r\n\r\nfunction configure() {\r\n if (arrow.clientWidth !== arrowSize) {\r\n arrowSize = arrow.clientWidth;\r\n animatedArrows.forEach(self => {\r\n self.setAttribute('href', arrowSize < 60 ? '#smallCircle' : '#circle');\r\n });\r\n }\r\n}\r\n\r\n\r\nfunction activeSliderHandler(slide) {\r\n var previousTimeline = gsap.timeline();\r\n var links = slide.querySelectorAll('.hero-third-scene__grid-item > a');\r\n if (links.length) {\r\n previousTimeline\r\n .fromTo(links[0], 0.8, {\r\n autoAlpha: 0,\r\n }, {\r\n autoAlpha: 1\r\n }, '+=0.3');\r\n if (links[1]) {\r\n previousTimeline.fromTo(links[1], 0.8, {\r\n autoAlpha: 0,\r\n }, {\r\n autoAlpha: 1\r\n }, '-=.6');\r\n }\r\n\r\n if (links[3]) {\r\n previousTimeline.fromTo(links[3], 0.8, {\r\n autoAlpha: 0,\r\n }, {\r\n autoAlpha: 1\r\n }, '-=.6');\r\n }\r\n\r\n if (links[2]) {\r\n previousTimeline.fromTo(links[2], 0.8, {\r\n autoAlpha: 0,\r\n }, {\r\n autoAlpha: 1\r\n }, '-=.6');\r\n }\r\n }\r\n}\r\n","import { gsap, snap } from 'gsap';\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger.js';\r\nimport { ScrollToPlugin } from 'gsap/ScrollToPlugin';\r\nimport * as Hammer from 'hammerjs';\r\nimport { isMobile, isTabletDown } from './isMobile';\r\ngsap.registerPlugin(ScrollTrigger);\r\ngsap.registerPlugin(ScrollToPlugin);\r\nclass Snapper {\r\n constructor() {\r\n this.snapPoints = [];\r\n this._eventCallbacks = {};\r\n this._updateCallbacks = [];\r\n this._lockers = [];\r\n //this._enableHammer = !isMobile();\r\n this._enableHammer = true;\r\n this._baseHeight = 1080;\r\n }\r\n\r\n init() {\r\n this._hammer = new Hammer.Manager(document.body, {\r\n recognizers: [\r\n [Hammer.Swipe, { direction: Hammer.DIRECTION_VERTICAL }]\r\n ]\r\n });\r\n var triggers = document.querySelectorAll('section');\r\n triggers.forEach((trigger, i) => {\r\n this.snapPoints.push(i * document.body.clientHeight);\r\n });\r\n this._endSelector = '.nine-section';\r\n this._speed = 3 * document.body.clientHeight / this._baseHeight;\r\n if (isTabletDown()) {\r\n this._endSelector = 'footer'\r\n gsap.timeline({\r\n scrollTrigger: {\r\n trigger: 'footer',\r\n start: 'top top',\r\n end: '100%',\r\n scrub: 1,\r\n }\r\n })\r\n .to('footer', 2, {\r\n zIndex: 11\r\n });\r\n this.snapPoints.push(this.snapPoints[this.snapPoints.length - 1] + document.body.clientHeight);\r\n this.attachLocker(document.querySelector('footer'));\r\n }\r\n else {\r\n this._footer = document.querySelector('footer');\r\n this._footerFocus = false;\r\n this._footerObserver = new IntersectionObserver((entries, observer) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n if (!this._footerFocus) {\r\n this._updateCallbacks.forEach(callback => {\r\n callback(this.snapPoints.length);\r\n });\r\n this._footerFocus = true;\r\n }\r\n }\r\n else if (this._footerFocus) {\r\n this._updateCallbacks.forEach(callback => {\r\n callback(this.snapPoints.length - 1);\r\n });\r\n this._footerFocus = false;\r\n }\r\n })\r\n }, {\r\n root: document.body,\r\n threshold: Math.min(1, document.body.clientHeight / this._footer.clientHeight)\r\n });\r\n this._footerObserver.observe(this._footer);\r\n }\r\n this._previousPoint = 0;\r\n this._active = this.snapPoints[0] === 0;\r\n //if (isMobile()) {\r\n // ScrollTrigger.create({\r\n // trigger: document.body,\r\n // start: 0,\r\n // end: 50,\r\n // onLeave: () => {\r\n // document.body.classList.add('locked');\r\n // this._bindEvents();\r\n // alert('events bound');\r\n // },\r\n // onEnter: () => {\r\n // this._active = true;\r\n // this.snapTo(1);\r\n // },\r\n // onEnterBack: () => {\r\n // this._active = false;\r\n // document.body.classList.remove('locked');\r\n // this._removeEvents();\r\n // }\r\n // })\r\n //}\r\n ScrollTrigger.create({\r\n trigger: '.hero',\r\n endTrigger: this._endSelector,\r\n start: 'top top',\r\n end: () => isTabletDown() ? 'bottom bottom' : 'top top',\r\n onLeave: self => {\r\n if (!isTabletDown()) {\r\n this._active = false;\r\n this.unlock();\r\n this._removeEvents();\r\n }\r\n },\r\n onEnterBack: self => {\r\n if (!isTabletDown()) {\r\n this._active = true;\r\n this.snapTo(this.snapPoints.length - 2);\r\n this._bindEvents();\r\n }\r\n }\r\n });\r\n //this._bindEvents(!isMobile());\r\n this._bindEvents();\r\n }\r\n\r\n _bindEvents() {\r\n this._eventCallbacks.wheel = this._wheelHandler.bind(this);\r\n this._eventCallbacks.keydown = this._keyHandler.bind(this);\r\n window.addEventListener('wheel', this._eventCallbacks.wheel);\r\n window.addEventListener('keydown', this._eventCallbacks.keydown);\r\n\r\n if (this._enableHammer) {\r\n this._eventCallbacks.swipe = this._swipeHandler.bind(this);\r\n this._hammer.on('swipe', this._eventCallbacks.swipe);\r\n }\r\n this._enableHammer = true;\r\n }\r\n\r\n _removeEvents() {\r\n Object.keys(this._eventCallbacks).forEach((key) => {\r\n if (key === 'swipe') {\r\n this._hammer.off('swipe');\r\n }\r\n else {\r\n window.removeEventListener(key, this._eventCallbacks[key]);\r\n }\r\n })\r\n }\r\n\r\n snapTo(index, callback) {\r\n if (!this.isLocked() && index > -1 && index !== this._previousPoint) {\r\n document.body.classList.add('animating');\r\n this.lock();\r\n if (index === 0) {\r\n this._toggled = false;\r\n if (this._topTrigger) {\r\n this._topTrigger.classList.remove('active');\r\n }\r\n if (window.introVideo) {\r\n window.introVideo.togglePlay();\r\n }\r\n }\r\n else if (!this._toggled) {\r\n this._toggled = true;\r\n if (this._topTrigger) {\r\n this._topTrigger.classList.add('active');\r\n }\r\n if (window.introVideo && window.introVideo.$playing) {\r\n window.introVideo.togglePlay();\r\n }\r\n }\r\n var target = !isTabletDown() && index === this.snapPoints.length ? document.body.scrollTop + this._footer.getBoundingClientRect().top : this.snapPoints[index];\r\n var curIndex = this._previousPoint;\r\n var targetIndex = Math.min(index, this.snapPoints.length - 1);\r\n var start = Math.min(targetIndex, this._previousPoint);\r\n var end = Math.max(targetIndex, this._previousPoint);\r\n gsap.to(document.body, {\r\n scrollTo: { y: target, autoKill: false },\r\n duration: this._speed,\r\n onUpdate: (e) => {\r\n var point = curIndex;\r\n for (var i = start; i <= end; i++) {\r\n if (this.snapPoints[i] > document.body.scrollTop) {\r\n break;\r\n }\r\n else {\r\n point = i;\r\n }\r\n }\r\n if (point !== curIndex) {\r\n curIndex = point;\r\n this._updateCallbacks.forEach(callback => {\r\n callback(curIndex);\r\n })\r\n }\r\n },\r\n onComplete: () => {\r\n this._updateCallbacks.forEach(callback => {\r\n callback(index);\r\n });\r\n setTimeout(() => {\r\n this._previousPoint = index;\r\n if (callback) {\r\n callback(index);\r\n }\r\n this.unlock();\r\n if (index >= this.snapPoints.length - 1) {\r\n document.body.classList.remove('locked');\r\n }\r\n document.body.classList.remove('animating');\r\n }, 400);\r\n }\r\n });\r\n }\r\n }\r\n\r\n prev() {\r\n this.snapTo(this._previousPoint - 1);\r\n }\r\n\r\n next() {\r\n this.snapTo(this._previousPoint + 1);\r\n }\r\n\r\n isLocked() {\r\n return this._locked;\r\n }\r\n\r\n lock() {\r\n this._locked = true;\r\n document.body.classList.add('locked');\r\n }\r\n\r\n unlock() {\r\n this._locked = false;\r\n }\r\n\r\n attachBackToTopTrigger(element) {\r\n this._topTrigger = element;\r\n this._topTrigger.addEventListener('click', () => {\r\n this.snapTo(0, () => {\r\n gsap.set('#counter', { y: 0 });\r\n gsap.set('.six-section__story-link', { autoAlpha: 0 });\r\n if (isMobile()) {\r\n gsap.set('.stories-slider', { autoAlpha: 0 });\r\n }\r\n else {\r\n gsap.set('.hero-second-scene__circle-graphics', { x: 0, y: 0 });\r\n }\r\n this._lockers.forEach(locker => {\r\n locker.scrollTo(0, 0);\r\n })\r\n });\r\n });\r\n }\r\n\r\n attachLocker(element) {\r\n if (element.scrollHeight > element.clientHeight) {\r\n element.classList.add('scrollable');\r\n element._hammer = new Hammer.Manager(element, {\r\n recognizers: [\r\n [Hammer.Swipe, { direction: Hammer.DIRECTION_VERTICAL, enable: true }]\r\n ]\r\n });\r\n element._hammer.on('swipe', function (e) {\r\n this._preventOuter = true;\r\n if (!this.isLocked()) {\r\n if (e.direction === Hammer.DIRECTION_UP) {\r\n if (element.scrollTop > element.scrollHeight - element.clientHeight - 5) {\r\n this.next();\r\n }\r\n else {\r\n element._hammer.get('swipe').set({ enable: false });\r\n gsap.to(element, {\r\n duration: 1,\r\n scrollTo: { y: Math.min(element.scrollTop + element.clientHeight, element.scrollHeight - element.clientHeight) }\r\n });\r\n }\r\n }\r\n else {\r\n if (element.scrollTop < 5) {\r\n this.prev();\r\n }\r\n else {\r\n element._hammer.get('swipe').set({ enable: false });\r\n gsap.to(element, {\r\n duration: 1,\r\n scrollTo: { y: Math.max(0, element.scrollTop - element.clientHeight) }\r\n });\r\n }\r\n }\r\n }\r\n }.bind(this));\r\n //element._hammer.on('pan', function (e) {\r\n // element.scrollTo(0, element._panStart - e.deltaY);\r\n //});\r\n //element._hammer.on('panstart', function (e) {\r\n // element._panStart = element.scrollTop;\r\n //});\r\n //element._previousScroll = 0;\r\n element.addEventListener('scroll', (e) => {\r\n if (!element._wheelTriggered) {\r\n if (Math.round(element.scrollTop) === Math.round(element.scrollHeight - element.clientHeight)) {\r\n element._hammer.get('swipe').set({ enable: true })\r\n }\r\n else if (Math.round(element.scrollTop) === 0) {\r\n element._hammer.get('swipe').set({ enable: true })\r\n }\r\n }\r\n element._wheelTriggered = false;\r\n });\r\n\r\n element.addEventListener('wheel', (e) => {\r\n clearTimeout(element._wheelTimeout);\r\n if (!this.isLocked()) {\r\n element._wheelTriggered = true;\r\n if (e.deltaY > 0 && element._previousScroll === element.scrollTop && element.scrollTop === (element.scrollHeight - element.clientHeight)) {\r\n if (element._edge === 1) {\r\n this.next();\r\n }\r\n else {\r\n element._wheelTimeout = setTimeout(() => element._edge = 1, 400);\r\n }\r\n }\r\n else if (e.deltaY < 0 && element._previousScroll === element.scrollTop && element.scrollTop === 0) {\r\n if (element._edge === -1) {\r\n this.prev();\r\n }\r\n else {\r\n element._wheelTimeout = setTimeout(() => element._edge = -1, 400);\r\n }\r\n }\r\n element._edge = 0;\r\n }\r\n e.stopPropagation();\r\n element._previousScroll = element.scrollTop;\r\n });\r\n this._lockers.push(element);\r\n }\r\n }\r\n\r\n _wheelHandler(e) {\r\n if (this._active) {\r\n if (e.deltaY > 0) {\r\n this.next();\r\n }\r\n else {\r\n this.prev();\r\n }\r\n }\r\n }\r\n\r\n _keyHandler(e) {\r\n if (this._active) {\r\n if (e.key === 'ArrowDown') {\r\n this.next();\r\n }\r\n else if (e.key === 'ArrowUp') {\r\n this.prev();\r\n }\r\n }\r\n }\r\n\r\n _swipeHandler(e) {\r\n if (this._active && !this._preventOuter) {\r\n if (e.direction === Hammer.DIRECTION_UP) {\r\n this.next();\r\n }\r\n else {\r\n this.prev();\r\n }\r\n }\r\n this._preventOuter = false;\r\n }\r\n\r\n addUpdateCallback(callback) {\r\n this._updateCallbacks.push(callback);\r\n }\r\n}\r\n\r\nvar SnapperInstance = new Snapper();\r\nexport { SnapperInstance };","import { gsap } from 'gsap';\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger.js';\r\nimport { SplitText } from '../greensock/SplitText';\r\nimport { isMobile, isTabletDown } from './isMobile';\r\n\r\ngsap.registerPlugin(ScrollTrigger);\r\ngsap.registerPlugin(SplitText);\r\nexport function ThirdScene() {\r\n var textBlock = document.querySelector('.third-section__text-block');\r\n var header = document.querySelector('.header__container .grid-container');\r\n var summaries = document.querySelectorAll('.solution-summary');\r\n var headerWidth = header.clientWidth + header.getBoundingClientRect().left - textBlock.getBoundingClientRect().left - 16 - (window.innerWidth < 1201 ? 16 : 0);\r\n var containerWidth = textBlock.clientWidth;\r\n var computedStyle = getComputedStyle(textBlock);\r\n containerWidth -= (parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight));\r\n var circle = document.querySelector('.hero-second-scene__circle-graphics');\r\n var circleDiv = document.querySelector('.hero-second-scene__circle-graphics > div');\r\n var circleSvg = document.querySelector('.hero-second-scene svg');\r\n var secondScene = document.querySelector('.hero-second-scene');\r\n if (!isTabletDown()) {\r\n gsap.timeline({\r\n immediateRender: false,\r\n scrollTrigger: {\r\n trigger: '.third-section',\r\n start: '-30% 50%',\r\n end: '0%',\r\n scrub: true\r\n }\r\n })\r\n .to('.hero__clip-container', .5, { autoAlpha: 0 })\r\n .to('.hero-second-scene__circle-graphics .circle-background', { duration: .5, autoAlpha: 0 }, '-=.5')\r\n .set('.hero-second-scene', { zIndex: 6 })\r\n .to(circleDiv, 1, {\r\n scale: 0.45,\r\n y: () => '-=' + Math.min(window.innerWidth * .15, circle.getBoundingClientRect().top + circle.clientHeight * .275 - header.clientHeight - 16),\r\n x: () => '-=2.5vw',\r\n rotate: '+=360',\r\n });\r\n }\r\n\r\n let tl = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.hero-third-scene',\r\n start: 'top top',\r\n end: '100%',\r\n scrub: 1\r\n }\r\n });\r\n tl\r\n .to('.third-section', 1, { opacity: 1 })\r\n .to('.hero-third-scene', 1, { opacity: 0 })\r\n .to('.third-section__first-bg', 1, { opacity: 1 }, '-=0.7')\r\n .to(textBlock, 1, { top: () => Math.max(header.clientHeight + circle.clientHeight * .45 + 32, .42314 * window.innerHeight) })\r\n .addLabel('textStart', '-=.5');\r\n var lines = [];\r\n for (var j = 0; j < summaries.length; j++) {\r\n summaries[j].classList.add('active');\r\n var textSplit = new SplitText(summaries[j].children, { type: 'lines' });\r\n lines.push(textSplit.lines);\r\n tl\r\n .staggerFrom(textSplit.lines, .5, { marginTop: 75 }, .1, 'textStart');\r\n }\r\n\r\n let tl2 = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.third-section',\r\n start: 'top top',\r\n end: '100%',\r\n scrub: 1\r\n }\r\n })\r\n .addLabel('start');\r\n //var arrPath = circleGraphic.find('.arrow-path');\r\n //var arrHead = circleGraphic.find('.marker-path')[0];\r\n //tl2.to(arrHead, 1, { motionPath: { path: arrPath, align: arrPath, alignOrigin: [.5,0], autoRotate: true } })\r\n tl2.to('.third-section__second-bg', 2, { opacity: 1 });\r\n tl2.to(circleSvg, 1.2, { x: '+=' + (headerWidth - circle.clientWidth * .45) / .45 }, 'start+=.1');\r\n //tl2.to('.third-section__text-block', 1.2, { x: '11vw' }, '-=1.9');\r\n\r\n var targetWidth = textBlock.clientWidth < 590 ? containerWidth : headerWidth;\r\n for (var j = 0; j < summaries.length; j++) {\r\n for (var i = 0; i < lines[j].length; i++) {\r\n var item = $(lines[j][i]);\r\n item.css('display', 'inline-block');\r\n var width = item.width();\r\n item.css('display', 'block');\r\n tl2.fromTo(item, .8, {\r\n x: 0\r\n }, {\r\n x: targetWidth - width\r\n }, 'start+=' + (.5 + .1 * i));\r\n }\r\n if (j > 0) {\r\n summaries[j].classList.remove('active');\r\n }\r\n }\r\n //tl2.to('.third-section__text-block h2 .first-row', 1.2, {x: '+=20vw'}, '-=1.9');\r\n //tl2.to('.third-section__text-block h2 .second-row', 1.2, {x: '+=19vw'}, '-=1.7');\r\n //tl2.to('.third-section__text-block .first-paragraph', 1.2, {x: '+=25vw'}, '-=1.5');\r\n //tl2.to('.third-section__text-block .second-paragraph', 1.2, {x: '+=19vw'}, '-=1.4');\r\n //tl2.to('.third-section__text-block .second-paragraph', 1.2, {x: '+=19vw'}, '-=1.4');\r\n //tl2.to('.third-section__text-block .btn-outline', 1.2, {x: '+=41vw'}, '-=1.2');\r\n\r\n let tl3 = gsap.timeline({\r\n scrollTrigger: {\r\n trigger: '.third-section__second-scene',\r\n start: () => 'top top',\r\n end: () => '+=100%',\r\n scrub: 1,\r\n }\r\n });\r\n tl3.set('.fourth-section', { pointerEvents: 'auto', zIndex: 5 });\r\n tl3.to('.hero-second-scene__circle-graphics', 2, { y: '-60vw', pointerEvents: 'none' });\r\n if (isTabletDown()) {\r\n tl3.set('.third-section', { zIndex: 4, pointerEvents: 'none' });\r\n tl3.to('.third-section__text-block', 2, { y: '-125vw' }, '-=2');\r\n }\r\n else {\r\n tl3.to('.third-section__text-block', 2, { y: '-60vw' }, '-=2');\r\n }\r\n tl3.set('.hero-second-scene__circle-graphics', { autoAlpha: 0 });\r\n tl3.set('.third-section, .hero-third-scene', { pointerEvents: 'none' });\r\n tl3.from('.fourth-section__text-block > *', 1, {\r\n stagger: .2,\r\n opacity: 0,\r\n y: 32\r\n });\r\n //if (!isMobile()) {\r\n // tl3.from('.fourth-section__text-block h2', 1, { opacity: 1, y: () => '-=100' }, '-=0.8');\r\n //} else {\r\n // tl3.from('.fourth-section__text-block h2', 1, { opacity: 1, y: () => '-=50' }, '-=0.8');\r\n //}\r\n tl3.to('.third-section', 1, { autoAlpha: 0 });\r\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { gsap } from 'gsap';\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger.js';\r\nimport { ScrollToPlugin } from 'gsap/ScrollToPlugin';\r\nimport { CSSPlugin } from 'gsap/CSSPlugin';\r\nimport { isMobile, isTabletDown } from './isMobile';\r\n\r\nhistory.scrollRestoration = 'manual';\r\nScrollTrigger.defaults({\r\n scroller: document.body\r\n});\r\n\r\nimport 'cookieconsent';\r\nimport './slider';\r\nimport './header';\r\nimport './popup';\r\nimport './mobile-menu';\r\nimport { Accordion } from './accordion';\r\nimport { SnapperInstance } from './snapper';\r\nimport { HeroScene } from './hero-scene';\r\nimport { HeroSecondScene } from './hero-second-scene';\r\nimport { HeroThirdScene } from './hero-third-scene';\r\nimport { ThirdScene } from './third-scene';\r\nimport { FourScene } from './four-scene';\r\nimport { FiveScene } from './five-scene';\r\nimport { SixScene } from './six-scene';\r\nimport { SevenScene } from './seven-scene';\r\nimport { EightScene } from './eight-scene';\r\nimport { NineScene } from './nine-scene';\r\nimport { CircleScene } from './circle-scene';\r\nimport { SceneNavigator } from './sceneNavigator';\r\n\r\ngsap.registerPlugin(ScrollTrigger);\r\ngsap.registerPlugin(ScrollToPlugin);\r\ngsap.registerPlugin(CSSPlugin);\r\n\r\ndocument.fonts.ready.then(function () {\r\n document.querySelectorAll('.hero-third-scene .accordion').forEach(accordion => {\r\n var item = new Accordion(accordion, { enableCondition: isMobile });\r\n item.init();\r\n });\r\n\r\n var accordion = new Accordion(document.querySelector('.eight-section .accordion'), { enableCondition: isTabletDown });\r\n accordion.init();\r\n\r\n HeroScene();\r\n HeroSecondScene();\r\n HeroThirdScene();\r\n ThirdScene();\r\n FourScene();\r\n FiveScene();\r\n SixScene();\r\n SevenScene();\r\n EightScene();\r\n NineScene();\r\n CircleScene();\r\n\r\n //setVh();\r\n SnapperInstance.init();\r\n //SnapperInstance.attachBackToTopTrigger(document.getElementById('back-to-top'));\r\n var navigator = new SceneNavigator();\r\n navigator.init();\r\n});\r\n\r\n//function setVh() {\r\n// let vh = window.innerHeight * 0.01;\r\n// document.documentElement.style.setProperty('--vh', `${vh}px`);\r\n//}","// extracted by mini-css-extract-plugin\nexport {};"],"names":["_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","MEDIA_PREFERS_REDUCED_MOTION","CREATED","MOUNTED","IDLE","MOVING","SCROLLING","DRAGGING","DESTROYED","STATES","empty","array","slice","arrayLike","start","end","Array","call","apply","func","bind","concat","arguments","nextTick","setTimeout","noop","raf","requestAnimationFrame","typeOf","type","subject","isObject","isNull","isArray","isFunction","isString","isUndefined","isHTMLElement","ownerDocument","defaultView","window","HTMLElement","e","toArray","value","forEach","values","iteratee","includes","indexOf","push","items","toggleClass","elm","classes","add","name","classList","addClass","split","append","parent","children","appendChild","before","nodes","ref","node","parentNode","insertBefore","matches","selector","children2","filter","child","firstElementChild","ownKeys","keys","forOwn","object","right","reverse","assign","source","merge","omit","removeAttribute","elms","attrs","attr","setAttribute","value2","String","create","tag","document","createElement","style","prop","getComputedStyle","display","display2","focus","preventScroll","getAttribute","hasClass","className","contains","rect","getBoundingClientRect","remove","removeChild","parseHtml","html","DOMParser","parseFromString","body","prevent","stopPropagation","preventDefault","stopImmediatePropagation","query","querySelector","queryAll","querySelectorAll","removeClass","timeOf","timeStamp","unit","PROJECT_CODE","DATA_ATTRIBUTE","assert","condition","message","Error","min","Math","max","floor","ceil","abs","approximatelyEqual","x","y","epsilon","between","number","exclusive","minimum","maximum","clamp","sign","camelToKebab","string","replace","toLowerCase","format","replacements","replacement","pad","ids","uniqueId","prefix","EventBinder","listeners","targets","events","callback","options","forEachEvent","event","namespace","isEventTarget","remover","removeEventListener","addEventListener","unbind","listener","dispatch","detail","bubbles","CustomEvent","createEvent","initCustomEvent","dispatchEvent","events2","eventNS","fragment","destroy","data","EVENT_MOUNTED","EVENT_READY","EVENT_MOVE","EVENT_MOVED","EVENT_CLICK","EVENT_ACTIVE","EVENT_INACTIVE","EVENT_VISIBLE","EVENT_HIDDEN","EVENT_REFRESH","EVENT_UPDATED","EVENT_RESIZE","EVENT_RESIZED","EVENT_DRAG","EVENT_DRAGGING","EVENT_DRAGGED","EVENT_SCROLL","EVENT_SCROLLED","EVENT_OVERFLOW","EVENT_DESTROY","EVENT_ARROWS_MOUNTED","EVENT_ARROWS_UPDATED","EVENT_PAGINATION_MOUNTED","EVENT_PAGINATION_UPDATED","EVENT_NAVIGATION_MOUNTED","EVENT_AUTOPLAY_PLAY","EVENT_AUTOPLAY_PLAYING","EVENT_AUTOPLAY_PAUSE","EVENT_LAZYLOAD_LOADED","EVENT_SLIDE_KEYDOWN","EVENT_SHIFTED","EVENT_END_INDEX_CHANGED","EventInterface","Splide2","bus","createDocumentFragment","binder","on","join","emit","off","RequestInterval","interval","onInterval","onUpdate","limit","now","Date","startTime","rate","id","paused","count","update","pause","resume","cancel","rewind","cancelAnimationFrame","set","time","isPaused","State","initialState","state","is","states","Throttle","duration","Media","Components2","breakpoints","reducedMotion","queries","setup","isMin","mediaQuery","sort","n","m","register","completely","options2","queryList","matchMedia","destroyed","direction","merged","reduce","merged2","entry","mount","refresh","enable","opts","base","notify","getPrototypeOf","ARROW","ARROW_LEFT","ARROW_RIGHT","ARROW_UP","ARROW_DOWN","LTR","RTL","TTB","ORIENTATION_MAP","width","left","X","Y","ArrowLeft","ArrowRight","Direction","resolve","axisOnly","index","match","offset","charAt","toUpperCase","orient","ROLE","TAB_INDEX","DISABLED","ARIA_PREFIX","ARIA_CONTROLS","ARIA_CURRENT","ARIA_SELECTED","ARIA_LABEL","ARIA_LABELLEDBY","ARIA_HIDDEN","ARIA_ORIENTATION","ARIA_ROLEDESCRIPTION","ARIA_LIVE","ARIA_BUSY","ARIA_ATOMIC","ALL_ATTRIBUTES","CLASS_PREFIX","STATUS_CLASS_PREFIX","CLASS_ROOT","CLASS_TRACK","CLASS_LIST","CLASS_SLIDE","CLASS_CLONE","CLASS_CONTAINER","CLASS_ARROWS","CLASS_ARROW","CLASS_ARROW_PREV","CLASS_ARROW_NEXT","CLASS_PAGINATION","CLASS_PAGINATION_PAGE","CLASS_PROGRESS","CLASS_PROGRESS_BAR","CLASS_TOGGLE","CLASS_TOGGLE_PLAY","CLASS_TOGGLE_PAUSE","CLASS_SPINNER","CLASS_SR","CLASS_INITIALIZED","CLASS_ACTIVE","CLASS_PREV","CLASS_NEXT","CLASS_VISIBLE","CLASS_LOADING","CLASS_FOCUS_IN","CLASS_OVERFLOW","STATUS_CLASSES","CLASSES","slide","clone","arrows","arrow","prev","next","pagination","page","spinner","closest","from","nodeType","parentElement","FRICTION","LOG_INTERVAL","POINTER_DOWN_EVENTS","POINTER_MOVE_EVENTS","POINTER_UP_EVENTS","Elements","_EventInterface","root","i18n","elements","slides","rootClasses","trackClasses","track","list","isUsingKey","collect","init","capture","getClasses","label","labelledby","find","bar","toggle","role","tagName","carousel","drag","isNavigation","SLIDE","LOOP","FADE","Slide$1","slideIndex","Components","updateOnMove","slideFocus","styles","isClone","container","slideLabel","listen","self","initNavigation","onMove","controls","splides","map","Slide2","splide","Slides","getAt","slideX","curr","updateActivity","updateVisibility","active","isActive","visible","isVisible","hidden","focusableNodes","activeElement","style$1","useContainer","cloneStatus","trackRect","slideRect","isWithin","distance","diff","_EventInterface2","_Components2$Elements","Slides2","forEach$1","Slide1","get","excludeClones","getIn","Controller","toIndex","hasFocus","perPage","observeImages","remove$1","matcher","images","img","getLength","isEnough","Layout","_EventInterface3","_Components2$Elements2","styleSlides","vertical","rootRect","overflow","resize","cssPadding","force","newRect","height","cssTrackHeight","gap","cssSlideWidth","cssSlideHeight","isOverflow","padding","cssHeight","heightRatio","autoWidth","fixedWidth","cssSlideSize","fixedHeight","autoHeight","listSize","slideSize","withoutGap","Slide","getGap","totalSize","sliderSize","parseFloat","getPadding","MULTIPLIER","Clones","clones","cloneCount","remount","observe","computeCloneCount","generate","isHead","cloneDeep","cloneNode","clones2","fixedSize","fixedCount","Move","_EventInterface4","_Components2$Layout","_Components2$Directio","_Components2$Elements3","Transition","reposition","isBusy","Scroll","jump","move","dest","canShift","translate","shift","getPosition","toPosition","position","preventLoop","destination","loop","exceededMax","getEnd","exceededMin","backwards","excess","getLimit","size","minDistance","Infinity","trimming","trim","trimSpace","shifted","exceededLimit","_EventInterface5","_Components2$Slides","omitEnd","isLoop","isSlide","getNext","getAdjacent","getPrev","currIndex","endIndex","prevIndex","slideCount","perMove","onResized","go","control","allowSameIndex","parse","setIndex","scroll","snap","_ref","indicator","computeDestIndex","snapPage","computeMovableDestIndex","toPage","toDest","getIndex","waitForTransition","XML_NAME_SPACE","PATH","SIZE","Arrows","placeholder","wrapper","created","wrapperClasses","enabled","createArrows","createArrow","prev2","arrowPath","nextIndex","prevLabel","last","nextLabel","first","disabled","INTERVAL_DATA_ATTRIBUTE","Autoplay","_EventInterface6","onAnimationFrame","_Components2$Elements4","autoplay","hovered","focused","stopped","play","pauseOnHover","autoToggle","pauseOnFocus","resetProgress","stop","Cover","_EventInterface7","cover","cover2","src","BOUNCE_DIFF_THRESHOLD","BOUNCE_DURATION","FRICTION_FACTOR","BASE_VELOCITY","MIN_DURATION","_EventInterface8","friction","clear","onScrolled","noConstrain","noDistance","onEnd","to","easing","t","easingFunc","pow","SCROLL_LISTENER_OPTIONS","passive","Drag","_EventInterface9","_Components2$Directio2","basePosition","baseEvent","prevBaseEvent","isFree","dragging","exceeded","clickPrevented","onPointerDown","onClick","disable","isTouch","isTouchEvent","isDraggable","button","onPointerMove","onPointerUp","save","cancelable","constrain","diffCoord","expired","diffTime","hasExceeded","isSliderDirection","shouldStart","velocity","computeVelocity","computeDestination","rewindByDrag","thresholds","dragMinThreshold","isObj","mouse","touch","flickPower","flickMaxPages","orthogonal","coordOf","getBaseEvent","changedTouches","target2","noDrag","TouchEvent","isDragging","NORMALIZATION_MAP","Spacebar","Right","Left","Up","Down","normalizeKey","KEYBOARD_EVENT","Keyboard","_EventInterface10","keyboard","onKeydown","_disabled","SRC_DATA_ATTRIBUTE","SRCSET_DATA_ATTRIBUTE","IMAGE_SELECTOR","LazyLoad","_EventInterface11","isSequential","lazyLoad","entries","loadNext","check","srcset","preloadPages","load","onLoad","Pagination","paginationClasses","createPagination","getDirection","select","li","text","pageX","paginationKeyboard","dir","nextPage","item","paginationDirection","_button","TRIGGER_KEYS","Sync","isParent","sync","navigate","Wheel","_EventInterface12","lastTime","wheel","onWheel","deltaY","_min","wheelMinThreshold","sleep","wheelSleep","shouldPrevent","releaseWheel","SR_REMOVAL_DELAY","Live","_EventInterface13","live","sr","textContent","ComponentConstructors","freeze","__proto__","I18N","DEFAULTS","speed","rewindSpeed","Fade","done","transition","endCallback","getSpeed","useScroll","_Splide","_o","_E","defaults","JSON","_proto","Extensions","_this","_C","_T","Constructors","Component","component","_this$event","Splide","CLASS_RENDERED","RENDERER_DEFAULT_CONFIG","listTag","slideTag","Style","_proto2","rule","breakpoint","selectors","build","_this2","css","buildSelectors","_this3","SplideRenderer","contents","config","clean","_EventInterface14","_proto3","parseBreakpoints","initSlides","registerRootStyles","registerTrackStyles","registerSlideStyles","registerListStyles","_this4","content","buildStyles","generateClones","_this5","_ref2","_this6","Style2","_ref3","_this7","_ref4","buildTranslate","cssAspectRatio","_this8","_ref5","_this$Direction","cssOffsetClones","cssOffsetGaps","isCenter","buildCssValue","cssOffsetCenter","Boolean","_this$Direction2","getCloneCount","isFixedWidth","_this$parseCssValue","parseCssValue","unit2","percent","_this$Direction3","_this$parseCssValue2","_this$parseCssValue3","_value","_unit","gapOffset","_this$parseCssValue4","gaps","isVertical","_this9","buildClasses","buildAttrs","renderSlides","_this10","_content$html","background","unshift","_ref6","renderArrows","renderArrow","_this$options","ariaLabel","_this$config","rootClass","beforeTrack","afterTrack","slider","beforeSlider","afterSlider","default","hasInitialised","escapeRegExp","RegExp","interpolateString","getCookie","cookie","pop","setCookie","o","s","r","setDate","getDate","a","toUTCString","deepExtend","hasOwnProperty","isPlainObject","throttle","hash","charCodeAt","normaliseHex","substr","getContrast","parseInt","getLuminance","toString","isMobile","test","navigator","userAgent","constructor","traverseDOMPath","status","deny","allow","dismiss","transitionEnd","OT","msT","MozT","WebkitT","hasTransition","customStyles","Popup","initialise","openingTimeout","afterTransition","onInitialise","cookieEnabled","CookiesOK","getStatus","c","theme","p","palette","customStyleSelector","l","showLink","link","messagelink","compliance","info","layouts","layout","basic","u","innerHTML","onButtonClick","h","autoAttach","firstChild","setStatus","close","revokeChoice","stringify","d","references","popup","highlight","border","hover","v","head","element","sheet","insertRule","f","ownerNode","b","dismissOnTimeout","dismissTimeout","dismissOnScroll","pageYOffset","onWindowScroll","dismissOnWindowClick","ignoreClicksFrom","path","onWindowClick","g","revokable","animateRevokable","revokeBtn","policy","innerHeight","clientY","onMouseMove","domain","expiryDays","secure","onPopupOpen","onPopupClose","onStatusChange","onRevokeChoice","onNoCookieLaw","header","href","autoOpen","whitelistPage","blacklistPage","overrideHTML","location","pathname","clearTimeout","open","isOpen","fadeIn","toggleRevokeButton","fadeOut","clientHeight","maxHeight","clearStatus","hasAnswered","hasConsented","Location","currentServiceIndex","async","onreadystatechange","onload","readyState","XMLHttpRequest","ActiveXObject","setRequestHeader","send","code","error","timeout","services","serviceDefinitions","ipinfo","url","headers","country","ipinfodb","isScript","statusCode","statusMessage","countryCode","maxmind","geoip2","iso_code","getNextService","getServiceByIdx","locate","callbackComplete","callbackError","runService","runNextServiceOnError","setupUrl","getCurrentServiceOpts","__JSONP_DATA","interpolateUrl","responseText","runServiceCallback","onServiceResult","logError","completeService","console","warn","Law","regionalLaw","hasLaw","explicitAction","applyLaw","law","getCountryCode","utils","cookieconsent","endVal","version","startVal","decimalPlaces","useEasing","useGrouping","useIndianSeparators","smartEasingThreshold","smartEasingAmount","separator","decimal","suffix","enableScrollSpy","scrollSpyDelay","scrollSpyOnce","finalEndVal","countDown","once","remaining","frameVal","easingFn","Number","toFixed","printValue","rAF","onCompleteCallback","formatNumber","numerals","easeOutExpo","formattingFn","validateValue","resetDuration","el","getElementById","onScrollFns","handleScroll","onscroll","scrollY","top","reset","determineDirectionAndSmartEasing","onStartCallback","pauseResume","plugin","render","ensureNumber","isNaN","CountUp","gsap","_getProperty","_numExp","_numWithUnitExp","getUnit","_isString","_isUndefined","_renderComplexString","_relExp","_forEachName","_sortPropTweensByPriority","_colorStringFilter","_checkPlugin","_replaceRandom","_plugins","GSCache","PropTween","_config","_ticker","_round","_missingPlugin","_getSetter","_getCache","_colorExp","_parseRelative","_setDefaults","_removeLinkedListItem","_win","_doc","_docElement","_pluginInitted","_tempDiv","_tempDivStyler","_recentSetterPlugin","_reverting","_windowExists","_transformProps","_RAD2DEG","PI","_DEG2RAD","_atan2","atan2","_bigNum","_capsExp","_horizontalExp","_complexExp","_propertyAliases","autoAlpha","scale","alpha","_renderCSSProp","ratio","round","_renderPropWithEnd","_renderCSSPropWithBeginning","_renderRoundedCSSProp","_renderNonTweeningValue","_renderNonTweeningValueOnlyAtEnd","_setterCSSStyle","property","_setterCSSProp","setProperty","_setterTransform","_gsap","_setterScale","scaleX","scaleY","_setterScaleWithRender","cache","renderTransform","_setterTransformWithRender","_transformProp","_transformOriginProp","_saveStyle","isNotCSS","tfm","_get","transform","svg","svgo","_removeIndependentTransforms","removeProperty","_revertStyle","isStart","uncache","_getStyleSaver","properties","saver","revert","core","getCache","_supports3D","_createElement","ns","createElementNS","_getComputedProperty","skipPrefixFallback","cs","getPropertyValue","_checkPropPrefix","_prefixes","preferPrefix","_initCore","documentElement","cssText","reverting","_getBBoxHack","swapIfPossible","ownerSVGElement","oldParent","oldSibling","nextSibling","oldCSS","bbox","getBBox","_gsapBBox","_getAttributeFallbacks","attributesArray","hasAttribute","_getBBox","bounds","_isSVG","getCTM","_removeProperty","_addNonTweeningPT","beginning","onlySetAtEnd","pt","_pt","_props","_nonConvertibleUnits","deg","rad","turn","_nonStandardLayouts","grid","flex","_convertToUnit","curValue","curUnit","horizontal","isRootSVG","measureProperty","amount","toPixels","toPercent","px","isSVG","_parseTransform","origin","_firstTwoOnly","zOrigin","_specialProps","_tweenComplexCSSString","matchIndex","result","startValues","startNum","color","startValue","endValue","endNum","chunk","endUnit","startUnit","endValues","exec","substring","lastIndex","units","_next","_keywordToPercent","bottom","center","_convertKeywordsToPercentages","_renderClearProps","tween","_time","_dur","clearTransforms","clearProps","pr","_identity2DMatrix","_rotationalProperties","_isNullTransform","_getComputedTransformMatrixAsArray","matrixString","_getMatrix","force2D","matrix","temp","addedToDOM","baseVal","consolidate","offsetParent","nextElementSibling","_applySVGOrigin","originIsAbsolute","smooth","matrixArray","pluginToAddPropTweensTo","xOriginOld","xOrigin","yOriginOld","yOrigin","xOffsetOld","xOffset","yOffsetOld","yOffset","tx","ty","originSplit","determinant","invertedScaleX","z","rotation","rotationX","rotationY","skewX","skewY","perspective","angle","cos","sin","a12","a22","t1","t2","t3","a13","a23","a33","a42","a43","a32","rotate","sqrt","forceCSS","xPercent","offsetWidth","yPercent","offsetHeight","transformPerspective","force3D","_renderSVGTransforms","_renderCSSTransforms","_renderNon3DTransforms","_addPxTranslate","_zeroDeg","_zeroPx","_endParenthesis","transforms","use3D","a11","a21","tan","_addRotationalPropTween","cap","change","finalValue","_assign","_addRawTransformPTs","startCache","exclude","endCache","side","vars","CSSPlugin","targetTest","startAt","specialProp","relative","isTransformRelated","transformPropTween","hasPriority","inlineProps","visibility","parseTransform","smoothOrigin","dep","autoRound","aliases","getSetter","checkPrefix","getStyleSaver","positionAndScale","others","all","registerPlugin","getRawPath","cacheRawPathMeasurements","getPositionOnPath","pointsToSegment","flatPointsToSegment","sliceRawPath","stringToRawPath","rawPathToString","transformRawPath","convertToPath","_convertToPath","getGlobalMatrix","_xProps","_yProps","_getUnit","_toArray","_getGSAP","_populateSegmentFromArray","segment","mode","si","_getPropNum","_relativize","_segmentToRawPath","slicer","unitX","unitY","fromCurrent","pointFunc","curviness","_align","_addDimensionalPropTween","resolution","_emptyFunc","_originToPoint","parentMatrix","viewBox","_getAlignMatrix","fromElement","toElement","fromOrigin","toOrigin","multiply","fromPoint","_originToPoint2","getTotalLength","rawPath","align","offsetX","offsetY","alignOrigin","curX","curY","alignTarget","transformOrigin","pathProperty","forceUnit","harness","alias","pp","_sliceModifier","MotionPathPlugin","Plugin","propTween","rawPaths","_vars","autoRotate","firstObj","rOffset","radians","useRadians","rProp","rSet","ru","totalLength","swap","convertCoordinates","point","getAlignMatrix","getRelativePosition","arrayToRawPath","_coreInitted","_clamp","_docEl","_body","_isTouch","_pointerType","ScrollTrigger","_root","_normalizer","_eventTypes","_context","_passThrough","_startup","_observers","_scrollers","_proxies","_getTime","_bridge","_integrate","bridge","scrollers","proxies","_getProxyProp","_isViewport","_addListener","nonPassive","_removeListener","_scrollLeft","_scrollTop","_onScroll","isPressed","_scrollCacheFunc","doNotCache","cachingFunc","history","scrollRestoration","isNormalizing","iOS","cacheID","_horizontal","p2","os","os2","d2","sc","scrollTo","_vertical","pageXOffset","op","_getTarget","nullTargetWarn","_getScrollFunc","scrollingElement","getProperty","_getVelocityProp","minTimeRefresh","useDelta","v1","v2","dropToZeroTime","getVelocity","latestValue","tOld","vOld","_getEvent","_gsapAllow","_getAbsoluteMax","_setScrollTrigger","globals","context","Observer","maxTouchPoints","msMaxTouchPoints","eventTypes","tolerance","dragMinimum","lineHeight","debounce","onStop","onStopDelay","ignore","wheelSpeed","onDragStart","onDragEnd","onDrag","onPress","onRelease","onRight","onLeft","onUp","onDown","onChangeX","onChangeY","onChange","onToggleX","onToggleY","onHover","onHoverEnd","ignoreCheck","isNormalizer","onGestureStart","onGestureEnd","onEnable","onDisable","scrollSpeed","allowClicks","lockAxis","onLockAxis","onStopDelayedCall","dragged","moved","wheeled","locked","axis","prevDeltaX","prevDeltaY","scrollFuncX","scrollFuncY","scrollX","limitToTouch","isViewport","ownerDoc","deltaX","onClickTime","clickCapture","_ignoreCheck","isPointerOrTouch","pointerType","onStopFunc","_vx","_vy","dx","dy","changedX","changedY","onDelta","onTouchOrPointerDelta","_onDrag","clientX","startX","startY","_onPress","_onRelease","isTrackingDrag","wasDragging","eventData","delayedCall","defaultPrevented","click","syntheticEvent","initMouseEvent","screenX","screenY","isGesturing","restart","_onGestureStart","touches","_onGestureEnd","onScroll","_onWheel","multiplier","deltaMode","_onMove","_onHover","_onHoverEnd","_onClick","_dc","isEnabled","kill","splice","getAll","getById","_window","_isFunction","_max","dim","client","_buildGetter","_clean","_getOffset","isRoot","cRect","clientTop","scrollTop","clientLeft","scrollLeft","offsets","_parseVal","currentVal","autoKillThreshold","ScrollToPlugin","rawVars","snapType","isWin","autoKill","getX","getY","xPrev","yPrev","scrollBehavior","snapInline","scrollSnapType","skipX","skipY","yDif","xDif","threshold","onAutoKill","onAutoKillParams","both","getOffset","buildGetter","_resizeDelay","_time2","_syncInterval","_refreshing","_pointerIsDown","_i","_prevWidth","_prevHeight","_autoRefresh","_sort","_suppressOverwrites","_ignoreResize","_ignoreMobileResize","_baseScreenHeight","_baseScreenWidth","_fixIOSBug","_scrollRestoration","_limitCallbacks","_time1","_lastScrollTime","_enabled","_rafBugFix","_pointerDownHandler","_pointerUpHandler","_getBoundsFunc","_winOffsets","innerWidth","_getBounds","_getSizeFunc","scroller","_getOffsetsFunc","_maxScroll","_iterateAutoRefresh","_isNumber","_isObject","_callIfFunc","_combineFunc","f1","f2","result1","result2","_endAnimation","animation","reversed","progress","_callback","totalTime","callbackAnimation","_abs","_left","_top","_right","_bottom","_width","_height","_Right","_Left","_Top","_Bottom","_padding","_margin","_Width","_Height","_px","_getComputedStyle","_makePositionable","obj","withoutTransforms","_getSize","_getLabelRatioArray","timeline","labels","_getClosestLabel","_snapDirectional","snapIncrementOrArray","snapped","_getLabelAtDirection","st","_multiListener","types","_wheelListener","scrollFunc","wheelHandler","_markerDefaults","startColor","endColor","indent","fontSize","fontWeight","_defaults","toggleActions","anticipatePin","_keywords","_offsetToPx","eqIndex","_createMarker","matchWidthEl","containerAnimation","useFixedPosition","isScroller","_isStart","innerText","_offset","_positionMarker","marker","flipped","oppositeSide","_isFlipped","_triggers","_ids","_rafID","_sync","_updateAll","clientWidth","_dispatch","_setBaseDimensions","_onResize","fullscreenElement","webkitFullscreenElement","_listeners","_emptyArray","_softRefresh","_refreshAll","_savedStyles","_revertRecorded","media","_revertAll","trigger","_ctx","_clearScrollMemory","_refreshingAll","rec","_refreshID","_queueRefreshID","_queueRefreshAll","skipRevert","isRefreshing","refreshInits","_subPinOffset","pin","original","adjustPinSpacing","setPositions","_dir","onRefresh","_lastScroll","_direction","_primary","isUpdating","recordVelocity","_propNamesToCopy","_stateProps","_swapPinOut","spacer","_setState","spacerIsNative","spacerState","swappedIn","_swapPinIn","spacerStyle","pinStyle","flexBasis","boxSizing","_getState","_copyState","override","omitOffsets","_parsePosition","scrollerSize","markerScroller","scrollerBounds","borderWidth","scrollerMax","p1","seek","localOffset","globalOffset","mapRange","scrollTrigger","_caScrollDist","_prefixExp","_reparent","_stOrig","_interruptionTracker","getValueFunc","initialValue","onInterrupt","last1","last2","current","_getTweenCreator","getScroll","lastScroll1","lastScroll2","getTween","change1","change2","onComplete","modifiers","checkForInterruption","onToggle","scrub","pinSpacing","invalidateOnRefresh","onScrubComplete","onSnapComplete","pinReparent","pinSpacer","fastScrollEnd","preventOverlaps","isToggle","scrollerCache","pinType","callbacks","onEnter","onLeave","onEnterBack","onLeaveBack","markers","onRefreshInit","getScrollerSize","getScrollerOffsets","lastSnap","lastRefresh","tweenTo","pinCache","snapFunc","scroll1","scroll2","markerStart","markerEnd","markerStartTrigger","markerEndTrigger","markerVars","pinOriginalState","pinActiveState","pinState","pinGetter","pinSetter","pinStart","pinChange","spacingStart","markerStartSetter","pinMoves","markerEndSetter","snap1","snap2","scrubTween","scrubSmooth","snapDurClamp","snapDelayedCall","prevProgress","prevScroll","prevAnimProgress","caMarkerSetter","customRevertReturn","refreshPriority","tweenScroll","scrubDuration","ease","totalProgress","lazy","_initted","immediateRender","resetTo","snapTo","directional","delay","refreshedRecently","naturalEnd","inertia","endScroll","_snap","onStart","_onInterrupt","_onComplete","stRevert","nativeElement","quickSetter","oldOnUpdate","oldParams","onUpdateParams","eventCallback","previous","prevRefreshing","isReverted","soft","invalidate","isFirstRefresh","otherPinOffset","parsedEnd","parsedEndTrigger","endTrigger","parsedStart","pinnedContainer","triggerIndex","curTrigger","curPin","oppositeScroll","initted","revertedPins","forcedOverflow","_pinPush","normalize","_pinOffset","endAnimation","labelToScroll","getTrailing","forceFake","clipped","wasActive","toggleState","action","stateChanged","toggled","isAtMax","isTakingAction","_dp","_start","_tTime","_tDur","newStart","newEnd","allowAnimation","onKill","clearInterval","suppressOverwrites","mm","bodyStyle","borderTopStyle","AnimationProto","Animation","setInterval","w","limitCallbacks","ms","syncInterval","ignoreMobileResize","autoRefreshEvents","scrollerProxy","clearMatchMedia","isInViewport","positionInViewport","referencePoint","killAll","allowListeners","saveStyles","safe","clearScrollMemory","maxScroll","getScrollFunc","isScrolling","snapDirectional","batch","varsCopy","batchMax","proxyCallback","triggers","_clampScrollAndGetDurationMultiplier","_allowNativePanning","touchAction","_overflow","auto","_nestedScroll","_isScrollT","scrollHeight","scrollWidth","overflowY","overflowX","_isScroll","_inputObserver","inputs","nested","_captureInputs","_inputExp","_inputIsFocused","isInput","_getScrollNormalizer","_vars2","normalizeScrollX","momentum","allowNestedScroll","maxY","smoother","ScrollSmoother","smootherInstance","initialScale","visualViewport","outerWidth","wheelRefresh","resolveMomentumDuration","lastRefreshID","skipTouchMove","inputObserver","resumeTouchMove","scrollClampX","scrollClampY","updateClamps","removeContentOffset","ignoreDrag","startScrollX","startScrollY","onResize","prevScale","dur","currentScroll","velocityX","velocityY","_ts","xArray","yArray","yClamped","ticker","normalizeScroll","normalizer","ss","_assertThisInitialized","ReferenceError","_inheritsLoose","subClass","superClass","autoSleep","overwrite","_tinyNum","_2PI","_HALF_PI","_gsID","_sqrt","_cos","_sin","_isNotFalse","_isFuncOrString","_isTypedArray","ArrayBuffer","isView","_isArray","_strictNumExp","_complexStringNumExp","_delimitedValueExp","_unitExp","_globalTimeline","_globals","_installScope","_coreReady","_install","scope","_merge","_warn","suppress","_addGlobal","_startAtRevertConfig","suppressEvents","_revertConfigNoKill","_revertConfig","_reservedProps","_lazyTweens","_lazyLookup","_lastRenderedFrame","_effects","_nextGCFrame","_harnessPlugins","_callbackNames","_harness","harnessPlugin","names","_roundPrecise","operator","_arrayContainsAny","toSearch","toFind","_lazyRender","_lazy","_lazySafeRender","_startAt","_numericIfPossible","_setKeyframeDefaults","excludeDuration","toMerge","_mergeDeep","_copyExcluding","excluding","copy","_inheritDefaults","keyframes","inherit","_arraysMatch","a1","a2","_addLinkedListItem","firstProp","lastProp","sortBy","_prev","_removeFromParent","onlyIfParentHasAutoRemove","autoRemoveChildren","_act","_uncache","_end","_dirty","_recacheAncestors","totalDuration","_rewindStartAt","autoRevert","_hasNoPausedAncestors","_elapsedCycleDuration","_repeat","_animationCycle","_rDelay","tTime","cycleDuration","whole","_parentToChildTotalTime","parentTime","_setEnd","_rts","_alignPlayhead","smoothChildTiming","_postAddChecks","rawTime","_zTime","_addToTimeline","skipChecks","_delay","timeScale","_isFromOrFromStart","_recent","_scrollTrigger","_attemptInitTween","_initTween","frame","_parentPlayheadIsBeforeStart","_lock","_renderZeroDurationTween","prevRatio","repeatDelay","iteration","prevIteration","_yoyo","repeatRefresh","_from","_onUpdate","_prom","_findNextPauseTween","prevTime","_first","_last","_setDuration","skipUncache","leavePlayhead","repeat","_onUpdateTotalDuration","Timeline","_zeroPosition","endTime","percentAnimation","recent","clippedDuration","isPercent","_createTweenType","params","isLegacy","varsIndex","irVars","runBackwards","Tween","_conditionalReturn","_slice","_isArrayLike","nonEmpty","_flatten","ar","leaveStrings","accumulator","_accumulator","_wake","shuffle","random","distribute","each","_parseEase","isDecimal","ratios","ratioX","ratioY","edges","distances","originX","originY","j","wrapAt","_invertEase","_roundModifier","raw","radius","is2D","increment","roundingIncrement","returnFunction","pipe","_len","functions","_key","unitize","_wrapArray","wrap","range","wrapYoyo","total","nums","inMin","inMax","outMin","outMax","inRange","outRange","interpolate","mutate","master","interpolators","il","_addPropTween","_renderPropTweens","_getLabelInDirection","fromTime","backward","executeLazyFirst","prevContext","callbackScope","_interrupt","_quickTween","_registerPluginQueue","_createPlugin","isFunc","instanceDefaults","_killPropTweensOf","modifier","_addPluginModifier","statics","_255","_colorLookup","aqua","lime","silver","black","maroon","teal","blue","navy","white","olive","yellow","orange","gray","purple","green","red","pink","cyan","transparent","_hue","m1","m2","splitColor","toHSL","forceAlpha","wasHSL","_colorOrderData","_formatColors","orderMatchData","colors","shell","_hslExp","combined","_tickerActive","_lagThreshold","_adjustedLag","_startTime","_lastUpdate","_gap","_nextTime","_id","_req","_raf","_self","_delta","_tick","elapsed","manual","overlap","tick","deltaRatio","fps","wake","gsapVersions","GreenSockGlobals","lagSmoothing","adjustedLag","_fps","prioritize","_easeMap","_customEaseExp","_quotesExp","_parseObjectInString","val","parsedVal","lastIndexOf","_valueInParentheses","_configEaseFromString","_CE","_propagateYoyoEase","isYoyo","yoyoEase","_ease","_yEase","defaultEase","_insertEase","easeIn","easeOut","easeInOut","lowercaseName","_easeInOutFromOut","_configElastic","amplitude","period","p3","asin","_configBack","overshoot","power","Linear","easeNone","none","n1","n2","n3","SteppedEase","steps","immediateStart","yoyo","_totalTime","_ptLookup","_pTime","_ps","includeRepeats","wrapRepeats","prevIsReverting","globalTime","_sat","includeDelay","atTime","then","onFulfilled","Promise","_resolve","_then","_Animation","sortChildren","fromTo","fromVars","toVars","staggerTo","stagger","onCompleteAll","onCompleteAllParams","onCompleteParams","staggerFrom","staggerFromTo","tDur","crossingStart","prevPaused","pauseTween","prevStart","rewinding","doesWrap","onRepeat","_hasPause","_forcing","adjustedTime","addLabel","getChildren","tweens","timelines","ignoreBeforeTime","animations","removeLabel","killTweensOf","_totalTime2","addPause","removePause","onlyActive","getTweensOf","_overwritingTween","parsedTargets","isGlobalTime","_targets","tl","_onStart","onStartParams","tweenFromTo","fromPosition","afterTime","previousLabel","beforeTime","currentLabel","shiftChildren","adjustLabels","includeLabels","updateRoot","_addComplexStringPropTween","setter","stringFilter","funcParam","startNums","hasRandom","fp","optional","currentValue","_setterPlain","_setterFuncWithParam","_setterFunc","_forceAllPropTweens","_renderBoolean","_renderPlain","_processVars","_parseFuncOrString","ptLookup","priority","prevStartAt","fullTargets","autoOverwrite","_overwrite","cleanVars","gsData","harnessVars","overwritten","_ptCache","_op","_onInit","_updatePropTweens","startIsRelative","ptCache","rootPT","lookup","_addAliasesToVars","propertyAliases","_parseKeyframe","allProps","easeEach","_staggerTweenProps","_staggerPropsToSkip","_Animation2","skipInherit","_this3$vars","curTarget","staggerFunc","staggerVarsToMerge","kf","isNegative","killingTargets","propTweenLookup","firstPT","overwrittenProps","curLookup","curOverwriteProps","onReverseComplete","onReverseCompleteParams","_setterAttribute","hasNonDependentRemaining","_setterWithModifier","mSet","mt","pt2","renderer","_proto4","TweenMax","TweenLite","TimelineLite","TimelineMax","_media","_lastMediaTime","_onMediaChange","conditions","anyMatch","onMatch","Context","_r","_proto5","prevSelector","getTweens","MatchMedia","contexts","_proto6","cond","mq","addListener","_len2","args","_key2","getter","setters","quickTo","_merge2","isTweening","registerEffect","effect","plugins","extendTimeline","pluginName","registerEase","parseEase","exportRoot","includeDelayedCalls","matchMediaRefresh","found","install","effects","globalTimeline","toAdd","_getPluginPropTween","_addModifiers","_buildModifierPlugin","Power0","Power1","Power2","Power3","Power4","Quad","Cubic","Quart","Quint","Strong","Elastic","Back","Bounce","Sine","Expo","Circ","gsapWithCSS","TweenMaxWithCSS","_divContainer","_svgContainer","_identityMatrix","_gEl","_hasOffsetBug","_setDoc","doc","Matrix2D","d1","_forceNonZeroScale","_svgTemps","_divTemps","_getDocScrollTop","_getDocScrollLeft","_svgOwner","_isFixed","_createSibling","_consolidate","numberOfItems","getItem","_getCTM","_placeSiblings","adjustGOffset","siblings","offsetLeft","offsetTop","_setMatrix","inverse","b2","c2","e2","equals","decoratee","includeScrollInFixed","zeroScales","temps","b1","b3","isFixed","_svgPathExp","_numbersExp","_scientific","_selectorExp","_largeNum","_temp","_temp2","_roundingNum","_wrapProgress","_splitSegment","segIndex","subdivideSegment","_getSampleIndex","samples","_reverseRawPath","skipOuter","reverseSegment","_copyMetaData","minLength","totalPoints","_appendOrMerge","prevSeg","_bestDistance","_gsPath","copyRawPath","_createPath","attributes","nodeName","setAttributeNS","nodeValue","_typeAttrs","circle","ellipse","line","_attrToObj","circ","ry","rcirc","rycirc","points","x2","x3","x4","x5","x6","y2","y3","y4","y5","y6","rx","cx","cy","x1","y1","_gsRawPath","getRotationAtProgress","getProgressData","getRotationAtBezierT","loops","eSeg","sSeg","eSegIndex","sSegIndex","ei","sameSegment","sameBezier","wrapsBehind","sShift","eShift","totalSegments","measureSegment","startIndex","bezierQty","inc","samplesIndex","prevLength","xd","xd1","yd","yd1","inv","lengthIndex","segLength","pathLength","ax","ay","cp1x","cp1y","cp2x","cp2y","bx","by","x1a","y1a","x2a","y2a","pushToNextIfAtEnd","includeAngle","arcToSegment","lastX","lastY","largeArcFlag","sweepFlag","angleRad","cosAngle","sinAngle","TWOPI","dx2","dy2","x1_sq","y1_sq","radiiCheck","rx_sq","ry_sq","sq","coef","cx1","cy1","sx2","sy2","ux","uy","vx","vy","angleStart","acos","angleExtent","segments","angleIncrement","controlLength","ma","mb","mc","md","relativeX","relativeY","twoThirds","errorMessage","command","isRelative","difX","difY","beziers","prevCommand","flag1","flag2","sx","sy","ex","ey","log","closed","bezierToPoints","x12","y12","x23","y23","x34","y34","x123","y123","x234","y234","x1234","y1234","d3","nextX","nextY","prevX","prevY","dx1","dy1","r1","r2","r3","mx1","mx2","mxm","my1","my2","mym","pointToSegDist","simplifyStep","simplified","maxSqDist","firstX","firstY","simplifyPoints","getClosestProgressOnBezier","iterations","py","slices","x0","y0","best","getClosestData","bestDistance","subdivideSegmentNear","bestT","bestSegmentIndex","sl","exportName","undefined","VENDOR_PREFIXES","TEST_ELEMENT","TYPE_FUNCTION","setTimeoutContext","fn","bindFn","invokeArrayArg","arg","iterator","deprecate","method","deprecationMessage","stack","TypeError","output","nextKey","extend","baseP","childP","_super","boundFn","boolOrFn","ifUndefined","val1","val2","addEventListeners","handler","splitStr","removeEventListeners","hasParent","inStr","str","inArray","findByKey","uniqueArray","results","sortUniqueArray","prefixed","camelProp","_uniqueId","getWindowForElement","parentWindow","MOBILE_REGEX","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_PEN","INPUT_TYPE_MOUSE","INPUT_TYPE_KINECT","COMPUTE_INTERVAL","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","Input","manager","inputTarget","domHandler","ev","evEl","evTarget","evWin","createInputInstance","Type","inputClass","PointerEventInput","TouchInput","MouseInput","TouchMouseInput","inputHandler","eventType","input","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","computeInputData","recognize","prevInput","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","getCenter","deltaTime","getAngle","getDistance","computeDeltaXY","offsetDirection","overallVelocity","overallVelocityX","overallVelocityY","getScale","getRotation","maxPointers","computeIntervalInputData","srcEvent","offsetDelta","prevDelta","lastInterval","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","pressed","MEhandler","which","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","MSPointerEvent","PointerEvent","store","pointerEvents","PEhandler","removePointer","eventTypeNormalized","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","started","TEhandler","normalizeSingleTouches","changed","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","targetIds","MTEhandler","getTouches","allTouches","identifier","targetTouches","changedTargetTouches","DEDUP_TIMEOUT","DEDUP_DISTANCE","primaryTouch","lastTouches","TMEhandler","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","recordTouches","isSyntheticEvent","setLastTouch","lastTouch","lts","removeLastTouch","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","getTouchActionProps","TouchAction","compute","actions","recognizers","recognizer","getTouchAction","cleanTouchActions","preventDefaults","prevented","hasNone","hasPanY","hasPanX","isTapPointer","isTapMovement","isTapTouchTime","preventSrc","touchMap","cssSupports","CSS","supports","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","Recognizer","simultaneous","requireFail","recognizeWith","otherRecognizer","getRecognizerByNameIfManager","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","stateStr","additionalEvent","tryEmit","canEmit","inputDataClone","process","directionStr","AttrRecognizer","attrTest","optionPointers","isRecognized","isValid","PanRecognizer","pX","pY","directionTest","hasMoved","PinchRecognizer","inOut","PressRecognizer","_timer","_input","validPointers","validMovement","validTime","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","Hammer","preset","Manager","VERSION","domEvents","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","STOP","FORCED_STOP","handlers","oldCssProps","toggleCssProps","curRecognizer","existing","triggerDomEvent","gestureEvent","initEvent","gesture","Tap","Pan","Swipe","Pinch","Rotate","Press","freeGlobal","define","amd","module","exports","_isEdge","_types","_parseNum","_getAttributeAsNumber","_getDistance","_hasNonScalingStroke","_bonusValidated","_parse","defaultStart","_getLength","prevPoint","getScreenCTM","strokeDasharray","_getPosition","dash","strokeDashoffset","DrawSVGPlugin","overage","_style","_target","_length","_dash","_offsetPT","_dashPT","strokeLinecap","strokeLinejoin","strokeMiterlimit","_live","lengthRatio","emojiExp","getText","_stripExp","_multipleSpacesExp","_isAbsolute","absolute","_findSpecialChars","chars","_divStart","_cssClassFunc","cssClass","iterate","num","_swapText","oldText","newText","_pushReversed","_isBeforeWordDelimiter","wordDelimiter","_parent","_deWordify","childNodes","_isSplit","previousSibling","_getStyleAsNumber","computedStyle","_setPositionsAfterSplit","allChars","allWords","allLines","origWidth","origHeight","paddingLeft","lineOffsetY","borderTopAndBottom","borderLeftAndRight","padTopAndBottom","padLeftAndRight","lineThreshold","textAlign","charArray","wordArray","lineArray","span","lines","words","linesClass","iterateLine","spaceNodesToRemove","isChild","curLine","addWordSpaces","lineNode","lineWidth","getElementsByTagName","_x","_y","_w","_h","_wordEnd","_isFirst","createTextNode","fromCharCode","_splitRawText","wordStart","charStart","space","wordEnd","wordIsOpen","specialChars","splitText","character","hasTagStart","testResult","reduceWhiteSpace","outerHTML","_split","SplitText","_originals","isSplit","wordsClass","charsClass","originals","_trimExp","splitInnerHTML","delimiter","emojiSafeSplit","emoji","Accordion","enableCondition","startOpen","multiOpen","_timeout","_timeline","title","_clickHandler","_open","_active","_buildAnimations","marginTop","marginBottom","opacity","_toggleAccordionItem","isLink","otherItem","SnapperInstance","buttons","$","previousTimeline","previousTarget","currentIndex","CircleScene","setActive","attachLocker","animate","backgrounds","summaries","zIndex","links","isTabletDown","EightScene","tabs","resizeTimeout","settings","tabletDown","tab","_mouseEnterListener","handleResize","desktop","switchBackground","newIndex","shiftBackground","FiveScene","rawCounts","counts","MEALS_COUNT","BLANKETS_COUNT","descriptionContainer","descriptions","icons","previousCounter","toLocaleString","drawSVG","tl2","FourScene","searchContainer","searchInput","searchOverlay","desktopSettings","mobileSettings","mobile","tablet","subMenus","menu","navbar","navbarItem","lock","paddingTop","paddingBottom","unlock","fonts","ready","donateButtons","innerRadius","_previousWidth","path2","paths","isTablet","HeroScene","hasVideo","hasMobileVideo","heroContainer","heroImage","pos","rawWidth","rawHeight","textBlock","textAlignment","rawRatio","oldFocalPoint","centerX","centerY","oldX","oldY","targetRadius","endPoint","upScale","scaledCenterX","scaledCenterY","newStartX","newEndX","newStartY","newEndY","newFocalPoint","imageWidth","imageHeight","shrunkWidth","shrunkHeight","boundaries","targetBoundaries","xPos","yPos","clipPath","HeroSecondScene","motionPath","circleSvg","clipContainer","hero","HeroThirdScene","tabletUp","setMenuNavLinksEvent","mobileMenuNavLinks","isSubmenuOpen","timeLineSubMenu","submenu","submenuLinks","goBack","activeSubmenu","activeSubmenuLinks","timeLineBack","closeMenu","mobileMenu","searchBtn","donateButtonPlacement","openMenuBtn","menuOpen","back","timeLine","NineScene","popupSliderOptions","popupSlider","oldIndex","previousElementSibling","currentPlayer","stopVideo","playerId","players","openingVideo","video","videoId","playVideo","Event","closePopupBtn","storyLinks","apiLoaded","onYouTubeIframeAPIReady","loadPlayer","firstScriptTag","YT","Player","SceneNavigator","scene","sceneCount","snapPoints","pages","_animation","_closeTimeout","_clicked","_options","option","_currentPage","addUpdateCallback","_updatePage","SevenScene","PopupSlider","SixScene","openVideoCarousel","sliderElement","buildTimeline","backgroundPosition","tl3","sliders","animatedArrows","arrowSize","configure","activeSliderHandler","Snapper","_eventCallbacks","_updateCallbacks","_lockers","_enableHammer","_baseHeight","_hammer","_endSelector","_speed","_footer","_footerFocus","_footerObserver","IntersectionObserver","observer","isIntersecting","_previousPoint","_removeEvents","_bindEvents","_wheelHandler","keydown","_keyHandler","swipe","_swipeHandler","isLocked","_toggled","_topTrigger","introVideo","togglePlay","$playing","curIndex","targetIndex","_locked","locker","_preventOuter","_wheelTriggered","_wheelTimeout","_previousScroll","_edge","ThirdScene","headerWidth","containerWidth","paddingRight","circleDiv","secondScene","textSplit","targetWidth","accordion"],"sourceRoot":""}