{"version":3,"file":"christmas2020.min.js","sources":["christmas2020/lottie-animations.js","../node_modules/lottie-web/build/player/lottie_light.js","../node_modules/gsap/gsap-core.js","../node_modules/gsap/CSSPlugin.js","../node_modules/gsap/index.js","christmas2020/hover-animations.js","christmas2020/filter-scroll.js","christmas2020/share.js","christmas2020/index.js"],"sourcesContent":["import lottie from '../../node_modules/lottie-web/build/player/lottie_light.js';\n//import { ScrollTrigger } from \"../../node_modules/gsap/ScrollTrigger.js\";\n\nlet mastheadTop = lottie.loadAnimation({\n container: document.getElementById('masthead-top-lottie'),\n renderer: 'svg',\n loop: false,\n autoplay: false,\n path: '/holiday2020/images/christmas2020/holiday-card-banner.json'\n})\n\nwindow.addEventListener(\"load\", event => {\n window.setTimeout(() => {\n mastheadTop.play();\n }, 500);\n});\n\n/*\n ScrollTrigger.create({\n trigger: \"#masthead-top #masthead-top-lottie-md\",\n start: \"top 70%\",\n end: \"bottom top\",\n onEnter: function() {\n mastheadTop.play();\n },\n onEnterBack: function() {\n mastheadTopMd.play();\n },\n onLeave: function() {\n mastheadTopMd.stop();\n },\n onLeaveBack: function() {\n mastheadTopMd.stop();\n }\n });\n});\n*/","(typeof navigator !== \"undefined\") && (function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(function() {\n return factory(root);\n });\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory(root);\n } else {\n root.lottie = factory(root);\n root.bodymovin = root.lottie;\n }\n}((window || {}), function(window) {\n\t\"use strict\";\r\nvar svgNS = \"http://www.w3.org/2000/svg\";\r\n\r\nvar locationHref = '';\r\n\r\nvar initialDefaultFrame = -999999;\r\n\r\nvar subframeEnabled = true;\r\nvar expressionsPlugin;\r\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\nvar cachedColors = {};\r\nvar bm_rounder = Math.round;\r\nvar bm_rnd;\r\nvar bm_pow = Math.pow;\r\nvar bm_sqrt = Math.sqrt;\r\nvar bm_abs = Math.abs;\r\nvar bm_floor = Math.floor;\r\nvar bm_max = Math.max;\r\nvar bm_min = Math.min;\r\nvar blitter = 10;\r\n\r\nvar BMMath = {};\r\n(function(){\r\n var propertyNames = [\"abs\", \"acos\", \"acosh\", \"asin\", \"asinh\", \"atan\", \"atanh\", \"atan2\", \"ceil\", \"cbrt\", \"expm1\", \"clz32\", \"cos\", \"cosh\", \"exp\", \"floor\", \"fround\", \"hypot\", \"imul\", \"log\", \"log1p\", \"log2\", \"log10\", \"max\", \"min\", \"pow\", \"random\", \"round\", \"sign\", \"sin\", \"sinh\", \"sqrt\", \"tan\", \"tanh\", \"trunc\", \"E\", \"LN10\", \"LN2\", \"LOG10E\", \"LOG2E\", \"PI\", \"SQRT1_2\", \"SQRT2\"];\r\n var i, len = propertyNames.length;\r\n for(i=0;i 1) {\r\n hsv[1] = 1;\r\n }\r\n else if (hsv[1] <= 0) {\r\n hsv[1] = 0;\r\n }\r\n return HSVtoRGB(hsv[0],hsv[1],hsv[2]);\r\n}\r\n\r\nfunction addBrightnessToRGB(color,offset){\r\n var hsv = RGBtoHSV(color[0]*255,color[1]*255,color[2]*255);\r\n hsv[2] += offset;\r\n if (hsv[2] > 1) {\r\n hsv[2] = 1;\r\n }\r\n else if (hsv[2] < 0) {\r\n hsv[2] = 0;\r\n }\r\n return HSVtoRGB(hsv[0],hsv[1],hsv[2]);\r\n}\r\n\r\nfunction addHueToRGB(color,offset) {\r\n var hsv = RGBtoHSV(color[0]*255,color[1]*255,color[2]*255);\r\n hsv[0] += offset/360;\r\n if (hsv[0] > 1) {\r\n hsv[0] -= 1;\r\n }\r\n else if (hsv[0] < 0) {\r\n hsv[0] += 1;\r\n }\r\n return HSVtoRGB(hsv[0],hsv[1],hsv[2]);\r\n}\r\n\r\nvar rgbToHex = (function(){\r\n var colorMap = [];\r\n var i;\r\n var hex;\r\n for(i=0;i<256;i+=1){\r\n hex = i.toString(16);\r\n colorMap[i] = hex.length == 1 ? '0' + hex : hex;\r\n }\r\n\r\n return function(r, g, b) {\r\n if(r<0){\r\n r = 0;\r\n }\r\n if(g<0){\r\n g = 0;\r\n }\r\n if(b<0){\r\n b = 0;\r\n }\r\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\r\n };\r\n}());\r\nfunction BaseEvent(){}\r\nBaseEvent.prototype = {\r\n\ttriggerEvent: function (eventName, args) {\r\n\t if (this._cbs[eventName]) {\r\n\t var len = this._cbs[eventName].length;\r\n\t for (var i = 0; i < len; i++){\r\n\t this._cbs[eventName][i](args);\r\n\t }\r\n\t }\r\n\t},\r\n\taddEventListener: function (eventName, callback) {\r\n\t if (!this._cbs[eventName]){\r\n\t this._cbs[eventName] = [];\r\n\t }\r\n\t this._cbs[eventName].push(callback);\r\n\r\n\t\treturn function() {\r\n\t\t\tthis.removeEventListener(eventName, callback);\r\n\t\t}.bind(this);\r\n\t},\r\n\tremoveEventListener: function (eventName,callback){\r\n\t if (!callback){\r\n\t this._cbs[eventName] = null;\r\n\t }else if(this._cbs[eventName]){\r\n\t var i = 0, len = this._cbs[eventName].length;\r\n\t while(i 0) || (val > -0.000001 && val < 0)) {\r\n return _rnd(val * v) / v;\r\n }\r\n return val;\r\n }\r\n\r\n function to2dCSS() {\r\n //Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n /*if(this.isIdentity()) {\r\n return '';\r\n }*/\r\n var props = this.props;\r\n var _a = roundMatrixProperty(props[0]);\r\n var _b = roundMatrixProperty(props[1]);\r\n var _c = roundMatrixProperty(props[4]);\r\n var _d = roundMatrixProperty(props[5]);\r\n var _e = roundMatrixProperty(props[12]);\r\n var _f = roundMatrixProperty(props[13]);\r\n return \"matrix(\" + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + \")\";\r\n }\r\n\r\n return function(){\r\n this.reset = reset;\r\n this.rotate = rotate;\r\n this.rotateX = rotateX;\r\n this.rotateY = rotateY;\r\n this.rotateZ = rotateZ;\r\n this.skew = skew;\r\n this.skewFromAxis = skewFromAxis;\r\n this.shear = shear;\r\n this.scale = scale;\r\n this.setTransform = setTransform;\r\n this.translate = translate;\r\n this.transform = transform;\r\n this.applyToPoint = applyToPoint;\r\n this.applyToX = applyToX;\r\n this.applyToY = applyToY;\r\n this.applyToZ = applyToZ;\r\n this.applyToPointArray = applyToPointArray;\r\n this.applyToTriplePoints = applyToTriplePoints;\r\n this.applyToPointStringified = applyToPointStringified;\r\n this.toCSS = toCSS;\r\n this.to2dCSS = to2dCSS;\r\n this.clone = clone;\r\n this.cloneFromProps = cloneFromProps;\r\n this.equals = equals;\r\n this.inversePoints = inversePoints;\r\n this.inversePoint = inversePoint;\r\n this.getInverseMatrix = getInverseMatrix;\r\n this._t = this.transform;\r\n this.isIdentity = isIdentity;\r\n this._identity = true;\r\n this._identityCalculated = false;\r\n\r\n this.props = createTypedArray('float32', 16);\r\n this.reset();\r\n };\r\n}());\r\n\r\n/*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\r\n\r\n(function (pool, math) {\r\n//\r\n// The following constants are related to IEEE 754 limits.\r\n//\r\n var global = this,\r\n width = 256, // each RC4 output is 0 <= x < 256\r\n chunks = 6, // at least six RC4 outputs for each double\r\n digits = 52, // there are 52 significant digits in a double\r\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\r\n startdenom = math.pow(width, chunks),\r\n significance = math.pow(2, digits),\r\n overflow = significance * 2,\r\n mask = width - 1,\r\n nodecrypto; // node.js crypto module, initialized at the bottom.\r\n\r\n//\r\n// seedrandom()\r\n// This is the seedrandom function described above.\r\n//\r\n function seedrandom(seed, options, callback) {\r\n var key = [];\r\n options = (options === true) ? { entropy: true } : (options || {});\r\n\r\n // Flatten the seed string or build one from local entropy if needed.\r\n var shortseed = mixkey(flatten(\r\n options.entropy ? [seed, tostring(pool)] :\r\n (seed === null) ? autoseed() : seed, 3), key);\r\n\r\n // Use the seed to initialize an ARC4 generator.\r\n var arc4 = new ARC4(key);\r\n\r\n // This function returns a random double in [0, 1) that contains\r\n // randomness in every bit of the mantissa of the IEEE 754 value.\r\n var prng = function() {\r\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\r\n d = startdenom, // and denominator d = 2 ^ 48.\r\n x = 0; // and no 'extra last byte'.\r\n while (n < significance) { // Fill up all significant digits by\r\n n = (n + x) * width; // shifting numerator and\r\n d *= width; // denominator and generating a\r\n x = arc4.g(1); // new least-significant-byte.\r\n }\r\n while (n >= overflow) { // To avoid rounding up, before adding\r\n n /= 2; // last byte, shift everything\r\n d /= 2; // right using integer math until\r\n x >>>= 1; // we have exactly the desired bits.\r\n }\r\n return (n + x) / d; // Form the number within [0, 1).\r\n };\r\n\r\n prng.int32 = function() { return arc4.g(4) | 0; };\r\n prng.quick = function() { return arc4.g(4) / 0x100000000; };\r\n prng.double = prng;\r\n\r\n // Mix the randomness into accumulated entropy.\r\n mixkey(tostring(arc4.S), pool);\r\n\r\n // Calling convention: what to return as a function of prng, seed, is_math.\r\n return (options.pass || callback ||\r\n function(prng, seed, is_math_call, state) {\r\n if (state) {\r\n // Load the arc4 state from the given state if it has an S array.\r\n if (state.S) { copy(state, arc4); }\r\n // Only provide the .state method if requested via options.state.\r\n prng.state = function() { return copy(arc4, {}); };\r\n }\r\n\r\n // If called as a method of Math (Math.seedrandom()), mutate\r\n // Math.random because that is how seedrandom.js has worked since v1.0.\r\n if (is_math_call) { math[rngname] = prng; return seed; }\r\n\r\n // Otherwise, it is a newer calling convention, so return the\r\n // prng directly.\r\n else return prng;\r\n })(\r\n prng,\r\n shortseed,\r\n 'global' in options ? options.global : (this == math),\r\n options.state);\r\n }\r\n math['seed' + rngname] = seedrandom;\r\n\r\n//\r\n// ARC4\r\n//\r\n// An ARC4 implementation. The constructor takes a key in the form of\r\n// an array of at most (width) integers that should be 0 <= x < (width).\r\n//\r\n// The g(count) method returns a pseudorandom integer that concatenates\r\n// the next (count) outputs from ARC4. Its return value is a number x\r\n// that is in the range 0 <= x < (width ^ count).\r\n//\r\n function ARC4(key) {\r\n var t, keylen = key.length,\r\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\r\n\r\n // The empty key [] is treated as [0].\r\n if (!keylen) { key = [keylen++]; }\r\n\r\n // Set up S using the standard key scheduling algorithm.\r\n while (i < width) {\r\n s[i] = i++;\r\n }\r\n for (i = 0; i < width; i++) {\r\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\r\n s[j] = t;\r\n }\r\n\r\n // The \"g\" method returns the next (count) outputs as one number.\r\n me.g = function(count) {\r\n // Using instance members instead of closure state nearly doubles speed.\r\n var t, r = 0,\r\n i = me.i, j = me.j, s = me.S;\r\n while (count--) {\r\n t = s[i = mask & (i + 1)];\r\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\r\n }\r\n me.i = i; me.j = j;\r\n return r;\r\n // For robust unpredictability, the function call below automatically\r\n // discards an initial batch of values. This is called RC4-drop[256].\r\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\r\n };\r\n }\r\n\r\n//\r\n// copy()\r\n// Copies internal state of ARC4 to or from a plain object.\r\n//\r\n function copy(f, t) {\r\n t.i = f.i;\r\n t.j = f.j;\r\n t.S = f.S.slice();\r\n return t;\r\n }\r\n\r\n//\r\n// flatten()\r\n// Converts an object tree to nested arrays of strings.\r\n//\r\n function flatten(obj, depth) {\r\n var result = [], typ = (typeof obj), prop;\r\n if (depth && typ == 'object') {\r\n for (prop in obj) {\r\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\r\n }\r\n }\r\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\r\n }\r\n\r\n//\r\n// mixkey()\r\n// Mixes a string seed into a key that is an array of integers, and\r\n// returns a shortened string seed that is equivalent to the result key.\r\n//\r\n function mixkey(seed, key) {\r\n var stringseed = seed + '', smear, j = 0;\r\n while (j < stringseed.length) {\r\n key[mask & j] =\r\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\r\n }\r\n return tostring(key);\r\n }\r\n\r\n//\r\n// autoseed()\r\n// Returns an object for autoseeding, using window.crypto and Node crypto\r\n// module if available.\r\n//\r\n function autoseed() {\r\n try {\r\n if (nodecrypto) { return tostring(nodecrypto.randomBytes(width)); }\r\n var out = new Uint8Array(width);\r\n (global.crypto || global.msCrypto).getRandomValues(out);\r\n return tostring(out);\r\n } catch (e) {\r\n var browser = global.navigator,\r\n plugins = browser && browser.plugins;\r\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\r\n }\r\n }\r\n\r\n//\r\n// tostring()\r\n// Converts an array of charcodes to a string\r\n//\r\n function tostring(a) {\r\n return String.fromCharCode.apply(0, a);\r\n }\r\n\r\n//\r\n// When seedrandom.js is loaded, we immediately mix a few bits\r\n// from the built-in RNG into the entropy pool. Because we do\r\n// not want to interfere with deterministic PRNG state later,\r\n// seedrandom will not call math.random on its own again after\r\n// initialization.\r\n//\r\n mixkey(math.random(), pool);\r\n\r\n//\r\n// Nodejs and AMD support: export the implementation as a module using\r\n// either convention.\r\n//\r\n\r\n// End anonymous scope, and pass initial values.\r\n})(\r\n [], // pool: entropy pool starts empty\r\n BMMath // math: package containing random, pow, and seedrandom\r\n);\r\nvar BezierFactory = (function(){\r\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\r\n\r\n var ob = {};\r\n ob.getBezierEasing = getBezierEasing;\r\n var beziers = {};\r\n\r\n function getBezierEasing(a,b,c,d,nm){\r\n var str = nm || ('bez_' + a+'_'+b+'_'+c+'_'+d).replace(/\\./g, 'p');\r\n if(beziers[str]){\r\n return beziers[str];\r\n }\r\n var bezEasing = new BezierEasing([a,b,c,d]);\r\n beziers[str] = bezEasing;\r\n return bezEasing;\r\n }\r\n\r\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\r\n var NEWTON_ITERATIONS = 4;\r\n var NEWTON_MIN_SLOPE = 0.001;\r\n var SUBDIVISION_PRECISION = 0.0000001;\r\n var SUBDIVISION_MAX_ITERATIONS = 10;\r\n\r\n var kSplineTableSize = 11;\r\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\r\n\r\n var float32ArraySupported = typeof Float32Array === \"function\";\r\n\r\n function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\r\n function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\r\n function C (aA1) { return 3.0 * aA1; }\r\n\r\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\r\n function calcBezier (aT, aA1, aA2) {\r\n return ((A(aA1, aA2)*aT + B(aA1, aA2))*aT + C(aA1))*aT;\r\n }\r\n\r\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\r\n function getSlope (aT, aA1, aA2) {\r\n return 3.0 * A(aA1, aA2)*aT*aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n }\r\n\r\n function binarySubdivide (aX, aA, aB, mX1, mX2) {\r\n var currentX, currentT, i = 0;\r\n do {\r\n currentT = aA + (aB - aA) / 2.0;\r\n currentX = calcBezier(currentT, mX1, mX2) - aX;\r\n if (currentX > 0.0) {\r\n aB = currentT;\r\n } else {\r\n aA = currentT;\r\n }\r\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n return currentT;\r\n }\r\n\r\n function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\r\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n var currentSlope = getSlope(aGuessT, mX1, mX2);\r\n if (currentSlope === 0.0) return aGuessT;\r\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n aGuessT -= currentX / currentSlope;\r\n }\r\n return aGuessT;\r\n }\r\n\r\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\r\n function BezierEasing (points) {\r\n this._p = points;\r\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n this._precomputed = false;\r\n\r\n this.get = this.get.bind(this);\r\n }\r\n\r\n BezierEasing.prototype = {\r\n\r\n get: function (x) {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n if (!this._precomputed) this._precompute();\r\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\r\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\r\n if (x === 0) return 0;\r\n if (x === 1) return 1;\r\n return calcBezier(this._getTForX(x), mY1, mY2);\r\n },\r\n\r\n // Private part\r\n\r\n _precompute: function () {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n this._precomputed = true;\r\n if (mX1 !== mY1 || mX2 !== mY2)\r\n this._calcSampleValues();\r\n },\r\n\r\n _calcSampleValues: function () {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2];\r\n for (var i = 0; i < kSplineTableSize; ++i) {\r\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n }\r\n },\r\n\r\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\r\n _getTForX: function (aX) {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2],\r\n mSampleValues = this._mSampleValues;\r\n\r\n var intervalStart = 0.0;\r\n var currentSample = 1;\r\n var lastSample = kSplineTableSize - 1;\r\n\r\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n intervalStart += kSampleStepSize;\r\n }\r\n --currentSample;\r\n\r\n // Interpolate to provide an initial guess for t\r\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample+1] - mSampleValues[currentSample]);\r\n var guessForT = intervalStart + dist * kSampleStepSize;\r\n\r\n var initialSlope = getSlope(guessForT, mX1, mX2);\r\n if (initialSlope >= NEWTON_MIN_SLOPE) {\r\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\r\n } else if (initialSlope === 0.0) {\r\n return guessForT;\r\n } else {\r\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\r\n }\r\n }\r\n };\r\n\r\n return ob;\r\n\r\n}());\r\n(function () {\r\n var lastTime = 0;\r\n var vendors = ['ms', 'moz', 'webkit', 'o'];\r\n for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\r\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n }\r\n if(!window.requestAnimationFrame)\r\n window.requestAnimationFrame = function (callback, element) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function () {\r\n callback(currTime + timeToCall);\r\n },\r\n timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n if(!window.cancelAnimationFrame)\r\n window.cancelAnimationFrame = function (id) {\r\n clearTimeout(id);\r\n };\r\n}());\r\n\r\nfunction extendPrototype(sources,destination){\r\n var i, len = sources.length, sourcePrototype;\r\n for (i = 0;i < len;i += 1) {\r\n sourcePrototype = sources[i].prototype;\r\n for (var attr in sourcePrototype) {\r\n if (sourcePrototype.hasOwnProperty(attr)) destination.prototype[attr] = sourcePrototype[attr];\r\n }\r\n }\r\n}\r\n\r\nfunction getDescriptor(object, prop) {\r\n return Object.getOwnPropertyDescriptor(object, prop);\r\n}\r\n\r\nfunction createProxyFunction(prototype) {\r\n\tfunction ProxyFunction(){}\r\n\tProxyFunction.prototype = prototype;\r\n\treturn ProxyFunction;\r\n}\r\nfunction bezFunction(){\r\n\r\n var easingFunctions = [];\r\n var math = Math;\r\n\r\n function pointOnLine2D(x1,y1, x2,y2, x3,y3){\r\n var det1 = (x1*y2) + (y1*x3) + (x2*y3) - (x3*y2) - (y3*x1) - (x2*y1);\r\n return det1 > -0.001 && det1 < 0.001;\r\n }\r\n\r\n function pointOnLine3D(x1,y1,z1, x2,y2,z2, x3,y3,z3){\r\n if(z1 === 0 && z2 === 0 && z3 === 0) {\r\n return pointOnLine2D(x1,y1, x2,y2, x3,y3);\r\n }\r\n var dist1 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2) + Math.pow(z2 - z1, 2));\r\n var dist2 = Math.sqrt(Math.pow(x3 - x1, 2) + Math.pow(y3 - y1, 2) + Math.pow(z3 - z1, 2));\r\n var dist3 = Math.sqrt(Math.pow(x3 - x2, 2) + Math.pow(y3 - y2, 2) + Math.pow(z3 - z2, 2));\r\n var diffDist;\r\n if(dist1 > dist2){\r\n if(dist1 > dist3){\r\n diffDist = dist1 - dist2 - dist3;\r\n } else {\r\n diffDist = dist3 - dist2 - dist1;\r\n }\r\n } else if(dist3 > dist2){\r\n diffDist = dist3 - dist2 - dist1;\r\n } else {\r\n diffDist = dist2 - dist1 - dist3;\r\n }\r\n return diffDist > -0.0001 && diffDist < 0.0001;\r\n }\r\n\r\n var getBezierLength = (function(){\r\n\r\n return function(pt1,pt2,pt3,pt4){\r\n var curveSegments = defaultCurveSegments;\r\n var k;\r\n var i, len;\r\n var ptCoord,perc,addedLength = 0;\r\n var ptDistance;\r\n var point = [],lastPoint = [];\r\n var lengthData = bezier_length_pool.newElement();\r\n len = pt3.length;\r\n for(k=0;k lengthPos ? -1 : 1;\r\n var flag = true;\r\n while(flag){\r\n if(lengths[initPos] <= lengthPos && lengths[initPos+1] > lengthPos){\r\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos+1] - lengths[initPos]);\r\n flag = false;\r\n }else{\r\n initPos += dir;\r\n }\r\n if(initPos < 0 || initPos >= len - 1){\r\n //FIX for TypedArrays that don't store floating point values with enough accuracy\r\n if(initPos === len - 1) {\r\n return percents[initPos];\r\n }\r\n flag = false;\r\n }\r\n }\r\n return percents[initPos] + (percents[initPos+1] - percents[initPos])*lPerc;\r\n }\r\n }\r\n\r\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\r\n var t1 = getDistancePerc(percent,bezierData);\r\n var u0 = 1;\r\n var u1 = 1 - t1;\r\n var ptX = Math.round((u1*u1*u1* pt1[0] + (t1*u1*u1 + u1*t1*u1 + u1*u1*t1)* pt3[0] + (t1*t1*u1 + u1*t1*t1 + t1*u1*t1)*pt4[0] + t1*t1*t1* pt2[0])* 1000) / 1000;\r\n var ptY = Math.round((u1*u1*u1* pt1[1] + (t1*u1*u1 + u1*t1*u1 + u1*u1*t1)* pt3[1] + (t1*t1*u1 + u1*t1*t1 + t1*u1*t1)*pt4[1] + t1*t1*t1* pt2[1])* 1000) / 1000;\r\n return [ptX, ptY];\r\n }\r\n\r\n function getSegmentArray() {\r\n\r\n }\r\n\r\n var bezier_segment_points = createTypedArray('float32', 8);\r\n\r\n function getNewSegment(pt1,pt2,pt3,pt4,startPerc,endPerc, bezierData){\r\n\r\n startPerc = startPerc < 0 ? 0 : startPerc > 1 ? 1 : startPerc;\r\n var t0 = getDistancePerc(startPerc,bezierData);\r\n endPerc = endPerc > 1 ? 1 : endPerc;\r\n var t1 = getDistancePerc(endPerc,bezierData);\r\n var i, len = pt1.length;\r\n var u0 = 1 - t0;\r\n var u1 = 1 - t1;\r\n var u0u0u0 = u0*u0*u0;\r\n var t0u0u0_3 = t0*u0*u0*3;\r\n var t0t0u0_3 = t0*t0*u0*3;\r\n var t0t0t0 = t0*t0*t0;\r\n //\r\n var u0u0u1 = u0*u0*u1;\r\n var t0u0u1_3 = t0*u0*u1 + u0*t0*u1 + u0*u0*t1;\r\n var t0t0u1_3 = t0*t0*u1 + u0*t0*t1 + t0*u0*t1;\r\n var t0t0t1 = t0*t0*t1;\r\n //\r\n var u0u1u1 = u0*u1*u1;\r\n var t0u1u1_3 = t0*u1*u1 + u0*t1*u1 + u0*u1*t1;\r\n var t0t1u1_3 = t0*t1*u1 + u0*t1*t1 + t0*u1*t1;\r\n var t0t1t1 = t0*t1*t1;\r\n //\r\n var u1u1u1 = u1*u1*u1;\r\n var t1u1u1_3 = t1*u1*u1 + u1*t1*u1 + u1*u1*t1;\r\n var t1t1u1_3 = t1*t1*u1 + u1*t1*t1 + t1*u1*t1;\r\n var t1t1t1 = t1*t1*t1;\r\n for(i=0;i=0;i-=1){\r\n if(arr[i].ty == 'sh'){\r\n if(arr[i].ks.k.i){\r\n convertPathsToAbsoluteValues(arr[i].ks.k);\r\n }else{\r\n jLen = arr[i].ks.k.length;\r\n for(j=0;janimVersion[0]){\r\n return true;\r\n } else if(animVersion[0] > minimum[0]){\r\n return false;\r\n }\r\n if(minimum[1]>animVersion[1]){\r\n return true;\r\n } else if(animVersion[1] > minimum[1]){\r\n return false;\r\n }\r\n if(minimum[2]>animVersion[2]){\r\n return true;\r\n } else if(animVersion[2] > minimum[2]){\r\n return false;\r\n }\r\n }\r\n\r\n var checkText = (function(){\r\n var minimumVersion = [4,4,14];\r\n\r\n function updateTextLayer(textLayer){\r\n var documentData = textLayer.t.d;\r\n textLayer.t.d = {\r\n k: [\r\n {\r\n s:documentData,\r\n t:0\r\n }\r\n ]\r\n };\r\n }\r\n\r\n function iterateLayers(layers){\r\n var i, len = layers.length;\r\n for(i=0;i=0;i-=1){\r\n if(arr[i].ty == 'sh'){\r\n if(arr[i].ks.k.i){\r\n arr[i].ks.k.c = arr[i].closed;\r\n }else{\r\n jLen = arr[i].ks.k.length;\r\n for(j=0;j 0) {\r\n shouldLoadFont = false;\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var s = createTag('style');\r\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n s.setAttribute('f-origin', fontArr[i].origin);\r\n s.setAttribute('f-family', fontArr[i].fFamily);\r\n s.type = \"text/css\";\r\n s.innerText = \"@font-face {\" + \"font-family: \"+fontArr[i].fFamily+\"; font-style: normal; src: url('\"+fontArr[i].fPath+\"');}\";\r\n defs.appendChild(s);\r\n }\r\n } else if(fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1){\r\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j++) {\r\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var l = createTag('link');\r\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n l.setAttribute('f-origin', fontArr[i].origin);\r\n l.type = \"text/css\";\r\n l.rel = \"stylesheet\";\r\n l.href = fontArr[i].fPath;\r\n document.body.appendChild(l);\r\n }\r\n } else if(fontArr[i].fOrigin === 't' || fontArr[i].origin === 2){\r\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j++) {\r\n if (fontArr[i].fPath === loadedSelector[j].src) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var sc = createTag('link');\r\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n sc.setAttribute('f-origin', fontArr[i].origin);\r\n sc.setAttribute('rel','stylesheet');\r\n sc.setAttribute('href',fontArr[i].fPath);\r\n defs.appendChild(sc);\r\n }\r\n }\r\n fontArr[i].helper = createHelper(defs,fontArr[i]);\r\n fontArr[i].cache = {};\r\n this.fonts.push(fontArr[i]);\r\n }\r\n if (_pendingFonts === 0) {\r\n this.isLoaded = true;\r\n } else {\r\n //On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\r\n //Adding this timeout seems to fix it\r\n setTimeout(this.checkLoadedFonts.bind(this), 100);\r\n }\r\n }\r\n\r\n function addChars(chars){\r\n if(!chars){\r\n return;\r\n }\r\n if(!this.chars){\r\n this.chars = [];\r\n }\r\n var i, len = chars.length;\r\n var j, jLen = this.chars.length, found;\r\n for(i=0;i= nextKeyData.t - offsetTime){\r\n if(keyData.h){\r\n keyData = nextKeyData;\r\n }\r\n iterationIndex = 0;\r\n break;\r\n }\r\n if ((nextKeyData.t - offsetTime) > frameNum){\r\n iterationIndex = i;\r\n break;\r\n }\r\n if (i < len - 1){\r\n i += 1;\r\n } else {\r\n iterationIndex = 0;\r\n flag = false;\r\n }\r\n }\r\n\r\n var k, kLen, perc, jLen, j, fnc;\r\n var nextKeyTime = nextKeyData.t - offsetTime;\r\n var keyTime = keyData.t - offsetTime;\r\n var endValue;\r\n if (keyData.to) {\r\n if (!keyData.bezierData) {\r\n keyData.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\r\n }\r\n var bezierData = keyData.bezierData;\r\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\r\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\r\n kLen = bezierData.points[ind].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[ind].point[k];\r\n }\r\n // caching._lastKeyframeIndex = -1;\r\n } else {\r\n if (keyData.__fnct) {\r\n fnc = keyData.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\r\n keyData.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n var distanceInLine = bezierData.segmentLength*perc;\r\n\r\n var segmentPerc;\r\n var addedLength = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastAddedLength : 0;\r\n j = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastPoint : 0;\r\n flag = true;\r\n jLen = bezierData.points.length;\r\n while (flag) {\r\n addedLength += bezierData.points[j].partialLength;\r\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k];\r\n }\r\n break;\r\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\r\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\r\n }\r\n break;\r\n }\r\n if (j < jLen - 1){\r\n j += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n caching._lastPoint = j;\r\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\r\n caching._lastKeyframeIndex = i;\r\n }\r\n } else {\r\n var outX, outY, inX, inY, keyValue;\r\n len = keyData.s.length;\r\n endValue = nextKeyData.s || keyData.e;\r\n if (this.sh && keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n newValue[0] = endValue[0];\r\n newValue[1] = endValue[1];\r\n newValue[2] = endValue[2];\r\n } else if (frameNum <= keyTime) {\r\n newValue[0] = keyData.s[0];\r\n newValue[1] = keyData.s[1];\r\n newValue[2] = keyData.s[2];\r\n } else {\r\n var quatStart = createQuaternion(keyData.s);\r\n var quatEnd = createQuaternion(endValue);\r\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\r\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\r\n }\r\n \r\n } else {\r\n for(i = 0; i < len; i += 1) {\r\n if (keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n perc = 1;\r\n } else if(frameNum < keyTime) {\r\n perc = 0;\r\n } else {\r\n if(keyData.o.x.constructor === Array) {\r\n if (!keyData.__fnct) {\r\n keyData.__fnct = [];\r\n }\r\n if (!keyData.__fnct[i]) {\r\n outX = (typeof keyData.o.x[i] === 'undefined') ? keyData.o.x[0] : keyData.o.x[i];\r\n outY = (typeof keyData.o.y[i] === 'undefined') ? keyData.o.y[0] : keyData.o.y[i];\r\n inX = (typeof keyData.i.x[i] === 'undefined') ? keyData.i.x[0] : keyData.i.x[i];\r\n inY = (typeof keyData.i.y[i] === 'undefined') ? keyData.i.y[0] : keyData.i.y[i];\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyData.__fnct[i] = fnc;\r\n } else {\r\n fnc = keyData.__fnct[i];\r\n }\r\n } else {\r\n if (!keyData.__fnct) {\r\n outX = keyData.o.x;\r\n outY = keyData.o.y;\r\n inX = keyData.i.x;\r\n inY = keyData.i.y;\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyData.__fnct = fnc;\r\n } else {\r\n fnc = keyData.__fnct;\r\n }\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime ));\r\n }\r\n }\r\n\r\n endValue = nextKeyData.s || keyData.e;\r\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\r\n\r\n if (this.propType === 'multidimensional') {\r\n newValue[i] = keyValue;\r\n } else {\r\n newValue = keyValue;\r\n }\r\n }\r\n }\r\n }\r\n caching.lastIndex = iterationIndex;\r\n return newValue;\r\n }\r\n\r\n //based on @Toji's https://github.com/toji/gl-matrix/\r\n function slerp(a, b, t) {\r\n var out = [];\r\n var ax = a[0], ay = a[1], az = a[2], aw = a[3],\r\n bx = b[0], by = b[1], bz = b[2], bw = b[3]\r\n\r\n var omega, cosom, sinom, scale0, scale1;\r\n\r\n cosom = ax * bx + ay * by + az * bz + aw * bw;\r\n if (cosom < 0.0) {\r\n cosom = -cosom;\r\n bx = -bx;\r\n by = -by;\r\n bz = -bz;\r\n bw = -bw;\r\n }\r\n if ((1.0 - cosom) > 0.000001) {\r\n omega = Math.acos(cosom);\r\n sinom = Math.sin(omega);\r\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\r\n scale1 = Math.sin(t * omega) / sinom;\r\n } else {\r\n scale0 = 1.0 - t;\r\n scale1 = t;\r\n }\r\n out[0] = scale0 * ax + scale1 * bx;\r\n out[1] = scale0 * ay + scale1 * by;\r\n out[2] = scale0 * az + scale1 * bz;\r\n out[3] = scale0 * aw + scale1 * bw;\r\n\r\n return out;\r\n }\r\n\r\n function quaternionToEuler(out, quat) {\r\n var qx = quat[0];\r\n var qy = quat[1];\r\n var qz = quat[2];\r\n var qw = quat[3];\r\n var heading = Math.atan2(2*qy*qw-2*qx*qz , 1 - 2*qy*qy - 2*qz*qz)\r\n var attitude = Math.asin(2*qx*qy + 2*qz*qw) \r\n var bank = Math.atan2(2*qx*qw-2*qy*qz , 1 - 2*qx*qx - 2*qz*qz);\r\n out[0] = heading/degToRads;\r\n out[1] = attitude/degToRads;\r\n out[2] = bank/degToRads;\r\n }\r\n\r\n function createQuaternion(values) {\r\n var heading = values[0] * degToRads;\r\n var attitude = values[1] * degToRads;\r\n var bank = values[2] * degToRads;\r\n var c1 = Math.cos(heading / 2);\r\n var c2 = Math.cos(attitude / 2);\r\n var c3 = Math.cos(bank / 2);\r\n var s1 = Math.sin(heading / 2);\r\n var s2 = Math.sin(attitude / 2);\r\n var s3 = Math.sin(bank / 2);\r\n var w = c1 * c2 * c3 - s1 * s2 * s3;\r\n var x = s1 * s2 * c3 + c1 * c2 * s3;\r\n var y = s1 * c2 * c3 + c1 * s2 * s3;\r\n var z = c1 * s2 * c3 - s1 * c2 * s3;\r\n\r\n return [x,y,z,w];\r\n }\r\n\r\n function getValueAtCurrentTime(){\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length- 1].t-this.offsetTime;\r\n if(!(frameNum === this._caching.lastFrame || (this._caching.lastFrame !== initFrame && ((this._caching.lastFrame >= endTime && frameNum >= endTime) || (this._caching.lastFrame < initTime && frameNum < initTime))))){\r\n if(this._caching.lastFrame >= frameNum) {\r\n this._caching._lastKeyframeIndex = -1;\r\n this._caching.lastIndex = 0;\r\n }\r\n\r\n var renderResult = this.interpolateValue(frameNum, this._caching);\r\n this.pv = renderResult;\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function setVValue(val) {\r\n var multipliedValue;\r\n if(this.propType === 'unidimensional') {\r\n multipliedValue = val * this.mult;\r\n if(math_abs(this.v - multipliedValue) > 0.00001) {\r\n this.v = multipliedValue;\r\n this._mdf = true;\r\n }\r\n } else {\r\n var i = 0, len = this.v.length;\r\n while (i < len) {\r\n multipliedValue = val[i] * this.mult;\r\n if (math_abs(this.v[i] - multipliedValue) > 0.00001) {\r\n this.v[i] = multipliedValue;\r\n this._mdf = true;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\r\n return;\r\n }\r\n if(this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = this._isFirstFrame;\r\n var multipliedValue;\r\n var i, len = this.effectsSequence.length;\r\n var finalValue = this.kf ? this.pv : this.data.k;\r\n for(i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this._isFirstFrame = false;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n function ValueProperty(elem, data, mult, container){\r\n this.propType = 'unidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this.v = mult ? data.k * mult : data.k;\r\n this.pv = data.k;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.vel = 0;\r\n this.effectsSequence = [];\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function MultiDimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.frameId = -1;\r\n var i, len = data.k.length;\r\n this.v = createTypedArray('float32', len);\r\n this.pv = createTypedArray('float32', len);\r\n var arr = createTypedArray('float32', len);\r\n this.vel = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n this.v[i] = data.k[i] * this.mult;\r\n this.pv[i] = data.k[i];\r\n }\r\n this._isFirstFrame = true;\r\n this.effectsSequence = [];\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.keyframes = data.k;\r\n this.offsetTime = elem.data.st;\r\n this.frameId = -1;\r\n this._caching = {lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1};\r\n this.k = true;\r\n this.kf = true;\r\n this.data = data;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.v = initFrame;\r\n this.pv = initFrame;\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedMultidimensionalProperty(elem, data, mult, container){\r\n this.propType = 'multidimensional';\r\n var i, len = data.k.length;\r\n var s, e,to,ti;\r\n for (i = 0; i < len - 1; i += 1) {\r\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\r\n s = data.k[i].s;\r\n e = data.k[i + 1].s;\r\n to = data.k[i].to;\r\n ti = data.k[i].ti;\r\n if((s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0],s[1],e[0],e[1],s[0] + to[0],s[1] + to[1]) && bez.pointOnLine2D(s[0],s[1],e[0],e[1],e[0] + ti[0],e[1] + ti[1])) || (s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0],s[1],s[2],e[0],e[1],e[2],s[0] + to[0],s[1] + to[1],s[2] + to[2]) && bez.pointOnLine3D(s[0],s[1],s[2],e[0],e[1],e[2],e[0] + ti[0],e[1] + ti[1],e[2] + ti[2]))){\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n if(s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\r\n if(s.length === 2 || (s[2] === e[2] && to[2] === 0 && ti[2] === 0)) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n }\r\n }\r\n }\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.data = data;\r\n this.keyframes = data.k;\r\n this.offsetTime = elem.data.st;\r\n this.k = true;\r\n this.kf = true;\r\n this._isFirstFrame = true;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.frameId = -1;\r\n var arrLen = data.k[0].s.length;\r\n this.v = createTypedArray('float32', arrLen);\r\n this.pv = createTypedArray('float32', arrLen);\r\n for (i = 0; i < arrLen; i += 1) {\r\n this.v[i] = initFrame;\r\n this.pv[i] = initFrame;\r\n }\r\n this._caching={lastFrame:initFrame,lastIndex:0,value:createTypedArray('float32', arrLen)};\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function getProp(elem,data,type, mult, container) {\r\n var p;\r\n if(!data.k.length){\r\n p = new ValueProperty(elem,data, mult, container);\r\n }else if(typeof(data.k[0]) === 'number'){\r\n p = new MultiDimensionalProperty(elem,data, mult, container);\r\n }else{\r\n switch(type){\r\n case 0:\r\n p = new KeyframedValueProperty(elem,data,mult, container);\r\n break;\r\n case 1:\r\n p = new KeyframedMultidimensionalProperty(elem,data,mult, container);\r\n break;\r\n }\r\n }\r\n if(p.effectsSequence.length){\r\n container.addDynamicProperty(p);\r\n }\r\n return p;\r\n }\r\n\r\n var ob = {\r\n getProp: getProp\r\n };\r\n return ob;\r\n}());\r\nvar TransformPropertyFactory = (function() {\r\n\r\n var defaultVector = [0,0]\r\n\r\n function applyToMatrix(mat) {\r\n var _mdf = this._mdf;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || _mdf;\r\n if (this.a) {\r\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if (this.s) {\r\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk) {\r\n mat.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r) {\r\n mat.rotate(-this.r.v);\r\n } else {\r\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\r\n }\r\n if (this.data.p.s) {\r\n if (this.data.p.z) {\r\n mat.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n mat.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n function processKeys(forceRender){\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n if(this._isDirty) {\r\n this.precalculateMatrix();\r\n this._isDirty = false;\r\n }\r\n\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf || forceRender) {\r\n this.v.cloneFromProps(this.pre.props);\r\n if (this.appliedTransformations < 1) {\r\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if(this.appliedTransformations < 2) {\r\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk && this.appliedTransformations < 3) {\r\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r && this.appliedTransformations < 4) {\r\n this.v.rotate(-this.r.v);\r\n } else if (!this.r && this.appliedTransformations < 4){\r\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\r\n }\r\n if (this.autoOriented) {\r\n var v1,v2, frameRate = this.elem.globalData.frameRate;\r\n if(this.p && this.p.keyframes && this.p.getValueAtTime) {\r\n if (this.p._caching.lastFrame+this.p.offsetTime <= this.p.keyframes[0].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate,0);\r\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\r\n } else if(this.p._caching.lastFrame+this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t / frameRate), 0);\r\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\r\n } else {\r\n v1 = this.p.pv;\r\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame+this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\r\n }\r\n } else if(this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\r\n v1 = [];\r\n v2 = [];\r\n var px = this.px, py = this.py, frameRate;\r\n if (px._caching.lastFrame+px.offsetTime <= px.keyframes[0].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate,0);\r\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate,0);\r\n v2[0] = px.getValueAtTime((px.keyframes[0].t) / frameRate,0);\r\n v2[1] = py.getValueAtTime((py.keyframes[0].t) / frameRate,0);\r\n } else if(px._caching.lastFrame+px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t / frameRate),0);\r\n v1[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t / frameRate),0);\r\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate,0);\r\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate,0);\r\n } else {\r\n v1 = [px.pv, py.pv];\r\n v2[0] = px.getValueAtTime((px._caching.lastFrame+px.offsetTime - 0.01) / frameRate,px.offsetTime);\r\n v2[1] = py.getValueAtTime((py._caching.lastFrame+py.offsetTime - 0.01) / frameRate,py.offsetTime);\r\n }\r\n } else {\r\n v1 = v2 = defaultVector\r\n }\r\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\r\n }\r\n if(this.data.p && this.data.p.s){\r\n if(this.data.p.z) {\r\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n this.v.translate(this.px.v, this.py.v, 0);\r\n }\r\n }else{\r\n this.v.translate(this.p.v[0],this.p.v[1],-this.p.v[2]);\r\n }\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function precalculateMatrix() {\r\n if(!this.a.k) {\r\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n this.appliedTransformations = 1;\r\n } else {\r\n return;\r\n }\r\n if(!this.s.effectsSequence.length) {\r\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n this.appliedTransformations = 2;\r\n } else {\r\n return;\r\n }\r\n if(this.sk) {\r\n if(!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\r\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\r\n this.appliedTransformations = 3;\r\n } else {\r\n return;\r\n }\r\n }\r\n if (this.r) {\r\n if(!this.r.effectsSequence.length) {\r\n this.pre.rotate(-this.r.v);\r\n this.appliedTransformations = 4;\r\n } else {\r\n return;\r\n }\r\n } else if(!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\r\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\r\n this.appliedTransformations = 4;\r\n }\r\n }\r\n\r\n function autoOrient(){\r\n //\r\n //var prevP = this.getValueAtTime();\r\n }\r\n\r\n function addDynamicProperty(prop) {\r\n this._addDynamicProperty(prop);\r\n this.elem.addDynamicProperty(prop);\r\n this._isDirty = true;\r\n }\r\n\r\n function TransformProperty(elem,data,container){\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.propType = 'transform';\r\n this.data = data;\r\n this.v = new Matrix();\r\n //Precalculated matrix with non animated properties\r\n this.pre = new Matrix();\r\n this.appliedTransformations = 0;\r\n this.initDynamicPropertyContainer(container || elem);\r\n if(data.p && data.p.s){\r\n this.px = PropertyFactory.getProp(elem,data.p.x,0,0,this);\r\n this.py = PropertyFactory.getProp(elem,data.p.y,0,0,this);\r\n if(data.p.z){\r\n this.pz = PropertyFactory.getProp(elem,data.p.z,0,0,this);\r\n }\r\n }else{\r\n this.p = PropertyFactory.getProp(elem,data.p || {k:[0,0,0]},1,0,this);\r\n }\r\n if(data.rx) {\r\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\r\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\r\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\r\n if(data.or.k[0].ti) {\r\n var i, len = data.or.k.length;\r\n for(i=0;i= this._maxLength) {\r\n\t\tthis.doubleArrayLength();\r\n\t}\r\n\tswitch(type){\r\n\t\tcase 'v':\r\n\t\t\tarr = this.v;\r\n\t\t\tbreak;\r\n\t\tcase 'i':\r\n\t\t\tarr = this.i;\r\n\t\t\tbreak;\r\n\t\tcase 'o':\r\n\t\t\tarr = this.o;\r\n\t\t\tbreak;\r\n\t}\r\n\tif(!arr[pos] || (arr[pos] && !replace)){\r\n\t\tarr[pos] = point_pool.newElement();\r\n\t}\r\n\tarr[pos][0] = x;\r\n\tarr[pos][1] = y;\r\n};\r\n\r\nShapePath.prototype.setTripleAt = function(vX,vY,oX,oY,iX,iY,pos, replace) {\r\n\tthis.setXYAt(vX,vY,'v',pos, replace);\r\n\tthis.setXYAt(oX,oY,'o',pos, replace);\r\n\tthis.setXYAt(iX,iY,'i',pos, replace);\r\n};\r\n\r\nShapePath.prototype.reverse = function() {\r\n\tvar newPath = new ShapePath();\r\n\tnewPath.setPathData(this.c, this._length);\r\n\tvar vertices = this.v, outPoints = this.o, inPoints = this.i;\r\n\tvar init = 0;\r\n\tif (this.c) {\r\n\t\tnewPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\r\n init = 1;\r\n }\r\n var cnt = this._length - 1;\r\n var len = this._length;\r\n\r\n var i;\r\n for (i = init; i < len; i += 1) {\r\n \tnewPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\r\n cnt -= 1;\r\n }\r\n return newPath;\r\n};\r\nvar ShapePropertyFactory = (function(){\r\n\r\n var initFrame = -999999;\r\n\r\n function interpolateShape(frameNum, previousValue, caching) {\r\n var iterationIndex = caching.lastIndex;\r\n var keyPropS,keyPropE,isHold, j, k, jLen, kLen, perc, vertexValue;\r\n var kf = this.keyframes;\r\n if(frameNum < kf[0].t-this.offsetTime){\r\n keyPropS = kf[0].s[0];\r\n isHold = true;\r\n iterationIndex = 0;\r\n }else if(frameNum >= kf[kf.length - 1].t-this.offsetTime){\r\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\r\n /*if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n }*/\r\n isHold = true;\r\n }else{\r\n var i = iterationIndex;\r\n var len = kf.length- 1,flag = true,keyData,nextKeyData;\r\n while(flag){\r\n keyData = kf[i];\r\n nextKeyData = kf[i+1];\r\n if((nextKeyData.t - this.offsetTime) > frameNum){\r\n break;\r\n }\r\n if(i < len - 1){\r\n i += 1;\r\n }else{\r\n flag = false;\r\n }\r\n }\r\n isHold = keyData.h === 1;\r\n iterationIndex = i;\r\n if(!isHold){\r\n if(frameNum >= nextKeyData.t-this.offsetTime){\r\n perc = 1;\r\n }else if(frameNum < keyData.t-this.offsetTime){\r\n perc = 0;\r\n }else{\r\n var fnc;\r\n if(keyData.__fnct){\r\n fnc = keyData.__fnct;\r\n }else{\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x,keyData.o.y,keyData.i.x,keyData.i.y).get;\r\n keyData.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum-(keyData.t-this.offsetTime))/((nextKeyData.t-this.offsetTime)-(keyData.t-this.offsetTime)));\r\n }\r\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\r\n }\r\n keyPropS = keyData.s[0];\r\n }\r\n jLen = previousValue._length;\r\n kLen = keyPropS.i[0].length;\r\n caching.lastIndex = iterationIndex;\r\n\r\n for(j=0;j endTime && frameNum > endTime)))){\r\n ////\r\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\r\n this.interpolateShape(frameNum, this.pv, this._caching);\r\n ////\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function resetShape(){\r\n this.paths = this.localShapeCollection;\r\n }\r\n\r\n function shapesEqual(shape1, shape2) {\r\n if(shape1._length !== shape2._length || shape1.c !== shape2.c){\r\n return false;\r\n }\r\n var i, len = shape1._length;\r\n for(i = 0; i < len; i += 1) {\r\n if(shape1.v[i][0] !== shape2.v[i][0] \r\n || shape1.v[i][1] !== shape2.v[i][1] \r\n || shape1.o[i][0] !== shape2.o[i][0] \r\n || shape1.o[i][1] !== shape2.o[i][1] \r\n || shape1.i[i][0] !== shape2.i[i][0] \r\n || shape1.i[i][1] !== shape2.i[i][1]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n function setVValue(newPath) {\r\n if(!shapesEqual(this.v, newPath)) {\r\n this.v = shape_pool.clone(newPath);\r\n this.localShapeCollection.releaseShapes();\r\n this.localShapeCollection.addShape(this.v);\r\n this._mdf = true;\r\n this.paths = this.localShapeCollection;\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n } else if (!this.effectsSequence.length) {\r\n this._mdf = false;\r\n return;\r\n }\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var finalValue = this.kf ? this.pv : this.data.ks ? this.data.ks.k : this.data.pt.k;\r\n var i, len = this.effectsSequence.length;\r\n for(i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n };\r\n\r\n function ShapeProperty(elem, data, type){\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.container = elem;\r\n this.elem = elem;\r\n this.data = data;\r\n this.k = false;\r\n this.kf = false;\r\n this._mdf = false;\r\n var pathData = type === 3 ? data.pt.k : data.ks.k;\r\n this.v = shape_pool.clone(pathData);\r\n this.pv = shape_pool.clone(this.v);\r\n this.localShapeCollection = shapeCollection_pool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.reset = resetShape;\r\n this.effectsSequence = [];\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n ShapeProperty.prototype.interpolateShape = interpolateShape;\r\n ShapeProperty.prototype.getValue = processEffectsSequence;\r\n ShapeProperty.prototype.setVValue = setVValue;\r\n ShapeProperty.prototype.addEffect = addEffect;\r\n\r\n function KeyframedShapeProperty(elem,data,type){\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.container = elem;\r\n this.offsetTime = elem.data.st;\r\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\r\n this.k = true;\r\n this.kf = true;\r\n var i, len = this.keyframes[0].s[0].i.length;\r\n var jLen = this.keyframes[0].s[0].i[0].length;\r\n this.v = shape_pool.newElement();\r\n this.v.setPathData(this.keyframes[0].s[0].c, len);\r\n this.pv = shape_pool.clone(this.v);\r\n this.localShapeCollection = shapeCollection_pool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.lastFrame = initFrame;\r\n this.reset = resetShape;\r\n this._caching = {lastFrame: initFrame, lastIndex: 0};\r\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\r\n }\r\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\r\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\r\n KeyframedShapeProperty.prototype.setVValue = setVValue;\r\n KeyframedShapeProperty.prototype.addEffect = addEffect;\r\n\r\n var EllShapeProperty = (function(){\r\n\r\n var cPoint = roundCorner;\r\n\r\n function EllShapeProperty(elem,data) {\r\n /*this.v = {\r\n v: createSizedArray(4),\r\n i: createSizedArray(4),\r\n o: createSizedArray(4),\r\n c: true\r\n };*/\r\n this.v = shape_pool.newElement();\r\n this.v.setPathData(true, 4);\r\n this.localShapeCollection = shapeCollection_pool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.localShapeCollection.addShape(this.v);\r\n this.d = data.d;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem,data.p,1,0,this);\r\n this.s = PropertyFactory.getProp(elem,data.s,1,0,this);\r\n if(this.dynamicProperties.length){\r\n this.k = true;\r\n }else{\r\n this.k = false;\r\n this.convertEllToPath();\r\n }\r\n };\r\n\r\n EllShapeProperty.prototype = {\r\n reset: resetShape,\r\n getValue: function (){\r\n if(this.elem.globalData.frameId === this.frameId){\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if(this._mdf){\r\n this.convertEllToPath();\r\n }\r\n },\r\n convertEllToPath: function() {\r\n var p0 = this.p.v[0], p1 = this.p.v[1], s0 = this.s.v[0]/2, s1 = this.s.v[1]/2;\r\n var _cw = this.d !== 3;\r\n var _v = this.v;\r\n _v.v[0][0] = p0;\r\n _v.v[0][1] = p1 - s1;\r\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.v[1][1] = p1;\r\n _v.v[2][0] = p0;\r\n _v.v[2][1] = p1 + s1;\r\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.v[3][1] = p1;\r\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.i[0][1] = p1 - s1;\r\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.i[1][1] = p1 - s1 * cPoint;\r\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.i[2][1] = p1 + s1;\r\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.i[3][1] = p1 + s1 * cPoint;\r\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.o[0][1] = p1 - s1;\r\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.o[1][1] = p1 + s1 * cPoint;\r\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.o[2][1] = p1 + s1;\r\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.o[3][1] = p1 - s1 * cPoint;\r\n }\r\n }\r\n\r\n extendPrototype([DynamicPropertyContainer], EllShapeProperty);\r\n\r\n return EllShapeProperty;\r\n }());\r\n\r\n var StarShapeProperty = (function() {\r\n\r\n function StarShapeProperty(elem,data) {\r\n this.v = shape_pool.newElement();\r\n this.v.setPathData(true, 0);\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.data = data;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n if(data.sy === 1){\r\n this.ir = PropertyFactory.getProp(elem,data.ir,0,0,this);\r\n this.is = PropertyFactory.getProp(elem,data.is,0,0.01,this);\r\n this.convertToPath = this.convertStarToPath;\r\n } else {\r\n this.convertToPath = this.convertPolygonToPath;\r\n }\r\n this.pt = PropertyFactory.getProp(elem,data.pt,0,0,this);\r\n this.p = PropertyFactory.getProp(elem,data.p,1,0,this);\r\n this.r = PropertyFactory.getProp(elem,data.r,0,degToRads,this);\r\n this.or = PropertyFactory.getProp(elem,data.or,0,0,this);\r\n this.os = PropertyFactory.getProp(elem,data.os,0,0.01,this);\r\n this.localShapeCollection = shapeCollection_pool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n if(this.dynamicProperties.length){\r\n this.k = true;\r\n }else{\r\n this.k = false;\r\n this.convertToPath();\r\n }\r\n };\r\n\r\n StarShapeProperty.prototype = {\r\n reset: resetShape,\r\n getValue: function() {\r\n if(this.elem.globalData.frameId === this.frameId){\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if(this._mdf){\r\n this.convertToPath();\r\n }\r\n },\r\n convertStarToPath: function() {\r\n var numPts = Math.floor(this.pt.v)*2;\r\n var angle = Math.PI*2/numPts;\r\n /*this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts;*/\r\n var longFlag = true;\r\n var longRad = this.or.v;\r\n var shortRad = this.ir.v;\r\n var longRound = this.os.v;\r\n var shortRound = this.is.v;\r\n var longPerimSegment = 2*Math.PI*longRad/(numPts*2);\r\n var shortPerimSegment = 2*Math.PI*shortRad/(numPts*2);\r\n var i, rad,roundness,perimSegment, currentAng = -Math.PI/ 2;\r\n currentAng += this.r.v;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n this.v._length = 0;\r\n for(i=0;i= 1) {\r\n segments.push({\r\n s: s - 1,\r\n e: e - 1\r\n });\r\n } else {\r\n segments.push({\r\n s: s,\r\n e: 1\r\n });\r\n segments.push({\r\n s: 0,\r\n e: e - 1\r\n });\r\n }\r\n var shapeSegments = [];\r\n var i, len = segments.length, segmentOb;\r\n for (i = 0; i < len; i += 1) {\r\n segmentOb = segments[i];\r\n if (segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength) {\r\n \r\n } else {\r\n var shapeS, shapeE;\r\n if (segmentOb.s * totalModifierLength <= addedLength) {\r\n shapeS = 0;\r\n } else {\r\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\r\n }\r\n if(segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\r\n shapeE = 1;\r\n } else {\r\n shapeE = ((segmentOb.e * totalModifierLength - addedLength) / shapeLength);\r\n }\r\n shapeSegments.push([shapeS, shapeE]);\r\n }\r\n }\r\n if (!shapeSegments.length) {\r\n shapeSegments.push([0, 0]);\r\n }\r\n return shapeSegments;\r\n};\r\n\r\nTrimModifier.prototype.releasePathsData = function(pathsData) {\r\n var i, len = pathsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n segments_length_pool.release(pathsData[i]);\r\n }\r\n pathsData.length = 0;\r\n return pathsData;\r\n};\r\n\r\nTrimModifier.prototype.processShapes = function(_isFirstFrame) {\r\n var s, e;\r\n if (this._mdf || _isFirstFrame) {\r\n var o = (this.o.v % 360) / 360;\r\n if (o < 0) {\r\n o += 1;\r\n }\r\n s = (this.s.v > 1 ? 1 : this.s.v < 0 ? 0 : this.s.v) + o;\r\n e = (this.e.v > 1 ? 1 : this.e.v < 0 ? 0 : this.e.v) + o;\r\n if (s === e) {\r\n\r\n }\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n s = Math.round(s * 10000) * 0.0001;\r\n e = Math.round(e * 10000) * 0.0001;\r\n this.sValue = s;\r\n this.eValue = e;\r\n } else {\r\n s = this.sValue;\r\n e = this.eValue;\r\n }\r\n var shapePaths;\r\n var i, len = this.shapes.length, j, jLen;\r\n var pathsData, pathData, totalShapeLength, totalModifierLength = 0;\r\n\r\n if (e === s) {\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].localShapeCollection.releaseShapes();\r\n this.shapes[i].shape._mdf = true;\r\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\r\n if (this._mdf) {\r\n this.shapes[i].pathsData.length = 0;\r\n }\r\n }\r\n } else if (!((e === 1 && s === 0) || (e===0 && s === 1))){\r\n var segments = [], shapeData, localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\r\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n } else {\r\n shapePaths = shapeData.shape.paths;\r\n jLen = shapePaths._length;\r\n totalShapeLength = 0;\r\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\r\n totalShapeLength = shapeData.totalShapeLength;\r\n } else {\r\n pathsData = this.releasePathsData(shapeData.pathsData);\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\r\n pathsData.push(pathData);\r\n totalShapeLength += pathData.totalLength;\r\n }\r\n shapeData.totalShapeLength = totalShapeLength;\r\n shapeData.pathsData = pathsData;\r\n }\r\n\r\n totalModifierLength += totalShapeLength;\r\n shapeData.shape._mdf = true;\r\n }\r\n }\r\n var shapeS = s, shapeE = e, addedLength = 0, edges;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shapeData = this.shapes[i];\r\n if (shapeData.shape._mdf) {\r\n localShapeCollection = shapeData.localShapeCollection;\r\n localShapeCollection.releaseShapes();\r\n //if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\r\n if (this.m === 2 && len > 1) {\r\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\r\n addedLength += shapeData.totalShapeLength;\r\n } else {\r\n edges = [[shapeS, shapeE]];\r\n }\r\n jLen = edges.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n shapeS = edges[j][0];\r\n shapeE = edges[j][1];\r\n segments.length = 0;\r\n if (shapeE <= 1) {\r\n segments.push({\r\n s:shapeData.totalShapeLength * shapeS,\r\n e:shapeData.totalShapeLength * shapeE\r\n });\r\n } else if (shapeS >= 1) {\r\n segments.push({\r\n s:shapeData.totalShapeLength * (shapeS - 1),\r\n e:shapeData.totalShapeLength * (shapeE - 1)\r\n });\r\n } else {\r\n segments.push({\r\n s:shapeData.totalShapeLength * shapeS,\r\n e:shapeData.totalShapeLength\r\n });\r\n segments.push({\r\n s:0,\r\n e:shapeData.totalShapeLength * (shapeE - 1)\r\n });\r\n }\r\n var newShapesData = this.addShapes(shapeData,segments[0]);\r\n if (segments[0].s !== segments[0].e) {\r\n if (segments.length > 1) {\r\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\r\n if (lastShapeInCollection.c) {\r\n var lastShape = newShapesData.pop();\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\r\n } else {\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1]);\r\n }\r\n } \r\n this.addPaths(newShapesData, localShapeCollection);\r\n }\r\n \r\n }\r\n shapeData.shape.paths = localShapeCollection;\r\n }\r\n }\r\n } else if (this._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n //Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\r\n //Don't remove this even if it's losing cached info.\r\n this.shapes[i].pathsData.length = 0;\r\n this.shapes[i].shape._mdf = true;\r\n }\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addPaths = function(newPaths, localShapeCollection) {\r\n var i, len = newPaths.length;\r\n for (i = 0; i < len; i += 1) {\r\n localShapeCollection.addShape(newPaths[i]);\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addSegment = function(pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\r\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\r\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\r\n if(newShape){\r\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\r\n }\r\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addSegmentFromArray = function(points, shapePath, pos, newShape) {\r\n shapePath.setXYAt(points[1], points[5], 'o', pos);\r\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\r\n if(newShape){\r\n shapePath.setXYAt(points[0], points[4], 'v', pos);\r\n }\r\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addShapes = function(shapeData, shapeSegment, shapePath) {\r\n var pathsData = shapeData.pathsData;\r\n var shapePaths = shapeData.shape.paths.shapes;\r\n var i, len = shapeData.shape.paths._length, j, jLen;\r\n var addedLength = 0;\r\n var currentLengthData,segmentCount;\r\n var lengths;\r\n var segment;\r\n var shapes = [];\r\n var initPos;\r\n var newShape = true;\r\n if (!shapePath) {\r\n shapePath = shape_pool.newElement();\r\n segmentCount = 0;\r\n initPos = 0;\r\n } else {\r\n segmentCount = shapePath._length;\r\n initPos = shapePath._length;\r\n }\r\n shapes.push(shapePath);\r\n for (i = 0; i < len; i += 1) {\r\n lengths = pathsData[i].lengths;\r\n shapePath.c = shapePaths[i].c;\r\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\r\n for (j = 1; j < jLen; j +=1) {\r\n currentLengthData = lengths[j-1];\r\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\r\n addedLength += currentLengthData.addedLength;\r\n shapePath.c = false;\r\n } else if(addedLength > shapeSegment.e) {\r\n shapePath.c = false;\r\n break;\r\n } else {\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength)/currentLengthData.addedLength,(shapeSegment.e - addedLength)/currentLengthData.addedLength, lengths[j-1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n }\r\n if (shapePaths[i].c && lengths.length) {\r\n currentLengthData = lengths[j - 1];\r\n if (addedLength <= shapeSegment.e) {\r\n var segmentLength = lengths[j - 1].addedLength;\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n } else {\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n if (shapePath._length) {\r\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\r\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1],'o', shapePath._length - 1);\r\n }\r\n if (addedLength > shapeSegment.e) {\r\n break;\r\n }\r\n if (i < len - 1) {\r\n shapePath = shape_pool.newElement();\r\n newShape = true;\r\n shapes.push(shapePath);\r\n segmentCount = 0;\r\n }\r\n }\r\n return shapes;\r\n};\r\n\r\n\r\nShapeModifiers.registerModifier('tm', TrimModifier);\r\nfunction RoundCornersModifier(){}\r\nextendPrototype([ShapeModifier],RoundCornersModifier);\r\nRoundCornersModifier.prototype.initModifierProperties = function(elem,data){\r\n this.getValue = this.processKeys;\r\n this.rd = PropertyFactory.getProp(elem,data.r,0,null,this);\r\n this._isAnimated = !!this.rd.effectsSequence.length;\r\n};\r\n\r\nRoundCornersModifier.prototype.processPath = function(path, round){\r\n var cloned_path = shape_pool.newElement();\r\n cloned_path.c = path.c;\r\n var i, len = path._length;\r\n var currentV,currentI,currentO,closerV, newV,newO,newI,distance,newPosPerc,index = 0;\r\n var vX,vY,oX,oY,iX,iY;\r\n for(i=0;i0){\r\n pos -= 1;\r\n //this._elements.unshift(arr.splice(pos,1)[0]);\r\n this._elements.unshift(arr[pos]);\r\n cont += 1;\r\n }\r\n if(this.dynamicProperties.length){\r\n this.k = true;\r\n }else{\r\n this.getValue(true);\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.resetElements = function(elements){\r\n var i, len = elements.length;\r\n for(i = 0; i < len; i += 1) {\r\n elements[i]._processed = false;\r\n if(elements[i].ty === 'gr'){\r\n this.resetElements(elements[i].it);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.cloneElements = function(elements){\r\n var i, len = elements.length;\r\n var newElements = JSON.parse(JSON.stringify(elements));\r\n this.resetElements(newElements);\r\n return newElements;\r\n};\r\n\r\nRepeaterModifier.prototype.changeGroupRender = function(elements, renderFlag) {\r\n var i, len = elements.length;\r\n for(i = 0; i < len; i += 1) {\r\n elements[i]._render = renderFlag;\r\n if(elements[i].ty === 'gr') {\r\n this.changeGroupRender(elements[i].it, renderFlag);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.processShapes = function(_isFirstFrame) {\r\n var items, itemsTransform, i, dir, cont;\r\n if(this._mdf || _isFirstFrame){\r\n var copies = Math.ceil(this.c.v);\r\n if(this._groups.length < copies){\r\n while(this._groups.length < copies){\r\n var group = {\r\n it:this.cloneElements(this._elements),\r\n ty:'gr'\r\n };\r\n group.it.push({\"a\":{\"a\":0,\"ix\":1,\"k\":[0,0]},\"nm\":\"Transform\",\"o\":{\"a\":0,\"ix\":7,\"k\":100},\"p\":{\"a\":0,\"ix\":2,\"k\":[0,0]},\"r\":{\"a\":1,\"ix\":6,\"k\":[{s:0,e:0,t:0},{s:0,e:0,t:1}]},\"s\":{\"a\":0,\"ix\":3,\"k\":[100,100]},\"sa\":{\"a\":0,\"ix\":5,\"k\":0},\"sk\":{\"a\":0,\"ix\":4,\"k\":0},\"ty\":\"tr\"});\r\n \r\n this.arr.splice(0,0,group);\r\n this._groups.splice(0,0,group);\r\n this._currentCopies += 1;\r\n }\r\n this.elem.reloadShapes();\r\n }\r\n cont = 0;\r\n var renderFlag;\r\n for(i = 0; i <= this._groups.length - 1; i += 1){\r\n renderFlag = cont < copies;\r\n this._groups[i]._render = renderFlag;\r\n this.changeGroupRender(this._groups[i].it, renderFlag);\r\n cont += 1;\r\n }\r\n \r\n this._currentCopies = copies;\r\n ////\r\n\r\n var offset = this.o.v;\r\n var offsetModulo = offset%1;\r\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\r\n var k;\r\n var tMat = this.tr.v.props;\r\n var pProps = this.pMatrix.props;\r\n var rProps = this.rMatrix.props;\r\n var sProps = this.sMatrix.props;\r\n this.pMatrix.reset();\r\n this.rMatrix.reset();\r\n this.sMatrix.reset();\r\n this.tMatrix.reset();\r\n this.matrix.reset();\r\n var iteration = 0;\r\n\r\n if(offset > 0) {\r\n while(iterationroundOffset){\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\r\n iteration -= 1;\r\n }\r\n if(offsetModulo){\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, - offsetModulo, true);\r\n iteration -= offsetModulo;\r\n }\r\n }\r\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\r\n dir = this.data.m === 1 ? 1 : -1;\r\n cont = this._currentCopies;\r\n var j, jLen;\r\n while(cont){\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n jLen = itemsTransform.length;\r\n items[items.length - 1].transform.mProps._mdf = true;\r\n items[items.length - 1].transform.op._mdf = true;\r\n items[items.length - 1].transform.op.v = this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\r\n if(iteration !== 0){\r\n if((i !== 0 && dir === 1) || (i !== this._currentCopies - 1 && dir === -1)){\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n }\r\n this.matrix.transform(rProps[0],rProps[1],rProps[2],rProps[3],rProps[4],rProps[5],rProps[6],rProps[7],rProps[8],rProps[9],rProps[10],rProps[11],rProps[12],rProps[13],rProps[14],rProps[15]);\r\n this.matrix.transform(sProps[0],sProps[1],sProps[2],sProps[3],sProps[4],sProps[5],sProps[6],sProps[7],sProps[8],sProps[9],sProps[10],sProps[11],sProps[12],sProps[13],sProps[14],sProps[15]);\r\n this.matrix.transform(pProps[0],pProps[1],pProps[2],pProps[3],pProps[4],pProps[5],pProps[6],pProps[7],pProps[8],pProps[9],pProps[10],pProps[11],pProps[12],pProps[13],pProps[14],pProps[15]);\r\n \r\n for(j=0;j 0.01){\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.checkCollapsable = function() {\r\n if (this.o.length/2 !== this.c.length/4) {\r\n return false;\r\n }\r\n if (this.data.k.k[0].s) {\r\n var i = 0, len = this.data.k.k.length;\r\n while (i < len) {\r\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n } else if(!this.comparePoints(this.data.k.k, this.data.p)) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.getValue = function(forceRender){\r\n this.prop.getValue();\r\n this._mdf = false;\r\n this._cmdf = false;\r\n this._omdf = false;\r\n if(this.prop._mdf || forceRender){\r\n var i, len = this.data.p*4;\r\n var mult, val;\r\n for(i=0;i= currentLength + animatorOffset || !points) {\r\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\r\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\r\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\r\n matrixHelper.translate(-alignment[0]*letters[i].an/200, -(alignment[1] * yOff / 100));\r\n flag = false;\r\n } else if (points) {\r\n segmentLength += currentPoint.partialLength;\r\n pointInd += 1;\r\n if (pointInd >= points.length) {\r\n pointInd = 0;\r\n segmentInd += 1;\r\n if (!segments[segmentInd]) {\r\n if (mask.v.c) {\r\n pointInd = 0;\r\n segmentInd = 0;\r\n points = segments[segmentInd].points;\r\n } else {\r\n segmentLength -= currentPoint.partialLength;\r\n points = null;\r\n }\r\n } else {\r\n points = segments[segmentInd].points;\r\n }\r\n }\r\n if (points) {\r\n prevPoint = currentPoint;\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n }\r\n }\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n } else {\r\n offf = letters[i].an/2 - letters[i].add;\r\n matrixHelper.translate(-offf,0,0);\r\n\r\n // Grouping alignment\r\n matrixHelper.translate(-alignment[0]*letters[i].an/200, -alignment[1]*yOff/100, 0);\r\n }\r\n\r\n lineLength += letters[i].l/2;\r\n for(j=0;j 1;\r\n if(this.kf) {\r\n this.addEffect(this.getKeyframeValue.bind(this));\r\n }\r\n return this.kf;\r\n}\r\n\r\nTextProperty.prototype.addEffect = function(effectFunction) {\r\n\tthis.effectsSequence.push(effectFunction);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.getValue = function(_finalValue) {\r\n if((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\r\n return;\r\n }\r\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\r\n var currentValue = this.currentData;\r\n var currentIndex = this.keysIndex;\r\n if(this.lock) {\r\n this.setCurrentData(this.currentData);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var multipliedValue;\r\n var i, len = this.effectsSequence.length;\r\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\r\n for(i = 0; i < len; i += 1) {\r\n //Checking if index changed to prevent creating a new object every time the expression updates.\r\n if(currentIndex !== this.keysIndex) {\r\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\r\n } else {\r\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\r\n }\r\n }\r\n if(currentValue !== finalValue) {\r\n this.setCurrentData(finalValue);\r\n }\r\n this.pv = this.v = this.currentData;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n}\r\n\r\nTextProperty.prototype.getKeyframeValue = function() {\r\n var textKeys = this.data.d.k, textDocumentData;\r\n var frameNum = this.elem.comp.renderedFrame;\r\n var i = 0, len = textKeys.length;\r\n while(i <= len - 1) {\r\n textDocumentData = textKeys[i].s;\r\n if(i === len - 1 || textKeys[i+1].t > frameNum){\r\n break;\r\n }\r\n i += 1;\r\n }\r\n if(this.keysIndex !== i) {\r\n this.keysIndex = i;\r\n }\r\n return this.data.d.k[this.keysIndex].s;\r\n};\r\n\r\nTextProperty.prototype.buildFinalText = function(text) {\r\n var combinedCharacters = FontManager.getCombinedCharacterCodes();\r\n var charactersArray = [];\r\n var i = 0, len = text.length;\r\n var charCode;\r\n while (i < len) {\r\n charCode = text.charCodeAt(i);\r\n if (combinedCharacters.indexOf(charCode) !== -1) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n } else {\r\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\r\n charCode = text.charCodeAt(i + 1);\r\n if (charCode >= 0xDC00 && charCode <= 0xDFFF) {\r\n charactersArray.push(text.substr(i, 2));\r\n ++i;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n }\r\n i += 1;\r\n }\r\n return charactersArray;\r\n}\r\n\r\nTextProperty.prototype.completeTextData = function(documentData) {\r\n documentData.__complete = true;\r\n var fontManager = this.elem.globalData.fontManager;\r\n var data = this.data;\r\n var letters = [];\r\n var i, len;\r\n var newLineFlag, index = 0, val;\r\n var anchorGrouping = data.m.g;\r\n var currentSize = 0, currentPos = 0, currentLine = 0, lineWidths = [];\r\n var lineWidth = 0;\r\n var maxLineWidth = 0;\r\n var j, jLen;\r\n var fontData = fontManager.getFontByName(documentData.f);\r\n var charData, cLength = 0;\r\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\r\n\r\n var fWeight = 'normal', fStyle = 'normal';\r\n len = styles.length;\r\n var styleName;\r\n for(i=0;i boxWidth && finalText[i] !== ' '){\r\n if(lastSpaceIndex === -1){\r\n len += 1;\r\n } else {\r\n i = lastSpaceIndex;\r\n }\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize*1.2;\r\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0,\"\\r\");\r\n //finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\r\n lastSpaceIndex = -1;\r\n lineWidth = 0;\r\n }else {\r\n lineWidth += cLength;\r\n lineWidth += trackingOffset;\r\n }\r\n }\r\n currentHeight += fontData.ascent*documentData.finalSize/100;\r\n if(this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\r\n documentData.finalSize -= 1;\r\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\r\n } else {\r\n documentData.finalText = finalText;\r\n len = documentData.finalText.length;\r\n flag = false;\r\n }\r\n }\r\n\r\n }\r\n lineWidth = - trackingOffset;\r\n cLength = 0;\r\n var uncollapsedSpaces = 0;\r\n var currentChar;\r\n for (i = 0;i < len ;i += 1) {\r\n newLineFlag = false;\r\n currentChar = documentData.finalText[i];\r\n charCode = currentChar.charCodeAt(0);\r\n if (charCode === 13 || charCode === 3) {\r\n uncollapsedSpaces = 0;\r\n lineWidths.push(lineWidth);\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidth = - 2 * trackingOffset;\r\n val = '';\r\n newLineFlag = true;\r\n currentLine += 1;\r\n }else{\r\n val = currentChar;\r\n }\r\n if(fontManager.chars){\r\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\r\n cLength = newLineFlag ? 0 : charData.w*documentData.finalSize/100;\r\n }else{\r\n //var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n //tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\r\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n }\r\n\r\n //\r\n if(currentChar === ' '){\r\n uncollapsedSpaces += cLength + trackingOffset;\r\n } else {\r\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\r\n uncollapsedSpaces = 0;\r\n }\r\n letters.push({l:cLength,an:cLength,add:currentSize,n:newLineFlag, anIndexes:[], val: val, line: currentLine, animatorJustifyOffset: 0});\r\n if(anchorGrouping == 2){\r\n currentSize += cLength;\r\n if(val === '' || val === ' ' || i === len - 1){\r\n if(val === '' || val === ' '){\r\n currentSize -= cLength;\r\n }\r\n while(currentPos<=i){\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n index += 1;\r\n currentSize = 0;\r\n }\r\n }else if(anchorGrouping == 3){\r\n currentSize += cLength;\r\n if(val === '' || i === len - 1){\r\n if(val === ''){\r\n currentSize -= cLength;\r\n }\r\n while(currentPos<=i){\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n currentSize = 0;\r\n index += 1;\r\n }\r\n }else{\r\n letters[index].ind = index;\r\n letters[index].extra = 0;\r\n index += 1;\r\n }\r\n }\r\n documentData.l = letters;\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidths.push(lineWidth);\r\n if(documentData.sz){\r\n documentData.boxWidth = documentData.sz[0];\r\n documentData.justifyOffset = 0;\r\n }else{\r\n documentData.boxWidth = maxLineWidth;\r\n switch(documentData.j){\r\n case 1:\r\n documentData.justifyOffset = - documentData.boxWidth;\r\n break;\r\n case 2:\r\n documentData.justifyOffset = - documentData.boxWidth/2;\r\n break;\r\n default:\r\n documentData.justifyOffset = 0;\r\n }\r\n }\r\n documentData.lineWidths = lineWidths;\r\n\r\n var animators = data.a, animatorData, letterData;\r\n jLen = animators.length;\r\n var based, ind, indexes = [];\r\n for(j=0;j 0) {\r\n x1 = this.ne.v / 100.0;\r\n }\r\n else {\r\n y1 = -this.ne.v / 100.0;\r\n }\r\n if(this.xe.v > 0) {\r\n x2 = 1.0 - this.xe.v / 100.0;\r\n }\r\n else {\r\n y2 = 1.0 + this.xe.v / 100.0;\r\n }\r\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\r\n\r\n var mult = 0;\r\n var s = this.finalS;\r\n var e = this.finalE;\r\n var type = this.data.sh;\r\n if (type === 2){\r\n if (e === s) {\r\n mult = ind >= e ? 1 : 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n mult = easer(mult);\r\n } else if(type === 3) {\r\n if (e === s) {\r\n mult = ind >= e ? 0 : 1;\r\n }else{\r\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s),1));\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 4) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n if (mult < 0.5) {\r\n mult *= 2;\r\n } else {\r\n mult = 1 - 2 * (mult - 0.5);\r\n }\r\n }\r\n mult = easer(mult);\r\n } else if (type === 5) {\r\n if (e === s){\r\n mult = 0;\r\n } else {\r\n var tot = e - s;\r\n /*ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind;*/\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n var x = -tot/2+ind;\r\n var a = tot/2;\r\n mult = Math.sqrt(1 - (x * x) / (a * a));\r\n }\r\n mult = easer(mult);\r\n } else if (type === 6) {\r\n if (e === s){\r\n mult = 0;\r\n } else {\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n mult = (1 + (Math.cos((Math.PI + Math.PI * 2 * (ind) / (e - s))))) / 2;\r\n }\r\n mult = easer(mult);\r\n } else {\r\n if (ind >= floor(s)) {\r\n if (ind - s < 0) {\r\n mult = max(0, min(min(e, 1) - (s - ind), 1));\r\n } else {\r\n mult = max(0, min(e - ind, 1));\r\n }\r\n }\r\n mult = easer(mult);\r\n }\r\n return mult*this.a.v;\r\n },\r\n getValue: function(newCharsFlag) {\r\n this.iterateDynamicProperties();\r\n this._mdf = newCharsFlag || this._mdf;\r\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\r\n if(newCharsFlag && this.data.r === 2) {\r\n this.e.v = this._currentTextLength;\r\n }\r\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\r\n var o = this.o.v/divisor;\r\n var s = this.s.v/divisor + o;\r\n var e = (this.e.v/divisor) + o;\r\n if(s>e){\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n this.finalS = s;\r\n this.finalE = e;\r\n }\r\n }\r\n extendPrototype([DynamicPropertyContainer], TextSelectorProp);\r\n\r\n function getTextSelectorProp(elem, data,arr) {\r\n return new TextSelectorProp(elem, data, arr);\r\n }\r\n\r\n return {\r\n getTextSelectorProp: getTextSelectorProp\r\n };\r\n}());\r\n\r\n \r\nvar pool_factory = (function() {\r\n\treturn function(initialLength, _create, _release, _clone) {\r\n\r\n\t\tvar _length = 0;\r\n\t\tvar _maxLength = initialLength;\r\n\t\tvar pool = createSizedArray(_maxLength);\r\n\r\n\t\tvar ob = {\r\n\t\t\tnewElement: newElement,\r\n\t\t\trelease: release\r\n\t\t};\r\n\r\n\t\tfunction newElement(){\r\n\t\t\tvar element;\r\n\t\t\tif(_length){\r\n\t\t\t\t_length -= 1;\r\n\t\t\t\telement = pool[_length];\r\n\t\t\t} else {\r\n\t\t\t\telement = _create();\r\n\t\t\t}\r\n\t\t\treturn element;\r\n\t\t}\r\n\r\n\t\tfunction release(element) {\r\n\t\t\tif(_length === _maxLength) {\r\n\t\t\t\tpool = pooling.double(pool);\r\n\t\t\t\t_maxLength = _maxLength*2;\r\n\t\t\t}\r\n\t\t\tif (_release) {\r\n\t\t\t\t_release(element);\r\n\t\t\t}\r\n\t\t\tpool[_length] = element;\r\n\t\t\t_length += 1;\r\n\t\t}\r\n\r\n\t\tfunction clone() {\r\n\t\t\tvar clonedElement = newElement();\r\n\t\t\treturn _clone(clonedElement);\r\n\t\t}\r\n\r\n\t\treturn ob;\r\n\t};\r\n}());\r\n\r\nvar pooling = (function(){\r\n\r\n\tfunction double(arr){\r\n\t\treturn arr.concat(createSizedArray(arr.length));\r\n\t}\r\n\r\n\treturn {\r\n\t\tdouble: double\r\n\t};\r\n}());\r\nvar point_pool = (function(){\r\n\r\n\tfunction create() {\r\n\t\treturn createTypedArray('float32', 2);\r\n\t}\r\n\treturn pool_factory(8, create);\r\n}());\r\nvar shape_pool = (function(){\r\n\r\n\tfunction create() {\r\n\t\treturn new ShapePath();\r\n\t}\r\n\r\n\tfunction release(shapePath) {\r\n\t\tvar len = shapePath._length, i;\r\n\t\tfor(i = 0; i < len; i += 1) {\r\n\t\t\tpoint_pool.release(shapePath.v[i]);\r\n\t\t\tpoint_pool.release(shapePath.i[i]);\r\n\t\t\tpoint_pool.release(shapePath.o[i]);\r\n\t\t\tshapePath.v[i] = null;\r\n\t\t\tshapePath.i[i] = null;\r\n\t\t\tshapePath.o[i] = null;\r\n\t\t}\r\n\t\tshapePath._length = 0;\r\n\t\tshapePath.c = false;\r\n\t}\r\n\r\n\tfunction clone(shape) {\r\n\t\tvar cloned = factory.newElement();\r\n\t\tvar i, len = shape._length === undefined ? shape.v.length : shape._length;\r\n\t\tcloned.setLength(len);\r\n\t\tcloned.c = shape.c;\r\n\t\tvar pt;\r\n\t\t\r\n\t\tfor(i = 0; i < len; i += 1) {\r\n\t\t\tcloned.setTripleAt(shape.v[i][0],shape.v[i][1],shape.o[i][0],shape.o[i][1],shape.i[i][0],shape.i[i][1], i);\r\n\t\t}\r\n\t\treturn cloned;\r\n\t}\r\n\r\n\tvar factory = pool_factory(4, create, release);\r\n\tfactory.clone = clone;\r\n\r\n\treturn factory;\r\n}());\r\nvar shapeCollection_pool = (function(){\r\n\tvar ob = {\r\n\t\tnewShapeCollection: newShapeCollection,\r\n\t\trelease: release\r\n\t};\r\n\r\n\tvar _length = 0;\r\n\tvar _maxLength = 4;\r\n\tvar pool = createSizedArray(_maxLength);\r\n\r\n\tfunction newShapeCollection(){\r\n\t\tvar shapeCollection;\r\n\t\tif(_length){\r\n\t\t\t_length -= 1;\r\n\t\t\tshapeCollection = pool[_length];\r\n\t\t} else {\r\n\t\t\tshapeCollection = new ShapeCollection();\r\n\t\t}\r\n\t\treturn shapeCollection;\r\n\t}\r\n\r\n\tfunction release(shapeCollection) {\r\n\t\tvar i, len = shapeCollection._length;\r\n\t\tfor(i = 0; i < len; i += 1) {\r\n\t\t\tshape_pool.release(shapeCollection.shapes[i]);\r\n\t\t}\r\n\t\tshapeCollection._length = 0;\r\n\r\n\t\tif(_length === _maxLength) {\r\n\t\t\tpool = pooling.double(pool);\r\n\t\t\t_maxLength = _maxLength*2;\r\n\t\t}\r\n\t\tpool[_length] = shapeCollection;\r\n\t\t_length += 1;\r\n\t}\r\n\r\n\treturn ob;\r\n}());\r\nvar segments_length_pool = (function(){\r\n\r\n\tfunction create() {\r\n\t\treturn {\r\n\t\t\tlengths: [],\r\n\t\t\ttotalLength: 0\r\n\t\t};\r\n\t}\r\n\r\n\tfunction release(element) {\r\n\t\tvar i, len = element.lengths.length;\r\n\t\tfor(i=0;i= 0; i--) {\r\n if (!this.elements[i]) {\r\n data = this.layers[i];\r\n if(data.ip - data.st <= (num - this.layers[i].st) && data.op - data.st > (num - this.layers[i].st))\r\n {\r\n this.buildItem(i);\r\n }\r\n }\r\n this.completeLayers = this.elements[i] ? this.completeLayers:false;\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.createItem = function(layer){\r\n switch(layer.ty){\r\n case 2:\r\n return this.createImage(layer);\r\n case 0:\r\n return this.createComp(layer);\r\n case 1:\r\n return this.createSolid(layer);\r\n case 3:\r\n return this.createNull(layer);\r\n case 4:\r\n return this.createShape(layer);\r\n case 5:\r\n return this.createText(layer);\r\n case 6:\r\n return this.createAudio(layer);\r\n case 13:\r\n return this.createCamera(layer);\r\n }\r\n return this.createNull(layer);\r\n};\r\n\r\nBaseRenderer.prototype.createCamera = function(){\r\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\r\n};\r\n\r\nBaseRenderer.prototype.createAudio = function(data){\r\n return new AudioElement(data, this.globalData, this);\r\n};\r\n\r\nBaseRenderer.prototype.buildAllItems = function(){\r\n var i, len = this.layers.length;\r\n for(i=0;i= 0; i--) {\r\n if(this.completeLayers || this.elements[i]){\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if(this.globalData._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n if(this.completeLayers || this.elements[i]){\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.appendElementInPos = function(element, pos){\r\n var newElement = element.getBaseElement();\r\n if(!newElement){\r\n return;\r\n }\r\n var i = 0;\r\n var nextElement;\r\n while(i 0){\r\n this.maskElement.setAttribute('id', layerId);\r\n this.element.maskedElement.setAttribute(maskRef, \"url(\" + locationHref + \"#\" + layerId + \")\");\r\n defs.appendChild(this.maskElement);\r\n }\r\n if (this.viewData.length) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n\r\n}\r\n\r\nMaskElement.prototype.getMaskProperty = function(pos){\r\n return this.viewData[pos].prop;\r\n};\r\n\r\nMaskElement.prototype.renderFrame = function (isFirstFrame) {\r\n var finalMat = this.element.finalTransform.mat;\r\n var i, len = this.masksProperties.length;\r\n for (i = 0; i < len; i++) {\r\n if(this.viewData[i].prop._mdf || isFirstFrame){\r\n this.drawPath(this.masksProperties[i],this.viewData[i].prop.v,this.viewData[i]);\r\n }\r\n if(this.viewData[i].op._mdf || isFirstFrame){\r\n this.viewData[i].elem.setAttribute('fill-opacity',this.viewData[i].op.v);\r\n }\r\n if(this.masksProperties[i].mode !== 'n'){\r\n if(this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)){\r\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS())\r\n }\r\n if(this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)){\r\n var feMorph = this.storedData[i].expan;\r\n if(this.storedData[i].x.v < 0){\r\n if(this.storedData[i].lastOperator !== 'erode'){\r\n this.storedData[i].lastOperator = 'erode';\r\n this.storedData[i].elem.setAttribute('filter','url(' + locationHref + '#'+this.storedData[i].filterId+')');\r\n }\r\n feMorph.setAttribute('radius',-this.storedData[i].x.v);\r\n }else{\r\n if(this.storedData[i].lastOperator !== 'dilate'){\r\n this.storedData[i].lastOperator = 'dilate';\r\n this.storedData[i].elem.setAttribute('filter',null);\r\n }\r\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v*2);\r\n\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nMaskElement.prototype.getMaskelement = function () {\r\n return this.maskElement;\r\n};\r\n\r\nMaskElement.prototype.createLayerSolidPath = function(){\r\n var path = 'M0,0 ';\r\n path += ' h' + this.globalData.compSize.w ;\r\n path += ' v' + this.globalData.compSize.h ;\r\n path += ' h-' + this.globalData.compSize.w ;\r\n path += ' v-' + this.globalData.compSize.h + ' ';\r\n return path;\r\n};\r\n\r\nMaskElement.prototype.drawPath = function(pathData,pathNodes,viewData){\r\n var pathString = \" M\"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\r\n var i, len;\r\n len = pathNodes._length;\r\n for(i=1;i 1){\r\n pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\r\n }\r\n //pathNodes.__renderedString = pathString;\r\n\r\n if(viewData.lastPath !== pathString){\r\n var pathShapeValue = '';\r\n if(viewData.elem){\r\n if(pathNodes.c){\r\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\r\n }\r\n viewData.elem.setAttribute('d',pathShapeValue);\r\n }\r\n viewData.lastPath = pathString;\r\n }\r\n};\r\n\r\nMaskElement.prototype.destroy = function(){\r\n this.element = null;\r\n this.globalData = null;\r\n this.maskElement = null;\r\n this.data = null;\r\n this.masksProperties = null;\r\n};\r\n\r\n/**\r\n * @file \r\n * Handles AE's layer parenting property.\r\n *\r\n */\r\n\r\nfunction HierarchyElement(){}\r\n\r\nHierarchyElement.prototype = {\r\n\t/**\r\n * @function \r\n * Initializes hierarchy properties\r\n *\r\n */\r\n\tinitHierarchy: function() {\r\n\t\t//element's parent list\r\n\t this.hierarchy = [];\r\n\t //if element is parent of another layer _isParent will be true\r\n\t this._isParent = false;\r\n\t this.checkParenting();\r\n\t},\r\n\t/**\r\n * @function \r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */ \r\n\tsetHierarchy: function(hierarchy){\r\n\t this.hierarchy = hierarchy;\r\n\t},\r\n\t/**\r\n * @function \r\n * Sets layer as parent.\r\n *\r\n */ \r\n\tsetAsParent: function() {\r\n\t this._isParent = true;\r\n\t},\r\n\t/**\r\n * @function \r\n * Searches layer's parenting chain\r\n *\r\n */ \r\n\tcheckParenting: function(){\r\n\t if (this.data.parent !== undefined){\r\n\t this.comp.buildElementParenting(this, this.data.parent, []);\r\n\t }\r\n\t}\r\n};\r\n/**\r\n * @file \r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\r\n\r\nfunction FrameElement(){}\r\n\r\nFrameElement.prototype = {\r\n /**\r\n * @function \r\n * Initializes frame related properties.\r\n *\r\n */\r\n initFrame: function(){\r\n //set to true when inpoint is rendered\r\n this._isFirstFrame = false;\r\n //list of animated properties\r\n this.dynamicProperties = [];\r\n // If layer has been modified in current tick this will be true\r\n this._mdf = false;\r\n },\r\n /**\r\n * @function \r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n * \r\n */\r\n prepareProperties: function(num, isVisible) {\r\n var i, len = this.dynamicProperties.length;\r\n for (i = 0;i < len; i += 1) {\r\n if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) {\r\n this.dynamicProperties[i].getValue();\r\n if (this.dynamicProperties[i]._mdf) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n },\r\n addDynamicProperty: function(prop) {\r\n if(this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n }\r\n }\r\n};\r\nfunction TransformElement(){}\r\n\r\nTransformElement.prototype = {\r\n initTransform: function() {\r\n this.finalTransform = {\r\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {o:0},\r\n _matMdf: false,\r\n _opMdf: false,\r\n mat: new Matrix()\r\n };\r\n if (this.data.ao) {\r\n this.finalTransform.mProp.autoOriented = true;\r\n }\r\n\r\n //TODO: check TYPE 11: Guided elements\r\n if (this.data.ty !== 11) {\r\n //this.createElements();\r\n }\r\n },\r\n renderTransform: function() {\r\n\r\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\r\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\r\n\r\n if (this.hierarchy) {\r\n var mat;\r\n var finalMat = this.finalTransform.mat;\r\n var i = 0, len = this.hierarchy.length;\r\n //Checking if any of the transformation matrices in the hierarchy chain has changed.\r\n if (!this.finalTransform._matMdf) {\r\n while (i < len) {\r\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\r\n this.finalTransform._matMdf = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n \r\n if (this.finalTransform._matMdf) {\r\n mat = this.finalTransform.mProp.v.props;\r\n finalMat.cloneFromProps(mat);\r\n for (i = 0; i < len; i += 1) {\r\n mat = this.hierarchy[i].finalTransform.mProp.v.props;\r\n finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);\r\n }\r\n }\r\n }\r\n },\r\n globalToLocal: function(pt) {\r\n var transforms = [];\r\n transforms.push(this.finalTransform);\r\n var flag = true;\r\n var comp = this.comp;\r\n while (flag) {\r\n if (comp.finalTransform) {\r\n if (comp.data.hasMask) {\r\n transforms.splice(0, 0, comp.finalTransform);\r\n }\r\n comp = comp.comp;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n var i, len = transforms.length,ptNew;\r\n for (i = 0; i < len; i += 1) {\r\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);\r\n //ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\r\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\r\n }\r\n return pt;\r\n },\r\n mHelper: new Matrix()\r\n};\r\nfunction RenderableElement(){\r\n\r\n}\r\n\r\nRenderableElement.prototype = {\r\n initRenderable: function() {\r\n //layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\r\n this.isInRange = false;\r\n //layer's display state\r\n this.hidden = false;\r\n // If layer's transparency equals 0, it can be hidden\r\n this.isTransparent = false;\r\n //list of animated components\r\n this.renderableComponents = [];\r\n },\r\n addRenderableComponent: function(component) {\r\n if(this.renderableComponents.indexOf(component) === -1) {\r\n this.renderableComponents.push(component);\r\n }\r\n },\r\n removeRenderableComponent: function(component) {\r\n if(this.renderableComponents.indexOf(component) !== -1) {\r\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\r\n }\r\n },\r\n prepareRenderableFrame: function(num) {\r\n this.checkLayerLimits(num);\r\n },\r\n checkTransparency: function(){\r\n if(this.finalTransform.mProp.o.v <= 0) {\r\n if(!this.isTransparent && this.globalData.renderConfig.hideOnTransparent){\r\n this.isTransparent = true;\r\n this.hide();\r\n }\r\n } else if(this.isTransparent) {\r\n this.isTransparent = false;\r\n this.show();\r\n }\r\n },\r\n /**\r\n * @function \r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * \r\n */\r\n checkLayerLimits: function(num) {\r\n if(this.data.ip - this.data.st <= num && this.data.op - this.data.st > num)\r\n {\r\n if(this.isInRange !== true){\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n this.isInRange = true;\r\n this.show();\r\n }\r\n } else {\r\n if(this.isInRange !== false){\r\n this.globalData._mdf = true;\r\n this.isInRange = false;\r\n this.hide();\r\n }\r\n }\r\n },\r\n renderRenderable: function() {\r\n var i, len = this.renderableComponents.length;\r\n for(i = 0; i < len; i += 1) {\r\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\r\n }\r\n /*this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame);*/\r\n },\r\n sourceRectAtTime: function(){\r\n return {\r\n top:0,\r\n left:0,\r\n width:100,\r\n height:100\r\n };\r\n },\r\n getLayerSize: function(){\r\n if(this.data.ty === 5){\r\n return {w:this.data.textData.width,h:this.data.textData.height};\r\n }else{\r\n return {w:this.data.width,h:this.data.height};\r\n }\r\n }\r\n};\r\nfunction RenderableDOMElement() {}\r\n\r\n(function(){\r\n var _prototype = {\r\n initElement: function(data,globalData,comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n },\r\n hide: function(){\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'none';\r\n this.hidden = true;\r\n }\r\n },\r\n show: function(){\r\n if (this.isInRange && !this.isTransparent){\r\n if (!this.data.hd) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'block';\r\n }\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function() {\r\n //If it is exported as hidden (data.hd === true) no need to render\r\n //If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n renderInnerContent: function() {},\r\n prepareFrame: function(num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n this.checkTransparency();\r\n },\r\n destroy: function(){\r\n this.innerElem = null;\r\n this.destroyBaseElement();\r\n }\r\n };\r\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\r\n}());\r\nfunction ProcessedElement(element, position) {\r\n\tthis.elem = element;\r\n\tthis.pos = position;\r\n}\r\nfunction SVGStyleData(data, level) {\r\n\tthis.data = data;\r\n\tthis.type = data.ty;\r\n\tthis.d = '';\r\n\tthis.lvl = level;\r\n\tthis._mdf = false;\r\n\tthis.closed = data.hd === true;\r\n\tthis.pElem = createNS('path');\r\n\tthis.msElem = null;\r\n}\r\n\r\nSVGStyleData.prototype.reset = function() {\r\n\tthis.d = '';\r\n\tthis._mdf = false;\r\n};\r\nfunction SVGShapeData(transformers, level, shape) {\r\n this.caches = [];\r\n this.styles = [];\r\n this.transformers = transformers;\r\n this.lStr = '';\r\n this.sh = shape;\r\n this.lvl = level;\r\n //TODO find if there are some cases where _isAnimated can be false. \r\n // For now, since shapes add up with other shapes. They have to be calculated every time.\r\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\r\n this._isAnimated = !!shape.k;\r\n // TODO: commenting this for now since all shapes are animated\r\n var i = 0, len = transformers.length;\r\n while(i < len) {\r\n \tif(transformers[i].mProps.dynamicProperties.length) {\r\n \t\tthis._isAnimated = true;\r\n \t\tbreak;\r\n \t}\r\n \ti += 1;\r\n }\r\n}\r\n\r\nSVGShapeData.prototype.setAsAnimated = function() {\r\n this._isAnimated = true;\r\n}\r\nfunction SVGTransformData(mProps, op, container) {\r\n\tthis.transform = {\r\n\t\tmProps: mProps,\r\n\t\top: op,\r\n\t\tcontainer: container\r\n\t};\r\n\tthis.elements = [];\r\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\r\n}\r\nfunction SVGStrokeStyleData(elem, data, styleOb){\r\n\tthis.initDynamicPropertyContainer(elem);\r\n\tthis.getValue = this.iterateDynamicProperties;\r\n\tthis.o = PropertyFactory.getProp(elem,data.o,0,0.01,this);\r\n\tthis.w = PropertyFactory.getProp(elem,data.w,0,null,this);\r\n\tthis.d = new DashProperty(elem,data.d||{},'svg',this);\r\n\tthis.c = PropertyFactory.getProp(elem,data.c,1,255,this);\r\n\tthis.style = styleOb;\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\r\nfunction SVGFillStyleData(elem, data, styleOb){\r\n\tthis.initDynamicPropertyContainer(elem);\r\n\tthis.getValue = this.iterateDynamicProperties;\r\n\tthis.o = PropertyFactory.getProp(elem,data.o,0,0.01,this);\r\n\tthis.c = PropertyFactory.getProp(elem,data.c,1,255,this);\r\n\tthis.style = styleOb;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGFillStyleData);\r\nfunction SVGGradientFillStyleData(elem, data, styleOb){\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.initGradientData(elem, data, styleOb);\r\n}\r\n\r\nSVGGradientFillStyleData.prototype.initGradientData = function(elem, data, styleOb){\r\n this.o = PropertyFactory.getProp(elem,data.o,0,0.01,this);\r\n this.s = PropertyFactory.getProp(elem,data.s,1,null,this);\r\n this.e = PropertyFactory.getProp(elem,data.e,1,null,this);\r\n this.h = PropertyFactory.getProp(elem,data.h||{k:0},0,0.01,this);\r\n this.a = PropertyFactory.getProp(elem,data.a||{k:0},0,degToRads,this);\r\n this.g = new GradientProperty(elem,data.g,this);\r\n this.style = styleOb;\r\n this.stops = [];\r\n this.setGradientData(styleOb.pElem, data);\r\n this.setGradientOpacity(data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientData = function(pathElement,data){\r\n\r\n var gradientId = createElementID();\r\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n gfill.setAttribute('id',gradientId);\r\n gfill.setAttribute('spreadMethod','pad');\r\n gfill.setAttribute('gradientUnits','userSpaceOnUse');\r\n var stops = [];\r\n var stop, j, jLen;\r\n jLen = data.g.p*4;\r\n for(j=0;j 0) {\r\n\t redraw = itemData.transformers[k].mProps._mdf || redraw;\r\n\t iterations --;\r\n\t k --;\r\n\t }\r\n\t if(redraw) {\r\n\t iterations = lvl - itemData.styles[l].lvl;\r\n\t k = itemData.transformers.length-1;\r\n\t while(iterations > 0) {\r\n\t props = itemData.transformers[k].mProps.v.props;\r\n\t mat.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\r\n\t iterations --;\r\n\t k --;\r\n\t }\r\n\t }\r\n\t } else {\r\n\t mat = _identityMatrix;\r\n\t }\r\n\t paths = itemData.sh.paths;\r\n\t jLen = paths._length;\r\n\t if(redraw){\r\n\t pathStringTransformed = '';\r\n\t for(j=0;j= 1 ? 0.99 : itemData.h.v <= -1 ? -0.99: itemData.h.v;\r\n\t var dist = rad * percent;\r\n\t var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n\t var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n\t gfill.setAttribute('fx', x);\r\n\t gfill.setAttribute('fy', y);\r\n\t if (hasOpacity && !itemData.g._collapsable) {\r\n\t itemData.of.setAttribute('fx', x);\r\n\t itemData.of.setAttribute('fy', y);\r\n\t }\r\n\t }\r\n\t //gfill.setAttribute('fy','200');\r\n\t }\r\n\t};\r\n\r\n\tfunction renderStroke(styleData, itemData, isFirstFrame) {\r\n\t var styleElem = itemData.style;\r\n\t var d = itemData.d;\r\n\t if (d && (d._mdf || isFirstFrame) && d.dashStr) {\r\n\t styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\r\n\t styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\r\n\t }\r\n\t if(itemData.c && (itemData.c._mdf || isFirstFrame)){\r\n\t styleElem.pElem.setAttribute('stroke','rgb(' + bm_floor(itemData.c.v[0]) + ',' + bm_floor(itemData.c.v[1]) + ',' + bm_floor(itemData.c.v[2]) + ')');\r\n\t }\r\n\t if(itemData.o._mdf || isFirstFrame){\r\n\t styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\r\n\t }\r\n\t if(itemData.w._mdf || isFirstFrame){\r\n\t styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\r\n\t if(styleElem.msElem){\r\n\t styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\treturn ob;\r\n}())\r\nfunction ShapeTransformManager() {\r\n\tthis.sequences = {};\r\n\tthis.sequenceList = [];\r\n this.transform_key_count = 0;\r\n}\r\n\r\nShapeTransformManager.prototype = {\r\n\taddTransformSequence: function(transforms) {\r\n\t\tvar i, len = transforms.length;\r\n\t\tvar key = '_';\r\n\t\tfor(i = 0; i < len; i += 1) {\r\n\t\t\tkey += transforms[i].transform.key + '_';\r\n\t\t}\r\n\t\tvar sequence = this.sequences[key];\r\n\t\tif(!sequence) {\r\n\t\t\tsequence = {\r\n\t\t\t\ttransforms: [].concat(transforms),\r\n\t\t\t\tfinalTransform: new Matrix(),\r\n\t\t\t\t_mdf: false\r\n\t\t\t};\r\n\t\t\tthis.sequences[key] = sequence;\r\n\t\t\tthis.sequenceList.push(sequence);\r\n\t\t}\r\n\t\treturn sequence;\r\n\t},\r\n\tprocessSequence: function(sequence, isFirstFrame) {\r\n\t\tvar i = 0, len = sequence.transforms.length, _mdf = isFirstFrame;\r\n\t\twhile (i < len && !isFirstFrame) {\r\n\t\t\tif (sequence.transforms[i].transform.mProps._mdf) {\r\n\t\t\t\t_mdf = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\ti += 1\r\n\t\t}\r\n\t\tif (_mdf) {\r\n\t\t\tvar props;\r\n\t\t\tsequence.finalTransform.reset();\r\n\t\t\tfor (i = len - 1; i >= 0; i -= 1) {\r\n\t\t props = sequence.transforms[i].transform.mProps.v.props;\r\n\t\t sequence.finalTransform.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tsequence._mdf = _mdf;\r\n\t\t\r\n\t},\r\n\tprocessSequences: function(isFirstFrame) {\r\n\t\tvar i, len = this.sequenceList.length;\r\n\t\tfor (i = 0; i < len; i += 1) {\r\n\t\t\tthis.processSequence(this.sequenceList[i], isFirstFrame);\r\n\t\t}\r\n\r\n\t},\r\n\tgetNewKey: function() {\r\n\t\treturn '_' + this.transform_key_count++;\r\n\t}\r\n}\r\nfunction BaseElement(){\r\n}\r\n\r\nBaseElement.prototype = {\r\n checkMasks: function(){\r\n if(!this.data.hasMask){\r\n return false;\r\n }\r\n var i = 0, len = this.data.masksProperties.length;\r\n while(i=0;i-=1){\r\n this.shapeModifiers[i].processShapes(this._isFirstFrame);\r\n }\r\n },\r\n lcEnum: {\r\n '1': 'butt',\r\n '2': 'round',\r\n '3': 'square'\r\n },\r\n ljEnum: {\r\n '1': 'miter',\r\n '2': 'round',\r\n '3': 'bevel'\r\n },\r\n searchProcessedElement: function(elem){\r\n var elements = this.processedElements;\r\n var i = 0, len = elements.length;\r\n while (i < len) {\r\n if (elements[i].elem === elem) {\r\n return elements[i].pos;\r\n }\r\n i += 1;\r\n }\r\n return 0;\r\n },\r\n addProcessedElement: function(elem, pos){\r\n var elements = this.processedElements;\r\n var i = elements.length;\r\n while(i) {\r\n i -= 1;\r\n if (elements[i].elem === elem) {\r\n elements[i].pos = pos;\r\n return;\r\n }\r\n }\r\n elements.push(new ProcessedElement(elem, pos));\r\n },\r\n prepareFrame: function(num) {\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n }\r\n};\r\nfunction ITextElement(){\r\n}\r\n\r\nITextElement.prototype.initElement = function(data,globalData,comp){\r\n this.lettersChangedFlag = true;\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\r\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n this.textAnimator.searchProperties(this.dynamicProperties);\r\n};\r\n\r\nITextElement.prototype.prepareFrame = function(num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if(this.textProperty._mdf || this.textProperty._isFirstFrame) {\r\n this.buildNewText();\r\n this.textProperty._isFirstFrame = false;\r\n this.textProperty._mdf = false;\r\n }\r\n};\r\n\r\nITextElement.prototype.createPathShape = function(matrixHelper, shapes) {\r\n var j,jLen = shapes.length;\r\n var k, kLen, pathNodes;\r\n var shapeStr = '';\r\n for(j=0;j= 0; i -= 1 ){\r\n if(this.completeLayers || this.elements[i]){\r\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\r\n if(this.elements[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.renderInnerContent = function() {\r\n var i,len = this.layers.length;\r\n for( i = 0; i < len; i += 1 ){\r\n if(this.completeLayers || this.elements[i]){\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.setElements = function(elems){\r\n this.elements = elems;\r\n};\r\n\r\nICompElement.prototype.getElements = function(){\r\n return this.elements;\r\n};\r\n\r\nICompElement.prototype.destroyElements = function(){\r\n var i,len = this.layers.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].destroy();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.destroy = function(){\r\n this.destroyElements();\r\n this.destroyBaseElement();\r\n};\r\n\r\nfunction IImageElement(data,globalData,comp){\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data,globalData,comp);\r\n this.sourceRect = {top:0,left:0,width:this.assetData.w,height:this.assetData.h};\r\n}\r\n\r\nextendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement], IImageElement);\r\n\r\nIImageElement.prototype.createContent = function(){\r\n\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n\r\n this.innerElem = createNS('image');\r\n this.innerElem.setAttribute('width',this.assetData.w+\"px\");\r\n this.innerElem.setAttribute('height',this.assetData.h+\"px\");\r\n this.innerElem.setAttribute('preserveAspectRatio',this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\r\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink','href',assetPath);\r\n \r\n this.layerElement.appendChild(this.innerElem);\r\n};\r\n\r\nIImageElement.prototype.sourceRectAtTime = function() {\r\n\treturn this.sourceRect;\r\n}\r\nfunction ISolidElement(data,globalData,comp){\r\n this.initElement(data,globalData,comp);\r\n}\r\nextendPrototype([IImageElement], ISolidElement);\r\n\r\nISolidElement.prototype.createContent = function(){\r\n\r\n var rect = createNS('rect');\r\n ////rect.style.width = this.data.sw;\r\n ////rect.style.height = this.data.sh;\r\n ////rect.style.fill = this.data.sc;\r\n rect.setAttribute('width',this.data.sw);\r\n rect.setAttribute('height',this.data.sh);\r\n rect.setAttribute('fill',this.data.sc);\r\n this.layerElement.appendChild(rect);\r\n};\r\nfunction AudioElement(data,globalData,comp){\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n\tthis.initBaseData(data, globalData, comp);\r\n\tthis._isPlaying = false;\r\n\tthis._canPlay = false;\r\n\tvar assetPath = this.globalData.getAssetsPath(this.assetData);\r\n this.audio = this.globalData.audioController.createAudio(assetPath);\r\n this._currentTime = 0;\r\n this.globalData.audioController.addAudio(this);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate,this) : {_placeholder:true};\r\n}\r\n\r\nAudioElement.prototype.prepareFrame = function(num) {\r\n this.prepareRenderableFrame(num, true);\r\n this.prepareProperties(num, true);\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n this._currentTime = timeRemapped;\r\n } else {\r\n this._currentTime = num / this.data.sr;\r\n }\r\n};\r\n\r\nextendPrototype([RenderableElement,BaseElement,FrameElement], AudioElement);\r\n\r\nAudioElement.prototype.renderFrame = function() {\r\n\tif (this.isInRange && this._canPlay) {\r\n\t\tif (!this._isPlaying) {\r\n\t\t\tthis.audio.play();\r\n\t\t\tthis.audio.seek(this._currentTime / this.globalData.frameRate);\r\n\t\t\tthis._isPlaying = true;\r\n\t\t} else if (!this.audio.playing()\r\n\t\t\t|| Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1\r\n\t\t) {\r\n\t\t\tthis.audio.seek(this._currentTime / this.globalData.frameRate)\r\n\t\t}\r\n\t}\r\n};\r\n\r\nAudioElement.prototype.show = function() {\r\n\t// this.audio.play()\r\n};\r\n\r\nAudioElement.prototype.hide = function() {\r\n\tthis.audio.pause();\r\n\tthis._isPlaying = false;\r\n};\r\n\r\nAudioElement.prototype.pause = function() {\r\n\tthis.audio.pause();\r\n\tthis._isPlaying = false;\r\n\tthis._canPlay = false;\r\n};\r\n\r\nAudioElement.prototype.resume = function() {\r\n\tthis._canPlay = true;\r\n};\r\n\r\nAudioElement.prototype.setRate = function(rateValue) {\r\n\tthis.audio.rate(rateValue);\r\n};\r\n\r\nAudioElement.prototype.volume = function(volumeValue) {\r\n\tthis.audio.volume(volumeValue);\r\n};\r\n\r\nAudioElement.prototype.getBaseElement = function() {\r\n\treturn null;\r\n};\r\n\r\nAudioElement.prototype.destroy = function() {\r\n};\r\n\r\nAudioElement.prototype.sourceRectAtTime = function() {\r\n};\r\n\r\nAudioElement.prototype.initExpressions = function() {\r\n};\r\n\r\n\r\nfunction SVGCompElement(data,globalData,comp){\r\n this.layers = data.layers;\r\n this.supports3d = true;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n //this.layerElement = createNS('g');\r\n this.initElement(data,globalData,comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this,data.tm,0,globalData.frameRate,this) : {_placeholder:true};\r\n}\r\n\r\nextendPrototype([SVGRenderer, ICompElement, SVGBaseElement], SVGCompElement);\r\nfunction SVGTextElement(data,globalData,comp){\r\n this.textSpans = [];\r\n this.renderType = 'svg';\r\n this.initElement(data,globalData,comp);\r\n}\r\n\r\nextendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement], SVGTextElement);\r\n\r\nSVGTextElement.prototype.createContent = function(){\r\n\r\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\r\n this.textContainer = createNS('text');\r\n }\r\n};\r\n\r\nSVGTextElement.prototype.buildTextContents = function(textArray) {\r\n var i = 0, len = textArray.length;\r\n var textContents = [], currentTextContent = '';\r\n while (i < len) {\r\n if(textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\r\n textContents.push(currentTextContent);\r\n currentTextContent = '';\r\n } else {\r\n currentTextContent += textArray[i];\r\n }\r\n i += 1;\r\n }\r\n textContents.push(currentTextContent);\r\n return textContents;\r\n}\r\n\r\nSVGTextElement.prototype.buildNewText = function(){\r\n var i, len;\r\n\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\r\n if(documentData.fc) {\r\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\r\n }else{\r\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\r\n }\r\n if(documentData.sc){\r\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\r\n this.layerElement.setAttribute('stroke-width', documentData.sw);\r\n }\r\n this.layerElement.setAttribute('font-size', documentData.finalSize);\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if(fontData.fClass){\r\n this.layerElement.setAttribute('class',fontData.fClass);\r\n } else {\r\n this.layerElement.setAttribute('font-family', fontData.fFamily);\r\n var fWeight = documentData.fWeight, fStyle = documentData.fStyle;\r\n this.layerElement.setAttribute('font-style', fStyle);\r\n this.layerElement.setAttribute('font-weight', fWeight);\r\n }\r\n this.layerElement.setAttribute('aria-label', documentData.t);\r\n\r\n var letters = documentData.l || [];\r\n var usesGlyphs = !!this.globalData.fontManager.chars;\r\n len = letters.length;\r\n\r\n var tSpan;\r\n var matrixHelper = this.mHelper;\r\n var shapes, shapeStr = '', singleShape = this.data.singleShape;\r\n var xPos = 0, yPos = 0, firstLine = true;\r\n var trackingOffset = documentData.tr/1000*documentData.finalSize;\r\n if(singleShape && !usesGlyphs && !documentData.sz) {\r\n var tElement = this.textContainer;\r\n var justify = 'start';\r\n switch(documentData.j) {\r\n case 1:\r\n justify = 'end';\r\n break;\r\n case 2:\r\n justify = 'middle';\r\n break;\r\n }\r\n tElement.setAttribute('text-anchor',justify);\r\n tElement.setAttribute('letter-spacing',trackingOffset);\r\n var textContent = this.buildTextContents(documentData.finalText);\r\n len = textContent.length;\r\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\r\n for ( i = 0; i < len; i += 1) {\r\n tSpan = this.textSpans[i] || createNS('tspan');\r\n tSpan.textContent = textContent[i];\r\n tSpan.setAttribute('x', 0);\r\n tSpan.setAttribute('y', yPos);\r\n tSpan.style.display = 'inherit';\r\n tElement.appendChild(tSpan);\r\n this.textSpans[i] = tSpan;\r\n yPos += documentData.finalLineHeight;\r\n }\r\n \r\n this.layerElement.appendChild(tElement);\r\n } else {\r\n var cachedSpansLength = this.textSpans.length;\r\n var shapeData, charData;\r\n for (i = 0; i < len; i += 1) {\r\n if(!usesGlyphs || !singleShape || i === 0){\r\n tSpan = cachedSpansLength > i ? this.textSpans[i] : createNS(usesGlyphs?'path':'text');\r\n if (cachedSpansLength <= i) {\r\n tSpan.setAttribute('stroke-linecap', 'butt');\r\n tSpan.setAttribute('stroke-linejoin','round');\r\n tSpan.setAttribute('stroke-miterlimit','4');\r\n this.textSpans[i] = tSpan;\r\n this.layerElement.appendChild(tSpan);\r\n }\r\n tSpan.style.display = 'inherit';\r\n }\r\n \r\n matrixHelper.reset();\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n if (singleShape) {\r\n if(letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n xPos += letters[i].l || 0;\r\n //xPos += letters[i].val === ' ' ? 0 : trackingOffset;\r\n xPos += trackingOffset;\r\n }\r\n if(usesGlyphs) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = charData && charData.data || {};\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n if(!singleShape){\r\n tSpan.setAttribute('d',this.createPathShape(matrixHelper,shapes));\r\n } else {\r\n shapeStr += this.createPathShape(matrixHelper,shapes);\r\n }\r\n } else {\r\n if(singleShape) {\r\n tSpan.setAttribute(\"transform\", \"translate(\" + matrixHelper.props[12] + \",\" + matrixHelper.props[13] + \")\");\r\n }\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\",\"preserve\");\r\n }\r\n //\r\n }\r\n if (singleShape && tSpan) {\r\n tSpan.setAttribute('d',shapeStr);\r\n }\r\n }\r\n while (i < this.textSpans.length){\r\n this.textSpans[i].style.display = 'none';\r\n i += 1;\r\n }\r\n \r\n this._sizeChanged = true;\r\n};\r\n\r\nSVGTextElement.prototype.sourceRectAtTime = function(time){\r\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n this.renderInnerContent();\r\n if(this._sizeChanged){\r\n this._sizeChanged = false;\r\n var textBox = this.layerElement.getBBox();\r\n this.bbox = {\r\n top: textBox.y,\r\n left: textBox.x,\r\n width: textBox.width,\r\n height: textBox.height\r\n };\r\n }\r\n return this.bbox;\r\n};\r\n\r\nSVGTextElement.prototype.renderInnerContent = function(){\r\n\r\n if(!this.data.singleShape){\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if(this.lettersChangedFlag || this.textAnimator.lettersChangedFlag){\r\n this._sizeChanged = true;\r\n var i,len;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter, textSpan;\r\n for(i=0;i 1 && areAnimated) {\r\n this.setShapesAsAnimated(tempShapes);\r\n }\r\n }\r\n}\r\n\r\nSVGShapeElement.prototype.setShapesAsAnimated = function(shapes){\r\n var i, len = shapes.length;\r\n for(i = 0; i < len; i += 1) {\r\n shapes[i].setAsAnimated();\r\n }\r\n}\r\n\r\nSVGShapeElement.prototype.createStyleElement = function(data, level){\r\n //TODO: prevent drawing of hidden styles\r\n var elementData;\r\n var styleOb = new SVGStyleData(data, level);\r\n\r\n var pathElement = styleOb.pElem;\r\n if(data.ty === 'st') {\r\n elementData = new SVGStrokeStyleData(this, data, styleOb);\r\n } else if(data.ty === 'fl') {\r\n elementData = new SVGFillStyleData(this, data, styleOb);\r\n } else if(data.ty === 'gf' || data.ty === 'gs') {\r\n var gradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\r\n elementData = new gradientConstructor(this, data, styleOb);\r\n this.globalData.defs.appendChild(elementData.gf);\r\n if (elementData.maskId) {\r\n this.globalData.defs.appendChild(elementData.ms);\r\n this.globalData.defs.appendChild(elementData.of);\r\n pathElement.setAttribute('mask','url(' + locationHref + '#' + elementData.maskId + ')');\r\n }\r\n }\r\n \r\n if(data.ty === 'st' || data.ty === 'gs') {\r\n pathElement.setAttribute('stroke-linecap', this.lcEnum[data.lc] || 'round');\r\n pathElement.setAttribute('stroke-linejoin',this.ljEnum[data.lj] || 'round');\r\n pathElement.setAttribute('fill-opacity','0');\r\n if(data.lj === 1) {\r\n pathElement.setAttribute('stroke-miterlimit',data.ml);\r\n }\r\n }\r\n\r\n if(data.r === 2) {\r\n pathElement.setAttribute('fill-rule', 'evenodd');\r\n }\r\n\r\n if(data.ln){\r\n pathElement.setAttribute('id',data.ln);\r\n }\r\n if(data.cl){\r\n pathElement.setAttribute('class',data.cl);\r\n }\r\n if(data.bm){\r\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n this.stylesList.push(styleOb);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createGroupElement = function(data) {\r\n var elementData = new ShapeGroupData();\r\n if(data.ln){\r\n elementData.gr.setAttribute('id',data.ln);\r\n }\r\n if(data.cl){\r\n elementData.gr.setAttribute('class',data.cl);\r\n }\r\n if(data.bm){\r\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createTransformElement = function(data, container) {\r\n var transformProperty = TransformPropertyFactory.getTransformProperty(this,data,this);\r\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createShapeElement = function(data, ownTransformers, level) {\r\n var ty = 4;\r\n if(data.ty === 'rc'){\r\n ty = 5;\r\n }else if(data.ty === 'el'){\r\n ty = 6;\r\n }else if(data.ty === 'sr'){\r\n ty = 7;\r\n }\r\n var shapeProperty = ShapePropertyFactory.getShapeProp(this,data,ty,this);\r\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.addToAnimatedContents = function(data, element) {\r\n var i = 0, len = this.animatedContents.length;\r\n while(i < len) {\r\n if(this.animatedContents[i].element === element) {\r\n return;\r\n }\r\n i += 1;\r\n }\r\n this.animatedContents.push({\r\n fn: SVGElementsRenderer.createRenderFunction(data),\r\n element: element,\r\n data: data\r\n });\r\n};\r\n\r\nSVGShapeElement.prototype.setElementStyles = function(elementData){\r\n var arr = elementData.styles;\r\n var j, jLen = this.stylesList.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (!this.stylesList[j].closed) {\r\n arr.push(this.stylesList[j]);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.reloadShapes = function(){\r\n this._isFirstFrame = true;\r\n var i, len = this.itemsData.length;\r\n for( i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n len = this.dynamicProperties.length;\r\n for(i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n};\r\n\r\nSVGShapeElement.prototype.searchShapes = function(arr,itemsData,prevViewData,container, level, transformers, render){\r\n var ownTransformers = [].concat(transformers);\r\n var i, len = arr.length - 1;\r\n var j, jLen;\r\n var ownStyles = [], ownModifiers = [], styleOb, currentTransform, modifier, processedPos;\r\n for(i=len;i>=0;i-=1){\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if(!processedPos){\r\n arr[i]._render = render;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if(arr[i].ty == 'fl' || arr[i].ty == 'st' || arr[i].ty == 'gf' || arr[i].ty == 'gs'){\r\n if(!processedPos){\r\n itemsData[i] = this.createStyleElement(arr[i], level);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n if(arr[i]._render){\r\n container.appendChild(itemsData[i].style.pElem);\r\n }\r\n ownStyles.push(itemsData[i].style);\r\n }else if(arr[i].ty == 'gr'){\r\n if(!processedPos){\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for(j=0;j horizontal & vertical\r\n // 2 -> horizontal only\r\n // 3 -> vertical only\r\n //\r\n var dimensions = this.filterManager.effectElements[1].p.v;\r\n var sigmaX = (dimensions == 3) ? 0 : sigma;\r\n var sigmaY = (dimensions == 2) ? 0 : sigma;\r\n\r\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + \" \" + sigmaY);\r\n\r\n // Repeat edges mapping:\r\n //\r\n // 0 -> off -> duplicate\r\n // 1 -> on -> wrap\r\n var edgeMode = (this.filterManager.effectElements[2].p.v == 1) ? 'wrap' : 'duplicate';\r\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\r\n }\r\n}\r\nfunction SVGStrokeEffect(elem, filterManager){\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.elem = elem;\r\n this.paths = [];\r\n}\r\n\r\nSVGStrokeEffect.prototype.initialize = function(){\r\n\r\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n var path,groupPath, i, len;\r\n if(this.filterManager.effectElements[1].p.v === 1){\r\n len = this.elem.maskManager.masksProperties.length;\r\n i = 0;\r\n } else {\r\n i = this.filterManager.effectElements[0].p.v - 1;\r\n len = i + 1;\r\n }\r\n groupPath = createNS('g'); \r\n groupPath.setAttribute('fill','none');\r\n groupPath.setAttribute('stroke-linecap','round');\r\n groupPath.setAttribute('stroke-dashoffset',1);\r\n for(i;i= max){\r\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\r\n } else {\r\n colorValue = (outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma));\r\n }\r\n table[pos++] = colorValue;\r\n cnt += 256/(segments-1);\r\n }\r\n return table.join(' ');\r\n};\r\n\r\nSVGProLevelsFilter.prototype.renderFrame = function(forceRender){\r\n if(forceRender || this.filterManager._mdf){\r\n var val, cnt, perc, bezier;\r\n var effectElements = this.filterManager.effectElements;\r\n if(this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)){\r\n val = this.getTableValue(effectElements[3].p.v,effectElements[4].p.v,effectElements[5].p.v,effectElements[6].p.v,effectElements[7].p.v);\r\n this.feFuncRComposed.setAttribute('tableValues',val);\r\n this.feFuncGComposed.setAttribute('tableValues',val);\r\n this.feFuncBComposed.setAttribute('tableValues',val);\r\n }\r\n\r\n\r\n if(this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)){\r\n val = this.getTableValue(effectElements[10].p.v,effectElements[11].p.v,effectElements[12].p.v,effectElements[13].p.v,effectElements[14].p.v);\r\n this.feFuncR.setAttribute('tableValues',val);\r\n }\r\n\r\n if(this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)){\r\n val = this.getTableValue(effectElements[17].p.v,effectElements[18].p.v,effectElements[19].p.v,effectElements[20].p.v,effectElements[21].p.v);\r\n this.feFuncG.setAttribute('tableValues',val);\r\n }\r\n\r\n if(this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)){\r\n val = this.getTableValue(effectElements[24].p.v,effectElements[25].p.v,effectElements[26].p.v,effectElements[27].p.v,effectElements[28].p.v);\r\n this.feFuncB.setAttribute('tableValues',val);\r\n }\r\n\r\n if(this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)){\r\n val = this.getTableValue(effectElements[31].p.v,effectElements[32].p.v,effectElements[33].p.v,effectElements[34].p.v,effectElements[35].p.v);\r\n this.feFuncA.setAttribute('tableValues',val);\r\n }\r\n \r\n }\r\n};\r\nfunction SVGDropShadowEffect(filter, filterManager) {\r\n var filterSize = filterManager.container.globalData.renderConfig.filterSize\r\n filter.setAttribute('x', filterSize.x);\r\n filter.setAttribute('y', filterSize.y);\r\n filter.setAttribute('width', filterSize.width);\r\n filter.setAttribute('height', filterSize.height);\r\n this.filterManager = filterManager;\r\n\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n feGaussianBlur.setAttribute('in','SourceAlpha');\r\n feGaussianBlur.setAttribute('result','drop_shadow_1');\r\n feGaussianBlur.setAttribute('stdDeviation','0');\r\n this.feGaussianBlur = feGaussianBlur;\r\n filter.appendChild(feGaussianBlur);\r\n\r\n var feOffset = createNS('feOffset');\r\n feOffset.setAttribute('dx','25');\r\n feOffset.setAttribute('dy','0');\r\n feOffset.setAttribute('in','drop_shadow_1');\r\n feOffset.setAttribute('result','drop_shadow_2');\r\n this.feOffset = feOffset;\r\n filter.appendChild(feOffset);\r\n var feFlood = createNS('feFlood');\r\n feFlood.setAttribute('flood-color','#00ff00');\r\n feFlood.setAttribute('flood-opacity','1');\r\n feFlood.setAttribute('result','drop_shadow_3');\r\n this.feFlood = feFlood;\r\n filter.appendChild(feFlood);\r\n\r\n var feComposite = createNS('feComposite');\r\n feComposite.setAttribute('in','drop_shadow_3');\r\n feComposite.setAttribute('in2','drop_shadow_2');\r\n feComposite.setAttribute('operator','in');\r\n feComposite.setAttribute('result','drop_shadow_4');\r\n filter.appendChild(feComposite);\r\n\r\n\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in','SourceGraphic');\r\n this.feMergeNode = feMergeNode;\r\n this.feMerge = feMerge;\r\n this.originalNodeAdded = false;\r\n feMerge.appendChild(feMergeNode);\r\n}\r\n\r\nSVGDropShadowEffect.prototype.renderFrame = function(forceRender){\r\n if(forceRender || this.filterManager._mdf){\r\n if(forceRender || this.filterManager.effectElements[4].p._mdf){\r\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\r\n }\r\n if(forceRender || this.filterManager.effectElements[0].p._mdf){\r\n var col = this.filterManager.effectElements[0].p.v;\r\n this.feFlood.setAttribute('flood-color',rgbToHex(Math.round(col[0]*255),Math.round(col[1]*255),Math.round(col[2]*255)));\r\n }\r\n if(forceRender || this.filterManager.effectElements[1].p._mdf){\r\n this.feFlood.setAttribute('flood-opacity',this.filterManager.effectElements[1].p.v/255);\r\n }\r\n if(forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf){\r\n var distance = this.filterManager.effectElements[3].p.v;\r\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\r\n var x = distance * Math.cos(angle);\r\n var y = distance * Math.sin(angle);\r\n this.feOffset.setAttribute('dx', x);\r\n this.feOffset.setAttribute('dy', y);\r\n }\r\n /*if(forceRender || this.filterManager.effectElements[5].p._mdf){\r\n if(this.filterManager.effectElements[5].p.v === 1 && this.originalNodeAdded) {\r\n this.feMerge.removeChild(this.feMergeNode);\r\n this.originalNodeAdded = false;\r\n } else if(this.filterManager.effectElements[5].p.v === 0 && !this.originalNodeAdded) {\r\n this.feMerge.appendChild(this.feMergeNode);\r\n this.originalNodeAdded = true;\r\n }\r\n }*/\r\n }\r\n};\r\nvar _svgMatteSymbols = [];\r\n\r\nfunction SVGMatte3Effect(filterElem, filterManager, elem){\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.filterElem = filterElem;\r\n this.elem = elem;\r\n elem.matteElement = createNS('g');\r\n elem.matteElement.appendChild(elem.layerElement);\r\n elem.matteElement.appendChild(elem.transformedElement);\r\n elem.baseElement = elem.matteElement;\r\n}\r\n\r\nSVGMatte3Effect.prototype.findSymbol = function(mask) {\r\n var i = 0, len = _svgMatteSymbols.length;\r\n while(i < len) {\r\n if(_svgMatteSymbols[i] === mask) {\r\n return _svgMatteSymbols[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nSVGMatte3Effect.prototype.replaceInParent = function(mask, symbolId) {\r\n var parentNode = mask.layerElement.parentNode;\r\n if(!parentNode) {\r\n return;\r\n }\r\n var children = parentNode.children;\r\n var i = 0, len = children.length;\r\n while (i < len) {\r\n if (children[i] === mask.layerElement) {\r\n break;\r\n }\r\n i += 1;\r\n }\r\n var nextChild;\r\n if (i <= len - 2) {\r\n nextChild = children[i + 1];\r\n }\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n if(nextChild) {\r\n parentNode.insertBefore(useElem, nextChild);\r\n } else {\r\n parentNode.appendChild(useElem);\r\n }\r\n};\r\n\r\nSVGMatte3Effect.prototype.setElementAsMask = function(elem, mask) {\r\n if(!this.findSymbol(mask)) {\r\n var symbolId = createElementID();\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', mask.layerId);\r\n masker.setAttribute('mask-type', 'alpha');\r\n _svgMatteSymbols.push(mask);\r\n var defs = elem.globalData.defs;\r\n defs.appendChild(masker);\r\n var symbol = createNS('symbol');\r\n symbol.setAttribute('id', symbolId);\r\n this.replaceInParent(mask, symbolId);\r\n symbol.appendChild(mask.layerElement);\r\n defs.appendChild(symbol);\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n masker.appendChild(useElem);\r\n mask.data.hd = false;\r\n mask.show();\r\n }\r\n elem.setMatte(mask.layerId);\r\n};\r\n\r\nSVGMatte3Effect.prototype.initialize = function() {\r\n var ind = this.filterManager.effectElements[0].p.v;\r\n var elements = this.elem.comp.elements;\r\n var i = 0, len = elements.length;\r\n while (i < len) {\r\n \tif (elements[i] && elements[i].data.ind === ind) {\r\n \t\tthis.setElementAsMask(this.elem, elements[i]);\r\n \t}\r\n \ti += 1;\r\n }\r\n this.initialized = true;\r\n};\r\n\r\nSVGMatte3Effect.prototype.renderFrame = function() {\r\n\tif(!this.initialized) {\r\n\t\tthis.initialize();\r\n\t}\r\n};\r\nfunction SVGEffects(){}\r\nvar animationManager = (function(){\r\n var moduleOb = {};\r\n var registeredAnimations = [];\r\n var initTime = 0;\r\n var len = 0;\r\n var playingAnimationsNum = 0;\r\n var _stopped = true;\r\n var _isFrozen = false;\r\n\r\n function removeElement(ev){\r\n var i = 0;\r\n var animItem = ev.target;\r\n while(i=0;i-=1){\r\n registeredAnimations[i].animation.destroy(animation);\r\n }\r\n }\r\n\r\n function searchAnimations(animationData, standalone, renderer){\r\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')),\r\n [].slice.call(document.getElementsByClassName('bodymovin')));\r\n var i, len = animElements.length;\r\n for(i=0;i this.animationData.op){\r\n this.animationData.op = data.op;\r\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\r\n }\r\n var layers = this.animationData.layers;\r\n var i, len = layers.length;\r\n var newLayers = data.layers;\r\n var j, jLen = newLayers.length;\r\n for(j=0;j this.timeCompleted){\r\n this.currentFrame = this.timeCompleted;\r\n }\r\n this.trigger('enterFrame');\r\n this.renderFrame();\r\n};\r\n\r\nAnimationItem.prototype.renderFrame = function () {\r\n if(this.isLoaded === false){\r\n return;\r\n }\r\n try {\r\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\r\n } catch(error) {\r\n this.triggerRenderFrameError(error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.play = function (name) {\r\n if(name && this.name != name){\r\n return;\r\n }\r\n if (this.isPaused === true) {\r\n this.isPaused = false;\r\n this.audioController.resume();\r\n if(this._idle){\r\n this._idle = false;\r\n this.trigger('_active');\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.pause = function (name) {\r\n if(name && this.name != name){\r\n return;\r\n }\r\n if(this.isPaused === false){\r\n this.isPaused = true;\r\n this._idle = true;\r\n this.trigger('_idle');\r\n this.audioController.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.togglePause = function (name) {\r\n if(name && this.name != name){\r\n return;\r\n }\r\n if(this.isPaused === true){\r\n this.play();\r\n }else{\r\n this.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.stop = function (name) {\r\n if(name && this.name != name){\r\n return;\r\n }\r\n this.pause();\r\n this.playCount = 0;\r\n this._completedLoop = false;\r\n this.setCurrentRawFrameValue(0);\r\n};\r\n\r\nAnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\r\n if(name && this.name != name){\r\n return;\r\n }\r\n if(isFrame){\r\n this.setCurrentRawFrameValue(value);\r\n }else{\r\n this.setCurrentRawFrameValue(value * this.frameModifier);\r\n }\r\n this.pause();\r\n};\r\n\r\nAnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\r\n this.goToAndStop(value, isFrame, name);\r\n this.play();\r\n};\r\n\r\nAnimationItem.prototype.advanceTime = function (value) {\r\n if (this.isPaused === true || this.isLoaded === false) {\r\n return;\r\n }\r\n var nextValue = this.currentRawFrame + value * this.frameModifier;\r\n var _isComplete = false;\r\n // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\r\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\r\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\r\n if (!this.loop || this.playCount === this.loop) {\r\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\r\n _isComplete = true;\r\n nextValue = this.totalFrames - 1;\r\n }\r\n } else if (nextValue >= this.totalFrames) {\r\n this.playCount += 1;\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\r\n this._completedLoop = true;\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n } else if(nextValue < 0) {\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\r\n this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames));\r\n if(!this._completedLoop) {\r\n this._completedLoop = true;\r\n } else {\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n _isComplete = true;\r\n nextValue = 0;\r\n }\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n if (_isComplete) {\r\n this.setCurrentRawFrameValue(nextValue);\r\n this.pause();\r\n this.trigger('complete');\r\n }\r\n};\r\n\r\nAnimationItem.prototype.adjustSegment = function(arr, offset){\r\n this.playCount = 0;\r\n if(arr[1] < arr[0]){\r\n if(this.frameModifier > 0){\r\n if(this.playSpeed < 0){\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(-1);\r\n }\r\n }\r\n this.timeCompleted = this.totalFrames = arr[0] - arr[1];\r\n this.firstFrame = arr[1];\r\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\r\n } else if(arr[1] > arr[0]){\r\n if(this.frameModifier < 0){\r\n if(this.playSpeed < 0){\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(1);\r\n }\r\n }\r\n this.timeCompleted = this.totalFrames = arr[1] - arr[0];\r\n this.firstFrame = arr[0];\r\n this.setCurrentRawFrameValue(0.001 + offset);\r\n }\r\n this.trigger('segmentStart');\r\n};\r\nAnimationItem.prototype.setSegment = function (init,end) {\r\n var pendingFrame = -1;\r\n if(this.isPaused) {\r\n if (this.currentRawFrame + this.firstFrame < init) {\r\n pendingFrame = init;\r\n } else if (this.currentRawFrame + this.firstFrame > end) {\r\n pendingFrame = end - init;\r\n }\r\n }\r\n\r\n this.firstFrame = init;\r\n this.timeCompleted = this.totalFrames = end - init;\r\n if(pendingFrame !== -1) {\r\n this.goToAndStop(pendingFrame,true);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.playSegments = function (arr, forceFlag) {\r\n if (forceFlag) {\r\n this.segments.length = 0;\r\n }\r\n if (typeof arr[0] === 'object') {\r\n var i, len = arr.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.segments.push(arr[i]);\r\n }\r\n } else {\r\n this.segments.push(arr);\r\n }\r\n if (this.segments.length && forceFlag) {\r\n this.adjustSegment(this.segments.shift(), 0);\r\n }\r\n if (this.isPaused) {\r\n this.play();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resetSegments = function (forceFlag) {\r\n this.segments.length = 0;\r\n this.segments.push([this.animationData.ip,this.animationData.op]);\r\n //this.segments.push([this.animationData.ip*this.frameRate,Math.floor(this.animationData.op - this.animationData.ip+this.animationData.ip*this.frameRate)]);\r\n if (forceFlag) {\r\n this.checkSegments(0);\r\n }\r\n};\r\nAnimationItem.prototype.checkSegments = function(offset) {\r\n if (this.segments.length) {\r\n this.adjustSegment(this.segments.shift(), offset);\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nAnimationItem.prototype.destroy = function (name) {\r\n if ((name && this.name != name) || !this.renderer) {\r\n return;\r\n }\r\n this.renderer.destroy();\r\n this.imagePreloader.destroy();\r\n this.trigger('destroy');\r\n this._cbs = null;\r\n this.onEnterFrame = this.onLoopComplete = this.onComplete = this.onSegmentStart = this.onDestroy = null;\r\n this.renderer = null;\r\n};\r\n\r\nAnimationItem.prototype.setCurrentRawFrameValue = function(value){\r\n this.currentRawFrame = value;\r\n this.gotoFrame();\r\n};\r\n\r\nAnimationItem.prototype.setSpeed = function (val) {\r\n this.playSpeed = val;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setDirection = function (val) {\r\n this.playDirection = val < 0 ? -1 : 1;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setVolume = function (val, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.setVolume(val);\r\n};\r\n\r\nAnimationItem.prototype.getVolume = function () {\r\n return this.audioController.getVolume();\r\n};\r\n\r\nAnimationItem.prototype.mute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.mute();\r\n};\r\n\r\nAnimationItem.prototype.unmute = function (name) {\r\n if(name && this.name !== name){\r\n return;\r\n }\r\n this.audioController.unmute();\r\n};\r\n\r\nAnimationItem.prototype.updaFrameModifier = function () {\r\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\r\n this.audioController.setRate(this.playSpeed * this.playDirection)\r\n};\r\n\r\nAnimationItem.prototype.getPath = function () {\r\n return this.path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetsPath = function (assetData) {\r\n var path = '';\r\n if(assetData.e) {\r\n path = assetData.p;\r\n } else if(this.assetsPath){\r\n var imagePath = assetData.p;\r\n if(imagePath.indexOf('images/') !== -1){\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = this.assetsPath + imagePath;\r\n } else {\r\n path = this.path;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetData = function (id) {\r\n var i = 0, len = this.assets.length;\r\n while (i < len) {\r\n if(id == this.assets[i].id){\r\n return this.assets[i];\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nAnimationItem.prototype.hide = function () {\r\n this.renderer.hide();\r\n};\r\n\r\nAnimationItem.prototype.show = function () {\r\n this.renderer.show();\r\n};\r\n\r\nAnimationItem.prototype.getDuration = function (isFrame) {\r\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\r\n};\r\n\r\nAnimationItem.prototype.trigger = function(name){\r\n if(this._cbs && this._cbs[name]){\r\n switch(name){\r\n case 'enterFrame':\r\n this.triggerEvent(name,new BMEnterFrameEvent(name,this.currentFrame,this.totalFrames,this.frameModifier));\r\n break;\r\n case 'loopComplete':\r\n this.triggerEvent(name,new BMCompleteLoopEvent(name,this.loop,this.playCount,this.frameMult));\r\n break;\r\n case 'complete':\r\n this.triggerEvent(name,new BMCompleteEvent(name,this.frameMult));\r\n break;\r\n case 'segmentStart':\r\n this.triggerEvent(name,new BMSegmentStartEvent(name,this.firstFrame,this.totalFrames));\r\n break;\r\n case 'destroy':\r\n this.triggerEvent(name,new BMDestroyEvent(name,this));\r\n break;\r\n default:\r\n this.triggerEvent(name);\r\n }\r\n }\r\n if(name === 'enterFrame' && this.onEnterFrame){\r\n this.onEnterFrame.call(this,new BMEnterFrameEvent(name,this.currentFrame,this.totalFrames,this.frameMult));\r\n }\r\n if(name === 'loopComplete' && this.onLoopComplete){\r\n this.onLoopComplete.call(this,new BMCompleteLoopEvent(name,this.loop,this.playCount,this.frameMult));\r\n }\r\n if(name === 'complete' && this.onComplete){\r\n this.onComplete.call(this,new BMCompleteEvent(name,this.frameMult));\r\n }\r\n if(name === 'segmentStart' && this.onSegmentStart){\r\n this.onSegmentStart.call(this,new BMSegmentStartEvent(name,this.firstFrame,this.totalFrames));\r\n }\r\n if(name === 'destroy' && this.onDestroy){\r\n this.onDestroy.call(this,new BMDestroyEvent(name,this));\r\n }\r\n};\r\n\r\nAnimationItem.prototype.triggerRenderFrameError = function(nativeError) {\r\n\r\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n}\r\n\r\nAnimationItem.prototype.triggerConfigError = function(nativeError) {\r\n\r\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n}\r\nfunction EffectsManager(){}\r\n\r\nvar lottie = {};\r\n\r\nvar _isFrozen = false;\r\n\r\nfunction setLocationHref (href) {\r\n locationHref = href;\r\n}\r\n\r\nfunction searchAnimations() {\r\n if (standalone === true) {\r\n animationManager.searchAnimations(animationData, standalone, renderer);\r\n } else {\r\n animationManager.searchAnimations();\r\n }\r\n}\r\n\r\nfunction setSubframeRendering(flag) {\r\n subframeEnabled = flag;\r\n}\r\n\r\nfunction loadAnimation(params) {\r\n if (standalone === true) {\r\n params.animationData = JSON.parse(animationData);\r\n }\r\n return animationManager.loadAnimation(params);\r\n}\r\n\r\nfunction setQuality(value) {\r\n if (typeof value === 'string') {\r\n switch (value) {\r\n case 'high':\r\n defaultCurveSegments = 200;\r\n break;\r\n case 'medium':\r\n defaultCurveSegments = 50;\r\n break;\r\n case 'low':\r\n defaultCurveSegments = 10;\r\n break;\r\n }\r\n } else if (!isNaN(value) && value > 1) {\r\n defaultCurveSegments = value;\r\n }\r\n if (defaultCurveSegments >= 50) {\r\n roundValues(false);\r\n } else {\r\n roundValues(true);\r\n }\r\n}\r\n\r\nfunction inBrowser() {\r\n return typeof navigator !== 'undefined';\r\n}\r\n\r\nfunction installPlugin(type, plugin) {\r\n if (type === 'expressions') {\r\n expressionsPlugin = plugin;\r\n }\r\n}\r\n\r\nfunction getFactory(name) {\r\n switch (name) {\r\n case \"propertyFactory\":\r\n return PropertyFactory;\r\n case \"shapePropertyFactory\":\r\n return ShapePropertyFactory;\r\n case \"matrix\":\r\n return Matrix;\r\n }\r\n}\r\n\r\nlottie.play = animationManager.play;\r\nlottie.pause = animationManager.pause;\r\nlottie.setLocationHref = setLocationHref;\r\nlottie.togglePause = animationManager.togglePause;\r\nlottie.setSpeed = animationManager.setSpeed;\r\nlottie.setDirection = animationManager.setDirection;\r\nlottie.stop = animationManager.stop;\r\nlottie.searchAnimations = searchAnimations;\r\nlottie.registerAnimation = animationManager.registerAnimation;\r\nlottie.loadAnimation = loadAnimation;\r\nlottie.setSubframeRendering = setSubframeRendering;\r\nlottie.resize = animationManager.resize;\r\n//lottie.start = start;\r\nlottie.goToAndStop = animationManager.goToAndStop;\r\nlottie.destroy = animationManager.destroy;\r\nlottie.setQuality = setQuality;\r\nlottie.inBrowser = inBrowser;\r\nlottie.installPlugin = installPlugin;\r\nlottie.freeze = animationManager.freeze;\r\nlottie.unfreeze = animationManager.unfreeze;\r\nlottie.setVolume = animationManager.setVolume;\r\nlottie.mute = animationManager.mute;\r\nlottie.unmute = animationManager.unmute;\r\nlottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\r\nlottie.__getFactory = getFactory;\r\nlottie.version = '5.7.4';\r\n\r\nfunction checkReady() {\r\n if (document.readyState === \"complete\") {\r\n clearInterval(readyStateCheckInterval);\r\n searchAnimations();\r\n }\r\n}\r\n\r\nfunction getQueryVariable(variable) {\r\n var vars = queryString.split('&');\r\n for (var i = 0; i < vars.length; i++) {\r\n var pair = vars[i].split('=');\r\n if (decodeURIComponent(pair[0]) == variable) {\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n}\r\nvar standalone = '__[STANDALONE]__';\r\nvar animationData = '__[ANIMATIONDATA]__';\r\nvar renderer = '';\r\nif (standalone) {\r\n var scripts = document.getElementsByTagName('script');\r\n var index = scripts.length - 1;\r\n var myScript = scripts[index] || {\r\n src: ''\r\n };\r\n var queryString = myScript.src.replace(/^[^\\?]+\\??/, '');\r\n renderer = getQueryVariable('renderer');\r\n}\r\nvar readyStateCheckInterval = setInterval(checkReady, 100);\r\n\nreturn lottie;\n}));","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.5.1\n * https://greensock.com\n *\n * @license Copyright 2008-2020, 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 _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+(?:\\.|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 = /[#\\-+.]*\\b[a-z\\d-=+%.]+/gi,\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 _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 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 _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 _parseVars = function _parseVars(params, type, parent) {\n //reads the arguments passed to one of the key methods and figures out if the user is defining things with the OLD/legacy syntax where the duration is the 2nd parameter, and then it adjusts things accordingly and spits back the corrected vars object (with the duration added if necessary, as well as runBackwards or startAt or immediateRender). type 0 = to()/staggerTo(), 1 = from()/staggerFrom(), 2 = fromTo()/staggerFromTo()\n var isLegacy = _isNumber(params[1]),\n varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),\n vars = params[varsIndex],\n irVars;\n\n isLegacy && (vars.duration = params[1]);\n vars.parent = parent;\n\n if (type) {\n irVars = vars;\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 vars;\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 && _lazyRender();\n animation.render(time, suppressEvents, force);\n _lazyTweens.length && _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(obj, defaults) {\n for (var p in defaults) {\n p in obj || p === \"duration\" || p === \"ease\" || (obj[p] = defaults[p]);\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 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 : _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 _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 return (tTime /= cycleDuration) && ~~tTime === tTime ? ~~tTime - 1 : ~~tTime;\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 = _round(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 = _round(animation._dp._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 = _round(position + child._delay);\n child._end = _round(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));\n\n _addLinkedListItem(timeline, child, \"_first\", \"_last\", timeline._sort ? \"_start\" : 0);\n\n timeline._recent = child;\n skipChecks || _postAddChecks(timeline, child);\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, totalTime, force, suppressEvents) {\n _initTween(tween, totalTime);\n\n if (!tween._initted) {\n return 1;\n }\n\n if (!force && tween._pt && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {\n _lazyTweens.push(tween);\n\n tween._lazy = [totalTime, suppressEvents];\n return 1;\n }\n},\n _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {\n var prevRatio = tween.ratio,\n ratio = totalTime < 0 || !totalTime && prevRatio && !tween._start && tween._zTime > _tinyNum && !tween._dp._lock || (tween._ts < 0 || tween._dp._ts < 0) && tween.data !== \"isFromStart\" && tween.data !== \"isStart\" ? 0 : 1,\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. Also, if the tween or its parent is reversed and the totalTime is 0, we should go to a ratio of 0.\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 prevIteration = _animationCycle(tween._tTime, repeatDelay);\n\n if (iteration !== prevIteration) {\n prevRatio = 1 - ratio;\n tween.vars.repeatRefresh && tween._initted && tween.invalidate();\n }\n }\n\n if (ratio !== prevRatio || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {\n if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents)) {\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 suppressEvents || _callback(tween, \"onStart\");\n pt = tween._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n tween._startAt && totalTime < 0 && tween._startAt.render(totalTime, true, 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) {\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._dur && 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._dur && 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 = _round(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 : _round(dur * (repeat + 1) + animation._rDelay * repeat);\n totalProgress && !leavePlayhead ? _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress) : 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},\n _parsePosition = function _parsePosition(animation, position) {\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\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 i = position.charAt(0);\n\n if (i === \"<\" || i === \">\") {\n return (i === \"<\" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0);\n }\n\n i = position.indexOf(\"=\");\n\n if (i < 0) {\n position in labels || (labels[position] = clippedDuration);\n return labels[position];\n }\n\n offset = +(position.charAt(i - 1) + position.substr(i + 1));\n return i > 1 ? _parsePosition(animation, position.substr(0, i - 1)) + offset : clippedDuration + offset;\n }\n\n return position == null ? clippedDuration : +position;\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) {\n return (value = (value + \"\").substr((parseFloat(value) + \"\").length)) && isNaN(value) ? value : \"\";\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, leaveStrings) {\n return _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call(_doc.querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];\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 = 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 _round(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 = v < 1 ? Math.pow(10, (v + \"\").length - 2) : 1; //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 return Math.floor(Math.round(parseFloat(raw) / v) * v * p) / p + (_isNumber(raw) ? 0 : getUnit(raw));\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 + Math.random() * (max - min)) / 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 params,\n scope;\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 return params ? callback.apply(scope, params) : callback.call(scope);\n},\n _interrupt = function _interrupt(animation) {\n _removeFromParent(animation);\n\n animation.progress() < 1 && _callback(animation, \"onInterrupt\");\n return animation;\n},\n _quickTween,\n _createPlugin = function _createPlugin(config) {\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 _hue = function _hue(h, m1, m2) {\n h = h < 0 ? h + 1 : h > 1 ? h - 1 : h;\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 === 4) {\n //for shorthand like #9F0\n r = v.charAt(1);\n g = v.charAt(2);\n b = v.charAt(3);\n v = \"#\" + r + r + g + g + b + b;\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}){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\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 || 1 / _tinyNum; //zero should be interpreted as basically unlimited\n\n _adjustedLag = Math.min(adjustedLag, _lagThreshold, 0);\n },\n fps: function fps(_fps) {\n _gap = 1000 / (_fps || 240);\n _nextTime = _self.time * 1000 + _gap;\n },\n add: function add(callback) {\n _listeners.indexOf(callback) < 0 && _listeners.push(callback);\n\n _wake();\n },\n remove: function remove(callback) {\n var 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, time) {\n var parent = vars.parent || _globalTimeline;\n this.vars = vars;\n this._delay = +vars.delay || 0;\n\n if (this._repeat = vars.repeat || 0) {\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 _tickerActive || _ticker.wake();\n parent && _addToTimeline(parent, this, time || time === 0 ? time : parent._time, 1);\n vars.reversed && this.reverse();\n vars.paused && this.paused(true);\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); //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\n while (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\n _lazySafeRender(this, _totalTime, suppressEvents);\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 || (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 // 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 return _recacheAncestors(this.totalTime(_clamp(-this._delay, this._tDur, tTime), true));\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 && (this._tTime -= _tinyNum) && Math.abs(this._zTime) !== _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);\n };\n\n _proto.rawTime = function rawTime(wrapRepeats) {\n var parent = this.parent || this._dp; // _dp = detatched 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.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 time;\n };\n\n _proto.repeat = function repeat(value) {\n if (arguments.length) {\n this._repeat = value;\n return _onUpdateTotalDuration(this);\n }\n\n return this._repeat;\n };\n\n _proto.repeatDelay = function repeatDelay(value) {\n if (arguments.length) {\n this._rDelay = value;\n return _onUpdateTotalDuration(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 = 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, time) {\n var _this;\n\n if (vars === void 0) {\n vars = {};\n }\n\n _this = _Animation.call(this, vars, time) || this;\n _this.labels = {};\n _this.smoothChildTiming = !!vars.smoothChildTiming;\n _this.autoRemoveChildren = !!vars.autoRemoveChildren;\n _this._sort = _isNotFalse(vars.sortChildren);\n _this.parent && _postAddChecks(_this.parent, _assertThisInitialized(_this));\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 new Tween(targets, _parseVars(arguments, 0, this), _parsePosition(this, _isNumber(vars) ? arguments[3] : position));\n return this;\n };\n\n _proto2.from = function from(targets, vars, position) {\n new Tween(targets, _parseVars(arguments, 1, this), _parsePosition(this, _isNumber(vars) ? arguments[3] : position));\n return this;\n };\n\n _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {\n new Tween(targets, _parseVars(arguments, 2, this), _parsePosition(this, _isNumber(fromVars) ? arguments[4] : position));\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), _parsePosition(this, 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 = this !== _globalTimeline && totalTime > tDur - _tinyNum && totalTime >= 0 ? tDur : totalTime < _tinyNum ? 0 : totalTime,\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\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 time = _round(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 && (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\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 : _round(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;\n !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);\n\n if (prevTime !== this._time || prevPaused !== !this._ts) {\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, _round(prevTime), _round(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 }\n\n !prevTime && time && !suppressEvents && _callback(this, \"onStart\");\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);\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 && tDur >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {\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)) {\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 _proto2.add = function add(child, position) {\n var _this2 = this;\n\n if (!_isNumber(position)) {\n position = _parsePosition(this, position);\n }\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 = _round(_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 };\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 tween = Tween.to(tl, _setDefaults(vars, {\n ease: \"none\",\n lazy: 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 var duration = vars.duration || Math.abs((endTime - tl._time) / tl.timeScale());\n tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);\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 }));\n\n return 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() {\n var child = this._first;\n this._lock = 0;\n\n while (child) {\n child.invalidate();\n child = child._next;\n }\n\n return _Animation.prototype.invalidate.call(this);\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._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) === \"=\" ? parseFloat(endNum.substr(2)) * (endNum.charAt(0) === \"-\" ? -1 : 1) : 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) {\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 end = parseFloat(parsedStart) + parseFloat(end.substr(2)) * (end.charAt(0) === \"-\" ? -1 : 1) + (getUnit(parsedStart) || 0);\n }\n }\n\n if (parsedStart !== end) {\n if (!isNaN(parsedStart * end)) {\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_initTween = function _initTween(tween, time) {\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.parent._targets : targets,\n autoOverwrite = tween._overwrite === \"auto\",\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 if (!tl) {\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 prevStartAt && prevStartAt.render(-1, true).kill();\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: _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 if (immediateRender) {\n if (time > 0) {\n autoRevert || (tween._startAt = 0); //tweens that render immediately (like most from() and fromTo() tweens) shouldn't revert when their parent timeline's playhead goes backward past the startTime because the initial render could have happened anytime and it shouldn't be directly correlated to this tween's startTime. Imagine setting up a complex animation where the beginning states of various objects are rendered immediately but the tween doesn't happen for quite some time - if we revert to the starting values as soon as the playhead goes backward past the tween's startTime, it will throw things off visually. Reversion should only happen in Timeline instances where immediateRender was false or when autoRevert is explicitly set to true.\n } else if (dur && !(time < 0 && prevStartAt)) {\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 !autoRevert && (tween._startAt = 0);\n } else {\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 && _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 if (!immediateRender) {\n _initTween(tween._startAt, _tinyNum); //ensures that the initial values are recorded\n\n } else if (!time) {\n return;\n }\n }\n }\n\n tween._pt = 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(0)); //Also 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._from = !tl && !!vars.runBackwards; //nested timelines should never run backwards - the backwards-ness is in the child tweens.\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 _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 _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\",\n _staggerPropsToSkip = (_staggerTweenProps + \",id,stagger,delay,duration,paused,scrollTrigger\").split(\",\");\n/*\n * --------------------------------------------------------------------------------------\n * TWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var Tween = /*#__PURE__*/function (_Animation2) {\n _inheritsLoose(Tween, _Animation2);\n\n function Tween(targets, vars, time, skipInherit) {\n var _this3;\n\n if (typeof vars === \"number\") {\n time.duration = vars;\n vars = time;\n time = null;\n }\n\n _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars), time) || 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 = _this3.parent,\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 });\n tl.kill();\n tl.parent = _assertThisInitialized(_this3);\n\n if (keyframes) {\n _setDefaults(tl.vars.defaults, {\n ease: \"none\"\n });\n\n keyframes.forEach(function (frame) {\n return tl.to(parsedTargets, frame, \">\");\n });\n } else {\n l = parsedTargets.length;\n staggerFunc = stagger ? distribute(stagger) : _emptyFunc;\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 = {};\n\n for (p in vars) {\n if (_staggerPropsToSkip.indexOf(p) < 0) {\n copy[p] = vars[p];\n }\n }\n\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(i, curTarget, parsedTargets));\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 }\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) {\n _overwritingTween = _assertThisInitialized(_this3);\n\n _globalTimeline.killTweensOf(parsedTargets);\n\n _overwritingTween = 0;\n }\n\n parent && _postAddChecks(parent, _assertThisInitialized(_this3));\n\n if (immediateRender || !duration && !keyframes && _this3._start === _round(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)); //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 tTime = totalTime > tDur - _tinyNum && totalTime >= 0 ? 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._startAt && this._zTime < 0 !== totalTime < 0) {\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 time = _round(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 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(_round(cycleDuration * iteration), true).invalidate()._lock = 0;\n }\n }\n }\n\n if (!this._initted) {\n if (_attemptInitTween(this, totalTime < 0 ? totalTime : time, force, suppressEvents)) {\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 (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 time && !prevTime && !suppressEvents && _callback(this, \"onStart\");\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 * ratio, suppressEvents, force) || this._startAt && (this._zTime = totalTime);\n\n if (this._onUpdate && !suppressEvents) {\n totalTime < 0 && this._startAt && this._startAt.render(totalTime, true, 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 totalTime < 0 && this._startAt && !this._onUpdate && this._startAt.render(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 && !(totalTime < 0 && !prevTime) && (tTime || prevTime)) {\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() {\n this._pt = this._op = this._startAt = this._onUpdate = this._act = this._lazy = 0;\n this._ptLookup = [];\n this.timeline && this.timeline.invalidate();\n return _Animation2.prototype.invalidate.call(this);\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 = 0;\n\n if (this.parent) {\n return _interrupt(this);\n }\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 tweenng, 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 new Tween(targets, _parseVars(arguments, 1));\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 });\n };\n\n Tween.fromTo = function fromTo(targets, fromVars, toVars) {\n return new Tween(targets, _parseVars(arguments, 2));\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) * 10000) / 10000, 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/*\n * --------------------------------------------------------------------------------------\n * GSAP\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 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(_ref) {\n var name = _ref.name,\n effect = _ref.effect,\n plugins = _ref.plugins,\n defaults = _ref.defaults,\n extendTimeline = _ref.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 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 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 }\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;\n\n for (p in vars) {\n pt = this.add(target, \"setAttribute\", (target.getAttribute(p) || 0) + \"\", vars[p], index, targets, 0, 0, p);\n pt && (pt.op = p);\n\n this._props.push(p);\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]);\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.5.1\";\n_coreReady = 1;\n\nif (_windowExists()) {\n _wake();\n}\n\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, 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 };","/*!\n * CSSPlugin 3.5.1\n * https://greensock.com\n *\n * Copyright 2008-2020, 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, _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 _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 _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 _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 //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 && (_transformProps[property] || ~property.indexOf(\"adius\"))) {\n //transforms and borderRadius are relative to the size of the element itself!\n return _round(curValue / (isSVG ? target.getBBox()[horizontal ? \"width\" : \"height\"] : target[measureProperty]) * amount);\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) {\n return _round(curValue / cache.width * amount);\n } else {\n (toPercent || curUnit === \"%\") && (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] : _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 + \"\").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 relative,\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 relative = endValue.charAt(1) === \"=\" ? +(endValue.charAt(0) + \"1\") : 0;\n\n if (relative) {\n endValue = endValue.substr(2);\n }\n\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: relative ? relative * endNum : endNum - startNum,\n m: color && color < 4 ? 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 if (_relExp.test(end)) {\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 _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 }\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.nextSibling;\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 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 matrix = _getMatrix(target, cache.svg);\n\n if (cache.svg) {\n t1 = !cache.uncache && target.getAttribute(\"data-svg-origin\");\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.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 cache.x = ((cache.xPercent = x && Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0) ? 0 : x) + px;\n cache.y = ((cache.yPercent = y && Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0) ? 0 : y) + 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\n if (forceCSS) {\n //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 target.style[_transformProp] = temp;\n }\n},\n _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue, relative) {\n var cap = 360,\n isString = _isString(endValue),\n endNum = parseFloat(endValue) * (isString && ~endValue.indexOf(\"rad\") ? _RAD2DEG : 1),\n change = relative ? endNum * relative : 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 _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 style = _tempDivStyler.style,\n startCache = target._gsap,\n exclude = \"perspective,force3D,transformOrigin,svgOrigin\",\n endCache,\n p,\n startValue,\n endValue,\n startNum,\n endNum,\n startUnit,\n endUnit;\n style.cssText = getComputedStyle(target).cssText + \";position:absolute;display:block;\"; //%-based translations will fail unless we set the width/height to match the original target (and padding/borders can affect it)\n\n style[_transformProp] = transforms;\n\n _doc.body.appendChild(_tempDivStyler);\n\n endCache = _parseTransform(_tempDivStyler, 1);\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, startCache, p, startNum, endNum - startNum, _renderCSSProp);\n plugin._pt.u = endUnit || 0;\n\n plugin._props.push(p);\n }\n }\n\n _doc.body.removeChild(_tempDivStyler);\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 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 _pluginInitted || _initCore();\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 if (specialProp(this, target, p, endValue, tween)) {\n hasPriority = 1;\n }\n } else if (p.substr(0, 2) === \"--\") {\n //CSS variable\n this.add(style, \"setProperty\", getComputedStyle(target).getPropertyValue(p) + \"\", endValue + \"\", index, targets, 0, 0, p);\n } else if (type !== \"undefined\") {\n startValue = _get(target, p);\n startNum = parseFloat(startValue);\n relative = type === \"string\" && endValue.charAt(1) === \"=\" ? +(endValue.charAt(0) + \"1\") : 0;\n\n if (relative) {\n endValue = endValue.substr(2);\n }\n\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 _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 if (!transformPropTween) {\n cache = target._gsap;\n cache.renderTransform || _parseTransform(target); // 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 ? relative * endNum : endNum - cache.scaleY);\n props.push(\"scaleY\", p);\n p += \"X\";\n } else if (p === \"transformOrigin\") {\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, endValue, relative);\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 ? relative * endNum : endNum - startNum, endUnit === \"px\" && vars.autoRound !== false && !isTransformRelated ? _renderRoundedCSSProp : _renderCSSProp);\n this._pt.u = endUnit || 0;\n\n if (startUnit !== 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, target[p], endValue, index, targets);\n } else {\n _missingPlugin(p, endValue);\n\n continue;\n }\n } else {\n _tweenComplexCSSString.call(this, target, p, startValue, endValue);\n }\n\n props.push(p);\n }\n }\n\n hasPriority && _sortPropTweensByPriority(this);\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;\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 };","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 };","import { gsap } from \"../../node_modules/gsap/index.js\";\nconst rollElems = [...document.querySelectorAll(\".hover-roll\")];\n\nfunction hoverRoll(el){\n gsap.to(el, {\n duration: 0.2,\n scale: 1.05,\n ease: \"none\"\n });\n gsap.to(el, {\n duration: 0.1,\n rotateX: \"-5deg\",\n ease: \"none\"\n })\n gsap.to(el, {\n delay: 0.2,\n duration: 0.8,\n rotateX: \"0deg\",\n ease: \"elastic.out(1.5, 0.7)\"\n })\n}\n\nrollElems.forEach(function (el) {\n gsap.set(el, {rotateX: \"0deg\", scale: 1, x: 0, y: 0});\n\n el.addEventListener(\"mouseenter\", e => {\n hoverRoll(el);\n });\n\n el.addEventListener(\"mouseleave\", e => {\n gsap.to(el, {\n duration: 0.2,\n scale: 1,\n ease: \"power1.inOut\"\n });\n\n gsap.to(el, {\n duration: 0.2,\n rotateX: 0,\n ease: \"power1.inOut\"\n });\n });\n});\n","const filter = document.getElementById(\"filter\");\nlet filterViewWidth, filterScrollWidth, filterWidthDiff, scrollAmount, filterPrev, filterNext, buttonWidth;\nlet offset = 0;\nlet offsetIncrements = 2;\nlet filterPadding = 15;\n\nif (filter) {\n const parent = document.getElementById(\"filter-parent\");\n \n if (filter.offsetWidth !== filter.scrollWidth) {\n filter.classList.remove(\"justify-center\");\n } else {\n filter.classList.add(\"justify-center\");\n }\n\n filterPrev = document.getElementById(\"filter-prev\");\n filterNext = document.getElementById(\"filter-next\");\n buttonWidth = document.getElementById(\"other\").scrollWidth;\n setWidths();\n\n filterPrev.addEventListener(\"click\", scrollPrev);\n filterNext.addEventListener(\"click\", scrollNext);\n filterPrev.addEventListener(\"touchstart\", scrollPrev);\n filterNext.addEventListener(\"touchstart\", scrollNext);\n\n filter.addEventListener(\"scroll\", toggleControls);\n\n window.addEventListener(\"resize\", function() {\n setWidths();\n\n if (filterWidthDiff > 0) {\n filter.classList.remove(\"justify-center\");\n } else {\n filter.classList.add(\"justify-center\");\n }\n });\n\n}\n\nfunction setWidths() {\n filterViewWidth = filter.offsetWidth;\n filterScrollWidth = filter.scrollWidth;\n filterWidthDiff = filterScrollWidth - filterViewWidth;\n\n if (filterWidthDiff < buttonWidth*2) {\n offsetIncrements = 1;\n } else {\n offsetIncrements = 2;\n }\n\n toggleControls();\n}\n\nfunction toggleControls() {\n \n if (filterWidthDiff > 0) {\n if (filter.scrollLeft === 0) {\n filterPrev.classList.add(\"hidden\");\n filterNext.classList.remove(\"hidden\");\n } else if (filterWidthDiff <= filter.scrollLeft) {\n filterNext.classList.add(\"hidden\");\n filterPrev.classList.remove(\"hidden\");\n } else {\n filterNext.classList.remove(\"hidden\");\n filterPrev.classList.remove(\"hidden\");\n }\n } else {\n filterPrev.classList.add(\"hidden\");\n filterNext.classList.add(\"hidden\");\n }\n}\n\nfunction scrollPrev(event) {\n filter.scrollTo({ \n left: filter.scrollLeft - filterViewWidth*0.7,\n behavior: \"smooth\"\n });\n toggleControls();\n}\n\nfunction scrollNext(event) {\n filter.scrollTo({ \n left: filter.scrollLeft + filterViewWidth*0.7,\n behavior: \"smooth\" \n });\n toggleControls();\n}\n","/*\nhttps://www.facebook.com/sharer.php?t=It’s 5 o’clock somewhere on planet Earth and the elves are using it as an excuse to unwind and get warm and cozy with an “Old Fashioned” classic. Toss another log into the fireplace, turn up the holiday tunes, and raise a glass!&u=https://www.brandextract.com/holiday2020/recipes/5-oclock-at-the-workshop.html\nhttps://www.facebook.com/sharer.php?t=It%E2%80%99s%205%20o&rsquo%3Bclock%20somewhere%20on%20planet%20Earth%20and%20the%20elves%20are%20using%20it%20as%20an%20excuse%20to%20unwind%20and%20get%20warm%20and%20cozy%20with%20an%20&ldquo%3BOld%20Fashioned&rdquo%3B%20classic.%20Toss%20another%20log%20into%20the%20fireplace%2C%20turn%20up%20the%20holiday%20tunes%2C%20and%20raise%20a%20glass!&u=http%3A%2F%2Flocalhost%3A8080%2Frecipes%2F5-oclock-at-the-workshop.html\n\nhttps:////pinterest.com/pin/create/link/?description=It’s 5 o’clock somewhere on planet Earth and the elves are using it as an excuse to unwind and get warm and cozy with an “Old Fashioned” classic. Toss another log into the fireplace, turn up the holiday tunes, and raise a glass!&url=https://www.brandextract.com/holiday2020/recipes/5-oclock-at-the-workshop.html&media=https://www.brandextract.com/holiday2020/images/christmas2020/cards/5-oclock-at-the-workshop.jpg\nhttp://twitter.com/share?text=It’s 5 o’clock somewhere on planet Earth and the elves are using it as an excuse to unwind and get warm and cozy with an “Old Fashioned” classic. Toss another log into the fireplace, turn up the holiday tunes, and raise a glass!&url=https://www.brandextract.com/holiday2020/recipes/5-oclock-at-the-workshop.html\nmailto:no-one@snai1mai1.com?subject=look at this website&body=Hi,I found this website and thought you might like it http://www.geocities.com/wowhtml/\n*/\n\nfunction copyText(textToCopy) {\n\n let myTemporaryInputElement = document.createElement(\"input\");\n myTemporaryInputElement.type = \"text\";\n myTemporaryInputElement.value = textToCopy;\n\n document.body.appendChild(myTemporaryInputElement);\n\n myTemporaryInputElement.select();\n document.execCommand(\"Copy\");\n\n document.body.removeChild(myTemporaryInputElement);\n\n};\n\nconst share = {\n facebookShare: function() {\n window.open(`https://www.facebook.com/sharer.php?t=${encodeURIComponent(pageData.description)}&u=${encodeURIComponent(window.location.href)}`, \"share\");\n },\n pinterestShare: function() {\n window.open(`https:////pinterest.com/pin/create/link/?description=${encodeURIComponent(pageData.description)}&url=${encodeURIComponent(window.location.href)}&media=${encodeURIComponent(pageData.img)}`, \"share\");\n },\n twitterShare: function() {\n window.open(`http://twitter.com/share?text=${encodeURIComponent(pageData.title)}&url=${encodeURIComponent(window.location.href)}&via=brandextract`);\n },\n mailShare: function() {\n window.open(`mailto:?subject=${encodeURIComponent(pageData.title)}&body=${encodeURIComponent(pageData.description + '\\n\\n')} ${encodeURIComponent(window.location.href)}&via=brandextract`);\n },\n copyShare: function() {\n copyText(window.location.href);\n alert(\"URL Copied to clipboard\");\n }\n};\n\n[\"facebookShare\", \"pinterestShare\", \"twitterShare\", \"copyShare\", \"mailShare\"].forEach(id => {\n const el = document.getElementById(id);\n if (el) {\n el.addEventListener(\"click\", (event) => {\n share[id]();\n });\n el.addEventListener(\"touch\", (event) => {\n share[id]();\n });\n }\n});\n\n\n","import dialogPolyfill from \"../../node_modules/dialog-polyfill/dist/dialog-polyfill.esm.js\";\nimport { SVGInjector } from \"../../node_modules/@tanem/svg-injector/dist/svg-injector.esm.js\";\nimport Odometer from \"../../node_modules/odometer/odometer.js\";\n\nimport \"./lottie-animations.js\";\nimport \"./hover-animations.js\";\nimport \"./filter-scroll.js\";\nimport \"./share.js\";\n\ndocument.querySelectorAll(\"#filter button\").forEach(button => {\n button.addEventListener(\"click\", (event) => {\n filterToggle(button, event);\n });\n button.addEventListener(\"touch\", (event) => {\n filterToggle(button, event);\n });\n});\n\nfunction filterToggle(button, event) {\n document.querySelectorAll(\"#filter button\").forEach(b => {\n b.classList.remove(\"active\");\n });\n button.classList.add(\"active\");\n updateView();\n}\n\nfunction updateView() {\n const boozelist = [\"bourbon\", \"gin\", \"tequila\", \"rum\", \"vodka\", \"other\"];\n let selected = [];\n\n boozelist.forEach(booze => {\n let button = document.querySelectorAll(\"#filter button[data-booze='\"+booze+\"']\");\n if(button[0].classList.contains(\"active\")) {\n selected.push(booze);\n }\n });\n if (selected.length === 0) selected = boozelist;\n\n document.querySelectorAll(\"article\").forEach(article => {\n if (selected.includes(article.getAttribute(\"data-booze\"))) {\n article.classList.remove(\"hidden\");\n } else {\n article.classList.add(\"hidden\");\n }\n });\n};\n"],"names":["mastheadTop","root","factory","navigator","window","expressionsPlugin","locationHref","initialDefaultFrame","subframeEnabled","bm_pow","test","userAgent","Math","pow","bm_sqrt","sqrt","bm_floor","floor","bm_min","min","BMMath","i","propertyNames","len","length","random","abs","val","absArr","createSizedArray","defaultCurveSegments","degToRads","PI","roundCorner","BMEnterFrameEvent","type","currentTime","totalTime","frameMultiplier","this","direction","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","target","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","_count","createElementID","HSVtoRGB","h","s","v","r","g","b","f","p","q","t","RGBtoHSV","max","d","addSaturationToRGB","color","offset","hsv","addBrightnessToRGB","addHueToRGB","BaseEvent","hex","colorMap","toString","prototype","triggerEvent","eventName","args","_cbs","addEventListener","callback","push","removeEventListener","bind","splice","createTypedArray","Uint8ClampedArray","Float32Array","Int16Array","value","arr","Array","apply","createNS","document","createElementNS","createTag","createElement","DynamicPropertyContainer","addDynamicProperty","prop","dynamicProperties","indexOf","container","_isAnimated","iterateDynamicProperties","_mdf","getValue","initDynamicPropertyContainer","blendModeEnums","getBlendMode","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","mode","Matrix","_cos","cos","_sin","sin","_tan","tan","_rnd","round","reset","props","rotate","angle","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","sy","skew","ax","ay","skewFromAxis","scale","sz","setTransform","a","c","e","j","k","l","m","n","o","translate","tx","ty","tz","transform","a2","b2","c2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_p","_identityCalculated","a1","b1","c1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","p1","isIdentity","_identity","equals","matr","clone","cloneFromProps","applyToPoint","x","y","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","pt","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","pt1","pt2","pt3","p0","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","pool","math","global","width","startdenom","significance","overflow","mask","ARC4","key","keylen","me","S","count","copy","slice","flatten","obj","depth","result","typ","mixkey","seed","smear","stringseed","charCodeAt","tostring","String","fromCharCode","options","shortseed","entropy","out","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","Date","screen","autoseed","arc4","prng","int32","quick","double","pass","is_math_call","state","BezierFactory","ob","getBezierEasing","nm","str","replace","beziers","bezEasing","BezierEasing","kSampleStepSize","float32ArraySupported","A","aA1","aA2","B","C","calcBezier","aT","getSlope","points","_mSampleValues","_precomputed","get","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","extendPrototype","sources","destination","sourcePrototype","attr","hasOwnProperty","createProxyFunction","ProxyFunction","lastTime","vendors","requestAnimationFrame","cancelAnimationFrame","element","currTime","getTime","timeToCall","id","setTimeout","clearTimeout","bez","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt4","ptCoord","perc","ptDistance","curveSegments","addedLength","point","lastPoint","lengthData","bezier_length_pool","newElement","percents","lengths","BezierData","segmentLength","PointData","partial","partialLength","storedData","buildBezierData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","flag","bezier_segment_points","getSegmentsLength","shapeData","segmentsLength","segments_length_pool","closed","pathV","pathO","pathI","_length","totalLength","getNewSegment","startPerc","endPerc","t0","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","bezFunction","dataManager","completeLayers","layers","comps","fontManager","layerData","jLen","kLen","data","completed","tt","td","hasMask","maskProps","masksProperties","convertPathsToAbsoluteValues","findCompLayers","refId","completeShapes","shapes","singleShape","__used","JSON","parse","stringify","ks","it","path","checkVersion","minimum","animVersionString","animVersion","split","minimumVersion","checkText","iterateLayers","textLayer","documentData","animationData","assets","checkChars","chars","pathData","paths","__converted","checkColors","iterateShapes","checkShapes","cl","moduleOb","completeData","__complete","dataFunctionManager","FontManager","emptyChar","w","size","combinedCharacters","setUpNode","font","family","parentNode","style","fontFamily","node","innerText","position","left","top","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","appendChild","body","offsetWidth","familyArray","enabledFamilies","join","trimFontOptions","parent","createHelper","def","fontData","tHelper","setAttribute","fFamily","fStyle","fWeight","textContent","fClass","getContext","concat","Font","fonts","typekitLoaded","isLoaded","_warned","initTime","now","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","getCombinedCharacterCodes","addChars","found","ch","addFonts","defs","list","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","origin","querySelectorAll","href","rel","src","sc","helper","cache","getCharData","char","console","warn","getFontByName","name","fName","measureText","fontName","index","doubleSize","getComputedTextLength","singleSize","loadedCount","removeChild","PropertyFactory","initFrame","math_abs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","fnc","iterationIndex","lastIndex","keyframes","endValue","quat","qx","qy","qz","qw","heading","attitude","bank","nextKeyTime","keyTime","to","ti","ind","__fnct","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quatStart","createQuaternion","quatEnd","omega","cosom","sinom","scale0","scale1","az","aw","bx","by","bz","bw","acos","slerp","atan2","asin","constructor","values","c3","s1","s2","s3","getValueAtCurrentTime","comp","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","processEffectsSequence","elem","globalData","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","st","KeyframedMultidimensionalProperty","arrLen","getProp","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","px","py","pz","rx","ry","rz","or","sk","sa","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","autoOriented","v1","v2","frameRate","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","ShapePath","_maxLength","setPathData","setLength","point_pool","doubleArrayLength","setXYAt","pos","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","init","cnt","modifiers","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","localShapeCollection","shape1","shape2","shapesEqual","shape_pool","releaseShapes","addShape","ShapeProperty","shapeCollection_pool","newShapeCollection","KeyframedShapeProperty","EllShapeProperty","cPoint","convertEllToPath","s0","_cw","_v","StarShapeProperty","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","os","rad","roundness","perimSegment","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","convertRectToPath","v0","getShapeProp","getConstructorFunction","getKeyframedConstructorFunction","ShapeModifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","RoundCornersModifier","PuckerAndBloatModifier","RepeaterModifier","ShapeCollection","DashProperty","renderer","dataProps","dashStr","dashArray","dashoffset","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","initModifierProperties","addShapeToModifier","shape","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segments","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","release","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShape","pop","addPaths","newPaths","addSegment","shapePath","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","segment","rd","processPath","cloned_path","currentV","currentI","currentO","closerV","distance","newPosPerc","amount","centerPoint","pathLength","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","matrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","unshift","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","copies","ceil","group","ix","reloadShapes","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","op","comparePoints","buildShapeString","pathNodes","_o","_i","shapeString","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","pause","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","play","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","ImagePreloader","proxyImage","canvas","height","ctx","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","imagesLoadedCb","getAssetsPath","assetData","assetsPath","original_path","imagePath","u","_imageLoaded","images","loadAssets","cb","_createImageData","setAssetsPath","setPath","destroy","getImage","img","createImgData","crossOrigin","createImageData","setAttributeNS","setCacheType","featureSupport","maskType","filtersFactory","createFilter","filId","fil","createAlphaToLuminanceFilter","feColorMatrix","assetLoader","formatResponse","xhr","response","responseText","load","errorCallback","XMLHttpRequest","open","responseType","err","send","onreadystatechange","readyState","status","TextAnimatorProperty","textData","renderType","_hasMaskedPath","_frameId","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","TextAnimatorDataProperty","animatorProps","defaultData","textAnimator_animatables","sw","fc","fh","fs","fb","TextSelectorProp","getTextSelectorProp","LetterProps","TextProperty","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","of","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","searchProperties","maskManager","getMaskProperty","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","prevPoint","tanAngle","animators","matrixHelper","mHelper","renderedLettersCount","letters","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","currentLine","letterM","letterP","defaultPropsArray","animatorJustifyOffset","animatorFirstCharOffset","justifyOffsetMult","isNewLine","getMult","anIndexes","totalChars","line","extra","an","animatorOffset","add","rot","atan","update","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","text","charCode","charactersArray","charAt","substr","newLineFlag","charData","anchorGrouping","currentSize","currentPos","lineWidth","maxLineWidth","styles","toLowerCase","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","animatorData","letterData","based","indexes","rn","newInd","currentInd","updateDocumentData","newData","undefined","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","_currentTextLength","finalS","finalE","xe","ne","textProperty","easer","tot","newCharsFlag","divisor","pool_factory","initialLength","_create","_release","_clone","pooling","cloned","shapeCollection","BaseRenderer","SVGRenderer","animationItem","config","svgElement","ariaLabel","title","titleElement","titleId","description","descElement","descId","maskElement","layerElement","renderConfig","preserveAspectRatio","imagePreserveAspectRatio","progressiveLoad","hideOnTransparent","viewBoxOnly","viewBoxSize","className","focusable","filterSize","pendingElements","destroyed","rendererType","MaskElement","viewData","solidPath","rect","expansor","feMorph","properties","currentMasks","layerId","maskRef","filterID","expan","lastPath","lastOperator","filterId","lastRadius","createLayerSolidPath","invRect","drawPath","maskedElement","addRenderableComponent","HierarchyElement","FrameElement","TransformElement","RenderableElement","RenderableDOMElement","ProcessedElement","SVGStyleData","level","lvl","hd","pElem","msElem","SVGShapeData","transformers","caches","lStr","SVGTransformData","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","checkLayers","num","ip","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","Error","AudioElement","buildAllItems","includeLayers","newLayers","setProjectInterface","pInterface","projectInterface","initItems","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","searchExtraCompositions","xt","initExpressions","registerComposition","setupGlobalData","animData","fontsContainer","getAssetData","imageLoader","imagePreloader","audioController","fr","compSize","NullElement","SVGShapeElement","SVGTextElement","IImageElement","SVGCompElement","ISolidElement","configAnimation","wrapper","maskId","updateContainerSize","appendElementInPos","setMatte","checkParenting","renderFrame","currentFrame","prepareFrame","getBaseElement","nextElement","insertBefore","hide","display","show","isFirstFrame","finalMat","finalTransform","mProp","getMaskelement","pathString","pathShapeValue","initHierarchy","_isParent","prepareProperties","isVisible","initTransform","_matMdf","_opMdf","ao","renderTransform","globalToLocal","transforms","ptNew","initRenderable","isInRange","hidden","isTransparent","renderableComponents","component","removeRenderableComponent","prepareRenderableFrame","checkLayerLimits","checkTransparency","renderRenderable","sourceRectAtTime","getLayerSize","initElement","initBaseData","initRendererElement","createContainerElements","createRenderableComponents","createContent","baseElement","renderElement","renderInnerContent","innerElem","destroyBaseElement","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","stop","gf","cst","opacityId","opFill","ms","ost","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","dist","createRenderFunction","BaseElement","SVGBaseElement","IShapeElement","ITextElement","ICompElement","sourceRect","_isPlaying","_canPlay","_currentTime","tm","_placeholder","supports3d","textSpans","shapesData","stylesList","shapeModifiers","itemsData","processedElements","animatedContents","SVGEffects","checkMasks","layerInterface","LayerExpressionInterface","registerMaskInterface","effectsInterface","EffectsExpressionInterface","createEffectsInterface","registerEffectsInterface","compInterface","CompExpressionInterface","shapeInterface","ShapeExpressionInterface","content","textInterface","TextExpressionInterface","setBlendMode","blendModeValue","bm","sr","effectsManager","EffectsManager","getType","matteElement","transformedElement","_sizeChanged","gg","layerElementParent","masker","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","ln","cp","clipId","cpGroup","renderableEffectsManager","addShapeToModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","lcEnum","ljEnum","searchProcessedElement","addProcessedElement","textAnimator","buildNewText","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","timeRemapped","setElements","elems","getElements","destroyElements","pr","volumeValue","textContainer","buildTextContents","textArray","textContents","currentTextContent","tSpan","usesGlyphs","cachedSpansLength","tElement","justify","time","textBox","getBBox","bbox","renderedLetter","textSpan","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","lc","lj","ml","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","fn","setElementStyles","render","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","animationManager","registeredAnimations","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","animation","isPaused","subtractPlayingCount","registerAnimation","AnimationItem","setupAnimation","setData","addPlayingCount","activate","nowTime","elapsedTime","advanceTime","first","loadAnimation","params","setParams","setSpeed","setDirection","togglePause","searchAnimations","standalone","animElements","call","getElementsByClassName","getElementsByTagName","div","resize","goToAndStop","isFrame","freeze","unfreeze","getRegisteredAnimations","animations","currentRawFrame","frameMult","playSpeed","playDirection","playCount","autoplay","loop","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","animType","CanvasRenderer","rendererSettings","HybridRenderer","parseInt","autoloadSegments","initialSegment","lastIndexOf","fileName","trigger","wrapperAttributes","attributes","getNamedItem","prerender","loadNextSegment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","updaFrameModifier","waitForFontsLoaded","error","triggerConfigError","gotoFrame","setSubframe","triggerRenderFrameError","setCurrentRawFrameValue","frameModifier","goToAndPlay","nextValue","_isComplete","checkSegments","adjustSegment","setSegment","end","pendingFrame","playSegments","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onComplete","onSegmentStart","onDestroy","getPath","getDuration","onError","lottie","setLocationHref","setSubframeRendering","setQuality","isNaN","inBrowser","installPlugin","plugin","__getFactory","version","scripts","queryString","variable","vars","pair","decodeURIComponent","getQueryVariable","readyStateCheckInterval","setInterval","clearInterval","module","exports","bodymovin","getElementById","_assertThisInitialized","self","ReferenceError","_inheritsLoose","subClass","superClass","Object","create","__proto__","event","_globalTimeline","_win","_coreInitted","_doc","_coreReady","_lastRenderedFrame","_quickTween","_tickerActive","_id","_req","_raf","_self","_delta","_getTime","_lagThreshold","_adjustedLag","_startTime","_lastUpdate","_gap","_nextTime","_listeners","_tick","easeOut","_config","autoSleep","force3D","nullTargetWarn","units","lineHeight","_defaults","duration","overwrite","delay","_bigNum","_tinyNum","_2PI","_HALF_PI","_gsID","_sqrt","_isString","_isFunction","_isNumber","_isUndefined","_isObject","_isNotFalse","_windowExists","_isFuncOrString","_isTypedArray","ArrayBuffer","isView","_isArray","isArray","_strictNumExp","_numExp","_numWithUnitExp","_complexStringNumExp","_relExp","_delimitedValueExp","_globals","_installScope","_install","scope","_merge","gsap","_missingPlugin","property","_warn","message","suppress","_addGlobal","_emptyFunc","_reservedProps","_lazyTweens","_lazyLookup","_plugins","_effects","_nextGCFrame","_harnessPlugins","_callbackNames","_harness","targets","harnessPlugin","_gsap","harness","targetTest","GSCache","_getCache","toArray","_getProperty","getAttribute","_forEachName","names","func","forEach","_round","_arrayContainsAny","toSearch","toFind","_parseVars","irVars","isLegacy","varsIndex","defaults","inherit","immediateRender","runBackwards","startAt","_lazyRender","tween","_lazy","_lazySafeRender","suppressEvents","force","_numericIfPossible","parseFloat","match","trim","_passThrough","_setDefaults","_setKeyframeDefaults","base","toMerge","_mergeDeep","_copyExcluding","excluding","_inheritDefaults","_dp","_removeLinkedListItem","child","firstProp","lastProp","prev","_prev","next","_next","_removeFromParent","onlyIfParentHasAutoRemove","autoRemoveChildren","remove","_act","_uncache","_end","_dur","_start","_dirty","_recacheAncestors","totalDuration","_hasNoPausedAncestors","_ts","_elapsedCycleDuration","_repeat","_animationCycle","_tTime","_rDelay","tTime","cycleDuration","_parentToChildTotalTime","parentTime","_tDur","_setEnd","_rts","_alignPlayhead","smoothChildTiming","_time","_postAddChecks","timeline","_initted","rawTime","_clamp","_zTime","_addToTimeline","skipChecks","_delay","timeScale","sortBy","_addLinkedListItem","_sort","_recent","_scrollTrigger","ScrollTrigger","_attemptInitTween","_initTween","_pt","lazy","_ticker","frame","_setDuration","skipUncache","leavePlayhead","repeat","dur","totalProgress","_onUpdateTotalDuration","Timeline","_zeroPosition","_parsePosition","labels","recent","clippedDuration","_conditionalReturn","getUnit","_slice","_isArrayLike","nonEmpty","nodeType","_flatten","ar","leaveStrings","accumulator","_accumulator","_wake","shuffle","sort","distribute","each","ease","_parseEase","from","isDecimal","ratios","axis","ratioX","ratioY","center","originX","originY","wrapAt","distances","grid","getBoundingClientRect","_invertEase","_roundModifier","raw","snap","snapTo","radius","is2D","increment","dx","dy","closest","roundingIncrement","returnFunction","_wrapArray","_replaceRandom","nums","mapRange","inMin","inMax","outMin","outMax","inRange","outRange","_getLabelInDirection","fromTime","backward","label","_callback","executeLazyFirst","callbackScope","_interrupt","progress","_createPlugin","isFunc","Plugin","_props","instanceDefaults","_renderPropTweens","_addPropTween","kill","_killPropTweensOf","_addPluginModifier","rawVars","statics","getSetter","_getSetter","aliases","register","toUpperCase","PropTween","_255","_colorLookup","aqua","lime","silver","black","maroon","teal","blue","navy","white","olive","yellow","orange","gray","purple","green","red","pink","cyan","transparent","_hue","splitColor","toHSL","forceAlpha","wasHSL","map","Number","_colorOrderData","_colorExp","_formatColors","orderMatchData","shell","colors","RegExp","_hslExp","_colorStringFilter","combined","overlap","dispatch","elapsed","manual","tick","deltaRatio","fps","wake","gsapVersions","GreenSockGlobals","sleep","lagSmoothing","threshold","adjustedLag","_fps","_easeMap","_customEaseExp","_quotesExp","_parseObjectInString","parsedVal","_propagateYoyoEase","isYoyo","_first","yoyoEase","_yoyo","_ease","_yEase","defaultEase","close","nested","substring","_CE","_configEaseFromString","_insertEase","easeIn","easeInOut","lowercaseName","_easeInOutFromOut","_configElastic","amplitude","period","p3","_configBack","overshoot","power","Linear","easeNone","none","SteppedEase","steps","immediateStart","set","Animation","repeatDelay","yoyo","reversed","paused","_proto","startTime","arguments","_totalTime","_ptLookup","_pTime","ratio","_ps","includeRepeats","wrapRepeats","globalTime","restart","includeDelay","atTime","invalidate","isActive","start","eventCallback","_onUpdate","then","onFulfilled","Promise","resolve","_resolve","_then","_prom","_Animation","_this","sortChildren","scrollTrigger","_proto2","Tween","fromTo","fromVars","toVars","delayedCall","staggerTo","stagger","onCompleteAll","onCompleteAllParams","onCompleteParams","staggerFrom","staggerFromTo","prevPaused","pauseTween","prevStart","prevIteration","prevTime","tDur","crossingStart","_lock","rewinding","doesWrap","repeatRefresh","_hasPause","_forcing","_last","_findNextPauseTween","onUpdate","adjustedTime","_this2","addLabel","getChildren","tweens","timelines","ignoreBeforeTime","getById","removeLabel","killTweensOf","_totalTime2","addPause","removePause","onlyActive","getTweensOf","_overwritingTween","children","parsedTargets","isGlobalTime","_targets","tweenTo","tl","_vars","_onStart","onStart","onStartParams","tweenFromTo","fromPosition","toPosition","nextLabel","afterTime","previousLabel","beforeTime","currentLabel","shiftChildren","adjustLabels","clear","includeLabels","updateRoot","_addComplexStringPropTween","setter","stringFilter","funcParam","startNums","endNum","chunk","startNum","hasRandom","_renderComplexString","matchIndex","exec","fp","parsedStart","_setterFuncWithParam","_setterFunc","_setterPlain","_renderBoolean","_renderPlain","_checkPlugin","ptLookup","_parseFuncOrString","_processVars","priority","cleanVars","hasPriority","gsData","harnessVars","overwritten","onUpdateParams","autoRevert","prevStartAt","_startAt","fullTargets","autoOverwrite","_overwrite","_op","_sortPropTweensByPriority","_onInit","_from","_staggerTweenProps","_staggerPropsToSkip","_Animation2","skipInherit","_this3","curTarget","staggerFunc","staggerVarsToMerge","_this3$vars","_proto3","onRepeat","prevRatio","_renderZeroDurationTween","overwrittenProps","curLookup","curOverwriteProps","killingTargets","propTweenLookup","firstPT","_arraysMatch","propertyAliases","_addAliasesToVars","onReverseComplete","onReverseCompleteParams","_setterAttribute","hasNonDependentRemaining","dep","_setterWithModifier","mSet","mt","last","change","TweenMax","TweenLite","TimelineLite","TimelineMax","registerPlugin","_len2","_key2","getProperty","unit","uncache","getter","format","quickSetter","setters","isTweening","registerEffect","_ref","effect","extendTimeline","pluginName","registerEase","parseEase","exportRoot","includeDelayedCalls","utils","wrap","range","wrapYoyo","total","normalize","clamp","pipe","_len","functions","_key","reduce","unitize","interpolate","mutate","interpolators","il","isString","master","install","effects","ticker","globalTimeline","core","globals","getCache","_getPluginPropTween","_buildModifierPlugin","temp","_addModifiers","_docElement","_pluginInitted","_tempDiv","_tempDivStyler","_recentSetterPlugin","_supports3D","_transformProps","_RAD2DEG","_DEG2RAD","_atan2","_capsExp","_horizontalExp","_complexExp","_propertyAliases","autoAlpha","alpha","_renderCSSProp","_renderPropWithEnd","_renderCSSPropWithBeginning","_renderRoundedCSSProp","_renderNonTweeningValue","_renderNonTweeningValueOnlyAtEnd","_setterCSSStyle","_setterCSSProp","setProperty","_setterTransform","_setterScale","_setterScaleWithRender","_setterTransformWithRender","_transformProp","_transformOriginProp","_createElement","ns","_getComputedProperty","skipPrefixFallback","cs","getComputedStyle","getPropertyValue","_checkPropPrefix","_prefixes","preferPrefix","_initCore","documentElement","cssText","_getBBoxHack","swapIfPossible","svg","ownerSVGElement","oldParent","oldSibling","nextSibling","oldCSS","_gsapBBox","_getAttributeFallbacks","attributesArray","hasAttribute","_getBBox","bounds","_isSVG","getCTM","_removeProperty","removeProperty","removeAttribute","_addNonTweeningPT","beginning","onlySetAtEnd","_nonConvertibleUnits","deg","turn","_convertToUnit","isSVG","curValue","curUnit","horizontal","isRootSVG","tagName","measureProperty","toPixels","toPercent","_get","_parseTransform","_firstTwoOnly","zOrigin","_specialProps","_tweenComplexCSSString","startValues","startValue","endUnit","startUnit","relative","_keywordToPercent","bottom","right","_renderClearProps","clearTransforms","clearProps","_identity2DMatrix","_rotationalProperties","_isNullTransform","_getComputedTransformMatrixAsArray","matrixString","_getMatrix","force2D","addedToDOM","baseVal","consolidate","offsetParent","_applySVGOrigin","originIsAbsolute","smooth","matrixArray","pluginToAddPropTweensTo","xOriginOld","xOrigin","yOriginOld","yOrigin","xOffsetOld","xOffset","yOffsetOld","originSplit","rotation","rotationX","rotationY","skewX","skewY","perspective","a12","a22","t2","t3","a13","a23","a33","a42","a43","a32","invertedScaleX","forceCSS","xPercent","yPercent","offsetHeight","transformPerspective","_renderSVGTransforms","_renderCSSTransforms","_renderNon3DTransforms","_addPxTranslate","_zeroDeg","_zeroPx","_endParenthesis","use3D","a11","a21","_ref2","_addRotationalPropTween","cap","_addRawTransformPTs","endCache","startCache","side","positionAndScale","all","CSSPlugin","specialProp","isTransformRelated","transformPropTween","smoothOrigin","autoRound","checkPrefix","gsapWithCSS","el","hoverRoll","filterViewWidth","filterScrollWidth","filterWidthDiff","filterPrev","filterNext","filter","scrollWidth","classList","setWidths","scrollPrev","scrollNext","toggleControls","scrollLeft","scrollTo","behavior","share","facebookShare","encodeURIComponent","pageData","location","pinterestShare","twitterShare","mailShare","copyShare","textToCopy","myTemporaryInputElement","select","execCommand","alert","filterToggle","button","boozelist","selected","booze","contains","article","includes","updateView"],"mappings":"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"}