PageSourceSearch

https://mnc-insurance.com/vendors/gsap/gsap.js

js mnc-insurance.com collected 2026-10-01 13:02:30 UTC 161,717 bytes, 4,947 lines download raw bytes

vendor: 4,713 bytes, lines 1-143
1(function (global, factory) {
2  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3  typeof define === 'function' && define.amd ? define(['exports'], factory) :
4  (global = global || self, factory(global.window = global.window || {}));
5}(this, (function (exports) { 'use strict';
6
7  function _inheritsLoose(subClass, superClass) {
8    subClass.prototype = Object.create(superClass.prototype);
9    subClass.prototype.constructor = subClass;
10    subClass.__proto__ = superClass;
11  }
12
13  function _assertThisInitialized(self) {
14    if (self === void 0) {
15      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
16    }
17
18    return self;
19  }
20
21  /*!
22   * GSAP 3.7.1
23   * https://greensock.com
24   *
25   * @license Copyright 2008-2021, GreenSock. All rights reserved.
26   * Subject to the terms at https://greensock.com/standard-license or for
27   * Club GreenSock members, the agreement issued with that membership.
28   * @author: Jack Doyle, [email protected]
29  */
30  var _config = {
31    autoSleep: 120,
32    force3D: "auto",
33    nullTargetWarn: 1,
34    units: {
35      lineHeight: ""
36    }
37  },
38      _defaults = {
39    duration: .5,
40    overwrite: false,
41    delay: 0
42  },
43      _suppressOverwrites,
44      _bigNum = 1e8,
45      _tinyNum = 1 / _bigNum,
46      _2PI = Math.PI * 2,
47      _HALF_PI = _2PI / 4,
48      _gsID = 0,
49      _sqrt = Math.sqrt,
50      _cos = Math.cos,
51      _sin = Math.sin,
52      _isString = function _isString(value) {
53    return typeof value === "string";
54  },
55      _isFunction = function _isFunction(value) {
56    return typeof value === "function";
57  },
58      _isNumber = function _isNumber(value) {
59    return typeof value === "number";
60  },
61      _isUndefined = function _isUndefined(value) {
62    return typeof value === "undefined";
63  },
64      _isObject = function _isObject(value) {
65    return typeof value === "object";
66  },
67      _isNotFalse = function _isNotFalse(value) {
68    return value !== false;
69  },
70      _windowExists = function _windowExists() {
71    return typeof window !== "undefined";
72  },
73      _isFuncOrString = function _isFuncOrString(value) {
74    return _isFunction(value) || _isString(value);
75  },
76      _isTypedArray = typeof ArrayBuffer === "function" && ArrayBuffer.isView || function () {},
77      _isArray = Array.isArray,
78      _strictNumExp = /(?:-?\.?\d|\.)+/gi,
79      _numExp = /[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g,
80      _numWithUnitExp = /[-+=.]*\d+[.e-]*\d*[a-z%]*/g,
81      _complexStringNumExp = /[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi,
82      _relExp = /[+-]=-?[.\d]+/,
83      _delimitedValueExp = /[^,'"\[\]\s]+/gi,
84      _unitExp = /[\d.+\-=]+(?:e[-+]\d*)*/i,
85      _globalTimeline,
86      _win,
87      _coreInitted,
88      _doc,
89      _globals = {},
90      _installScope = {},
91      _coreReady,
92      _install = function _install(scope) {
93    return (_installScope = _merge(scope, _globals)) && gsap;
94  },
95      _missingPlugin = function _missingPlugin(property, value) {
96    return console.warn("Invalid property", property, "set to", value, "Missing plugin? gsap.registerPlugin()");
97  },
98      _warn = function _warn(message, suppress) {
99    return !suppress && console.warn(message);
100  },
101      _addGlobal = function _addGlobal(name, obj) {
102    return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;
103  },
104      _emptyFunc = function _emptyFunc() {
105    return 0;
106  },
107      _reservedProps = {},
108      _lazyTweens = [],
109      _lazyLookup = {},
110      _lastRenderedFrame,
111      _plugins = {},
112      _effects = {},
113      _nextGCFrame = 30,
114      _harnessPlugins = [],
115      _callbackNames = "",
116      _harness = function _harness(targets) {
117    var target = targets[0],
118        harnessPlugin,
119        i;
120    _isObject(target) || _isFunction(target) || (targets = [targets]);
121
122    if (!(harnessPlugin = (target._gsap || {}).harness)) {
123      i = _harnessPlugins.length;
124
125      while (i-- && !_harnessPlugins[i].targetTest(target)) {}
126
127      harnessPlugin = _harnessPlugins[i];
128    }
129
130    i = targets.length;
131
132    while (i--) {
133      targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);
134    }
135
136    return targets;
137  },
138      _getCache = function _getCache(target) {
139    return target._gsap || _harness(toArray(target))[0]._gsap;
140  },
141      _getProperty = function _getProperty(target, property, v) {
142    return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;
143  },
vendor: 20,498 bytes, lines 144-738
144      _forEachName = function _forEachName(names, func) {
145    return (names = names.split(",")).forEach(func) || names;
146  },
147      _round = function _round(value) {
148    return Math.round(value * 100000) / 100000 || 0;
149  },
150      _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {
151    var l = toFind.length,
152        i = 0;
153
154    for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}
155
156    return i < l;
157  },
158      _lazyRender = function _lazyRender() {
159    var l = _lazyTweens.length,
160        a = _lazyTweens.slice(0),
161        i,
162        tween;
163
164    _lazyLookup = {};
165    _lazyTweens.length = 0;
166
167    for (i = 0; i < l; i++) {
168      tween = a[i];
169      tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);
170    }
171  },
172      _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {
173    _lazyTweens.length && _lazyRender();
174    animation.render(time, suppressEvents, force);
175    _lazyTweens.length && _lazyRender();
176  },
177      _numericIfPossible = function _numericIfPossible(value) {
178    var n = parseFloat(value);
179    return (n || n === 0) && (value + "").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;
180  },
181      _passThrough = function _passThrough(p) {
182    return p;
183  },
184      _setDefaults = function _setDefaults(obj, defaults) {
185    for (var p in defaults) {
186      p in obj || (obj[p] = defaults[p]);
187    }
188
189    return obj;
190  },
191      _setKeyframeDefaults = function _setKeyframeDefaults(obj, defaults) {
192    for (var p in defaults) {
193      p in obj || p === "duration" || p === "ease" || (obj[p] = defaults[p]);
194    }
195  },
196      _merge = function _merge(base, toMerge) {
197    for (var p in toMerge) {
198      base[p] = toMerge[p];
199    }
200
201    return base;
202  },
203      _mergeDeep = function _mergeDeep(base, toMerge) {
204    for (var p in toMerge) {
205      p !== "__proto__" && p !== "constructor" && p !== "prototype" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);
206    }
207
208    return base;
209  },
210      _copyExcluding = function _copyExcluding(obj, excluding) {
211    var copy = {},
212        p;
213
214    for (p in obj) {
215      p in excluding || (copy[p] = obj[p]);
216    }
217
218    return copy;
219  },
220      _inheritDefaults = function _inheritDefaults(vars) {
221    var parent = vars.parent || _globalTimeline,
222        func = vars.keyframes ? _setKeyframeDefaults : _setDefaults;
223
224    if (_isNotFalse(vars.inherit)) {
225      while (parent) {
226        func(vars, parent.vars.defaults);
227        parent = parent.parent || parent._dp;
228      }
229    }
230
231    return vars;
232  },
233      _arraysMatch = function _arraysMatch(a1, a2) {
234    var i = a1.length,
235        match = i === a2.length;
236
237    while (match && i-- && a1[i] === a2[i]) {}
238
239    return i < 0;
240  },
241      _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {
242    if (firstProp === void 0) {
243      firstProp = "_first";
244    }
245
246    if (lastProp === void 0) {
247      lastProp = "_last";
248    }
249
250    var prev = parent[lastProp],
251        t;
252
253    if (sortBy) {
254      t = child[sortBy];
255
256      while (prev && prev[sortBy] > t) {
257        prev = prev._prev;
258      }
259    }
260
261    if (prev) {
262      child._next = prev._next;
263      prev._next = child;
264    } else {
265      child._next = parent[firstProp];
266      parent[firstProp] = child;
267    }
268
269    if (child._next) {
270      child._next._prev = child;
271    } else {
272      parent[lastProp] = child;
273    }
274
275    child._prev = prev;
276    child.parent = child._dp = parent;
277    return child;
278  },
279      _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {
280    if (firstProp === void 0) {
281      firstProp = "_first";
282    }
283
284    if (lastProp === void 0) {
285      lastProp = "_last";
286    }
287
288    var prev = child._prev,
289        next = child._next;
290
291    if (prev) {
292      prev._next = next;
293    } else if (parent[firstProp] === child) {
294      parent[firstProp] = next;
295    }
296
297    if (next) {
298      next._prev = prev;
299    } else if (parent[lastProp] === child) {
300      parent[lastProp] = prev;
301    }
302
303    child._next = child._prev = child.parent = null;
304  },
305      _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {
306    child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove(child);
307    child._act = 0;
308  },
309      _uncache = function _uncache(animation, child) {
310    if (animation && (!child || child._end > animation._dur || child._start < 0)) {
311      var a = animation;
312
313      while (a) {
314        a._dirty = 1;
315        a = a.parent;
316      }
317    }
318
319    return animation;
320  },
321      _recacheAncestors = function _recacheAncestors(animation) {
322    var parent = animation.parent;
323
324    while (parent && parent.parent) {
325      parent._dirty = 1;
326      parent.totalDuration();
327      parent = parent.parent;
328    }
329
330    return animation;
331  },
332      _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {
333    return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);
334  },
335      _elapsedCycleDuration = function _elapsedCycleDuration(animation) {
336    return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;
337  },
338      _animationCycle = function _animationCycle(tTime, cycleDuration) {
339    var whole = Math.floor(tTime /= cycleDuration);
340    return tTime && whole === tTime ? whole - 1 : whole;
341  },
342      _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {
343    return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);
344  },
345      _setEnd = function _setEnd(animation) {
346    return animation._end = _round(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));
347  },
348      _alignPlayhead = function _alignPlayhead(animation, totalTime) {
349    var parent = animation._dp;
350
351    if (parent && parent.smoothChildTiming && animation._ts) {
352      animation._start = _round(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));
353
354      _setEnd(animation);
355
356      parent._dirty || _uncache(parent, animation);
357    }
358
359    return animation;
360  },
361      _postAddChecks = function _postAddChecks(timeline, child) {
362    var t;
363
364    if (child._time || child._initted && !child._dur) {
365      t = _parentToChildTotalTime(timeline.rawTime(), child);
366
367      if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {
368        child.render(t, true);
369      }
370    }
371
372    if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {
373      if (timeline._dur < timeline.duration()) {
374        t = timeline;
375
376        while (t._dp) {
377          t.rawTime() >= 0 && t.totalTime(t._tTime);
378          t = t._dp;
379        }
380      }
381
382      timeline._zTime = -_tinyNum;
383    }
384  },
385      _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) {
386    child.parent && _removeFromParent(child);
387    child._start = _round((_isNumber(position) ? position : position || timeline !== _globalTimeline ? _parsePosition(timeline, position, child) : timeline._time) + child._delay);
388    child._end = _round(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));
389
390    _addLinkedListItem(timeline, child, "_first", "_last", timeline._sort ? "_start" : 0);
391
392    _isFromOrFromStart(child) || (timeline._recent = child);
393    skipChecks || _postAddChecks(timeline, child);
394    return timeline;
395  },
396      _scrollTrigger = function _scrollTrigger(animation, trigger) {
397    return (_globals.ScrollTrigger || _missingPlugin("scrollTrigger", trigger)) && _globals.ScrollTrigger.create(trigger, animation);
398  },
399      _attemptInitTween = function _attemptInitTween(tween, totalTime, force, suppressEvents) {
400    _initTween(tween, totalTime);
401
402    if (!tween._initted) {
403      return 1;
404    }
405
406    if (!force && tween._pt && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {
407      _lazyTweens.push(tween);
408
409      tween._lazy = [totalTime, suppressEvents];
410      return 1;
411    }
412  },
413      _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart(_ref) {
414    var parent = _ref.parent;
415    return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent));
416  },
417      _isFromOrFromStart = function _isFromOrFromStart(_ref2) {
418    var data = _ref2.data;
419    return data === "isFromStart" || data === "isStart";
420  },
421      _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {
422    var prevRatio = tween.ratio,
423        ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1,
424        repeatDelay = tween._rDelay,
425        tTime = 0,
426        pt,
427        iteration,
428        prevIteration;
429
430    if (repeatDelay && tween._repeat) {
431      tTime = _clamp(0, tween._tDur, totalTime);
432      iteration = _animationCycle(tTime, repeatDelay);
433      prevIteration = _animationCycle(tween._tTime, repeatDelay);
434      tween._yoyo && iteration & 1 && (ratio = 1 - ratio);
435
436      if (iteration !== prevIteration) {
437        prevRatio = 1 - ratio;
438        tween.vars.repeatRefresh && tween._initted && tween.invalidate();
439      }
440    }
441
442    if (ratio !== prevRatio || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {
443      if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents)) {
444        return;
445      }
446
447      prevIteration = tween._zTime;
448      tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0);
449      suppressEvents || (suppressEvents = totalTime && !prevIteration);
450      tween.ratio = ratio;
451      tween._from && (ratio = 1 - ratio);
452      tween._time = 0;
453      tween._tTime = tTime;
454      pt = tween._pt;
455
456      while (pt) {
457        pt.r(ratio, pt.d);
458        pt = pt._next;
459      }
460
461      tween._startAt && totalTime < 0 && tween._startAt.render(totalTime, true, true);
462      tween._onUpdate && !suppressEvents && _callback(tween, "onUpdate");
463      tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, "onRepeat");
464
465      if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {
466        ratio && _removeFromParent(tween, 1);
467
468        if (!suppressEvents) {
469          _callback(tween, ratio ? "onComplete" : "onReverseComplete", true);
470
471          tween._prom && tween._prom();
472        }
473      }
474    } else if (!tween._zTime) {
475      tween._zTime = totalTime;
476    }
477  },
478      _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {
479    var child;
480
481    if (time > prevTime) {
482      child = animation._first;
483
484      while (child && child._start <= time) {
485        if (!child._dur && child.data === "isPause" && child._start > prevTime) {
486          return child;
487        }
488
489        child = child._next;
490      }
491    } else {
492      child = animation._last;
493
494      while (child && child._start >= time) {
495        if (!child._dur && child.data === "isPause" && child._start < prevTime) {
496          return child;
497        }
498
499        child = child._prev;
500      }
501    }
502  },
503      _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) {
504    var repeat = animation._repeat,
505        dur = _round(duration) || 0,
506        totalProgress = animation._tTime / animation._tDur;
507    totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);
508    animation._dur = dur;
509    animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _round(dur * (repeat + 1) + animation._rDelay * repeat);
510    totalProgress && !leavePlayhead ? _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress) : animation.parent && _setEnd(animation);
511    skipUncache || _uncache(animation.parent, animation);
512    return animation;
513  },
514      _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {
515    return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);
516  },
517      _zeroPosition = {
518    _start: 0,
519    endTime: _emptyFunc,
520    totalDuration: _emptyFunc
521  },
522      _parsePosition = function _parsePosition(animation, position, percentAnimation) {
523    var labels = animation.labels,
524        recent = animation._recent || _zeroPosition,
525        clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,
526        i,
527        offset,
528        isPercent;
529
530    if (_isString(position) && (isNaN(position) || position in labels)) {
531      offset = position.charAt(0);
532      isPercent = position.substr(-1) === "%";
533      i = position.indexOf("=");
534
535      if (offset === "<" || offset === ">") {
536        i >= 0 && (position = position.replace(/=/, ""));
537        return (offset === "<" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);
538      }
539
540      if (i < 0) {
541        position in labels || (labels[position] = clippedDuration);
542        return labels[position];
543      }
544
545      offset = parseFloat(position.charAt(i - 1) + position.substr(i + 1));
546
547      if (isPercent && percentAnimation) {
548        offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();
549      }
550
551      return i > 1 ? _parsePosition(animation, position.substr(0, i - 1), percentAnimation) + offset : clippedDuration + offset;
552    }
553
554    return position == null ? clippedDuration : +position;
555  },
556      _createTweenType = function _createTweenType(type, params, timeline) {
557    var isLegacy = _isNumber(params[1]),
558        varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),
559        vars = params[varsIndex],
560        irVars,
561        parent;
562
563    isLegacy && (vars.duration = params[1]);
564    vars.parent = timeline;
565
566    if (type) {
567      irVars = vars;
568      parent = timeline;
569
570      while (parent && !("immediateRender" in irVars)) {
571        irVars = parent.vars.defaults || {};
572        parent = _isNotFalse(parent.vars.inherit) && parent.parent;
573      }
574
575      vars.immediateRender = _isNotFalse(irVars.immediateRender);
576      type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1];
577    }
578
579    return new Tween(params[0], vars, params[varsIndex + 1]);
580  },
581      _conditionalReturn = function _conditionalReturn(value, func) {
582    return value || value === 0 ? func(value) : func;
583  },
584      _clamp = function _clamp(min, max, value) {
585    return value < min ? min : value > max ? max : value;
586  },
587      getUnit = function getUnit(value) {
588    if (typeof value !== "string") {
589      return "";
590    }
591
592    var v = _unitExp.exec(value);
593
594    return v ? value.substr(v.index + v[0].length) : "";
595  },
596      clamp = function clamp(min, max, value) {
597    return _conditionalReturn(value, function (v) {
598      return _clamp(min, max, v);
599    });
600  },
601      _slice = [].slice,
602      _isArrayLike = function _isArrayLike(value, nonEmpty) {
603    return value && _isObject(value) && "length" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;
604  },
605      _flatten = function _flatten(ar, leaveStrings, accumulator) {
606    if (accumulator === void 0) {
607      accumulator = [];
608    }
609
610    return ar.forEach(function (value) {
611      var _accumulator;
612
613      return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);
614    }) || accumulator;
615  },
616      toArray = function toArray(value, scope, leaveStrings) {
617    return _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call((scope || _doc).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];
618  },
619      selector = function selector(value) {
620    value = toArray(value)[0] || _warn("Invalid scope") || {};
621    return function (v) {
622      var el = value.current || value.nativeElement || value;
623      return toArray(v, el.querySelectorAll ? el : el === value ? _warn("Invalid scope") || _doc.createElement("div") : value);
624    };
625  },
626      shuffle = function shuffle(a) {
627    return a.sort(function () {
628      return .5 - Math.random();
629    });
630  },
631      distribute = function distribute(v) {
632    if (_isFunction(v)) {
633      return v;
634    }
635
636    var vars = _isObject(v) ? v : {
637      each: v
638    },
639        ease = _parseEase(vars.ease),
640        from = vars.from || 0,
641        base = parseFloat(vars.base) || 0,
642        cache = {},
643        isDecimal = from > 0 && from < 1,
644        ratios = isNaN(from) || isDecimal,
645        axis = vars.axis,
646        ratioX = from,
647        ratioY = from;
648
649    if (_isString(from)) {
650      ratioX = ratioY = {
651        center: .5,
652        edges: .5,
653        end: 1
654      }[from] || 0;
655    } else if (!isDecimal && ratios) {
656      ratioX = from[0];
657      ratioY = from[1];
658    }
659
660    return function (i, target, a) {
661      var l = (a || vars).length,
662          distances = cache[l],
663          originX,
664          originY,
665          x,
666          y,
667          d,
668          j,
669          max,
670          min,
671          wrapAt;
672
673      if (!distances) {
674        wrapAt = vars.grid === "auto" ? 0 : (vars.grid || [1, _bigNum])[1];
675
676        if (!wrapAt) {
677          max = -_bigNum;
678
679          while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}
680
681          wrapAt--;
682        }
683
684        distances = cache[l] = [];
685        originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;
686        originY = ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;
687        max = 0;
688        min = _bigNum;
689
690        for (j = 0; j < l; j++) {
691          x = j % wrapAt - originX;
692          y = originY - (j / wrapAt | 0);
693          distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === "y" ? y : x);
694          d > max && (max = d);
695          d < min && (min = d);
696        }
697
698        from === "random" && shuffle(distances);
699        distances.max = max - min;
700        distances.min = min;
701        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);
702        distances.b = l < 0 ? base - l : base;
703        distances.u = getUnit(vars.amount || vars.each) || 0;
704        ease = ease && l < 0 ? _invertEase(ease) : ease;
705      }
706
707      l = (distances[i] - distances.min) / distances.max || 0;
708      return _round(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u;
709    };
710  },
711      _roundModifier = function _roundModifier(v) {
712    var p = v < 1 ? Math.pow(10, (v + "").length - 2) : 1;
713    return function (raw) {
714      var n = Math.round(parseFloat(raw) / v) * v * p;
715      return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw));
716    };
717  },
718      snap = function snap(snapTo, value) {
719    var isArray = _isArray(snapTo),
720        radius,
721        is2D;
722
723    if (!isArray && _isObject(snapTo)) {
724      radius = isArray = snapTo.radius || _bigNum;
725
726      if (snapTo.values) {
727        snapTo = toArray(snapTo.values);
728
729        if (is2D = !_isNumber(snapTo[0])) {
730          radius *= radius;
731        }
732      } else {
733        snapTo = _roundModifier(snapTo.increment);
734      }
735    }
736
737    return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {
738      is2D = snapTo(raw);
vendor: 4,697 bytes, lines 739-877
739      return Math.abs(is2D - raw) <= radius ? is2D : raw;
740    } : function (raw) {
741      var x = parseFloat(is2D ? raw.x : raw),
742          y = parseFloat(is2D ? raw.y : 0),
743          min = _bigNum,
744          closest = 0,
745          i = snapTo.length,
746          dx,
747          dy;
748
749      while (i--) {
750        if (is2D) {
751          dx = snapTo[i].x - x;
752          dy = snapTo[i].y - y;
753          dx = dx * dx + dy * dy;
754        } else {
755          dx = Math.abs(snapTo[i] - x);
756        }
757
758        if (dx < min) {
759          min = dx;
760          closest = i;
761        }
762      }
763
764      closest = !radius || min <= radius ? snapTo[closest] : raw;
765      return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);
766    });
767  },
768      random = function random(min, max, roundingIncrement, returnFunction) {
769    return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {
770      return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + "").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;
771    });
772  },
773      pipe = function pipe() {
774    for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {
775      functions[_key] = arguments[_key];
776    }
777
778    return function (value) {
779      return functions.reduce(function (v, f) {
780        return f(v);
781      }, value);
782    };
783  },
784      unitize = function unitize(func, unit) {
785    return function (value) {
786      return func(parseFloat(value)) + (unit || getUnit(value));
787    };
788  },
789      normalize = function normalize(min, max, value) {
790    return mapRange(min, max, 0, 1, value);
791  },
792      _wrapArray = function _wrapArray(a, wrapper, value) {
793    return _conditionalReturn(value, function (index) {
794      return a[~~wrapper(index)];
795    });
796  },
797      wrap = function wrap(min, max, value) {
798    var range = max - min;
799    return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {
800      return (range + (value - min) % range) % range + min;
801    });
802  },
803      wrapYoyo = function wrapYoyo(min, max, value) {
804    var range = max - min,
805        total = range * 2;
806    return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {
807      value = (total + (value - min) % total) % total || 0;
808      return min + (value > range ? total - value : value);
809    });
810  },
811      _replaceRandom = function _replaceRandom(value) {
812    var prev = 0,
813        s = "",
814        i,
815        nums,
816        end,
817        isArray;
818
819    while (~(i = value.indexOf("random(", prev))) {
820      end = value.indexOf(")", i);
821      isArray = value.charAt(i + 7) === "[";
822      nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);
823      s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);
824      prev = end + 1;
825    }
826
827    return s + value.substr(prev, value.length - prev);
828  },
829      mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {
830    var inRange = inMax - inMin,
831        outRange = outMax - outMin;
832    return _conditionalReturn(value, function (value) {
833      return outMin + ((value - inMin) / inRange * outRange || 0);
834    });
835  },
836      interpolate = function interpolate(start, end, progress, mutate) {
837    var func = isNaN(start + end) ? 0 : function (p) {
838      return (1 - p) * start + p * end;
839    };
840
841    if (!func) {
842      var isString = _isString(start),
843          master = {},
844          p,
845          i,
846          interpolators,
847          l,
848          il;
849
850      progress === true && (mutate = 1) && (progress = null);
851
852      if (isString) {
853        start = {
854          p: start
855        };
856        end = {
857          p: end
858        };
859      } else if (_isArray(start) && !_isArray(end)) {
860        interpolators = [];
861        l = start.length;
862        il = l - 2;
863
864        for (i = 1; i < l; i++) {
865          interpolators.push(interpolate(start[i - 1], start[i]));
866        }
867
868        l--;
869
870        func = function func(p) {
871          p *= l;
872          var i = Math.min(il, ~~p);
873          return interpolators[i](p - i);
874        };
875
876        progress = end;
877      } else if (!mutate) {
vendor: 8,587 bytes, lines 878-1190
878        start = _merge(_isArray(start) ? [] : {}, start);
879      }
880
881      if (!interpolators) {
882        for (p in end) {
883          _addPropTween.call(master, start, p, "get", end[p]);
884        }
885
886        func = function func(p) {
887          return _renderPropTweens(p, master) || (isString ? start.p : start);
888        };
889      }
890    }
891
892    return _conditionalReturn(progress, func);
893  },
894      _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {
895    var labels = timeline.labels,
896        min = _bigNum,
897        p,
898        distance,
899        label;
900
901    for (p in labels) {
902      distance = labels[p] - fromTime;
903
904      if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {
905        label = p;
906        min = distance;
907      }
908    }
909
910    return label;
911  },
912      _callback = function _callback(animation, type, executeLazyFirst) {
913    var v = animation.vars,
914        callback = v[type],
915        params,
916        scope;
917
918    if (!callback) {
919      return;
920    }
921
922    params = v[type + "Params"];
923    scope = v.callbackScope || animation;
924    executeLazyFirst && _lazyTweens.length && _lazyRender();
925    return params ? callback.apply(scope, params) : callback.call(scope);
926  },
927      _interrupt = function _interrupt(animation) {
928    _removeFromParent(animation);
929
930    animation.scrollTrigger && animation.scrollTrigger.kill(false);
931    animation.progress() < 1 && _callback(animation, "onInterrupt");
932    return animation;
933  },
934      _quickTween,
935      _createPlugin = function _createPlugin(config) {
936    config = !config.name && config["default"] || config;
937
938    var name = config.name,
939        isFunc = _isFunction(config),
940        Plugin = name && !isFunc && config.init ? function () {
941      this._props = [];
942    } : config,
943        instanceDefaults = {
944      init: _emptyFunc,
945      render: _renderPropTweens,
946      add: _addPropTween,
947      kill: _killPropTweensOf,
948      modifier: _addPluginModifier,
949      rawVars: 0
950    },
951        statics = {
952      targetTest: 0,
953      get: 0,
954      getSetter: _getSetter,
955      aliases: {},
956      register: 0
957    };
958
959    _wake();
960
961    if (config !== Plugin) {
962      if (_plugins[name]) {
963        return;
964      }
965
966      _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics));
967
968      _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics)));
969
970      _plugins[Plugin.prop = name] = Plugin;
971
972      if (config.targetTest) {
973        _harnessPlugins.push(Plugin);
974
975        _reservedProps[name] = 1;
976      }
977
978      name = (name === "css" ? "CSS" : name.charAt(0).toUpperCase() + name.substr(1)) + "Plugin";
979    }
980
981    _addGlobal(name, Plugin);
982
983    config.register && config.register(gsap, Plugin, PropTween);
984  },
985      _255 = 255,
986      _colorLookup = {
987    aqua: [0, _255, _255],
988    lime: [0, _255, 0],
989    silver: [192, 192, 192],
990    black: [0, 0, 0],
991    maroon: [128, 0, 0],
992    teal: [0, 128, 128],
993    blue: [0, 0, _255],
994    navy: [0, 0, 128],
995    white: [_255, _255, _255],
996    olive: [128, 128, 0],
997    yellow: [_255, _255, 0],
998    orange: [_255, 165, 0],
999    gray: [128, 128, 128],
1000    purple: [128, 0, 128],
1001    green: [0, 128, 0],
1002    red: [_255, 0, 0],
1003    pink: [_255, 192, 203],
1004    cyan: [0, _255, _255],
1005    transparent: [_255, _255, _255, 0]
1006  },
1007      _hue = function _hue(h, m1, m2) {
1008    h = h < 0 ? h + 1 : h > 1 ? h - 1 : h;
1009    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;
1010  },
1011      splitColor = function splitColor(v, toHSL, forceAlpha) {
1012    var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,
1013        r,
1014        g,
1015        b,
1016        h,
1017        s,
1018        l,
1019        max,
1020        min,
1021        d,
1022        wasHSL;
1023
1024    if (!a) {
1025      if (v.substr(-1) === ",") {
1026        v = v.substr(0, v.length - 1);
1027      }
1028
1029      if (_colorLookup[v]) {
1030        a = _colorLookup[v];
1031      } else if (v.charAt(0) === "#") {
1032        if (v.length < 6) {
1033          r = v.charAt(1);
1034          g = v.charAt(2);
1035          b = v.charAt(3);
1036          v = "#" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : "");
1037        }
1038
1039        if (v.length === 9) {
1040          a = parseInt(v.substr(1, 6), 16);
1041          return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];
1042        }
1043
1044        v = parseInt(v.substr(1), 16);
1045        a = [v >> 16, v >> 8 & _255, v & _255];
1046      } else if (v.substr(0, 3) === "hsl") {
1047        a = wasHSL = v.match(_strictNumExp);
1048
1049        if (!toHSL) {
1050          h = +a[0] % 360 / 360;
1051          s = +a[1] / 100;
1052          l = +a[2] / 100;
1053          g = l <= .5 ? l * (s + 1) : l + s - l * s;
1054          r = l * 2 - g;
1055          a.length > 3 && (a[3] *= 1);
1056          a[0] = _hue(h + 1 / 3, r, g);
1057          a[1] = _hue(h, r, g);
1058          a[2] = _hue(h - 1 / 3, r, g);
1059        } else if (~v.indexOf("=")) {
1060          a = v.match(_numExp);
1061          forceAlpha && a.length < 4 && (a[3] = 1);
1062          return a;
1063        }
1064      } else {
1065        a = v.match(_strictNumExp) || _colorLookup.transparent;
1066      }
1067
1068      a = a.map(Number);
1069    }
1070
1071    if (toHSL && !wasHSL) {
1072      r = a[0] / _255;
1073      g = a[1] / _255;
1074      b = a[2] / _255;
1075      max = Math.max(r, g, b);
1076      min = Math.min(r, g, b);
1077      l = (max + min) / 2;
1078
1079      if (max === min) {
1080        h = s = 0;
1081      } else {
1082        d = max - min;
1083        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
1084        h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;
1085        h *= 60;
1086      }
1087
1088      a[0] = ~~(h + .5);
1089      a[1] = ~~(s * 100 + .5);
1090      a[2] = ~~(l * 100 + .5);
1091    }
1092
1093    forceAlpha && a.length < 4 && (a[3] = 1);
1094    return a;
1095  },
1096      _colorOrderData = function _colorOrderData(v) {
1097    var values = [],
1098        c = [],
1099        i = -1;
1100    v.split(_colorExp).forEach(function (v) {
1101      var a = v.match(_numWithUnitExp) || [];
1102      values.push.apply(values, a);
1103      c.push(i += a.length + 1);
1104    });
1105    values.c = c;
1106    return values;
1107  },
1108      _formatColors = function _formatColors(s, toHSL, orderMatchData) {
1109    var result = "",
1110        colors = (s + result).match(_colorExp),
1111        type = toHSL ? "hsla(" : "rgba(",
1112        i = 0,
1113        c,
1114        shell,
1115        d,
1116        l;
1117
1118    if (!colors) {
1119      return s;
1120    }
1121
1122    colors = colors.map(function (color) {
1123      return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + "," + color[1] + "%," + color[2] + "%," + color[3] : color.join(",")) + ")";
1124    });
1125
1126    if (orderMatchData) {
1127      d = _colorOrderData(s);
1128      c = orderMatchData.c;
1129
1130      if (c.join(result) !== d.c.join(result)) {
1131        shell = s.replace(_colorExp, "1").split(_numWithUnitExp);
1132        l = shell.length - 1;
1133
1134        for (; i < l; i++) {
1135          result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + "0,0,0,0)" : (d.length ? d : colors.length ? colors : orderMatchData).shift());
1136        }
1137      }
1138    }
1139
1140    if (!shell) {
1141      shell = s.split(_colorExp);
1142      l = shell.length - 1;
1143
1144      for (; i < l; i++) {
1145        result += shell[i] + colors[i];
1146      }
1147    }
1148
1149    return result + shell[l];
1150  },
1151      _colorExp = function () {
1152    var s = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3,4}){1,2}\\b",
1153        p;
1154
1155    for (p in _colorLookup) {
1156      s += "|" + p + "\\b";
1157    }
1158
1159    return new RegExp(s + ")", "gi");
1160  }(),
1161      _hslExp = /hsl[a]?\(/,
1162      _colorStringFilter = function _colorStringFilter(a) {
1163    var combined = a.join(" "),
1164        toHSL;
1165    _colorExp.lastIndex = 0;
1166
1167    if (_colorExp.test(combined)) {
1168      toHSL = _hslExp.test(combined);
1169      a[1] = _formatColors(a[1], toHSL);
1170      a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1]));
1171      return true;
1172    }
1173  },
1174      _tickerActive,
1175      _ticker = function () {
1176    var _getTime = Date.now,
1177        _lagThreshold = 500,
1178        _adjustedLag = 33,
1179        _startTime = _getTime(),
1180        _lastUpdate = _startTime,
1181        _gap = 1000 / 240,
1182        _nextTime = _gap,
1183        _listeners = [],
1184        _id,
1185        _req,
1186        _raf,
1187        _self,
1188        _delta,
1189        _i,
1190        _tick = function _tick(v) {
vendor: 5,520 bytes, lines 1191-1364
1191      var elapsed = _getTime() - _lastUpdate,
1192          manual = v === true,
1193          overlap,
1194          dispatch,
1195          time,
1196          frame;
1197
1198      elapsed > _lagThreshold && (_startTime += elapsed - _adjustedLag);
1199      _lastUpdate += elapsed;
1200      time = _lastUpdate - _startTime;
1201      overlap = time - _nextTime;
1202
1203      if (overlap > 0 || manual) {
1204        frame = ++_self.frame;
1205        _delta = time - _self.time * 1000;
1206        _self.time = time = time / 1000;
1207        _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);
1208        dispatch = 1;
1209      }
1210
1211      manual || (_id = _req(_tick));
1212
1213      if (dispatch) {
1214        for (_i = 0; _i < _listeners.length; _i++) {
1215          _listeners[_i](time, _delta, frame, v);
1216        }
1217      }
1218    };
1219
1220    _self = {
1221      time: 0,
1222      frame: 0,
1223      tick: function tick() {
1224        _tick(true);
1225      },
1226      deltaRatio: function deltaRatio(fps) {
1227        return _delta / (1000 / (fps || 60));
1228      },
1229      wake: function wake() {
1230        if (_coreReady) {
1231          if (!_coreInitted && _windowExists()) {
1232            _win = _coreInitted = window;
1233            _doc = _win.document || {};
1234            _globals.gsap = gsap;
1235            (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);
1236
1237            _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});
1238
1239            _raf = _win.requestAnimationFrame;
1240          }
1241
1242          _id && _self.sleep();
1243
1244          _req = _raf || function (f) {
1245            return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0);
1246          };
1247
1248          _tickerActive = 1;
1249
1250          _tick(2);
1251        }
1252      },
1253      sleep: function sleep() {
1254        (_raf ? _win.cancelAnimationFrame : clearTimeout)(_id);
1255        _tickerActive = 0;
1256        _req = _emptyFunc;
1257      },
1258      lagSmoothing: function lagSmoothing(threshold, adjustedLag) {
1259        _lagThreshold = threshold || 1 / _tinyNum;
1260        _adjustedLag = Math.min(adjustedLag, _lagThreshold, 0);
1261      },
1262      fps: function fps(_fps) {
1263        _gap = 1000 / (_fps || 240);
1264        _nextTime = _self.time * 1000 + _gap;
1265      },
1266      add: function add(callback) {
1267        _listeners.indexOf(callback) < 0 && _listeners.push(callback);
1268
1269        _wake();
1270      },
1271      remove: function remove(callback) {
1272        var i;
1273        ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;
1274      },
1275      _listeners: _listeners
1276    };
1277    return _self;
1278  }(),
1279      _wake = function _wake() {
1280    return !_tickerActive && _ticker.wake();
1281  },
1282      _easeMap = {},
1283      _customEaseExp = /^[\d.\-M][\d.\-,\s]/,
1284      _quotesExp = /["']/g,
1285      _parseObjectInString = function _parseObjectInString(value) {
1286    var obj = {},
1287        split = value.substr(1, value.length - 3).split(":"),
1288        key = split[0],
1289        i = 1,
1290        l = split.length,
1291        index,
1292        val,
1293        parsedVal;
1294
1295    for (; i < l; i++) {
1296      val = split[i];
1297      index = i !== l - 1 ? val.lastIndexOf(",") : val.length;
1298      parsedVal = val.substr(0, index);
1299      obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, "").trim() : +parsedVal;
1300      key = val.substr(index + 1).trim();
1301    }
1302
1303    return obj;
1304  },
1305      _valueInParentheses = function _valueInParentheses(value) {
1306    var open = value.indexOf("(") + 1,
1307        close = value.indexOf(")"),
1308        nested = value.indexOf("(", open);
1309    return value.substring(open, ~nested && nested < close ? value.indexOf(")", close + 1) : close);
1310  },
1311      _configEaseFromString = function _configEaseFromString(name) {
1312    var split = (name + "").split("("),
1313        ease = _easeMap[split[0]];
1314    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;
1315  },
1316      _invertEase = function _invertEase(ease) {
1317    return function (p) {
1318      return 1 - ease(1 - p);
1319    };
1320  },
1321      _propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) {
1322    var child = timeline._first,
1323        ease;
1324
1325    while (child) {
1326      if (child instanceof Timeline) {
1327        _propagateYoyoEase(child, isYoyo);
1328      } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {
1329        if (child.timeline) {
1330          _propagateYoyoEase(child.timeline, isYoyo);
1331        } else {
1332          ease = child._ease;
1333          child._ease = child._yEase;
1334          child._yEase = ease;
1335          child._yoyo = isYoyo;
1336        }
1337      }
1338
1339      child = child._next;
1340    }
1341  },
1342      _parseEase = function _parseEase(ease, defaultEase) {
1343    return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;
1344  },
1345      _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {
1346    if (easeOut === void 0) {
1347      easeOut = function easeOut(p) {
1348        return 1 - easeIn(1 - p);
1349      };
1350    }
1351
1352    if (easeInOut === void 0) {
1353      easeInOut = function easeInOut(p) {
1354        return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;
1355      };
1356    }
1357
1358    var ease = {
1359      easeIn: easeIn,
1360      easeOut: easeOut,
1361      easeInOut: easeInOut
1362    },
1363        lowercaseName;
1364
vendor: 4,190 bytes, lines 1365-1495
1365    _forEachName(names, function (name) {
1366      _easeMap[name] = _globals[name] = ease;
1367      _easeMap[lowercaseName = name.toLowerCase()] = easeOut;
1368
1369      for (var p in ease) {
1370        _easeMap[lowercaseName + (p === "easeIn" ? ".in" : p === "easeOut" ? ".out" : ".inOut")] = _easeMap[name + "." + p] = ease[p];
1371      }
1372    });
1373
1374    return ease;
1375  },
1376      _easeInOutFromOut = function _easeInOutFromOut(easeOut) {
1377    return function (p) {
1378      return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;
1379    };
1380  },
1381      _configElastic = function _configElastic(type, amplitude, period) {
1382    var p1 = amplitude >= 1 ? amplitude : 1,
1383        p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),
1384        p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),
1385        easeOut = function easeOut(p) {
1386      return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;
1387    },
1388        ease = type === "out" ? easeOut : type === "in" ? function (p) {
1389      return 1 - easeOut(1 - p);
1390    } : _easeInOutFromOut(easeOut);
1391
1392    p2 = _2PI / p2;
1393
1394    ease.config = function (amplitude, period) {
1395      return _configElastic(type, amplitude, period);
1396    };
1397
1398    return ease;
1399  },
1400      _configBack = function _configBack(type, overshoot) {
1401    if (overshoot === void 0) {
1402      overshoot = 1.70158;
1403    }
1404
1405    var easeOut = function easeOut(p) {
1406      return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;
1407    },
1408        ease = type === "out" ? easeOut : type === "in" ? function (p) {
1409      return 1 - easeOut(1 - p);
1410    } : _easeInOutFromOut(easeOut);
1411
1412    ease.config = function (overshoot) {
1413      return _configBack(type, overshoot);
1414    };
1415
1416    return ease;
1417  };
1418
1419  _forEachName("Linear,Quad,Cubic,Quart,Quint,Strong", function (name, i) {
1420    var power = i < 5 ? i + 1 : i;
1421
1422    _insertEase(name + ",Power" + (power - 1), i ? function (p) {
1423      return Math.pow(p, power);
1424    } : function (p) {
1425      return p;
1426    }, function (p) {
1427      return 1 - Math.pow(1 - p, power);
1428    }, function (p) {
1429      return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;
1430    });
1431  });
1432
1433  _easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;
1434
1435  _insertEase("Elastic", _configElastic("in"), _configElastic("out"), _configElastic());
1436
1437  (function (n, c) {
1438    var n1 = 1 / c,
1439        n2 = 2 * n1,
1440        n3 = 2.5 * n1,
1441        easeOut = function easeOut(p) {
1442      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;
1443    };
1444
1445    _insertEase("Bounce", function (p) {
1446      return 1 - easeOut(1 - p);
1447    }, easeOut);
1448  })(7.5625, 2.75);
1449
1450  _insertEase("Expo", function (p) {
1451    return p ? Math.pow(2, 10 * (p - 1)) : 0;
1452  });
1453
1454  _insertEase("Circ", function (p) {
1455    return -(_sqrt(1 - p * p) - 1);
1456  });
1457
1458  _insertEase("Sine", function (p) {
1459    return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;
1460  });
1461
1462  _insertEase("Back", _configBack("in"), _configBack("out"), _configBack());
1463
1464  _easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {
1465    config: function config(steps, immediateStart) {
1466      if (steps === void 0) {
1467        steps = 1;
1468      }
1469
1470      var p1 = 1 / steps,
1471          p2 = steps + (immediateStart ? 0 : 1),
1472          p3 = immediateStart ? 1 : 0,
1473          max = 1 - _tinyNum;
1474      return function (p) {
1475        return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;
1476      };
1477    }
1478  };
1479  _defaults.ease = _easeMap["quad.out"];
1480
1481  _forEachName("onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt", function (name) {
1482    return _callbackNames += name + "," + name + "Params,";
1483  });
1484
1485  var GSCache = function GSCache(target, harness) {
1486    this.id = _gsID++;
1487    target._gsap = this;
1488    this.target = target;
1489    this.harness = harness;
1490    this.get = harness ? harness.get : _getProperty;
1491    this.set = harness ? harness.getSetter : _getSetter;
1492  };
1493  var Animation = function () {
1494    function Animation(vars) {
1495      this.vars = vars;
vendor: 5,018 bytes, lines 1496-1630
1496      this._delay = +vars.delay || 0;
1497
1498      if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {
1499        this._rDelay = vars.repeatDelay || 0;
1500        this._yoyo = !!vars.yoyo || !!vars.yoyoEase;
1501      }
1502
1503      this._ts = 1;
1504
1505      _setDuration(this, +vars.duration, 1, 1);
1506
1507      this.data = vars.data;
1508      _tickerActive || _ticker.wake();
1509    }
1510
1511    var _proto = Animation.prototype;
1512
1513    _proto.delay = function delay(value) {
1514      if (value || value === 0) {
1515        this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);
1516        this._delay = value;
1517        return this;
1518      }
1519
1520      return this._delay;
1521    };
1522
1523    _proto.duration = function duration(value) {
1524      return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;
1525    };
1526
1527    _proto.totalDuration = function totalDuration(value) {
1528      if (!arguments.length) {
1529        return this._tDur;
1530      }
1531
1532      this._dirty = 0;
1533      return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));
1534    };
1535
1536    _proto.totalTime = function totalTime(_totalTime, suppressEvents) {
1537      _wake();
1538
1539      if (!arguments.length) {
1540        return this._tTime;
1541      }
1542
1543      var parent = this._dp;
1544
1545      if (parent && parent.smoothChildTiming && this._ts) {
1546        _alignPlayhead(this, _totalTime);
1547
1548        !parent._dp || parent.parent || _postAddChecks(parent, this);
1549
1550        while (parent.parent) {
1551          if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {
1552            parent.totalTime(parent._tTime, true);
1553          }
1554
1555          parent = parent.parent;
1556        }
1557
1558        if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {
1559          _addToTimeline(this._dp, this, this._start - this._delay);
1560        }
1561      }
1562
1563      if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {
1564        this._ts || (this._pTime = _totalTime);
1565
1566        _lazySafeRender(this, _totalTime, suppressEvents);
1567      }
1568
1569      return this;
1570    };
1571
1572    _proto.time = function time(value, suppressEvents) {
1573      return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time;
1574    };
1575
1576    _proto.totalProgress = function totalProgress(value, suppressEvents) {
1577      return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.ratio;
1578    };
1579
1580    _proto.progress = function progress(value, suppressEvents) {
1581      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;
1582    };
1583
1584    _proto.iteration = function iteration(value, suppressEvents) {
1585      var cycleDuration = this.duration() + this._rDelay;
1586
1587      return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;
1588    };
1589
1590    _proto.timeScale = function timeScale(value) {
1591      if (!arguments.length) {
1592        return this._rts === -_tinyNum ? 0 : this._rts;
1593      }
1594
1595      if (this._rts === value) {
1596        return this;
1597      }
1598
1599      var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime;
1600      this._rts = +value || 0;
1601      this._ts = this._ps || value === -_tinyNum ? 0 : this._rts;
1602      return _recacheAncestors(this.totalTime(_clamp(-this._delay, this._tDur, tTime), true));
1603    };
1604
1605    _proto.paused = function paused(value) {
1606      if (!arguments.length) {
1607        return this._ps;
1608      }
1609
1610      if (this._ps !== value) {
1611        this._ps = value;
1612
1613        if (value) {
1614          this._pTime = this._tTime || Math.max(-this._delay, this.rawTime());
1615          this._ts = this._act = 0;
1616        } else {
1617          _wake();
1618
1619          this._ts = this._rts;
1620          this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum));
1621        }
1622      }
1623
1624      return this;
1625    };
1626
1627    _proto.startTime = function startTime(value) {
1628      if (arguments.length) {
1629        this._start = value;
1630        var parent = this.parent || this._dp;
vendor: 2,984 bytes, lines 1631-1725
1631        parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);
1632        return this;
1633      }
1634
1635      return this._start;
1636    };
1637
1638    _proto.endTime = function endTime(includeRepeats) {
1639      return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts);
1640    };
1641
1642    _proto.rawTime = function rawTime(wrapRepeats) {
1643      var parent = this.parent || this._dp;
1644      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);
1645    };
1646
1647    _proto.globalTime = function globalTime(rawTime) {
1648      var animation = this,
1649          time = arguments.length ? rawTime : animation.rawTime();
1650
1651      while (animation) {
1652        time = animation._start + time / (animation._ts || 1);
1653        animation = animation._dp;
1654      }
1655
1656      return time;
1657    };
1658
1659    _proto.repeat = function repeat(value) {
1660      if (arguments.length) {
1661        this._repeat = value === Infinity ? -2 : value;
1662        return _onUpdateTotalDuration(this);
1663      }
1664
1665      return this._repeat === -2 ? Infinity : this._repeat;
1666    };
1667
1668    _proto.repeatDelay = function repeatDelay(value) {
1669      if (arguments.length) {
1670        var time = this._time;
1671        this._rDelay = value;
1672
1673        _onUpdateTotalDuration(this);
1674
1675        return time ? this.time(time) : this;
1676      }
1677
1678      return this._rDelay;
1679    };
1680
1681    _proto.yoyo = function yoyo(value) {
1682      if (arguments.length) {
1683        this._yoyo = value;
1684        return this;
1685      }
1686
1687      return this._yoyo;
1688    };
1689
1690    _proto.seek = function seek(position, suppressEvents) {
1691      return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));
1692    };
1693
1694    _proto.restart = function restart(includeDelay, suppressEvents) {
1695      return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));
1696    };
1697
1698    _proto.play = function play(from, suppressEvents) {
1699      from != null && this.seek(from, suppressEvents);
1700      return this.reversed(false).paused(false);
1701    };
1702
1703    _proto.reverse = function reverse(from, suppressEvents) {
1704      from != null && this.seek(from || this.totalDuration(), suppressEvents);
1705      return this.reversed(true).paused(false);
1706    };
1707
1708    _proto.pause = function pause(atTime, suppressEvents) {
1709      atTime != null && this.seek(atTime, suppressEvents);
1710      return this.paused(true);
1711    };
1712
1713    _proto.resume = function resume() {
1714      return this.paused(false);
1715    };
1716
1717    _proto.reversed = function reversed(value) {
1718      if (arguments.length) {
1719        !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0));
1720        return this;
1721      }
1722
1723      return this._rts < 0;
1724    };
1725
vendor: 11,086 bytes, lines 1726-2061
1726    _proto.invalidate = function invalidate() {
1727      this._initted = this._act = 0;
1728      this._zTime = -_tinyNum;
1729      return this;
1730    };
1731
1732    _proto.isActive = function isActive() {
1733      var parent = this.parent || this._dp,
1734          start = this._start,
1735          rawTime;
1736      return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);
1737    };
1738
1739    _proto.eventCallback = function eventCallback(type, callback, params) {
1740      var vars = this.vars;
1741
1742      if (arguments.length > 1) {
1743        if (!callback) {
1744          delete vars[type];
1745        } else {
1746          vars[type] = callback;
1747          params && (vars[type + "Params"] = params);
1748          type === "onUpdate" && (this._onUpdate = callback);
1749        }
1750
1751        return this;
1752      }
1753
1754      return vars[type];
1755    };
1756
1757    _proto.then = function then(onFulfilled) {
1758      var self = this;
1759      return new Promise(function (resolve) {
1760        var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,
1761            _resolve = function _resolve() {
1762          var _then = self.then;
1763          self.then = null;
1764          _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);
1765          resolve(f);
1766          self.then = _then;
1767        };
1768
1769        if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {
1770          _resolve();
1771        } else {
1772          self._prom = _resolve;
1773        }
1774      });
1775    };
1776
1777    _proto.kill = function kill() {
1778      _interrupt(this);
1779    };
1780
1781    return Animation;
1782  }();
1783
1784  _setDefaults(Animation.prototype, {
1785    _time: 0,
1786    _start: 0,
1787    _end: 0,
1788    _tTime: 0,
1789    _tDur: 0,
1790    _dirty: 0,
1791    _repeat: 0,
1792    _yoyo: false,
1793    parent: null,
1794    _initted: false,
1795    _rDelay: 0,
1796    _ts: 1,
1797    _dp: 0,
1798    ratio: 0,
1799    _zTime: -_tinyNum,
1800    _prom: 0,
1801    _ps: false,
1802    _rts: 1
1803  });
1804
1805  var Timeline = function (_Animation) {
1806    _inheritsLoose(Timeline, _Animation);
1807
1808    function Timeline(vars, position) {
1809      var _this;
1810
1811      if (vars === void 0) {
1812        vars = {};
1813      }
1814
1815      _this = _Animation.call(this, vars) || this;
1816      _this.labels = {};
1817      _this.smoothChildTiming = !!vars.smoothChildTiming;
1818      _this.autoRemoveChildren = !!vars.autoRemoveChildren;
1819      _this._sort = _isNotFalse(vars.sortChildren);
1820      _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position);
1821      vars.reversed && _this.reverse();
1822      vars.paused && _this.paused(true);
1823      vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);
1824      return _this;
1825    }
1826
1827    var _proto2 = Timeline.prototype;
1828
1829    _proto2.to = function to(targets, vars, position) {
1830      _createTweenType(0, arguments, this);
1831
1832      return this;
1833    };
1834
1835    _proto2.from = function from(targets, vars, position) {
1836      _createTweenType(1, arguments, this);
1837
1838      return this;
1839    };
1840
1841    _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {
1842      _createTweenType(2, arguments, this);
1843
1844      return this;
1845    };
1846
1847    _proto2.set = function set(targets, vars, position) {
1848      vars.duration = 0;
1849      vars.parent = this;
1850      _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);
1851      vars.immediateRender = !!vars.immediateRender;
1852      new Tween(targets, vars, _parsePosition(this, position), 1);
1853      return this;
1854    };
1855
1856    _proto2.call = function call(callback, params, position) {
1857      return _addToTimeline(this, Tween.delayedCall(0, callback, params), position);
1858    };
1859
1860    _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {
1861      vars.duration = duration;
1862      vars.stagger = vars.stagger || stagger;
1863      vars.onComplete = onCompleteAll;
1864      vars.onCompleteParams = onCompleteAllParams;
1865      vars.parent = this;
1866      new Tween(targets, vars, _parsePosition(this, position));
1867      return this;
1868    };
1869
1870    _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {
1871      vars.runBackwards = 1;
1872      _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);
1873      return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);
1874    };
1875
1876    _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {
1877      toVars.startAt = fromVars;
1878      _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);
1879      return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);
1880    };
1881
1882    _proto2.render = function render(totalTime, suppressEvents, force) {
1883      var prevTime = this._time,
1884          tDur = this._dirty ? this.totalDuration() : this._tDur,
1885          dur = this._dur,
1886          tTime = this !== _globalTimeline && totalTime > tDur - _tinyNum && totalTime >= 0 ? tDur : totalTime < _tinyNum ? 0 : totalTime,
1887          crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),
1888          time,
1889          child,
1890          next,
1891          iteration,
1892          cycleDuration,
1893          prevPaused,
1894          pauseTween,
1895          timeScale,
1896          prevStart,
1897          prevIteration,
1898          yoyo,
1899          isYoyo;
1900
1901      if (tTime !== this._tTime || force || crossingStart) {
1902        if (prevTime !== this._time && dur) {
1903          tTime += this._time - prevTime;
1904          totalTime += this._time - prevTime;
1905        }
1906
1907        time = tTime;
1908        prevStart = this._start;
1909        timeScale = this._ts;
1910        prevPaused = !timeScale;
1911
1912        if (crossingStart) {
1913          dur || (prevTime = this._zTime);
1914          (totalTime || !suppressEvents) && (this._zTime = totalTime);
1915        }
1916
1917        if (this._repeat) {
1918          yoyo = this._yoyo;
1919          cycleDuration = dur + this._rDelay;
1920
1921          if (this._repeat < -1 && totalTime < 0) {
1922            return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);
1923          }
1924
1925          time = _round(tTime % cycleDuration);
1926
1927          if (tTime === tDur) {
1928            iteration = this._repeat;
1929            time = dur;
1930          } else {
1931            iteration = ~~(tTime / cycleDuration);
1932
1933            if (iteration && iteration === tTime / cycleDuration) {
1934              time = dur;
1935              iteration--;
1936            }
1937
1938            time > dur && (time = dur);
1939          }
1940
1941          prevIteration = _animationCycle(this._tTime, cycleDuration);
1942          !prevTime && this._tTime && prevIteration !== iteration && (prevIteration = iteration);
1943
1944          if (yoyo && iteration & 1) {
1945            time = dur - time;
1946            isYoyo = 1;
1947          }
1948
1949          if (iteration !== prevIteration && !this._lock) {
1950            var rewinding = yoyo && prevIteration & 1,
1951                doesWrap = rewinding === (yoyo && iteration & 1);
1952            iteration < prevIteration && (rewinding = !rewinding);
1953            prevTime = rewinding ? 0 : dur;
1954            this._lock = 1;
1955            this.render(prevTime || (isYoyo ? 0 : _round(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;
1956            this._tTime = tTime;
1957            !suppressEvents && this.parent && _callback(this, "onRepeat");
1958            this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);
1959
1960            if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {
1961              return this;
1962            }
1963
1964            dur = this._dur;
1965            tDur = this._tDur;
1966
1967            if (doesWrap) {
1968              this._lock = 2;
1969              prevTime = rewinding ? dur : -0.0001;
1970              this.render(prevTime, true);
1971              this.vars.repeatRefresh && !isYoyo && this.invalidate();
1972            }
1973
1974            this._lock = 0;
1975
1976            if (!this._ts && !prevPaused) {
1977              return this;
1978            }
1979
1980            _propagateYoyoEase(this, isYoyo);
1981          }
1982        }
1983
1984        if (this._hasPause && !this._forcing && this._lock < 2) {
1985          pauseTween = _findNextPauseTween(this, _round(prevTime), _round(time));
1986
1987          if (pauseTween) {
1988            tTime -= time - (time = pauseTween._start);
1989          }
1990        }
1991
1992        this._tTime = tTime;
1993        this._time = time;
1994        this._act = !timeScale;
1995
1996        if (!this._initted) {
1997          this._onUpdate = this.vars.onUpdate;
1998          this._initted = 1;
1999          this._zTime = totalTime;
2000          prevTime = 0;
2001        }
2002
2003        if (!prevTime && time && !suppressEvents) {
2004          _callback(this, "onStart");
2005
2006          if (this._tTime !== tTime) {
2007            return this;
2008          }
2009        }
2010
2011        if (time >= prevTime && totalTime >= 0) {
2012          child = this._first;
2013
2014          while (child) {
2015            next = child._next;
2016
2017            if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {
2018              if (child.parent !== this) {
2019                return this.render(totalTime, suppressEvents, force);
2020              }
2021
2022              child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);
2023
2024              if (time !== this._time || !this._ts && !prevPaused) {
2025                pauseTween = 0;
2026                next && (tTime += this._zTime = -_tinyNum);
2027                break;
2028              }
2029            }
2030
2031            child = next;
2032          }
2033        } else {
2034          child = this._last;
2035          var adjustedTime = totalTime < 0 ? totalTime : time;
2036
2037          while (child) {
2038            next = child._prev;
2039
2040            if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {
2041              if (child.parent !== this) {
2042                return this.render(totalTime, suppressEvents, force);
2043              }
2044
2045              child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force);
2046
2047              if (time !== this._time || !this._ts && !prevPaused) {
2048                pauseTween = 0;
2049                next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum);
2050                break;
2051              }
2052            }
2053
2054            child = next;
2055          }
2056        }
2057
2058        if (pauseTween && !suppressEvents) {
2059          this.pause();
2060          pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;
2061
vendor: 13,387 bytes, lines 2062-2529
2062          if (this._ts) {
2063            this._start = prevStart;
2064
2065            _setEnd(this);
2066
2067            return this.render(totalTime, suppressEvents, force);
2068          }
2069        }
2070
2071        this._onUpdate && !suppressEvents && _callback(this, "onUpdate", true);
2072        if (tTime === tDur && tDur >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {
2073          (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1);
2074
2075          if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {
2076            _callback(this, tTime === tDur && totalTime >= 0 ? "onComplete" : "onReverseComplete", true);
2077
2078            this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();
2079          }
2080        }
2081      }
2082
2083      return this;
2084    };
2085
2086    _proto2.add = function add(child, position) {
2087      var _this2 = this;
2088
2089      _isNumber(position) || (position = _parsePosition(this, position, child));
2090
2091      if (!(child instanceof Animation)) {
2092        if (_isArray(child)) {
2093          child.forEach(function (obj) {
2094            return _this2.add(obj, position);
2095          });
2096          return this;
2097        }
2098
2099        if (_isString(child)) {
2100          return this.addLabel(child, position);
2101        }
2102
2103        if (_isFunction(child)) {
2104          child = Tween.delayedCall(0, child);
2105        } else {
2106          return this;
2107        }
2108      }
2109
2110      return this !== child ? _addToTimeline(this, child, position) : this;
2111    };
2112
2113    _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {
2114      if (nested === void 0) {
2115        nested = true;
2116      }
2117
2118      if (tweens === void 0) {
2119        tweens = true;
2120      }
2121
2122      if (timelines === void 0) {
2123        timelines = true;
2124      }
2125
2126      if (ignoreBeforeTime === void 0) {
2127        ignoreBeforeTime = -_bigNum;
2128      }
2129
2130      var a = [],
2131          child = this._first;
2132
2133      while (child) {
2134        if (child._start >= ignoreBeforeTime) {
2135          if (child instanceof Tween) {
2136            tweens && a.push(child);
2137          } else {
2138            timelines && a.push(child);
2139            nested && a.push.apply(a, child.getChildren(true, tweens, timelines));
2140          }
2141        }
2142
2143        child = child._next;
2144      }
2145
2146      return a;
2147    };
2148
2149    _proto2.getById = function getById(id) {
2150      var animations = this.getChildren(1, 1, 1),
2151          i = animations.length;
2152
2153      while (i--) {
2154        if (animations[i].vars.id === id) {
2155          return animations[i];
2156        }
2157      }
2158    };
2159
2160    _proto2.remove = function remove(child) {
2161      if (_isString(child)) {
2162        return this.removeLabel(child);
2163      }
2164
2165      if (_isFunction(child)) {
2166        return this.killTweensOf(child);
2167      }
2168
2169      _removeLinkedListItem(this, child);
2170
2171      if (child === this._recent) {
2172        this._recent = this._last;
2173      }
2174
2175      return _uncache(this);
2176    };
2177
2178    _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {
2179      if (!arguments.length) {
2180        return this._tTime;
2181      }
2182
2183      this._forcing = 1;
2184
2185      if (!this._dp && this._ts) {
2186        this._start = _round(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));
2187      }
2188
2189      _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);
2190
2191      this._forcing = 0;
2192      return this;
2193    };
2194
2195    _proto2.addLabel = function addLabel(label, position) {
2196      this.labels[label] = _parsePosition(this, position);
2197      return this;
2198    };
2199
2200    _proto2.removeLabel = function removeLabel(label) {
2201      delete this.labels[label];
2202      return this;
2203    };
2204
2205    _proto2.addPause = function addPause(position, callback, params) {
2206      var t = Tween.delayedCall(0, callback || _emptyFunc, params);
2207      t.data = "isPause";
2208      this._hasPause = 1;
2209      return _addToTimeline(this, t, _parsePosition(this, position));
2210    };
2211
2212    _proto2.removePause = function removePause(position) {
2213      var child = this._first;
2214      position = _parsePosition(this, position);
2215
2216      while (child) {
2217        if (child._start === position && child.data === "isPause") {
2218          _removeFromParent(child);
2219        }
2220
2221        child = child._next;
2222      }
2223    };
2224
2225    _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {
2226      var tweens = this.getTweensOf(targets, onlyActive),
2227          i = tweens.length;
2228
2229      while (i--) {
2230        _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);
2231      }
2232
2233      return this;
2234    };
2235
2236    _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {
2237      var a = [],
2238          parsedTargets = toArray(targets),
2239          child = this._first,
2240          isGlobalTime = _isNumber(onlyActive),
2241          children;
2242
2243      while (child) {
2244        if (child instanceof Tween) {
2245          if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {
2246            a.push(child);
2247          }
2248        } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {
2249          a.push.apply(a, children);
2250        }
2251
2252        child = child._next;
2253      }
2254
2255      return a;
2256    };
2257
2258    _proto2.tweenTo = function tweenTo(position, vars) {
2259      vars = vars || {};
2260
2261      var tl = this,
2262          endTime = _parsePosition(tl, position),
2263          _vars = vars,
2264          startAt = _vars.startAt,
2265          _onStart = _vars.onStart,
2266          onStartParams = _vars.onStartParams,
2267          immediateRender = _vars.immediateRender,
2268          initted,
2269          tween = Tween.to(tl, _setDefaults({
2270        ease: vars.ease || "none",
2271        lazy: false,
2272        immediateRender: false,
2273        time: endTime,
2274        overwrite: "auto",
2275        duration: vars.duration || Math.abs((endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,
2276        onStart: function onStart() {
2277          tl.pause();
2278
2279          if (!initted) {
2280            var duration = vars.duration || Math.abs((endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale());
2281            tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);
2282            initted = 1;
2283          }
2284
2285          _onStart && _onStart.apply(tween, onStartParams || []);
2286        }
2287      }, vars));
2288
2289      return immediateRender ? tween.render(0) : tween;
2290    };
2291
2292    _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {
2293      return this.tweenTo(toPosition, _setDefaults({
2294        startAt: {
2295          time: _parsePosition(this, fromPosition)
2296        }
2297      }, vars));
2298    };
2299
2300    _proto2.recent = function recent() {
2301      return this._recent;
2302    };
2303
2304    _proto2.nextLabel = function nextLabel(afterTime) {
2305      if (afterTime === void 0) {
2306        afterTime = this._time;
2307      }
2308
2309      return _getLabelInDirection(this, _parsePosition(this, afterTime));
2310    };
2311
2312    _proto2.previousLabel = function previousLabel(beforeTime) {
2313      if (beforeTime === void 0) {
2314        beforeTime = this._time;
2315      }
2316
2317      return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);
2318    };
2319
2320    _proto2.currentLabel = function currentLabel(value) {
2321      return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);
2322    };
2323
2324    _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {
2325      if (ignoreBeforeTime === void 0) {
2326        ignoreBeforeTime = 0;
2327      }
2328
2329      var child = this._first,
2330          labels = this.labels,
2331          p;
2332
2333      while (child) {
2334        if (child._start >= ignoreBeforeTime) {
2335          child._start += amount;
2336          child._end += amount;
2337        }
2338
2339        child = child._next;
2340      }
2341
2342      if (adjustLabels) {
2343        for (p in labels) {
2344          if (labels[p] >= ignoreBeforeTime) {
2345            labels[p] += amount;
2346          }
2347        }
2348      }
2349
2350      return _uncache(this);
2351    };
2352
2353    _proto2.invalidate = function invalidate() {
2354      var child = this._first;
2355      this._lock = 0;
2356
2357      while (child) {
2358        child.invalidate();
2359        child = child._next;
2360      }
2361
2362      return _Animation.prototype.invalidate.call(this);
2363    };
2364
2365    _proto2.clear = function clear(includeLabels) {
2366      if (includeLabels === void 0) {
2367        includeLabels = true;
2368      }
2369
2370      var child = this._first,
2371          next;
2372
2373      while (child) {
2374        next = child._next;
2375        this.remove(child);
2376        child = next;
2377      }
2378
2379      this._dp && (this._time = this._tTime = this._pTime = 0);
2380      includeLabels && (this.labels = {});
2381      return _uncache(this);
2382    };
2383
2384    _proto2.totalDuration = function totalDuration(value) {
2385      var max = 0,
2386          self = this,
2387          child = self._last,
2388          prevStart = _bigNum,
2389          prev,
2390          start,
2391          parent;
2392
2393      if (arguments.length) {
2394        return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));
2395      }
2396
2397      if (self._dirty) {
2398        parent = self.parent;
2399
2400        while (child) {
2401          prev = child._prev;
2402          child._dirty && child.totalDuration();
2403          start = child._start;
2404
2405          if (start > prevStart && self._sort && child._ts && !self._lock) {
2406            self._lock = 1;
2407            _addToTimeline(self, child, start - child._delay, 1)._lock = 0;
2408          } else {
2409            prevStart = start;
2410          }
2411
2412          if (start < 0 && child._ts) {
2413            max -= start;
2414
2415            if (!parent && !self._dp || parent && parent.smoothChildTiming) {
2416              self._start += start / self._ts;
2417              self._time -= start;
2418              self._tTime -= start;
2419            }
2420
2421            self.shiftChildren(-start, false, -1e999);
2422            prevStart = 0;
2423          }
2424
2425          child._end > max && child._ts && (max = child._end);
2426          child = prev;
2427        }
2428
2429        _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1);
2430
2431        self._dirty = 0;
2432      }
2433
2434      return self._tDur;
2435    };
2436
2437    Timeline.updateRoot = function updateRoot(time) {
2438      if (_globalTimeline._ts) {
2439        _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));
2440
2441        _lastRenderedFrame = _ticker.frame;
2442      }
2443
2444      if (_ticker.frame >= _nextGCFrame) {
2445        _nextGCFrame += _config.autoSleep || 120;
2446        var child = _globalTimeline._first;
2447        if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {
2448          while (child && !child._ts) {
2449            child = child._next;
2450          }
2451
2452          child || _ticker.sleep();
2453        }
2454      }
2455    };
2456
2457    return Timeline;
2458  }(Animation);
2459
2460  _setDefaults(Timeline.prototype, {
2461    _lock: 0,
2462    _hasPause: 0,
2463    _forcing: 0
2464  });
2465
2466  var _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {
2467    var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),
2468        index = 0,
2469        matchIndex = 0,
2470        result,
2471        startNums,
2472        color,
2473        endNum,
2474        chunk,
2475        startNum,
2476        hasRandom,
2477        a;
2478    pt.b = start;
2479    pt.e = end;
2480    start += "";
2481    end += "";
2482
2483    if (hasRandom = ~end.indexOf("random(")) {
2484      end = _replaceRandom(end);
2485    }
2486
2487    if (stringFilter) {
2488      a = [start, end];
2489      stringFilter(a, target, prop);
2490      start = a[0];
2491      end = a[1];
2492    }
2493
2494    startNums = start.match(_complexStringNumExp) || [];
2495
2496    while (result = _complexStringNumExp.exec(end)) {
2497      endNum = result[0];
2498      chunk = end.substring(index, result.index);
2499
2500      if (color) {
2501        color = (color + 1) % 5;
2502      } else if (chunk.substr(-5) === "rgba(") {
2503        color = 1;
2504      }
2505
2506      if (endNum !== startNums[matchIndex++]) {
2507        startNum = parseFloat(startNums[matchIndex - 1]) || 0;
2508        pt._pt = {
2509          _next: pt._pt,
2510          p: chunk || matchIndex === 1 ? chunk : ",",
2511          s: startNum,
2512          c: endNum.charAt(1) === "=" ? parseFloat(endNum.substr(2)) * (endNum.charAt(0) === "-" ? -1 : 1) : parseFloat(endNum) - startNum,
2513          m: color && color < 4 ? Math.round : 0
2514        };
2515        index = _complexStringNumExp.lastIndex;
2516      }
2517    }
2518
2519    pt.c = index < end.length ? end.substring(index, end.length) : "";
2520    pt.fp = funcParam;
2521
2522    if (_relExp.test(end) || hasRandom) {
2523      pt.e = 0;
2524    }
2525
2526    this._pt = pt;
2527    return pt;
2528  },
2529      _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam) {
vendor: 6,337 bytes, lines 2530-2706
2530    _isFunction(end) && (end = end(index || 0, target, targets));
2531    var currentValue = target[prop],
2532        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](),
2533        setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,
2534        pt;
2535
2536    if (_isString(end)) {
2537      if (~end.indexOf("random(")) {
2538        end = _replaceRandom(end);
2539      }
2540
2541      if (end.charAt(1) === "=") {
2542        pt = parseFloat(parsedStart) + parseFloat(end.substr(2)) * (end.charAt(0) === "-" ? -1 : 1) + (getUnit(parsedStart) || 0);
2543
2544        if (pt || pt === 0) {
2545          end = pt;
2546        }
2547      }
2548    }
2549
2550    if (parsedStart !== end) {
2551      if (!isNaN(parsedStart * end) && end !== "") {
2552        pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === "boolean" ? _renderBoolean : _renderPlain, 0, setter);
2553        funcParam && (pt.fp = funcParam);
2554        modifier && pt.modifier(modifier, this, target);
2555        return this._pt = pt;
2556      }
2557
2558      !currentValue && !(prop in target) && _missingPlugin(prop, end);
2559      return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);
2560    }
2561  },
2562      _processVars = function _processVars(vars, index, target, targets, tween) {
2563    _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));
2564
2565    if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {
2566      return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;
2567    }
2568
2569    var copy = {},
2570        p;
2571
2572    for (p in vars) {
2573      copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);
2574    }
2575
2576    return copy;
2577  },
2578      _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {
2579    var plugin, pt, ptLookup, i;
2580
2581    if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {
2582      tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);
2583
2584      if (tween !== _quickTween) {
2585        ptLookup = tween._ptLookup[tween._targets.indexOf(target)];
2586        i = plugin._props.length;
2587
2588        while (i--) {
2589          ptLookup[plugin._props[i]] = pt;
2590        }
2591      }
2592    }
2593
2594    return plugin;
2595  },
2596      _overwritingTween,
2597      _initTween = function _initTween(tween, time) {
2598    var vars = tween.vars,
2599        ease = vars.ease,
2600        startAt = vars.startAt,
2601        immediateRender = vars.immediateRender,
2602        lazy = vars.lazy,
2603        onUpdate = vars.onUpdate,
2604        onUpdateParams = vars.onUpdateParams,
2605        callbackScope = vars.callbackScope,
2606        runBackwards = vars.runBackwards,
2607        yoyoEase = vars.yoyoEase,
2608        keyframes = vars.keyframes,
2609        autoRevert = vars.autoRevert,
2610        dur = tween._dur,
2611        prevStartAt = tween._startAt,
2612        targets = tween._targets,
2613        parent = tween.parent,
2614        fullTargets = parent && parent.data === "nested" ? parent.parent._targets : targets,
2615        autoOverwrite = tween._overwrite === "auto" && !_suppressOverwrites,
2616        tl = tween.timeline,
2617        cleanVars,
2618        i,
2619        p,
2620        pt,
2621        target,
2622        hasPriority,
2623        gsData,
2624        harness,
2625        plugin,
2626        ptLookup,
2627        index,
2628        harnessVars,
2629        overwritten;
2630    tl && (!keyframes || !ease) && (ease = "none");
2631    tween._ease = _parseEase(ease, _defaults.ease);
2632    tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;
2633
2634    if (yoyoEase && tween._yoyo && !tween._repeat) {
2635      yoyoEase = tween._yEase;
2636      tween._yEase = tween._ease;
2637      tween._ease = yoyoEase;
2638    }
2639
2640    tween._from = !tl && !!vars.runBackwards;
2641
2642    if (!tl) {
2643      harness = targets[0] ? _getCache(targets[0]).harness : 0;
2644      harnessVars = harness && vars[harness.prop];
2645      cleanVars = _copyExcluding(vars, _reservedProps);
2646      prevStartAt && prevStartAt.render(-1, true).kill();
2647
2648      if (startAt) {
2649        _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({
2650          data: "isStart",
2651          overwrite: false,
2652          parent: parent,
2653          immediateRender: true,
2654          lazy: _isNotFalse(lazy),
2655          startAt: null,
2656          delay: 0,
2657          onUpdate: onUpdate,
2658          onUpdateParams: onUpdateParams,
2659          callbackScope: callbackScope,
2660          stagger: 0
2661        }, startAt)));
2662
2663        time < 0 && !immediateRender && !autoRevert && tween._startAt.render(-1, true);
2664
2665        if (immediateRender) {
2666          time > 0 && !autoRevert && (tween._startAt = 0);
2667
2668          if (dur && time <= 0) {
2669            time && (tween._zTime = time);
2670            return;
2671          }
2672        } else if (autoRevert === false) {
2673          tween._startAt = 0;
2674        }
2675      } else if (runBackwards && dur) {
2676        if (prevStartAt) {
2677          !autoRevert && (tween._startAt = 0);
2678        } else {
2679          time && (immediateRender = false);
2680          p = _setDefaults({
2681            overwrite: false,
2682            data: "isFromStart",
2683            lazy: immediateRender && _isNotFalse(lazy),
2684            immediateRender: immediateRender,
2685            stagger: 0,
2686            parent: parent
2687          }, cleanVars);
2688          harnessVars && (p[harness.prop] = harnessVars);
2689
2690          _removeFromParent(tween._startAt = Tween.set(targets, p));
2691
2692          time < 0 && tween._startAt.render(-1, true);
2693
2694          if (!immediateRender) {
2695            _initTween(tween._startAt, _tinyNum);
2696          } else if (!time) {
2697            return;
2698          }
2699        }
2700      }
2701
2702      tween._pt = 0;
2703      lazy = dur && _isNotFalse(lazy) || lazy && !dur;
2704
2705      for (i = 0; i < targets.length; i++) {
2706        target = targets[i];
vendor: 4,685 bytes, lines 2707-2837
2707        gsData = target._gsap || _harness(targets)[i]._gsap;
2708        tween._ptLookup[i] = ptLookup = {};
2709        _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender();
2710        index = fullTargets === targets ? i : fullTargets.indexOf(target);
2711
2712        if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {
2713          tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);
2714
2715          plugin._props.forEach(function (name) {
2716            ptLookup[name] = pt;
2717          });
2718
2719          plugin.priority && (hasPriority = 1);
2720        }
2721
2722        if (!harness || harnessVars) {
2723          for (p in cleanVars) {
2724            if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {
2725              plugin.priority && (hasPriority = 1);
2726            } else {
2727              ptLookup[p] = pt = _addPropTween.call(tween, target, p, "get", cleanVars[p], index, fullTargets, 0, vars.stringFilter);
2728            }
2729          }
2730        }
2731
2732        tween._op && tween._op[i] && tween.kill(target, tween._op[i]);
2733
2734        if (autoOverwrite && tween._pt) {
2735          _overwritingTween = tween;
2736
2737          _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(0));
2738
2739          overwritten = !tween.parent;
2740          _overwritingTween = 0;
2741        }
2742
2743        tween._pt && lazy && (_lazyLookup[gsData.id] = 1);
2744      }
2745
2746      hasPriority && _sortPropTweensByPriority(tween);
2747      tween._onInit && tween._onInit(tween);
2748    }
2749
2750    tween._onUpdate = onUpdate;
2751    tween._initted = (!tween._op || tween._pt) && !overwritten;
2752  },
2753      _addAliasesToVars = function _addAliasesToVars(targets, vars) {
2754    var harness = targets[0] ? _getCache(targets[0]).harness : 0,
2755        propertyAliases = harness && harness.aliases,
2756        copy,
2757        p,
2758        i,
2759        aliases;
2760
2761    if (!propertyAliases) {
2762      return vars;
2763    }
2764
2765    copy = _merge({}, vars);
2766
2767    for (p in propertyAliases) {
2768      if (p in copy) {
2769        aliases = propertyAliases[p].split(",");
2770        i = aliases.length;
2771
2772        while (i--) {
2773          copy[aliases[i]] = copy[p];
2774        }
2775      }
2776    }
2777
2778    return copy;
2779  },
2780      _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {
2781    return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf("random(") ? _replaceRandom(value) : value;
2782  },
2783      _staggerTweenProps = _callbackNames + "repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase",
2784      _staggerPropsToSkip = (_staggerTweenProps + ",id,stagger,delay,duration,paused,scrollTrigger").split(",");
2785
2786  var Tween = function (_Animation2) {
2787    _inheritsLoose(Tween, _Animation2);
2788
2789    function Tween(targets, vars, position, skipInherit) {
2790      var _this3;
2791
2792      if (typeof vars === "number") {
2793        position.duration = vars;
2794        vars = position;
2795        position = null;
2796      }
2797
2798      _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this;
2799      var _this3$vars = _this3.vars,
2800          duration = _this3$vars.duration,
2801          delay = _this3$vars.delay,
2802          immediateRender = _this3$vars.immediateRender,
2803          stagger = _this3$vars.stagger,
2804          overwrite = _this3$vars.overwrite,
2805          keyframes = _this3$vars.keyframes,
2806          defaults = _this3$vars.defaults,
2807          scrollTrigger = _this3$vars.scrollTrigger,
2808          yoyoEase = _this3$vars.yoyoEase,
2809          parent = vars.parent || _globalTimeline,
2810          parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : "length" in vars) ? [targets] : toArray(targets),
2811          tl,
2812          i,
2813          copy,
2814          l,
2815          p,
2816          curTarget,
2817          staggerFunc,
2818          staggerVarsToMerge;
2819      _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn("GSAP target " + targets + " not found. https://greensock.com", !_config.nullTargetWarn) || [];
2820      _this3._ptLookup = [];
2821      _this3._overwrite = overwrite;
2822
2823      if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {
2824        vars = _this3.vars;
2825        tl = _this3.timeline = new Timeline({
2826          data: "nested",
2827          defaults: defaults || {}
2828        });
2829        tl.kill();
2830        tl.parent = tl._dp = _assertThisInitialized(_this3);
2831        tl._start = 0;
2832
2833        if (keyframes) {
2834          _setDefaults(tl.vars.defaults, {
2835            ease: "none"
2836          });
2837
vendor: 7,097 bytes, lines 2838-3051
2838          stagger ? parsedTargets.forEach(function (t, i) {
2839            return keyframes.forEach(function (frame, j) {
2840              return tl.to(t, frame, j ? ">" : i * stagger);
2841            });
2842          }) : keyframes.forEach(function (frame) {
2843            return tl.to(parsedTargets, frame, ">");
2844          });
2845        } else {
2846          l = parsedTargets.length;
2847          staggerFunc = stagger ? distribute(stagger) : _emptyFunc;
2848
2849          if (_isObject(stagger)) {
2850            for (p in stagger) {
2851              if (~_staggerTweenProps.indexOf(p)) {
2852                staggerVarsToMerge || (staggerVarsToMerge = {});
2853                staggerVarsToMerge[p] = stagger[p];
2854              }
2855            }
2856          }
2857
2858          for (i = 0; i < l; i++) {
2859            copy = {};
2860
2861            for (p in vars) {
2862              if (_staggerPropsToSkip.indexOf(p) < 0) {
2863                copy[p] = vars[p];
2864              }
2865            }
2866
2867            copy.stagger = 0;
2868            yoyoEase && (copy.yoyoEase = yoyoEase);
2869            staggerVarsToMerge && _merge(copy, staggerVarsToMerge);
2870            curTarget = parsedTargets[i];
2871            copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);
2872            copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;
2873
2874            if (!stagger && l === 1 && copy.delay) {
2875              _this3._delay = delay = copy.delay;
2876              _this3._start += delay;
2877              copy.delay = 0;
2878            }
2879
2880            tl.to(curTarget, copy, staggerFunc(i, curTarget, parsedTargets));
2881          }
2882
2883          tl.duration() ? duration = delay = 0 : _this3.timeline = 0;
2884        }
2885
2886        duration || _this3.duration(duration = tl.duration());
2887      } else {
2888        _this3.timeline = 0;
2889      }
2890
2891      if (overwrite === true && !_suppressOverwrites) {
2892        _overwritingTween = _assertThisInitialized(_this3);
2893
2894        _globalTimeline.killTweensOf(parsedTargets);
2895
2896        _overwritingTween = 0;
2897      }
2898
2899      _addToTimeline(parent, _assertThisInitialized(_this3), position);
2900
2901      vars.reversed && _this3.reverse();
2902      vars.paused && _this3.paused(true);
2903
2904      if (immediateRender || !duration && !keyframes && _this3._start === _round(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== "nested") {
2905        _this3._tTime = -_tinyNum;
2906
2907        _this3.render(Math.max(0, -delay));
2908      }
2909
2910      scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);
2911      return _this3;
2912    }
2913
2914    var _proto3 = Tween.prototype;
2915
2916    _proto3.render = function render(totalTime, suppressEvents, force) {
2917      var prevTime = this._time,
2918          tDur = this._tDur,
2919          dur = this._dur,
2920          tTime = totalTime > tDur - _tinyNum && totalTime >= 0 ? tDur : totalTime < _tinyNum ? 0 : totalTime,
2921          time,
2922          pt,
2923          iteration,
2924          cycleDuration,
2925          prevIteration,
2926          isYoyo,
2927          ratio,
2928          timeline,
2929          yoyoEase;
2930
2931      if (!dur) {
2932        _renderZeroDurationTween(this, totalTime, suppressEvents, force);
2933      } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== totalTime < 0) {
2934        time = tTime;
2935        timeline = this.timeline;
2936
2937        if (this._repeat) {
2938          cycleDuration = dur + this._rDelay;
2939
2940          if (this._repeat < -1 && totalTime < 0) {
2941            return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);
2942          }
2943
2944          time = _round(tTime % cycleDuration);
2945
2946          if (tTime === tDur) {
2947            iteration = this._repeat;
2948            time = dur;
2949          } else {
2950            iteration = ~~(tTime / cycleDuration);
2951
2952            if (iteration && iteration === tTime / cycleDuration) {
2953              time = dur;
2954              iteration--;
2955            }
2956
2957            time > dur && (time = dur);
2958          }
2959
2960          isYoyo = this._yoyo && iteration & 1;
2961
2962          if (isYoyo) {
2963            yoyoEase = this._yEase;
2964            time = dur - time;
2965          }
2966
2967          prevIteration = _animationCycle(this._tTime, cycleDuration);
2968
2969          if (time === prevTime && !force && this._initted) {
2970            return this;
2971          }
2972
2973          if (iteration !== prevIteration) {
2974            timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo);
2975
2976            if (this.vars.repeatRefresh && !isYoyo && !this._lock) {
2977              this._lock = force = 1;
2978              this.render(_round(cycleDuration * iteration), true).invalidate()._lock = 0;
2979            }
2980          }
2981        }
2982
2983        if (!this._initted) {
2984          if (_attemptInitTween(this, totalTime < 0 ? totalTime : time, force, suppressEvents)) {
2985            this._tTime = 0;
2986            return this;
2987          }
2988
2989          if (dur !== this._dur) {
2990            return this.render(totalTime, suppressEvents, force);
2991          }
2992        }
2993
2994        this._tTime = tTime;
2995        this._time = time;
2996
2997        if (!this._act && this._ts) {
2998          this._act = 1;
2999          this._lazy = 0;
3000        }
3001
3002        this.ratio = ratio = (yoyoEase || this._ease)(time / dur);
3003
3004        if (this._from) {
3005          this.ratio = ratio = 1 - ratio;
3006        }
3007
3008        if (time && !prevTime && !suppressEvents) {
3009          _callback(this, "onStart");
3010
3011          if (this._tTime !== tTime) {
3012            return this;
3013          }
3014        }
3015
3016        pt = this._pt;
3017
3018        while (pt) {
3019          pt.r(ratio, pt.d);
3020          pt = pt._next;
3021        }
3022
3023        timeline && timeline.render(totalTime < 0 ? totalTime : !time && isYoyo ? -_tinyNum : timeline._dur * ratio, suppressEvents, force) || this._startAt && (this._zTime = totalTime);
3024
3025        if (this._onUpdate && !suppressEvents) {
3026          totalTime < 0 && this._startAt && this._startAt.render(totalTime, true, force);
3027
3028          _callback(this, "onUpdate");
3029        }
3030
3031        this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, "onRepeat");
3032
3033        if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {
3034          totalTime < 0 && this._startAt && !this._onUpdate && this._startAt.render(totalTime, true, true);
3035          (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1);
3036
3037          if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime)) {
3038            _callback(this, tTime === tDur ? "onComplete" : "onReverseComplete", true);
3039
3040            this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();
3041          }
3042        }
3043      }
3044
3045      return this;
3046    };
3047
3048    _proto3.targets = function targets() {
3049      return this._targets;
3050    };
3051
vendor: 13,350 bytes, lines 3052-3479
3052    _proto3.invalidate = function invalidate() {
3053      this._pt = this._op = this._startAt = this._onUpdate = this._lazy = this.ratio = 0;
3054      this._ptLookup = [];
3055      this.timeline && this.timeline.invalidate();
3056      return _Animation2.prototype.invalidate.call(this);
3057    };
3058
3059    _proto3.kill = function kill(targets, vars) {
3060      if (vars === void 0) {
3061        vars = "all";
3062      }
3063
3064      if (!targets && (!vars || vars === "all")) {
3065        this._lazy = this._pt = 0;
3066        return this.parent ? _interrupt(this) : this;
3067      }
3068
3069      if (this.timeline) {
3070        var tDur = this.timeline.totalDuration();
3071        this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this);
3072        this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1);
3073        return this;
3074      }
3075
3076      var parsedTargets = this._targets,
3077          killingTargets = targets ? toArray(targets) : parsedTargets,
3078          propTweenLookup = this._ptLookup,
3079          firstPT = this._pt,
3080          overwrittenProps,
3081          curLookup,
3082          curOverwriteProps,
3083          props,
3084          p,
3085          pt,
3086          i;
3087
3088      if ((!vars || vars === "all") && _arraysMatch(parsedTargets, killingTargets)) {
3089        vars === "all" && (this._pt = 0);
3090        return _interrupt(this);
3091      }
3092
3093      overwrittenProps = this._op = this._op || [];
3094
3095      if (vars !== "all") {
3096        if (_isString(vars)) {
3097          p = {};
3098
3099          _forEachName(vars, function (name) {
3100            return p[name] = 1;
3101          });
3102
3103          vars = p;
3104        }
3105
3106        vars = _addAliasesToVars(parsedTargets, vars);
3107      }
3108
3109      i = parsedTargets.length;
3110
3111      while (i--) {
3112        if (~killingTargets.indexOf(parsedTargets[i])) {
3113          curLookup = propTweenLookup[i];
3114
3115          if (vars === "all") {
3116            overwrittenProps[i] = vars;
3117            props = curLookup;
3118            curOverwriteProps = {};
3119          } else {
3120            curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};
3121            props = vars;
3122          }
3123
3124          for (p in props) {
3125            pt = curLookup && curLookup[p];
3126
3127            if (pt) {
3128              if (!("kill" in pt.d) || pt.d.kill(p) === true) {
3129                _removeLinkedListItem(this, pt, "_pt");
3130              }
3131
3132              delete curLookup[p];
3133            }
3134
3135            if (curOverwriteProps !== "all") {
3136              curOverwriteProps[p] = 1;
3137            }
3138          }
3139        }
3140      }
3141
3142      this._initted && !this._pt && firstPT && _interrupt(this);
3143      return this;
3144    };
3145
3146    Tween.to = function to(targets, vars) {
3147      return new Tween(targets, vars, arguments[2]);
3148    };
3149
3150    Tween.from = function from(targets, vars) {
3151      return _createTweenType(1, arguments);
3152    };
3153
3154    Tween.delayedCall = function delayedCall(delay, callback, params, scope) {
3155      return new Tween(callback, 0, {
3156        immediateRender: false,
3157        lazy: false,
3158        overwrite: false,
3159        delay: delay,
3160        onComplete: callback,
3161        onReverseComplete: callback,
3162        onCompleteParams: params,
3163        onReverseCompleteParams: params,
3164        callbackScope: scope
3165      });
3166    };
3167
3168    Tween.fromTo = function fromTo(targets, fromVars, toVars) {
3169      return _createTweenType(2, arguments);
3170    };
3171
3172    Tween.set = function set(targets, vars) {
3173      vars.duration = 0;
3174      vars.repeatDelay || (vars.repeat = 0);
3175      return new Tween(targets, vars);
3176    };
3177
3178    Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {
3179      return _globalTimeline.killTweensOf(targets, props, onlyActive);
3180    };
3181
3182    return Tween;
3183  }(Animation);
3184
3185  _setDefaults(Tween.prototype, {
3186    _targets: [],
3187    _lazy: 0,
3188    _startAt: 0,
3189    _op: 0,
3190    _onInit: 0
3191  });
3192
3193  _forEachName("staggerTo,staggerFrom,staggerFromTo", function (name) {
3194    Tween[name] = function () {
3195      var tl = new Timeline(),
3196          params = _slice.call(arguments, 0);
3197
3198      params.splice(name === "staggerFromTo" ? 5 : 4, 0, 0);
3199      return tl[name].apply(tl, params);
3200    };
3201  });
3202
3203  var _setterPlain = function _setterPlain(target, property, value) {
3204    return target[property] = value;
3205  },
3206      _setterFunc = function _setterFunc(target, property, value) {
3207    return target[property](value);
3208  },
3209      _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {
3210    return target[property](data.fp, value);
3211  },
3212      _setterAttribute = function _setterAttribute(target, property, value) {
3213    return target.setAttribute(property, value);
3214  },
3215      _getSetter = function _getSetter(target, property) {
3216    return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;
3217  },
3218      _renderPlain = function _renderPlain(ratio, data) {
3219    return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1000000) / 1000000, data);
3220  },
3221      _renderBoolean = function _renderBoolean(ratio, data) {
3222    return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);
3223  },
3224      _renderComplexString = function _renderComplexString(ratio, data) {
3225    var pt = data._pt,
3226        s = "";
3227
3228    if (!ratio && data.b) {
3229      s = data.b;
3230    } else if (ratio === 1 && data.e) {
3231      s = data.e;
3232    } else {
3233      while (pt) {
3234        s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s;
3235        pt = pt._next;
3236      }
3237
3238      s += data.c;
3239    }
3240
3241    data.set(data.t, data.p, s, data);
3242  },
3243      _renderPropTweens = function _renderPropTweens(ratio, data) {
3244    var pt = data._pt;
3245
3246    while (pt) {
3247      pt.r(ratio, pt.d);
3248      pt = pt._next;
3249    }
3250  },
3251      _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {
3252    var pt = this._pt,
3253        next;
3254
3255    while (pt) {
3256      next = pt._next;
3257      pt.p === property && pt.modifier(modifier, tween, target);
3258      pt = next;
3259    }
3260  },
3261      _killPropTweensOf = function _killPropTweensOf(property) {
3262    var pt = this._pt,
3263        hasNonDependentRemaining,
3264        next;
3265
3266    while (pt) {
3267      next = pt._next;
3268
3269      if (pt.p === property && !pt.op || pt.op === property) {
3270        _removeLinkedListItem(this, pt, "_pt");
3271      } else if (!pt.dep) {
3272        hasNonDependentRemaining = 1;
3273      }
3274
3275      pt = next;
3276    }
3277
3278    return !hasNonDependentRemaining;
3279  },
3280      _setterWithModifier = function _setterWithModifier(target, property, value, data) {
3281    data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);
3282  },
3283      _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {
3284    var pt = parent._pt,
3285        next,
3286        pt2,
3287        first,
3288        last;
3289
3290    while (pt) {
3291      next = pt._next;
3292      pt2 = first;
3293
3294      while (pt2 && pt2.pr > pt.pr) {
3295        pt2 = pt2._next;
3296      }
3297
3298      if (pt._prev = pt2 ? pt2._prev : last) {
3299        pt._prev._next = pt;
3300      } else {
3301        first = pt;
3302      }
3303
3304      if (pt._next = pt2) {
3305        pt2._prev = pt;
3306      } else {
3307        last = pt;
3308      }
3309
3310      pt = next;
3311    }
3312
3313    parent._pt = first;
3314  };
3315
3316  var PropTween = function () {
3317    function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {
3318      this.t = target;
3319      this.s = start;
3320      this.c = change;
3321      this.p = prop;
3322      this.r = renderer || _renderPlain;
3323      this.d = data || this;
3324      this.set = setter || _setterPlain;
3325      this.pr = priority || 0;
3326      this._next = next;
3327
3328      if (next) {
3329        next._prev = this;
3330      }
3331    }
3332
3333    var _proto4 = PropTween.prototype;
3334
3335    _proto4.modifier = function modifier(func, tween, target) {
3336      this.mSet = this.mSet || this.set;
3337      this.set = _setterWithModifier;
3338      this.m = func;
3339      this.mt = target;
3340      this.tween = tween;
3341    };
3342
3343    return PropTween;
3344  }();
3345
3346  _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) {
3347    return _reservedProps[name] = 1;
3348  });
3349
3350  _globals.TweenMax = _globals.TweenLite = Tween;
3351  _globals.TimelineLite = _globals.TimelineMax = Timeline;
3352  _globalTimeline = new Timeline({
3353    sortChildren: false,
3354    defaults: _defaults,
3355    autoRemoveChildren: true,
3356    id: "root",
3357    smoothChildTiming: true
3358  });
3359  _config.stringFilter = _colorStringFilter;
3360  var _gsap = {
3361    registerPlugin: function registerPlugin() {
3362      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
3363        args[_key2] = arguments[_key2];
3364      }
3365
3366      args.forEach(function (config) {
3367        return _createPlugin(config);
3368      });
3369    },
3370    timeline: function timeline(vars) {
3371      return new Timeline(vars);
3372    },
3373    getTweensOf: function getTweensOf(targets, onlyActive) {
3374      return _globalTimeline.getTweensOf(targets, onlyActive);
3375    },
3376    getProperty: function getProperty(target, property, unit, uncache) {
3377      _isString(target) && (target = toArray(target)[0]);
3378
3379      var getter = _getCache(target || {}).get,
3380          format = unit ? _passThrough : _numericIfPossible;
3381
3382      unit === "native" && (unit = "");
3383      return !target ? target : !property ? function (property, unit, uncache) {
3384        return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));
3385      } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));
3386    },
3387    quickSetter: function quickSetter(target, property, unit) {
3388      target = toArray(target);
3389
3390      if (target.length > 1) {
3391        var setters = target.map(function (t) {
3392          return gsap.quickSetter(t, property, unit);
3393        }),
3394            l = setters.length;
3395        return function (value) {
3396          var i = l;
3397
3398          while (i--) {
3399            setters[i](value);
3400          }
3401        };
3402      }
3403
3404      target = target[0] || {};
3405
3406      var Plugin = _plugins[property],
3407          cache = _getCache(target),
3408          p = cache.harness && (cache.harness.aliases || {})[property] || property,
3409          setter = Plugin ? function (value) {
3410        var p = new Plugin();
3411        _quickTween._pt = 0;
3412        p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);
3413        p.render(1, p);
3414        _quickTween._pt && _renderPropTweens(1, _quickTween);
3415      } : cache.set(target, p);
3416
3417      return Plugin ? setter : function (value) {
3418        return setter(target, p, unit ? value + unit : value, cache, 1);
3419      };
3420    },
3421    isTweening: function isTweening(targets) {
3422      return _globalTimeline.getTweensOf(targets, true).length > 0;
3423    },
3424    defaults: function defaults(value) {
3425      value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));
3426      return _mergeDeep(_defaults, value || {});
3427    },
3428    config: function config(value) {
3429      return _mergeDeep(_config, value || {});
3430    },
3431    registerEffect: function registerEffect(_ref3) {
3432      var name = _ref3.name,
3433          effect = _ref3.effect,
3434          plugins = _ref3.plugins,
3435          defaults = _ref3.defaults,
3436          extendTimeline = _ref3.extendTimeline;
3437      (plugins || "").split(",").forEach(function (pluginName) {
3438        return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + " effect requires " + pluginName + " plugin.");
3439      });
3440
3441      _effects[name] = function (targets, vars, tl) {
3442        return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);
3443      };
3444
3445      if (extendTimeline) {
3446        Timeline.prototype[name] = function (targets, vars, position) {
3447          return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);
3448        };
3449      }
3450    },
3451    registerEase: function registerEase(name, ease) {
3452      _easeMap[name] = _parseEase(ease);
3453    },
3454    parseEase: function parseEase(ease, defaultEase) {
3455      return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;
3456    },
3457    getById: function getById(id) {
3458      return _globalTimeline.getById(id);
3459    },
3460    exportRoot: function exportRoot(vars, includeDelayedCalls) {
3461      if (vars === void 0) {
3462        vars = {};
3463      }
3464
3465      var tl = new Timeline(vars),
3466          child,
3467          next;
3468      tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);
3469
3470      _globalTimeline.remove(tl);
3471
3472      tl._dp = 0;
3473      tl._time = tl._tTime = _globalTimeline._time;
3474      child = _globalTimeline._first;
3475
3476      while (child) {
3477        next = child._next;
3478
3479        if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {
3480          _addToTimeline(tl, child, child._start - child._delay);
3481        }
3482
3483        child = next;
3484      }
3485
3486      _addToTimeline(_globalTimeline, tl, 0);
3487
3488      return tl;
3489    },
3490    utils: {
3491      wrap: wrap,
3492      wrapYoyo: wrapYoyo,
3493      distribute: distribute,
3494      random: random,
3495      snap: snap,
3496      normalize: normalize,
3497      getUnit: getUnit,
3498      clamp: clamp,
3499      splitColor: splitColor,
3500      toArray: toArray,
3501      selector: selector,
3502      mapRange: mapRange,
3503      pipe: pipe,
3504      unitize: unitize,
3505      interpolate: interpolate,
3506      shuffle: shuffle
3507    },
3508    install: _install,
3509    effects: _effects,
3510    ticker: _ticker,
3511    updateRoot: Timeline.updateRoot,
3512    plugins: _plugins,
3513    globalTimeline: _globalTimeline,
3514    core: {
3515      PropTween: PropTween,
3516      globals: _addGlobal,
3517      Tween: Tween,
3518      Timeline: Timeline,
3519      Animation: Animation,
3520      getCache: _getCache,
3521      _removeLinkedListItem: _removeLinkedListItem,
3522      suppressOverwrites: function suppressOverwrites(value) {
3523        return _suppressOverwrites = value;
3524      }
3525    }
3526  };
3527
3528  _forEachName("to,from,fromTo,delayedCall,set,killTweensOf", function (name) {
3529    return _gsap[name] = Tween[name];
3530  });
3531
3532  _ticker.add(Timeline.updateRoot);
3533
3534  _quickTween = _gsap.to({}, {
3535    duration: 0
3536  });
3537
3538  var _getPluginPropTween = function _getPluginPropTween(plugin, prop
vendor: 18,696 bytes, lines 3538-4106
3538) {
3539    var pt = plugin._pt;
3540
3541    while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {
3542      pt = pt._next;
3543    }
3544
3545    return pt;
3546  },
3547      _addModifiers = function _addModifiers(tween, modifiers) {
3548    var targets = tween._targets,
3549        p,
3550        i,
3551        pt;
3552
3553    for (p in modifiers) {
3554      i = targets.length;
3555
3556      while (i--) {
3557        pt = tween._ptLookup[i][p];
3558
3559        if (pt && (pt = pt.d)) {
3560          if (pt._pt) {
3561            pt = _getPluginPropTween(pt, p);
3562          }
3563
3564          pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);
3565        }
3566      }
3567    }
3568  },
3569      _buildModifierPlugin = function _buildModifierPlugin(name, modifier) {
3570    return {
3571      name: name,
3572      rawVars: 1,
3573      init: function init(target, vars, tween) {
3574        tween._onInit = function (tween) {
3575          var temp, p;
3576
3577          if (_isString(vars)) {
3578            temp = {};
3579
3580            _forEachName(vars, function (name) {
3581              return temp[name] = 1;
3582            });
3583
3584            vars = temp;
3585          }
3586
3587          if (modifier) {
3588            temp = {};
3589
3590            for (p in vars) {
3591              temp[p] = modifier(vars[p]);
3592            }
3593
3594            vars = temp;
3595          }
3596
3597          _addModifiers(tween, vars);
3598        };
3599      }
3600    };
3601  };
3602
3603  var gsap = _gsap.registerPlugin({
3604    name: "attr",
3605    init: function init(target, vars, tween, index, targets) {
3606      var p, pt;
3607
3608      for (p in vars) {
3609        pt = this.add(target, "setAttribute", (target.getAttribute(p) || 0) + "", vars[p], index, targets, 0, 0, p);
3610        pt && (pt.op = p);
3611
3612        this._props.push(p);
3613      }
3614    }
3615  }, {
3616    name: "endArray",
3617    init: function init(target, value) {
3618      var i = value.length;
3619
3620      while (i--) {
3621        this.add(target, i, target[i] || 0, value[i]);
3622      }
3623    }
3624  }, _buildModifierPlugin("roundProps", _roundModifier), _buildModifierPlugin("modifiers"), _buildModifierPlugin("snap", snap)) || _gsap;
3625  Tween.version = Timeline.version = gsap.version = "3.7.1";
3626  _coreReady = 1;
3627  _windowExists() && _wake();
3628  var Power0 = _easeMap.Power0,
3629      Power1 = _easeMap.Power1,
3630      Power2 = _easeMap.Power2,
3631      Power3 = _easeMap.Power3,
3632      Power4 = _easeMap.Power4,
3633      Linear = _easeMap.Linear,
3634      Quad = _easeMap.Quad,
3635      Cubic = _easeMap.Cubic,
3636      Quart = _easeMap.Quart,
3637      Quint = _easeMap.Quint,
3638      Strong = _easeMap.Strong,
3639      Elastic = _easeMap.Elastic,
3640      Back = _easeMap.Back,
3641      SteppedEase = _easeMap.SteppedEase,
3642      Bounce = _easeMap.Bounce,
3643      Sine = _easeMap.Sine,
3644      Expo = _easeMap.Expo,
3645      Circ = _easeMap.Circ;
3646
3647  var _win$1,
3648      _doc$1,
3649      _docElement,
3650      _pluginInitted,
3651      _tempDiv,
3652      _tempDivStyler,
3653      _recentSetterPlugin,
3654      _windowExists$1 = function _windowExists() {
3655    return typeof window !== "undefined";
3656  },
3657      _transformProps = {},
3658      _RAD2DEG = 180 / Math.PI,
3659      _DEG2RAD = Math.PI / 180,
3660      _atan2 = Math.atan2,
3661      _bigNum$1 = 1e8,
3662      _capsExp = /([A-Z])/g,
3663      _horizontalExp = /(?:left|right|width|margin|padding|x)/i,
3664      _complexExp = /[\s,\(]\S/,
3665      _propertyAliases = {
3666    autoAlpha: "opacity,visibility",
3667    scale: "scaleX,scaleY",
3668    alpha: "opacity"
3669  },
3670      _renderCSSProp = function _renderCSSProp(ratio, data) {
3671    return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);
3672  },
3673      _renderPropWithEnd = function _renderPropWithEnd(ratio, data) {
3674    return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);
3675  },
3676      _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) {
3677    return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u : data.b, data);
3678  },
3679      _renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) {
3680    var value = data.s + data.c * ratio;
3681    data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);
3682  },
3683      _renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) {
3684    return data.set(data.t, data.p, ratio ? data.e : data.b, data);
3685  },
3686      _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) {
3687    return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);
3688  },
3689      _setterCSSStyle = function _setterCSSStyle(target, property, value) {
3690    return target.style[property] = value;
3691  },
3692      _setterCSSProp = function _setterCSSProp(target, property, value) {
3693    return target.style.setProperty(property, value);
3694  },
3695      _setterTransform = function _setterTransform(target, property, value) {
3696    return target._gsap[property] = value;
3697  },
3698      _setterScale = function _setterScale(target, property, value) {
3699    return target._gsap.scaleX = target._gsap.scaleY = value;
3700  },
3701      _setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) {
3702    var cache = target._gsap;
3703    cache.scaleX = cache.scaleY = value;
3704    cache.renderTransform(ratio, cache);
3705  },
3706      _setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) {
3707    var cache = target._gsap;
3708    cache[property] = value;
3709    cache.renderTransform(ratio, cache);
3710  },
3711      _transformProp = "transform",
3712      _transformOriginProp = _transformProp + "Origin",
3713      _supports3D,
3714      _createElement = function _createElement(type, ns) {
3715    var e = _doc$1.createElementNS ? _doc$1.createElementNS((ns || "http://www.w3.org/1999/xhtml").replace(/^https/, "http"), type) : _doc$1.createElement(type);
3716    return e.style ? e : _doc$1.createElement(type);
3717  },
3718      _getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) {
3719    var cs = getComputedStyle(target);
3720    return cs[property] || cs.getPropertyValue(property.replace(_capsExp, "-$1").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || "";
3721  },
3722      _prefixes = "O,Moz,ms,Ms,Webkit".split(","),
3723      _checkPropPrefix = function _checkPropPrefix(property, element, preferPrefix) {
3724    var e = element || _tempDiv,
3725        s = e.style,
3726        i = 5;
3727
3728    if (property in s && !preferPrefix) {
3729      return property;
3730    }
3731
3732    property = property.charAt(0).toUpperCase() + property.substr(1);
3733
3734    while (i-- && !(_prefixes[i] + property in s)) {}
3735
3736    return i < 0 ? null : (i === 3 ? "ms" : i >= 0 ? _prefixes[i] : "") + property;
3737  },
3738      _initCore = function _initCore() {
3739    if (_windowExists$1() && window.document) {
3740      _win$1 = window;
3741      _doc$1 = _win$1.document;
3742      _docElement = _doc$1.documentElement;
3743      _tempDiv = _createElement("div") || {
3744        style: {}
3745      };
3746      _tempDivStyler = _createElement("div");
3747      _transformProp = _checkPropPrefix(_transformProp);
3748      _transformOriginProp = _transformProp + "Origin";
3749      _tempDiv.style.cssText = "border-width:0;line-height:0;position:absolute;padding:0";
3750      _supports3D = !!_checkPropPrefix("perspective");
3751      _pluginInitted = 1;
3752    }
3753  },
3754      _getBBoxHack = function _getBBoxHack(swapIfPossible) {
3755    var svg = _createElement("svg", this.ownerSVGElement && this.ownerSVGElement.getAttribute("xmlns") || "http://www.w3.org/2000/svg"),
3756        oldParent = this.parentNode,
3757        oldSibling = this.nextSibling,
3758        oldCSS = this.style.cssText,
3759        bbox;
3760
3761    _docElement.appendChild(svg);
3762
3763    svg.appendChild(this);
3764    this.style.display = "block";
3765
3766    if (swapIfPossible) {
3767      try {
3768        bbox = this.getBBox();
3769        this._gsapBBox = this.getBBox;
3770        this.getBBox = _getBBoxHack;
3771      } catch (e) {}
3772    } else if (this._gsapBBox) {
3773      bbox = this._gsapBBox();
3774    }
3775
3776    if (oldParent) {
3777      if (oldSibling) {
3778        oldParent.insertBefore(this, oldSibling);
3779      } else {
3780        oldParent.appendChild(this);
3781      }
3782    }
3783
3784    _docElement.removeChild(svg);
3785
3786    this.style.cssText = oldCSS;
3787    return bbox;
3788  },
3789      _getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) {
3790    var i = attributesArray.length;
3791
3792    while (i--) {
3793      if (target.hasAttribute(attributesArray[i])) {
3794        return target.getAttribute(attributesArray[i]);
3795      }
3796    }
3797  },
3798      _getBBox = function _getBBox(target) {
3799    var bounds;
3800
3801    try {
3802      bounds = target.getBBox();
3803    } catch (error) {
3804      bounds = _getBBoxHack.call(target, true);
3805    }
3806
3807    bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true));
3808    return bounds && !bounds.width && !bounds.x && !bounds.y ? {
3809      x: +_getAttributeFallbacks(target, ["x", "cx", "x1"]) || 0,
3810      y: +_getAttributeFallbacks(target, ["y", "cy", "y1"]) || 0,
3811      width: 0,
3812      height: 0
3813    } : bounds;
3814  },
3815      _isSVG = function _isSVG(e) {
3816    return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));
3817  },
3818      _removeProperty = function _removeProperty(target, property) {
3819    if (property) {
3820      var style = target.style;
3821
3822      if (property in _transformProps && property !== _transformOriginProp) {
3823        property = _transformProp;
3824      }
3825
3826      if (style.removeProperty) {
3827        if (property.substr(0, 2) === "ms" || property.substr(0, 6) === "webkit") {
3828          property = "-" + property;
3829        }
3830
3831        style.removeProperty(property.replace(_capsExp, "-$1").toLowerCase());
3832      } else {
3833        style.removeAttribute(property);
3834      }
3835    }
3836  },
3837      _addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) {
3838    var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);
3839    plugin._pt = pt;
3840    pt.b = beginning;
3841    pt.e = end;
3842
3843    plugin._props.push(property);
3844
3845    return pt;
3846  },
3847      _nonConvertibleUnits = {
3848    deg: 1,
3849    rad: 1,
3850    turn: 1
3851  },
3852      _convertToUnit = function _convertToUnit(target, property, value, unit) {
3853    var curValue = parseFloat(value) || 0,
3854        curUnit = (value + "").trim().substr((curValue + "").length) || "px",
3855        style = _tempDiv.style,
3856        horizontal = _horizontalExp.test(property),
3857        isRootSVG = target.tagName.toLowerCase() === "svg",
3858        measureProperty = (isRootSVG ? "client" : "offset") + (horizontal ? "Width" : "Height"),
3859        amount = 100,
3860        toPixels = unit === "px",
3861        toPercent = unit === "%",
3862        px,
3863        parent,
3864        cache,
3865        isSVG;
3866
3867    if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {
3868      return curValue;
3869    }
3870
3871    curUnit !== "px" && !toPixels && (curValue = _convertToUnit(target, property, value, "px"));
3872    isSVG = target.getCTM && _isSVG(target);
3873
3874    if ((toPercent || curUnit === "%") && (_transformProps[property] || ~property.indexOf("adius"))) {
3875      px = isSVG ? target.getBBox()[horizontal ? "width" : "height"] : target[measureProperty];
3876      return _round(toPercent ? curValue / px * amount : curValue / 100 * px);
3877    }
3878
3879    style[horizontal ? "width" : "height"] = amount + (toPixels ? curUnit : unit);
3880    parent = ~property.indexOf("adius") || unit === "em" && target.appendChild && !isRootSVG ? target : target.parentNode;
3881
3882    if (isSVG) {
3883      parent = (target.ownerSVGElement || {}).parentNode;
3884    }
3885
3886    if (!parent || parent === _doc$1 || !parent.appendChild) {
3887      parent = _doc$1.body;
3888    }
3889
3890    cache = parent._gsap;
3891
3892    if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time) {
3893      return _round(curValue / cache.width * amount);
3894    } else {
3895      (toPercent || curUnit === "%") && (style.position = _getComputedProperty(target, "position"));
3896      parent === target && (style.position = "static");
3897      parent.appendChild(_tempDiv);
3898      px = _tempDiv[measureProperty];
3899      parent.removeChild(_tempDiv);
3900      style.position = "absolute";
3901
3902      if (horizontal && toPercent) {
3903        cache = _getCache(parent);
3904        cache.time = _ticker.time;
3905        cache.width = parent[measureProperty];
3906      }
3907    }
3908
3909    return _round(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);
3910  },
3911      _get = function _get(target, property, unit, uncache) {
3912    var value;
3913    _pluginInitted || _initCore();
3914
3915    if (property in _propertyAliases && property !== "transform") {
3916      property = _propertyAliases[property];
3917
3918      if (~property.indexOf(",")) {
3919        property = property.split(",")[0];
3920      }
3921    }
3922
3923    if (_transformProps[property] && property !== "transform") {
3924      value = _parseTransform(target, uncache);
3925      value = property !== "transformOrigin" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + " " + value.zOrigin + "px";
3926    } else {
3927      value = target.style[property];
3928
3929      if (!value || value === "auto" || uncache || ~(value + "").indexOf("calc(")) {
3930        value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === "opacity" ? 1 : 0);
3931      }
3932    }
3933
3934    return unit && !~(value + "").trim().indexOf(" ") ? _convertToUnit(target, property, value, unit) + unit : value;
3935  },
3936      _tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) {
3937    if (!start || start === "none") {
3938      var p = _checkPropPrefix(prop, target, 1),
3939          s = p && _getComputedProperty(target, p, 1);
3940
3941      if (s && s !== start) {
3942        prop = p;
3943        start = s;
3944      } else if (prop === "borderColor") {
3945        start = _getComputedProperty(target, "borderTopColor");
3946      }
3947    }
3948
3949    var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString),
3950        index = 0,
3951        matchIndex = 0,
3952        a,
3953        result,
3954        startValues,
3955        startNum,
3956        color,
3957        startValue,
3958        endValue,
3959        endNum,
3960        chunk,
3961        endUnit,
3962        startUnit,
3963        relative,
3964        endValues;
3965    pt.b = start;
3966    pt.e = end;
3967    start += "";
3968    end += "";
3969
3970    if (end === "auto") {
3971      target.style[prop] = end;
3972      end = _getComputedProperty(target, prop) || end;
3973      target.style[prop] = start;
3974    }
3975
3976    a = [start, end];
3977
3978    _colorStringFilter(a);
3979
3980    start = a[0];
3981    end = a[1];
3982    startValues = start.match(_numWithUnitExp) || [];
3983    endValues = end.match(_numWithUnitExp) || [];
3984
3985    if (endValues.length) {
3986      while (result = _numWithUnitExp.exec(end)) {
3987        endValue = result[0];
3988        chunk = end.substring(index, result.index);
3989
3990        if (color) {
3991          color = (color + 1) % 5;
3992        } else if (chunk.substr(-5) === "rgba(" || chunk.substr(-5) === "hsla(") {
3993          color = 1;
3994        }
3995
3996        if (endValue !== (startValue = startValues[matchIndex++] || "")) {
3997          startNum = parseFloat(startValue) || 0;
3998          startUnit = startValue.substr((startNum + "").length);
3999          relative = endValue.charAt(1) === "=" ? +(endValue.charAt(0) + "1") : 0;
4000
4001          if (relative) {
4002            endValue = endValue.substr(2);
4003          }
4004
4005          endNum = parseFloat(endValue);
4006          endUnit = endValue.substr((endNum + "").length);
4007          index = _numWithUnitExp.lastIndex - endUnit.length;
4008
4009          if (!endUnit) {
4010            endUnit = endUnit || _config.units[prop] || startUnit;
4011
4012            if (index === end.length) {
4013              end += endUnit;
4014              pt.e += endUnit;
4015            }
4016          }
4017
4018          if (startUnit !== endUnit) {
4019            startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;
4020          }
4021
4022          pt._pt = {
4023            _next: pt._pt,
4024            p: chunk || matchIndex === 1 ? chunk : ",",
4025            s: startNum,
4026            c: relative ? relative * endNum : endNum - startNum,
4027            m: color && color < 4 || prop === "zIndex" ? Math.round : 0
4028          };
4029        }
4030      }
4031
4032      pt.c = index < end.length ? end.substring(index, end.length) : "";
4033    } else {
4034      pt.r = prop === "display" && end === "none" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;
4035    }
4036
4037    _relExp.test(end) && (pt.e = 0);
4038    this._pt = pt;
4039    return pt;
4040  },
4041      _keywordToPercent = {
4042    top: "0%",
4043    bottom: "100%",
4044    left: "0%",
4045    right: "100%",
4046    center: "50%"
4047  },
4048      _convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) {
4049    var split = value.split(" "),
4050        x = split[0],
4051        y = split[1] || "50%";
4052
4053    if (x === "top" || x === "bottom" || y === "left" || y === "right") {
4054      value = x;
4055      x = y;
4056      y = value;
4057    }
4058
4059    split[0] = _keywordToPercent[x] || x;
4060    split[1] = _keywordToPercent[y] || y;
4061    return split.join(" ");
4062  },
4063      _renderClearProps = function _renderClearProps(ratio, data) {
4064    if (data.tween && data.tween._time === data.tween._dur) {
4065      var target = data.t,
4066          style = target.style,
4067          props = data.u,
4068          cache = target._gsap,
4069          prop,
4070          clearTransforms,
4071          i;
4072
4073      if (props === "all" || props === true) {
4074        style.cssText = "";
4075        clearTransforms = 1;
4076      } else {
4077        props = props.split(",");
4078        i = props.length;
4079
4080        while (--i > -1) {
4081          prop = props[i];
4082
4083          if (_transformProps[prop]) {
4084            clearTransforms = 1;
4085            prop = prop === "transformOrigin" ? _transformOriginProp : _transformProp;
4086          }
4087
4088          _removeProperty(target, prop);
4089        }
4090      }
4091
4092      if (clearTransforms) {
4093        _removeProperty(target, _transformProp);
4094
4095        if (cache) {
4096          cache.svg && target.removeAttribute("transform");
4097
4098          _parseTransform(target, 1);
4099
4100          cache.uncache = 1;
4101        }
4102      }
4103    }
4104  },
4105      _specialProps = {
4106    clearProps: function clearProps(plugin, target, property, endValue, tween) {
vendor: 3,081 bytes, lines 4107-4187
4107      if (tween.data !== "isFromStart") {
4108        var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);
4109        pt.u = endValue;
4110        pt.pr = -10;
4111        pt.tween = tween;
4112
4113        plugin._props.push(property);
4114
4115        return 1;
4116      }
4117    }
4118  },
4119      _identity2DMatrix = [1, 0, 0, 1, 0, 0],
4120      _rotationalProperties = {},
4121      _isNullTransform = function _isNullTransform(value) {
4122    return value === "matrix(1, 0, 0, 1, 0, 0)" || value === "none" || !value;
4123  },
4124      _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) {
4125    var matrixString = _getComputedProperty(target, _transformProp);
4126
4127    return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round);
4128  },
4129      _getMatrix = function _getMatrix(target, force2D) {
4130    var cache = target._gsap || _getCache(target),
4131        style = target.style,
4132        matrix = _getComputedTransformMatrixAsArray(target),
4133        parent,
4134        nextSibling,
4135        temp,
4136        addedToDOM;
4137
4138    if (cache.svg && target.getAttribute("transform")) {
4139      temp = target.transform.baseVal.consolidate().matrix;
4140      matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];
4141      return matrix.join(",") === "1,0,0,1,0,0" ? _identity2DMatrix : matrix;
4142    } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {
4143      temp = style.display;
4144      style.display = "block";
4145      parent = target.parentNode;
4146
4147      if (!parent || !target.offsetParent) {
4148        addedToDOM = 1;
4149        nextSibling = target.nextSibling;
4150
4151        _docElement.appendChild(target);
4152      }
4153
4154      matrix = _getComputedTransformMatrixAsArray(target);
4155      temp ? style.display = temp : _removeProperty(target, "display");
4156
4157      if (addedToDOM) {
4158        nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);
4159      }
4160    }
4161
4162    return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;
4163  },
4164      _applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {
4165    var cache = target._gsap,
4166        matrix = matrixArray || _getMatrix(target, true),
4167        xOriginOld = cache.xOrigin || 0,
4168        yOriginOld = cache.yOrigin || 0,
4169        xOffsetOld = cache.xOffset || 0,
4170        yOffsetOld = cache.yOffset || 0,
4171        a = matrix[0],
4172        b = matrix[1],
4173        c = matrix[2],
4174        d = matrix[3],
4175        tx = matrix[4],
4176        ty = matrix[5],
4177        originSplit = origin.split(" "),
4178        xOrigin = parseFloat(originSplit[0]) || 0,
4179        yOrigin = parseFloat(originSplit[1]) || 0,
4180        bounds,
4181        determinant,
4182        x,
4183        y;
4184
4185    if (!originIsAbsolute) {
4186      bounds = _getBBox(target);
4187      xOrigin = bounds.x + (~originSplit[0].indexOf("%") ? xOrigin / 100 * boun
vendor: 6,539 bytes, lines 4187-4390
4187ds.width : xOrigin);
4188      yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf("%") ? yOrigin / 100 * bounds.height : yOrigin);
4189    } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {
4190      x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;
4191      y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;
4192      xOrigin = x;
4193      yOrigin = y;
4194    }
4195
4196    if (smooth || smooth !== false && cache.smooth) {
4197      tx = xOrigin - xOriginOld;
4198      ty = yOrigin - yOriginOld;
4199      cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;
4200      cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;
4201    } else {
4202      cache.xOffset = cache.yOffset = 0;
4203    }
4204
4205    cache.xOrigin = xOrigin;
4206    cache.yOrigin = yOrigin;
4207    cache.smooth = !!smooth;
4208    cache.origin = origin;
4209    cache.originIsAbsolute = !!originIsAbsolute;
4210    target.style[_transformOriginProp] = "0px 0px";
4211
4212    if (pluginToAddPropTweensTo) {
4213      _addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOrigin", xOriginOld, xOrigin);
4214
4215      _addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOrigin", yOriginOld, yOrigin);
4216
4217      _addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOffset", xOffsetOld, cache.xOffset);
4218
4219      _addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOffset", yOffsetOld, cache.yOffset);
4220    }
4221
4222    target.setAttribute("data-svg-origin", xOrigin + " " + yOrigin);
4223  },
4224      _parseTransform = function _parseTransform(target, uncache) {
4225    var cache = target._gsap || new GSCache(target);
4226
4227    if ("x" in cache && !uncache && !cache.uncache) {
4228      return cache;
4229    }
4230
4231    var style = target.style,
4232        invertedScaleX = cache.scaleX < 0,
4233        px = "px",
4234        deg = "deg",
4235        origin = _getComputedProperty(target, _transformOriginProp) || "0",
4236        x,
4237        y,
4238        z,
4239        scaleX,
4240        scaleY,
4241        rotation,
4242        rotationX,
4243        rotationY,
4244        skewX,
4245        skewY,
4246        perspective,
4247        xOrigin,
4248        yOrigin,
4249        matrix,
4250        angle,
4251        cos,
4252        sin,
4253        a,
4254        b,
4255        c,
4256        d,
4257        a12,
4258        a22,
4259        t1,
4260        t2,
4261        t3,
4262        a13,
4263        a23,
4264        a33,
4265        a42,
4266        a43,
4267        a32;
4268    x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;
4269    scaleX = scaleY = 1;
4270    cache.svg = !!(target.getCTM && _isSVG(target));
4271    matrix = _getMatrix(target, cache.svg);
4272
4273    if (cache.svg) {
4274      t1 = (!cache.uncache || origin === "0px 0px") && !uncache && target.getAttribute("data-svg-origin");
4275
4276      _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);
4277    }
4278
4279    xOrigin = cache.xOrigin || 0;
4280    yOrigin = cache.yOrigin || 0;
4281
4282    if (matrix !== _identity2DMatrix) {
4283      a = matrix[0];
4284      b = matrix[1];
4285      c = matrix[2];
4286      d = matrix[3];
4287      x = a12 = matrix[4];
4288      y = a22 = matrix[5];
4289
4290      if (matrix.length === 6) {
4291        scaleX = Math.sqrt(a * a + b * b);
4292        scaleY = Math.sqrt(d * d + c * c);
4293        rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0;
4294        skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;
4295        skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));
4296
4297        if (cache.svg) {
4298          x -= xOrigin - (xOrigin * a + yOrigin * c);
4299          y -= yOrigin - (xOrigin * b + yOrigin * d);
4300        }
4301      } else {
4302        a32 = matrix[6];
4303        a42 = matrix[7];
4304        a13 = matrix[8];
4305        a23 = matrix[9];
4306        a33 = matrix[10];
4307        a43 = matrix[11];
4308        x = matrix[12];
4309        y = matrix[13];
4310        z = matrix[14];
4311        angle = _atan2(a32, a33);
4312        rotationX = angle * _RAD2DEG;
4313
4314        if (angle) {
4315          cos = Math.cos(-angle);
4316          sin = Math.sin(-angle);
4317          t1 = a12 * cos + a13 * sin;
4318          t2 = a22 * cos + a23 * sin;
4319          t3 = a32 * cos + a33 * sin;
4320          a13 = a12 * -sin + a13 * cos;
4321          a23 = a22 * -sin + a23 * cos;
4322          a33 = a32 * -sin + a33 * cos;
4323          a43 = a42 * -sin + a43 * cos;
4324          a12 = t1;
4325          a22 = t2;
4326          a32 = t3;
4327        }
4328
4329        angle = _atan2(-c, a33);
4330        rotationY = angle * _RAD2DEG;
4331
4332        if (angle) {
4333          cos = Math.cos(-angle);
4334          sin = Math.sin(-angle);
4335          t1 = a * cos - a13 * sin;
4336          t2 = b * cos - a23 * sin;
4337          t3 = c * cos - a33 * sin;
4338          a43 = d * sin + a43 * cos;
4339          a = t1;
4340          b = t2;
4341          c = t3;
4342        }
4343
4344        angle = _atan2(b, a);
4345        rotation = angle * _RAD2DEG;
4346
4347        if (angle) {
4348          cos = Math.cos(angle);
4349          sin = Math.sin(angle);
4350          t1 = a * cos + b * sin;
4351          t2 = a12 * cos + a22 * sin;
4352          b = b * cos - a * sin;
4353          a22 = a22 * cos - a12 * sin;
4354          a = t1;
4355          a12 = t2;
4356        }
4357
4358        if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {
4359          rotationX = rotation = 0;
4360          rotationY = 180 - rotationY;
4361        }
4362
4363        scaleX = _round(Math.sqrt(a * a + b * b + c * c));
4364        scaleY = _round(Math.sqrt(a22 * a22 + a32 * a32));
4365        angle = _atan2(a12, a22);
4366        skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0;
4367        perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;
4368      }
4369
4370      if (cache.svg) {
4371        t1 = target.getAttribute("transform");
4372        cache.forceCSS = target.setAttribute("transform", "") || !_isNullTransform(_getComputedProperty(target, _transformProp));
4373        t1 && target.setAttribute("transform", t1);
4374      }
4375    }
4376
4377    if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {
4378      if (invertedScaleX) {
4379        scaleX *= -1;
4380        skewX += rotation <= 0 ? 180 : -180;
4381        rotation += rotation <= 0 ? 180 : -180;
4382      } else {
4383        scaleY *= -1;
4384        skewX += skewX <= 0 ? 180 : -180;
4385      }
4386    }
4387
4388    cache.x = x - ((cache.xPercent = x && (cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px;
4389    cache.y = y - ((cache.yPercent = y && (cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px;
4390    cache.z = z + px;
vendor: 4,420 bytes, lines 4391-4517
4391    cache.scaleX = _round(scaleX);
4392    cache.scaleY = _round(scaleY);
4393    cache.rotation = _round(rotation) + deg;
4394    cache.rotationX = _round(rotationX) + deg;
4395    cache.rotationY = _round(rotationY) + deg;
4396    cache.skewX = skewX + deg;
4397    cache.skewY = skewY + deg;
4398    cache.transformPerspective = perspective + px;
4399
4400    if (cache.zOrigin = parseFloat(origin.split(" ")[2]) || 0) {
4401      style[_transformOriginProp] = _firstTwoOnly(origin);
4402    }
4403
4404    cache.xOffset = cache.yOffset = 0;
4405    cache.force3D = _config.force3D;
4406    cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;
4407    cache.uncache = 0;
4408    return cache;
4409  },
4410      _firstTwoOnly = function _firstTwoOnly(value) {
4411    return (value = value.split(" "))[0] + " " + value[1];
4412  },
4413      _addPxTranslate = function _addPxTranslate(target, start, value) {
4414    var unit = getUnit(start);
4415    return _round(parseFloat(start) + parseFloat(_convertToUnit(target, "x", value + "px", unit))) + unit;
4416  },
4417      _renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) {
4418    cache.z = "0px";
4419    cache.rotationY = cache.rotationX = "0deg";
4420    cache.force3D = 0;
4421
4422    _renderCSSTransforms(ratio, cache);
4423  },
4424      _zeroDeg = "0deg",
4425      _zeroPx = "0px",
4426      _endParenthesis = ") ",
4427      _renderCSSTransforms = function _renderCSSTransforms(ratio, cache) {
4428    var _ref = cache || this,
4429        xPercent = _ref.xPercent,
4430        yPercent = _ref.yPercent,
4431        x = _ref.x,
4432        y = _ref.y,
4433        z = _ref.z,
4434        rotation = _ref.rotation,
4435        rotationY = _ref.rotationY,
4436        rotationX = _ref.rotationX,
4437        skewX = _ref.skewX,
4438        skewY = _ref.skewY,
4439        scaleX = _ref.scaleX,
4440        scaleY = _ref.scaleY,
4441        transformPerspective = _ref.transformPerspective,
4442        force3D = _ref.force3D,
4443        target = _ref.target,
4444        zOrigin = _ref.zOrigin,
4445        transforms = "",
4446        use3D = force3D === "auto" && ratio && ratio !== 1 || force3D === true;
4447
4448    if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {
4449      var angle = parseFloat(rotationY) * _DEG2RAD,
4450          a13 = Math.sin(angle),
4451          a33 = Math.cos(angle),
4452          cos;
4453
4454      angle = parseFloat(rotationX) * _DEG2RAD;
4455      cos = Math.cos(angle);
4456      x = _addPxTranslate(target, x, a13 * cos * -zOrigin);
4457      y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);
4458      z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);
4459    }
4460
4461    if (transformPerspective !== _zeroPx) {
4462      transforms += "perspective(" + transformPerspective + _endParenthesis;
4463    }
4464
4465    if (xPercent || yPercent) {
4466      transforms += "translate(" + xPercent + "%, " + yPercent + "%) ";
4467    }
4468
4469    if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {
4470      transforms += z !== _zeroPx || use3D ? "translate3d(" + x + ", " + y + ", " + z + ") " : "translate(" + x + ", " + y + _endParenthesis;
4471    }
4472
4473    if (rotation !== _zeroDeg) {
4474      transforms += "rotate(" + rotation + _endParenthesis;
4475    }
4476
4477    if (rotationY !== _zeroDeg) {
4478      transforms += "rotateY(" + rotationY + _endParenthesis;
4479    }
4480
4481    if (rotationX !== _zeroDeg) {
4482      transforms += "rotateX(" + rotationX + _endParenthesis;
4483    }
4484
4485    if (skewX !== _zeroDeg || skewY !== _zeroDeg) {
4486      transforms += "skew(" + skewX + ", " + skewY + _endParenthesis;
4487    }
4488
4489    if (scaleX !== 1 || scaleY !== 1) {
4490      transforms += "scale(" + scaleX + ", " + scaleY + _endParenthesis;
4491    }
4492
4493    target.style[_transformProp] = transforms || "translate(0, 0)";
4494  },
4495      _renderSVGTransforms = function _renderSVGTransforms(ratio, cache) {
4496    var _ref2 = cache || this,
4497        xPercent = _ref2.xPercent,
4498        yPercent = _ref2.yPercent,
4499        x = _ref2.x,
4500        y = _ref2.y,
4501        rotation = _ref2.rotation,
4502        skewX = _ref2.skewX,
4503        skewY = _ref2.skewY,
4504        scaleX = _ref2.scaleX,
4505        scaleY = _ref2.scaleY,
4506        target = _ref2.target,
4507        xOrigin = _ref2.xOrigin,
4508        yOrigin = _ref2.yOrigin,
4509        xOffset = _ref2.xOffset,
4510        yOffset = _ref2.yOffset,
4511        forceCSS = _ref2.forceCSS,
4512        tx = parseFloat(x),
4513        ty = parseFloat(y),
4514        a11,
4515        a21,
4516        a12,
4517        a22,
vendor: 4,702 bytes, lines 4518-4672
4518        temp;
4519
4520    rotation = parseFloat(rotation);
4521    skewX = parseFloat(skewX);
4522    skewY = parseFloat(skewY);
4523
4524    if (skewY) {
4525      skewY = parseFloat(skewY);
4526      skewX += skewY;
4527      rotation += skewY;
4528    }
4529
4530    if (rotation || skewX) {
4531      rotation *= _DEG2RAD;
4532      skewX *= _DEG2RAD;
4533      a11 = Math.cos(rotation) * scaleX;
4534      a21 = Math.sin(rotation) * scaleX;
4535      a12 = Math.sin(rotation - skewX) * -scaleY;
4536      a22 = Math.cos(rotation - skewX) * scaleY;
4537
4538      if (skewX) {
4539        skewY *= _DEG2RAD;
4540        temp = Math.tan(skewX - skewY);
4541        temp = Math.sqrt(1 + temp * temp);
4542        a12 *= temp;
4543        a22 *= temp;
4544
4545        if (skewY) {
4546          temp = Math.tan(skewY);
4547          temp = Math.sqrt(1 + temp * temp);
4548          a11 *= temp;
4549          a21 *= temp;
4550        }
4551      }
4552
4553      a11 = _round(a11);
4554      a21 = _round(a21);
4555      a12 = _round(a12);
4556      a22 = _round(a22);
4557    } else {
4558      a11 = scaleX;
4559      a22 = scaleY;
4560      a21 = a12 = 0;
4561    }
4562
4563    if (tx && !~(x + "").indexOf("px") || ty && !~(y + "").indexOf("px")) {
4564      tx = _convertToUnit(target, "x", x, "px");
4565      ty = _convertToUnit(target, "y", y, "px");
4566    }
4567
4568    if (xOrigin || yOrigin || xOffset || yOffset) {
4569      tx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);
4570      ty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);
4571    }
4572
4573    if (xPercent || yPercent) {
4574      temp = target.getBBox();
4575      tx = _round(tx + xPercent / 100 * temp.width);
4576      ty = _round(ty + yPercent / 100 * temp.height);
4577    }
4578
4579    temp = "matrix(" + a11 + "," + a21 + "," + a12 + "," + a22 + "," + tx + "," + ty + ")";
4580    target.setAttribute("transform", temp);
4581    forceCSS && (target.style[_transformProp] = temp);
4582  },
4583      _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue, relative) {
4584    var cap = 360,
4585        isString = _isString(endValue),
4586        endNum = parseFloat(endValue) * (isString && ~endValue.indexOf("rad") ? _RAD2DEG : 1),
4587        change = relative ? endNum * relative : endNum - startNum,
4588        finalValue = startNum + change + "deg",
4589        direction,
4590        pt;
4591
4592    if (isString) {
4593      direction = endValue.split("_")[1];
4594
4595      if (direction === "short") {
4596        change %= cap;
4597
4598        if (change !== change % (cap / 2)) {
4599          change += change < 0 ? cap : -cap;
4600        }
4601      }
4602
4603      if (direction === "cw" && change < 0) {
4604        change = (change + cap * _bigNum$1) % cap - ~~(change / cap) * cap;
4605      } else if (direction === "ccw" && change > 0) {
4606        change = (change - cap * _bigNum$1) % cap - ~~(change / cap) * cap;
4607      }
4608    }
4609
4610    plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);
4611    pt.e = finalValue;
4612    pt.u = "deg";
4613
4614    plugin._props.push(property);
4615
4616    return pt;
4617  },
4618      _assign = function _assign(target, source) {
4619    for (var p in source) {
4620      target[p] = source[p];
4621    }
4622
4623    return target;
4624  },
4625      _addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) {
4626    var startCache = _assign({}, target._gsap),
4627        exclude = "perspective,force3D,transformOrigin,svgOrigin",
4628        style = target.style,
4629        endCache,
4630        p,
4631        startValue,
4632        endValue,
4633        startNum,
4634        endNum,
4635        startUnit,
4636        endUnit;
4637
4638    if (startCache.svg) {
4639      startValue = target.getAttribute("transform");
4640      target.setAttribute("transform", "");
4641      style[_transformProp] = transforms;
4642      endCache = _parseTransform(target, 1);
4643
4644      _removeProperty(target, _transformProp);
4645
4646      target.setAttribute("transform", startValue);
4647    } else {
4648      startValue = getComputedStyle(target)[_transformProp];
4649      style[_transformProp] = transforms;
4650      endCache = _parseTransform(target, 1);
4651      style[_transformProp] = startValue;
4652    }
4653
4654    for (p in _transformProps) {
4655      startValue = startCache[p];
4656      endValue = endCache[p];
4657
4658      if (startValue !== endValue && exclude.indexOf(p) < 0) {
4659        startUnit = getUnit(startValue);
4660        endUnit = getUnit(endValue);
4661        startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);
4662        endNum = parseFloat(endValue);
4663        plugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);
4664        plugin._pt.u = endUnit || 0;
4665
4666        plugin._props.push(p);
4667      }
4668    }
4669
4670    _assign(endCache, startCache);
4671  };
4672
vendor: 4,224 bytes, lines 4673-4795
4673  _forEachName("padding,margin,Width,Radius", function (name, index) {
4674    var t = "Top",
4675        r = "Right",
4676        b = "Bottom",
4677        l = "Left",
4678        props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) {
4679      return index < 2 ? name + side : "border" + side + name;
4680    });
4681
4682    _specialProps[index > 1 ? "border" + name : name] = function (plugin, target, property, endValue, tween) {
4683      var a, vars;
4684
4685      if (arguments.length < 4) {
4686        a = props.map(function (prop) {
4687          return _get(plugin, prop, property);
4688        });
4689        vars = a.join(" ");
4690        return vars.split(a[0]).length === 5 ? a[0] : vars;
4691      }
4692
4693      a = (endValue + "").split(" ");
4694      vars = {};
4695      props.forEach(function (prop, i) {
4696        return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];
4697      });
4698      plugin.init(target, vars, tween);
4699    };
4700  });
4701
4702  var CSSPlugin = {
4703    name: "css",
4704    register: _initCore,
4705    targetTest: function targetTest(target) {
4706      return target.style && target.nodeType;
4707    },
4708    init: function init(target, vars, tween, index, targets) {
4709      var props = this._props,
4710          style = target.style,
4711          startAt = tween.vars.startAt,
4712          startValue,
4713          endValue,
4714          endNum,
4715          startNum,
4716          type,
4717          specialProp,
4718          p,
4719          startUnit,
4720          endUnit,
4721          relative,
4722          isTransformRelated,
4723          transformPropTween,
4724          cache,
4725          smooth,
4726          hasPriority;
4727      _pluginInitted || _initCore();
4728
4729      for (p in vars) {
4730        if (p === "autoRound") {
4731          continue;
4732        }
4733
4734        endValue = vars[p];
4735
4736        if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) {
4737          continue;
4738        }
4739
4740        type = typeof endValue;
4741        specialProp = _specialProps[p];
4742
4743        if (type === "function") {
4744          endValue = endValue.call(tween, index, target, targets);
4745          type = typeof endValue;
4746        }
4747
4748        if (type === "string" && ~endValue.indexOf("random(")) {
4749          endValue = _replaceRandom(endValue);
4750        }
4751
4752        if (specialProp) {
4753          specialProp(this, target, p, endValue, tween) && (hasPriority = 1);
4754        } else if (p.substr(0, 2) === "--") {
4755          startValue = (getComputedStyle(target).getPropertyValue(p) + "").trim();
4756          endValue += "";
4757          _colorExp.lastIndex = 0;
4758
4759          if (!_colorExp.test(startValue)) {
4760            startUnit = getUnit(startValue);
4761            endUnit = getUnit(endValue);
4762          }
4763
4764          endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);
4765          this.add(style, "setProperty", startValue, endValue, index, targets, 0, 0, p);
4766          props.push(p);
4767        } else if (type !== "undefined") {
4768          if (startAt && p in startAt) {
4769            startValue = typeof startAt[p] === "function" ? startAt[p].call(tween, index, target, targets) : startAt[p];
4770            p in _config.units && !getUnit(startValue) && (startValue += _config.units[p]);
4771            (startValue + "").charAt(1) === "=" && (startValue = _get(target, p));
4772          } else {
4773            startValue = _get(target, p);
4774          }
4775
4776          startNum = parseFloat(startValue);
4777          relative = type === "string" && endValue.charAt(1) === "=" ? +(endValue.charAt(0) + "1") : 0;
4778          relative && (endValue = endValue.substr(2));
4779          endNum = parseFloat(endValue);
4780
4781          if (p in _propertyAliases) {
4782            if (p === "autoAlpha") {
4783              if (startNum === 1 && _get(target, "visibility") === "hidden" && endNum) {
4784                startNum = 0;
4785              }
4786
4787              _addNonTweeningPT(this, style, "visibility", startNum ? "inherit" : "hidden", endNum ? "inherit" : "hidden", !endNum);
4788            }
4789
4790            if (p !== "scale" && p !== "transform") {
4791              p = _propertyAliases[p];
4792              ~p.indexOf(",") && (p = p.split(",")[0]);
4793            }
4794          }
4795
vendor: 4,394 bytes, lines 4796-4889
4796          isTransformRelated = p in _transformProps;
4797
4798          if (isTransformRelated) {
4799            if (!transformPropTween) {
4800              cache = target._gsap;
4801              cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform);
4802              smooth = vars.smoothOrigin !== false && cache.smooth;
4803              transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1);
4804              transformPropTween.dep = 1;
4805            }
4806
4807            if (p === "scale") {
4808              this._pt = new PropTween(this._pt, cache, "scaleY", cache.scaleY, (relative ? relative * endNum : endNum - cache.scaleY) || 0);
4809              props.push("scaleY", p);
4810              p += "X";
4811            } else if (p === "transformOrigin") {
4812              endValue = _convertKeywordsToPercentages(endValue);
4813
4814              if (cache.svg) {
4815                _applySVGOrigin(target, endValue, 0, smooth, 0, this);
4816              } else {
4817                endUnit = parseFloat(endValue.split(" ")[2]) || 0;
4818                endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, "zOrigin", cache.zOrigin, endUnit);
4819
4820                _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));
4821              }
4822
4823              continue;
4824            } else if (p === "svgOrigin") {
4825              _applySVGOrigin(target, endValue, 1, smooth, 0, this);
4826
4827              continue;
4828            } else if (p in _rotationalProperties) {
4829              _addRotationalPropTween(this, cache, p, startNum, endValue, relative);
4830
4831              continue;
4832            } else if (p === "smoothOrigin") {
4833              _addNonTweeningPT(this, cache, "smooth", cache.smooth, endValue);
4834
4835              continue;
4836            } else if (p === "force3D") {
4837              cache[p] = endValue;
4838              continue;
4839            } else if (p === "transform") {
4840              _addRawTransformPTs(this, endValue, target);
4841
4842              continue;
4843            }
4844          } else if (!(p in style)) {
4845            p = _checkPropPrefix(p) || p;
4846          }
4847
4848          if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {
4849            startUnit = (startValue + "").substr((startNum + "").length);
4850            endNum || (endNum = 0);
4851            endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit);
4852            startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));
4853            this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, relative ? relative * endNum : endNum - startNum, !isTransformRelated && (endUnit === "px" || p === "zIndex") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp);
4854            this._pt.u = endUnit || 0;
4855
4856            if (startUnit !== endUnit) {
4857              this._pt.b = startValue;
4858              this._pt.r = _renderCSSPropWithBeginning;
4859            }
4860          } else if (!(p in style)) {
4861            if (p in target) {
4862              this.add(target, p, startValue || target[p], endValue, index, targets);
4863            } else {
4864              _missingPlugin(p, endValue);
4865
4866              continue;
4867            }
4868          } else {
4869            _tweenComplexCSSString.call(this, target, p, startValue, endValue);
4870          }
4871
4872          props.push(p);
4873        }
4874      }
4875
4876      hasPriority && _sortPropTweensByPriority(this);
4877    },
4878    get: _get,
4879    aliases: _propertyAliases,
4880    getSetter: function getSetter(target, property, plugin) {
4881      var p = _propertyAliases[property];
4882      p && p.indexOf(",") < 0 && (property = p);
4883      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);
4884    },
4885    core: {
4886      _removeProperty: _removeProperty,
4887      _getMatrix: _getMatrix
4888    }
4889  };
vendor: 2,070 bytes, lines 4890-4947
4890  gsap.utils.checkPrefix = _checkPropPrefix;
4891
4892  (function (positionAndScale, rotation, others, aliases) {
4893    var all = _forEachName(positionAndScale + "," + rotation + "," + others, function (name) {
4894      _transformProps[name] = 1;
4895    });
4896
4897    _forEachName(rotation, function (name) {
4898      _config.units[name] = "deg";
4899      _rotationalProperties[name] = 1;
4900    });
4901
4902    _propertyAliases[all[13]] = positionAndScale + "," + rotation;
4903
4904    _forEachName(aliases, function (name) {
4905      var split = name.split(":");
4906      _propertyAliases[split[1]] = all[split[0]];
4907    });
4908  })("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");
4909
4910  _forEachName("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective", function (name) {
4911    _config.units[name] = "px";
4912  });
4913
4914  gsap.registerPlugin(CSSPlugin);
4915
4916  var gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap,
4917      TweenMaxWithCSS = gsapWithCSS.core.Tween;
4918
4919  exports.Back = Back;
4920  exports.Bounce = Bounce;
4921  exports.CSSPlugin = CSSPlugin;
4922  exports.Circ = Circ;
4923  exports.Cubic = Cubic;
4924  exports.Elastic = Elastic;
4925  exports.Expo = Expo;
4926  exports.Linear = Linear;
4927  exports.Power0 = Power0;
4928  exports.Power1 = Power1;
4929  exports.Power2 = Power2;
4930  exports.Power3 = Power3;
4931  exports.Power4 = Power4;
4932  exports.Quad = Quad;
4933  exports.Quart = Quart;
4934  exports.Quint = Quint;
4935  exports.Sine = Sine;
4936  exports.SteppedEase = SteppedEase;
4937  exports.Strong = Strong;
4938  exports.TimelineLite = Timeline;
4939  exports.TimelineMax = Timeline;
4940  exports.TweenLite = Tween;
4941  exports.TweenMax = TweenMaxWithCSS;
4942  exports.default = gsapWithCSS;
4943  exports.gsap = gsapWithCSS;
4944
4945  if (typeof(window) === 'undefined' || window !== exports) {Object.defineProperty(exports, '__esModule', { value: true });} else {delete window.default;}
4946
4947})));

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