{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/gsap/TweenLite.js","webpack:///./node_modules/@stimulus/core/dist/src/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/src/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/src/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/src/action.js","webpack:///./node_modules/@stimulus/core/dist/src/binding.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","webpack:///./node_modules/@stimulus/multimap/dist/src/set_operations.js","webpack:///./node_modules/@stimulus/multimap/dist/src/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/src/indexed_multimap.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/context.js","webpack:///./node_modules/@stimulus/core/dist/src/definition.js","webpack:///./node_modules/@stimulus/core/dist/src/module.js","webpack:///./node_modules/@stimulus/core/dist/src/data_map.js","webpack:///./node_modules/@stimulus/core/dist/src/selectors.js","webpack:///./node_modules/@stimulus/core/dist/src/target_set.js","webpack:///./node_modules/@stimulus/core/dist/src/scope.js","webpack:///./node_modules/@stimulus/core/dist/src/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/router.js","webpack:///./node_modules/@stimulus/core/dist/src/schema.js","webpack:///./node_modules/@stimulus/core/dist/src/application.js","webpack:///./node_modules/@stimulus/core/dist/src/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/src/controller.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/ssr-window/dist/ssr-window.esm.js","webpack:///./node_modules/dom7/dist/dom7.modular.js","webpack:///./node_modules/swiper/js/swiper.esm.bundle.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/es6-scroll-to/lib/index.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/es6.object.to-string.js","webpack:///./node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/core-js/modules/_new-promise-capability.js","webpack:///./app/javascript/packs/controllers/add_to_cart_controller.js","webpack:///./app/javascript/packs/controllers/analytics_controller.js","webpack:///./app/javascript/packs/controllers/beer_sticker_controller.js","webpack:///./app/javascript/packs/controllers/beer_sticker_form_controller.js","webpack:///./app/javascript/packs/controllers/checkbox_toggle_controller.js","webpack:///./app/javascript/packs/controllers/checkout_analytics_controller.js","webpack:///./app/javascript/packs/controllers/checkout_sidebar_summary_controller.js","webpack:///./app/javascript/packs/controllers/clipboard_controller.js","webpack:///./app/javascript/packs/controllers/countdown_timer_controller.js","webpack:///./app/javascript/packs/controllers/facebook_controller.js","webpack:///./app/javascript/packs/controllers/footer_list_controller.js","webpack:///./app/javascript/packs/controllers/gift_wrapping_controller.js","webpack:///./app/javascript/packs/controllers/infinite_scroll_controller.js","webpack:///./app/javascript/packs/controllers/modal_controller.js","webpack:///./app/javascript/packs/controllers/modal_upsells_controller.js","webpack:///./app/javascript/packs/controllers/order_item_controller.js","webpack:///./app/javascript/packs/controllers/pakjegemak_controller.js","webpack:///./app/javascript/packs/controllers/price_controller.js","webpack:///./app/javascript/packs/controllers/quickview_controller.js","webpack:///./app/javascript/packs/controllers/registration_controller.js","webpack:///./app/javascript/packs/controllers/search_controller.js","webpack:///./app/javascript/packs/controllers/soonest_delivery_date_controller.js","webpack:///./app/javascript/packs/controllers/track_purchase_controller.js","webpack:///./app/javascript/packs/controllers/untappd_controller.js","webpack:///./app/javascript/packs/controllers/ups_access_points_controller.js","webpack:///./app/javascript/packs/controllers/wishlist_controller.js","webpack:///./app/javascript/packs/controllers/wishlist_item_controller.js","webpack:///./node_modules/spin.js/spin.js","webpack:///./node_modules/ladda/js/ladda.js","webpack:///./app/javascript/packs/controllers/beer_finder_controller.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/core-js/modules/_collection-to-json.js","webpack:///./node_modules/core-js/modules/_set-collection-of.js","webpack:///./node_modules/core-js/modules/_set-collection-from.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/core-js/modules/_task.js","webpack:///./node_modules/core-js/modules/_perform.js","webpack:///./node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/core-js/fn/array/find.js","webpack:///./node_modules/core-js/modules/es6.array.find.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/fn/array/find-index.js","webpack:///./node_modules/core-js/modules/es6.array.find-index.js","webpack:///./node_modules/core-js/fn/array/from.js","webpack:///./node_modules/core-js/modules/_string-at.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/modules/es6.array.from.js","webpack:///./node_modules/core-js/modules/_create-property.js","webpack:///./node_modules/core-js/fn/map.js","webpack:///./node_modules/core-js/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/core-js/modules/es7.map.to-json.js","webpack:///./node_modules/core-js/modules/_array-from-iterable.js","webpack:///./node_modules/core-js/modules/es7.map.of.js","webpack:///./node_modules/core-js/modules/es7.map.from.js","webpack:///./node_modules/core-js/fn/object/assign.js","webpack:///./node_modules/core-js/modules/es6.object.assign.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/fn/promise.js","webpack:///./node_modules/core-js/modules/es6.promise.js","webpack:///./node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/core-js/modules/_microtask.js","webpack:///./node_modules/core-js/modules/_user-agent.js","webpack:///./node_modules/core-js/modules/es7.promise.finally.js","webpack:///./node_modules/core-js/modules/es7.promise.try.js","webpack:///./node_modules/core-js/fn/set.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/core-js/modules/es7.set.to-json.js","webpack:///./node_modules/core-js/modules/es7.set.of.js","webpack:///./node_modules/core-js/modules/es7.set.from.js","webpack:///./node_modules/element-closest/element-closest.js","webpack:///./node_modules/mutation-observer-inner-html-shim/mutation-observer-inner-html-shim.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/mixpanel-browser/dist/mixpanel.cjs.js","webpack:///./app/javascript/packs/controllers sync \\.js$","webpack:///./node_modules/gsap/TweenMaxBase.js","webpack:///./node_modules/gsap/CSSPlugin.js","webpack:///./node_modules/gsap/AttrPlugin.js","webpack:///./node_modules/gsap/RoundPropsPlugin.js","webpack:///./node_modules/gsap/DirectionalRotationPlugin.js","webpack:///./node_modules/gsap/TimelineLite.js","webpack:///./node_modules/gsap/TimelineMax.js","webpack:///./node_modules/gsap/BezierPlugin.js","webpack:///./node_modules/gsap/EasePack.js","webpack:///./node_modules/gsap/TweenMax.js","webpack:///./app/javascript/packs/application.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_typeof","obj","iterator","constructor","_gsScope","window","global","TweenLite","_exports","_doc","document","_globals","GreenSockGlobals","a","_ticker","_tickerActive","toString","array","_namespace","split","length","gs","_tinyNum","_slice","b","push","_emptyFunc","_isArray","Array","_defLookup","Definition","dependencies","func","this","sc","gsClass","_classes","check","init","cur","cl","missing","pop","join","apply","_gsDefine","_class","globals","_baseParams","Ease","extraParams","type","power","_func","_type","_power","_params","concat","_easeMap","map","_easeReg","register","ease","names","types","e","j","na","ta","easing","getRatio","_calcEnd","pw","linear","Linear","easeIn","swing","Quad","easeInOut","EventDispatcher","target","_listeners","_eventTarget","addEventListener","callback","scope","useParam","priority","listener","list","index","wake","splice","pr","up","removeEventListener","dispatchEvent","slice","_reqAnimFrame","requestAnimationFrame","_cancelAnimFrame","cancelAnimationFrame","_getTime","Date","now","getTime","_lastUpdate","fps","useRAF","_fps","_req","_id","_gap","_nextTime","_self","_startTime","_useRAF","_lagThreshold","_adjustedLag","_tick","manual","overlap","dispatch","elapsed","time","frame","tick","lagSmoothing","threshold","adjustedLag","arguments","Math","min","sleep","clearTimeout","seamless","f","setTimeout","visibilityState","Ticker","events","Animation","duration","vars","_duration","_totalDuration","_delay","Number","delay","_timeScale","_active","immediateRender","data","_reversed","reversed","_rootTimeline","tl","useFrames","_rootFramesTimeline","add","_time","paused","ticker","_dirty","_gc","_initted","_paused","_totalTime","_rawPrevTime","_next","_last","_onUpdate","_timeline","timeline","_checkTimeout","unref","play","from","suppressEvents","seek","pause","atTime","resume","totalTime","restart","includeDelay","reverse","totalDuration","render","force","invalidate","_enabled","isActive","rawTime","startTime","enabled","ignoreTimeline","_remove","_kill","kill","_uncache","includeSelf","tween","_swapSelfInParams","params","copy","_callback","v","callbackScope","eventCallback","substr","indexOf","smoothChildTiming","uncapped","_pauseTime","_lazyTweens","_lazyRender","progress","totalProgress","ratio","_sortChildren","endTime","includeRepeats","timeScale","pauseTime","raw","SimpleTimeline","autoRemoveChildren","_first","_recent","insert","child","position","align","stagger","prevTween","st","_prev","skipDisable","next","selector","targ","targets","isSelector","jquery","nodeType","style","overwrite","_overwrite","_overwriteLookup","defaultOverwrite","_targets","_propLookup","_siblings","_register","_applyOverwrite","_isSelector","_firstPT","_overwrittenProps","_startAt","_notifyPluginsOfEnabled","_lazy","version","defaultEase","_ease","autoSleep","$","jQuery","querySelectorAll","getElementById","charAt","_lazyLookup","_numbersExp","_relExp","_setRatio","val","pt","blob","end","start","_tween","_target","fp","_blobRound","_blobDif","filter","startNums","endNums","num","nonNumbers","currentNum","charIndex","color","match","_applyPT","parseFloat","parseInt","round","setRatio","test","_addPropTween","prop","overwriteProp","mod","funcParam","stringFilter","getterName","isRelative","pg","isNaN","replace","defaultStringFilter","_internals","isArray","lazyTweens","blobDif","_plugins","_tweenLookup","tweenLookup","_tweenLookupNum","_reservedProps","reservedProps","onComplete","onCompleteParams","onCompleteScope","runBackwards","startAt","onUpdate","onUpdateParams","onUpdateScope","onStart","onStartParams","onStartScope","onReverseComplete","onReverseCompleteParams","onReverseCompleteScope","onRepeat","onRepeatParams","onRepeatScope","easeParams","yoyo","repeat","repeatDelay","autoCSS","lazy","onOverwrite","id","yoyoEase","none","all","auto","concurrent","allOnStart","preexisting","_nextGCFrame","lazyRender","_updateRoot","tweens","scrub","_gsTweenID","_onOverwrite","overwrittenTween","overwritingTween","killedProps","r1","r2","props","siblings","changed","curTween","globalStart","overlaps","oCount","zeroDur","_checkOverlap","reference","ts","_init","initPlugins","startVars","op","dur","immediate","to","config","_easeType","_easePower","_initProps","_onPluginEvent","propLookup","overwrittenProps","plugin","css","_autoCSS","_onInitTween","_priority","_overwriteProps","_onInitAllProps","_onDisable","_onEnable","isComplete","rawPrevTime","self","prevTime","prevRawPrevTime","pow","killProps","record","killed","simultaneousOverwrite","firstPT","_tempKill","fromTo","fromVars","toVars","delayedCall","set","getTweensOf","onlyActive","killTweensOf","killDelayedCallsTo","TweenPlugin","_propName","_super","API","_addTween","lookup","_mod","_roundProps","pt2","first","last","activate","plugins","propName","overwriteProps","initAll","Plugin","toUpperCase","_gsQueue","console","log","nonGlobals","com","greensock","core","Power1","Power2","Power3","Power4","EventListener","eventTarget","eventName","unorderedBindings","Set","connect","disconnect","bindingConnected","binding","bindingDisconnected","delete","handleEvent","event","extendedEvent","stopImmediatePropagation_1","stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","_i","_a","bindings","sort","left","right","leftIndex","rightIndex","configurable","Dispatcher","application","eventListenerMaps","Map","started","eventListeners","forEach","eventListener","stop","values","reduce","listeners","fetchEventListenerForBinding","handleError","error","message","detail","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","createEventListener","descriptorPattern","parseEventTarget","eventTargetName","Action","element","descriptor","tagName","toLowerCase","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","forToken","token","descriptorString","content","matches","trim","eventNameSuffix","getAttribute","Error","Binding","context","action","willBeInvokedByEvent","invokeWithEvent","method","controller","Element","contains","containsElement","ElementObserver","delegate","_this","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","attributes","childList","subtree","refresh","takeRecords","matchElementsInTree","has","removeElement","_b","_c","addElement","mutations_1","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","size","prune","extendStatics","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","__extends","setPrototypeOf","__proto__","__","IndexedMultimap","keysByValue","keys","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","max","_","findIndex","tokensAreEqual","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","Context","controllerConstructor","bindingObserver","dispatcher","initialize","parentElement","blessControllerConstructor","extend","bless","extendWithReflect","Controller","_newTarget","Reflect","construct","Module","definition","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","DataMap","getFormattedKey","setAttribute","removeAttribute","char","attributeValueContainsToken","TargetSet","targetName","find","targetNames","getSelectorForTargetNames","findElement","findAll","findAllElements","getSelectorForTargetName","targetDescriptor","targetAttribute","Scope","head","tail","filterElements","closest","controllerSelector","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","contexts","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","result","done","then","__generator","body","y","g","label","sent","trys","ops","verb","TypeError","Application","documentElement","router","readyState","load","rest","definitions","unload","identifiers","getControllerForElementAndIdentifier","defineTargetProperties","ancestors","getPrototypeOf","getAncestorsForConstructor","getOwnTargetNamesForConstructor","getTargetNamesForConstructor","properties","capitalize","Function","__g","store","uid","USE_SYMBOL","hide","redefine","ctx","$export","source","own","out","exp","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","B","expProto","undefined","U","W","R","__e","isObject","src","doc","ssrDocument","activeElement","blur","nodeName","querySelector","createEvent","initEvent","createElement","children","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","win","_defineProperties","writable","_createClass","Constructor","protoProps","staticProps","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","screen","matchMedia","Dom7","arr","instance","_classCallCheck","els","tempParent","_html","toCreate","innerHTML","unique","uniqueArray","fn","Class","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_defineProperty","Methods","addClass","className","classes","classList","removeClass","remove","hasClass","toggleClass","toggle","attr","attrs","attrName","removeAttr","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","webkitTransitionDuration","transitionDuration","on","_len","args","_key","eventType","targetSelector","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","_parents","parents","k","_event","dom7LiveListeners","proxyListener","dom7Listeners","off","_len2","_key2","handlers","handler","dom7proxy","trigger","_len5","_key5","evt","bubbles","cancelable","dataIndex","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","_styles","styles","offsetWidth","outerHeight","_styles2","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","_scrollTop","scrollY","scrollTop","_scrollLeft","scrollX","scrollLeft","top","_prop","each","html","text","textContent","compareWith","webkitMatchesSelector","msMatchesSelector","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","_parent","foundElements","found","matchedItems","removeChild","_len6","_key6","toAdd","Utils","deleteProps","nextTick","getTranslate","matrix","curTransform","transformMatrix","axis","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","parseUrlQuery","url","param","query","urlToParse","paramsPart","decodeURIComponent","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","passiveListener","supportsPassive","opts","gestures","SwiperClass","eventsListeners","onceHandler","f7proxy","eventHandler","eventsArray","instanceParams","moduleName","modulesParams","moduleParams","modulePropName","moduleProp","moduleEventName","components","use","proto","static","install","_len3","_key3","installModule","_len4","_key4","updateSize","width","height","swiper","$el","clientWidth","clientHeight","isHorizontal","isVertical","updateSlides","$wrapperEl","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","floor","ceil","slidesPerView","slidesPerColumnFill","newSlidesGrid","slidesPerRow","numFullColumns","_slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","_boxSizing","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","effect","setWrapperSize","slidesGridItem","_i2","_slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","_allSlidesSize","allSlidesOffset","snapIndex","emit","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","slide","_index","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","_slide2","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","isVisible","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","_wrapperEl$scrollTo","isH","scrollTo","onTranslateToWrapperTransitionEnd","destroyed","transitionStart","direction","dir","slideTo","initialSlide","allowSlideNext","allowSlidePrev","_wrapperEl$scrollTo2","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","prevIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","currentSnap","nextSnap","_currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","_i3","cloneNode","_i4","diff","loopDestroy","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","platform","ua","device","screenWidth","screenHeight","android","ipad","ipod","iphone","ie","edge","firefox","windows","electron","macos","manipulation","appendSlide","update","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","_i5","_i6","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","ios","androidChrome","desktop","cordova","phonegap","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","freeModeMomentum","lastMoveEvent","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","once","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","_increment","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","autoplay","running","run","preventClicks","preventClicksPropagation","onScroll","dummyEventAttached","dummyEventListener","defaults","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","passiveListeners","containerModifierClass","wrapperClass","prototypes","attachEvents","touchEvents","onClick","move","passive","cancel","detachEvents","_swiper$loopedSlides","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","points","point","minRatio","innerHeight","_points$i","innerWidth","wasLocked","lastSlidePosition","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","_SwiperClass","subClass","superClass","_inherits","Swiper","prototypeGroup","protoMethod","moduleParamName","swiperParams","useModulesParams","passedParams","swipers","containerEl","newParams","shadowRoot","options","touchEventsTouch","touchEventsDesktop","clickTimeout","useModules","spv","breakLoop","_i7","_i8","translateValue","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","newDefaults","Device$1","Support$1","support","isEdge","isSafari","isWebView","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","destroy","Observer","WebkitMutationObserver","attach","ObserverFunc","observerUpdate","characterData","observers","observeParents","containerParents","observeSlideChildren","Observer$1","Virtual","_swiper$params","_swiper$params$virtua","addSlidesBefore","addSlidesAfter","_swiper$virtual","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","renderExternal","slidesToRender","prependIndexes","appendIndexes","_i9","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","enable","disable","Keyboard$1","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isSupported","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","_newEvent","sign","ignoreWheelEvents","sensitivity","timeout","_recentWheelEvents","shift","_prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","newEvent","prevEvent","animateSlider","releaseScroll","Navigation","_swiper$navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","_swiper$navigation2","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","_i10","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","opacity","divider","moveDivider","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Parallax","setTransform","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","in","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","activeListenerWithCapture","slideSelector","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","$pictureEl","sourceIndex","sourceEl","$source","preloaderClass","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","_i11","_i12","LinearSpline","guess","i1","i3","binarySearch","interpolate","getInterpolateFunction","spline","_setTranslate","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","a11y","makeElFocusable","makeElNotFocusable","addElRole","role","addElLabel","disableEl","enableEl","onEnterKey","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","click","notification","liveRegion","updateNavigation","_swiper$navigation4","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","pathArray","part","setHistory","slugify","includes","currentState","state","_slide3","_index2","HashNavigation","onHashCange","newHash","setHash","_slide4","_slide5","_index3","watchState","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","waitForTransition","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","tz","_transform","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowScale","shadowAngle","sin","cos","scale1","scale2","_offset2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","prefixedPointerEvents","perspectiveOrigin","Thumbs","thumbsParams","thumbs","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","_i13","hideOnClick","toEdge","fromEdge","isHidden","_swiper$navigation3","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","touchStart","touchEnd","doubleTap","slideChange","loadOnTransitionStart","scroll","scrollbarDragMove","notificationClass","paginationUpdate","disableOnInteraction","onVisibilityChange","beforeTransitionStart","sliderFirstMove","beforeDestroy","it","aFunction","that","anObject","IE8_DOM_DEFINE","toPrimitive","dP","O","Attributes","createDesc","SRC","$toString","TO_STRING","TPL","inspectSource","safe","isFunction","String","animatedScrollTo","isInteger","startingYOffset","pageYOffset","distanceYOffset","timestamp","animateScroll","currentTime","newYOffset","setScrollTopPosition","isFinite","extendedOptions","exec","isArrayIter","toLength","getIterFn","BREAK","RETURN","iterable","entries","ITERATOR","iterFn","definitionsFromContext","logicalName","identifierForContextKey","default","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","bitmap","px","random","defined","toInteger","$at","iterated","_t","IObject","def","TAG","tag","stat","cof","ARG","T","tryGet","callee","SHARED","copyright","propertyIsEnumerable","UNSCOPABLES","ArrayProto","LIBRARY","Iterators","$iterCreate","setToStringTag","BUGGY","KEYS","VALUES","returnThis","Base","NAME","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","$keys","enumBugKeys","shared","SAFE_CLOSING","riter","skipClosing","iter","classof","$iterators","getKeys","wks","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","forbiddenField","TYPE","PromiseCapability","C","promise","$$resolve","$$reject","submitForm","debounce","formTarget","quantityFieldTarget","quantityOfProductId","currentProductId","quantity","openAddToCart","updateQuantity","old_quantity","stockLevel","flyImageToCart","hasImageTarget","domRect","imageTarget","clone","TimelineLite","domRectCart","productId","cartContents","item","orderable_type","orderable_id","productIdFieldTarget","dataset","cart","JSON","parse","contents","gtag","term","currentTarget","_learnq","category","category2","brand","price","imageUrl","ProductName","ProductID","Categories","ImageURL","URL","Brand","Price","currency","items","item_id","item_name","item_brand","item_category","item_category2","item_variant","variant","fbq","content_name","content_ids","content_type","likesTarget","innerText","likesCount","placeholderTarget","toggleButton","checked","buttonTarget","checkboxTarget","trackCheckout","ga","checkoutStep","fetchSummary","loading","summaryUrl","credentials","response","fetchDeliveryDate","soonestDeliveryDateUrl","date","momentdate","moment","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","sourceTarget","oldContentEditable","contentEditable","oldReadOnly","readOnly","range","createRange","selectNodeContents","getSelection","removeAllRanges","addRange","setSelectionRange","execCommand","millisecondsToTime","endDate","setInterval","milliseconds","secs","hours","divisor_for_minutes","minutes","divisor_for_seconds","seconds","pad","countdownDatetime","listTarget","slideToggle","noteTarget","infiniteScroll","hasLinkTarget","loadNextPage","linkTarget","link","swiperTarget","checkedCount","submitButtonTarget","nextText","skipText","validateStock","badge","messageTarget","oufOfStockLabel","stockLevelLabel","quantityTarget","outOfStockLabel","getLocations","postalCodeTarget","json","locations","locationsTarget","locationCode","LocationCode","Name","street","Address","Street","house_number","HouseNr","postal_code","Zipcode","city","City","country","Countrycode","insertAdjacentHTML","postnlLocation","encodeURIComponent","stringify","Distance","OpeningHours","Monday","string","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday","stylePrice","splitPrice","base","basePrice","promotion","getShoppingCart","submit","orderItemId","orderItem","headers","ok","dropdownTarget","rect","close","toggleBusinessFields","businessFieldsTarget","business","submitQuery","autocomplete","searchParams","resultsTarget","analytics","trackSearch","fetchDate","currentLocale","locale","dateString","cutoff","hour","isAfter","language","userLanguage","checkedIns","drawBadge","checkedInIds","cleavePostalCode","cleaveInstance","Cleave","blocks","numericOnly","address","filled_in","newWishlistInputTarget","newWishlistCheckboxTarget","toggleHeart","onWishlist","wishlistIds","__assign","lines","radius","corners","fadeColor","animation","Spinner","spin","borderRadius","shadows","boxShadow","regex","xUnits","yUnits","prefix","parseBoxShadow","degrees","backgroundLine","getColor","transformOrigin","line","normalizeShadow","drawLines","animateId","idx","normalized","shadows_1","xy","convertOffset","radians","ALL_INSTANCES","laddaLabel","wrapper","surroundContents","spinner","timer","spinnerWrapper","spinnerColor","spinnerLines","createSpinner","disabled","setProgress","startAfter","isLoading","progressElement","warn","hasSearchUntappdButtonTarget","ladda_button","Ladda","searchUntappdButtonTarget","gift","customStyles","640","960","resultNameTarget","resultPriceTarget","resultDescriptionTarget","description","resultStyleTarget","resultVolumeTarget","volume","resultAlcoholTarget","alcohol","resultHeaderTarget","score","loadingSwiper","loadingTextsTarget","customStylesListTarget","nextStep","hasUntappdUsernameTarget","untappdUsernameTarget","hasSmaakprofielUntappdTarget","smaakprofielUntappdTarget","hasUntappdUserInputTarget","untappdUserInputTarget","untappdUserNotFoundMessageTarget","rails","csrfToken","username","status","untappdStylePresetTarget","untappdSearchFormTarget","untappdResultTarget","untappdBeersTarget","beer_count","budgetTarget","budget","exclusivityTarget","exclusivity","stylesPresetTarget","stylesPreset","findBeers","startLoading","stopLoading","checkbox","resultsSwiperTarget","styles_preset","custom_styles","customStylesForSubmit","untappd_username","beerCountTarget","beers","totalTarget","span","suggestions","messageContainerTarget","beer","image_url","untappdUsername","product_ids","productIds","replace_id","fadeOut","animate","totalPrice","format","buying","ajax","addToCartUrl","dataType","success","currentStepTarget","setStep","setTitle","shareUrl","currentStep","totalSteps","backButtonTarget","titlesTarget","title","progressTarget","decimal","formatWithSymbol","symbol","separator","toObject","asc","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","res","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","contentWindow","open","write","lt","Properties","ret","getIteratorMethod","redefineAll","anInstance","forOf","$iterDefine","setSpecies","DESCRIPTORS","fastKey","validate","SIZE","getEntry","entry","_f","getConstructor","ADDER","_l","setStrong","_k","SPECIES","KEY","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","NEED","getWeak","onFreeze","fails","$iterDetect","inheritIfRequired","common","IS_WEAK","fixMethod","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","COLLECTION","of","A","mapping","cb","mapFn","nextItem","D","defer","channel","port","invoke","cel","process","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","port2","port1","onmessage","postMessage","importScripts","newPromiseCapability","promiseCapability","$find","forced","speciesConstructor","original","arg","pos","charCodeAt","defineProperties","toIObject","arrayIndexOf","toAbsoluteIndex","IS_INCLUDES","fromIndex","ObjectProto","createProperty","arrayLike","aLen","mapfn","$defineProperty","addToUnscopables","Arguments","strong","MAP","buggy","pIE","gOPD","toJSON","gOPS","$assign","K","getSymbols","isEnum","getOwnPropertySymbols","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","task","microtask","newPromiseCapabilityModule","perform","promiseResolve","PROMISE","versions","v8","$Promise","isNode","empty","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","isReject","_n","chain","_v","_s","reaction","exited","fail","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","unhandled","isUnhandled","onunhandledrejection","reason","onrejectionhandled","$reject","_d","_w","$resolve","executor","err","onFulfilled","onRejected","capability","remaining","$index","alreadyCalled","race","un","macrotask","WebKitMutationObserver","flush","createTextNode","onFinally","ElementProto","mozMatchesSelector","ownerDocument","HTMLElement","lastChild","originalModule","webpackPolyfill","window$1","Config","DEBUG","LIB_VERSION","loc","referrer","at","ch","escapee","white","FuncProto","ObjProto","windowConsole","navigator$1","document$1","windowOpera","opera","nativeBind","nativeForEach","nativeIndexOf","nativeMap","nativeIsArray","breaker","str","isUndefined","toArray","critical","log_func_with_prefix","console_with_prefix","_bound","ctor","bind_instance_methods","escapeHTML","escaped","isString","isArguments","results","include","needle","inherit","subclass","superclass","isEmptyObject","isDate","isNumber","isElement","encodeDates","formatDate","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","safewrap","safewrap_class","klass","functions","safewrap_instance_methods","strip_empty_properties","truncate","JSONEncode","mixed_val","quote","escapable","holder","gap","mind","partial","JSONDecode","SyntaxError","hex","uffff","fromCharCode","word","base64Encode","h1","h2","h3","h4","bits","b64","ac","enc","tmp_arr","utf8Encode","stringl","utftext","c1","substring","UUID","se","buffer","xor","byte_array","tmp","UA","BLOCKED_UA_STRS","isBlockedUA","HTTPBuildQuery","formdata","arg_separator","use_val","use_key","getQueryParam","RegExp","cookie","nameEQ","ca","set_seconds","is_cross_subdomain","is_secure","is_cross_site","domain_override","cdomain","expires","secure","extract_domain","setTime","toGMTString","days","new_cookie_val","_localStorageSupported","localStorageSupported","storage","forceCheck","supported","localStorage","cheap_guid","setItem","getItem","removeItem","is_supported","force_check","msg","register_event","fixEvent","cancelBubble","oldSchool","useCapture","ontype","old_handler","new_handler","old_handlers","old_result","new_result","makeHandler","TOKEN_MATCH_REGEX","dom_query","getAllChildren","bad_whitespace","elem","getElementsBySelector","foundCount","currentContextIndex","currentContext","token_match","checkFunction","attrOperator","attrValue","lastIndexOf","info","campaignParams","campaign_keywords","kw","kwkey","searchEngine","searchInfo","keyword","user_agent","vendor","browserVersion","referringDomain","people_properties","pageviewInfo","page","maxlen","guid","determine_eligibility","feature","percent_allowed","SIMPLE_DOMAIN_MATCH_REGEX","DOMAIN_MATCH_REGEX","domain_regex","parts","tld","JSONStringify","JSONParse","DomTracker","create_properties","event_handler","after_track_handler","mixpanel_instance","mp","track","event_name","user_callback","override_event","get_config","track_callback","timeout_occured","callback_fired","LinkTracker","new_tab","FormTracker","logger$2","SharedLock","storageKey","pollIntervalMS","timeoutMS","withLock","lockedCB","errorCB","pid","keyX","keyY","keyZ","reportError","waitFor","predicate","getSetY","valY","criticalSection","logger$1","RequestQueue","lock","memQueue","enqueue","flushInterval","queueEntry","succeeded","storedQueue","readFromStorage","saveToStorage","fillBatch","batchSize","batch","idsInBatch","orphaned","filterOutIDsAndInvalid","idSet","filteredItems","removeItemsByID","ids","updatePayloads","existingItems","itemsToUpdate","newItems","newPayload","storageEntry","logger","RequestBatcher","libConfig","sendRequest","sendRequestFunc","beforeSendHook","stopped","timeoutID","resetBatchSize","resetFlush","scheduleFlush","flushMS","requestInProgress","currentBatchSize","dataForRequest","transformedItems","payload","batchSendCallback","removeItemsFromQueue","unloading","xhr_req","retryMS","retryAfter","halvedBatchSize","requestOptions","verbose","ignore_json_errors","timeout_ms","transport","optIn","_optInOut","optOut","hasOptedIn","_getStorageValue","hasOptedOut","ignoreDnt","nav","hasDntOn","dntValue","_hasDoNotTrackFlagOn","optedOut","addOptOutCheckMixpanelLib","_addOptOutCheck","addOptOutCheckMixpanelPeople","_get_config","addOptOutCheckMixpanelGroup","clearOptInOut","_getStorage","_getStorageKey","crossSubdomainCookie","cookieDomain","persistenceType","persistencePrefix","optValue","cookieExpiration","secureCookie","crossSiteCookie","trackEventName","trackProperties","getConfigValue","SET_ACTION","SET_ONCE_ACTION","UNSET_ACTION","ADD_ACTION","APPEND_ACTION","UNION_ACTION","REMOVE_ACTION","apiActions","set_action","$set","_is_reserved_property","unset_action","$unset","set_once_action","$set_once","union_action","list_name","$union","append_action","$append","remove_action","$remove","delete_action","MixpanelGroup","group_key","group_id","_mixpanel","_group_key","_group_id","_send_request","set_once","unset","union","date_encoded_data","_track_or_batch","endpoint","batcher","request_batchers","groups","conf","SET_QUEUE_KEY","SET_ONCE_QUEUE_KEY","UNSET_QUEUE_KEY","ADD_QUEUE_KEY","APPEND_QUEUE_KEY","REMOVE_QUEUE_KEY","UNION_QUEUE_KEY","PEOPLE_DISTINCT_ID_KEY","ALIAS_ID_KEY","CAMPAIGN_IDS_KEY","EVENT_TIMERS_KEY","RESERVED_PROPERTIES","MixpanelPersistence","campaign_params_saved","storage_type","update_config","upgrade","save","old_cookie_name","old_cookie","upgrade_from_old_lib","register_once","_expire_notification_campaigns","expire_days","cross_subdomain","cross_site","cookie_domain","default_value","default_expiry","unregister","campaigns_shown","EXPIRY_TIME","campaign_id","update_campaign_params","update_search_keyword","update_referrer_info","get_referrer_info","safe_merge","set_disabled","set_cookie_domain","set_cross_site","set_cross_subdomain","set_secure","get_cross_subdomain","_add_to_people_queue","q_key","_get_queue_key","q_data","set_q","_get_or_create_queue","set_once_q","unset_q","add_q","union_q","remove_q","append_q","_pop_from_people_queue","enqueued_obj","append_obj","q","_get_queue","queued_action","default_val","set_event_timer","timers","remove_event_timer","IN_OPERATOR","NOT_IN_OPERATOR","MINUS_OPERATOR","MUL_OPERATOR","DIV_OPERATOR","MOD_OPERATOR","EQUALS_OPERATOR","NOT_EQUALS_OPERATOR","GREATER_OPERATOR","LESS_OPERATOR","GREATER_EQUAL_OPERATOR","LESS_EQUAL_OPERATOR","BOOLEAN_OPERATOR","DATETIME_OPERATOR","LIST_OPERATOR","NUMBER_OPERATOR","STRING_OPERATOR","DEFINED_OPERATOR","NOT_DEFINED_OPERATOR","toNumber","toBoolean","evaluateEquality","_isArrayEqual","_isEqual","evaluateSelector","evaluateOperator","evaluateAnd","evaluateOr","leftValue","rightValue","evaluateIn","evaluatePlus","evaluateArithmetic","compare","localeCompare","evaluateComparison","evaluateBoolean","evaluateDateTime","evaluateList","evaluateNumber","evaluateString","evaluateDefined","evaluateNot","evaluateOperand","evaluateWindow","filters","MixpanelNotification","notif_data","mixpanel","persistence","resource_protocol","cdn_host","message_id","cta","notif_type","video_width","VIDEO_WIDTH","video_height","VIDEO_HEIGHT","display_triggers","dest_url","thumb_image_url","video_url","clickthrough","mini","notif_width","NOTIF_WIDTH_MINI","NOTIF_WIDTH","_set_client_config","imgs_to_preload","_init_image_html","_init_video","ANIM_TIME","MARKUP_PREFIX","BG_OPACITY","NOTIF_TOP","NOTIF_START_TOP","NOTIF_HEIGHT_MINI","THUMB_BORDER_SIZE","THUMB_IMG_SIZE","THUMB_OFFSET","show","body_el","_init_styles","_init_notification_el","_preload_images","_attach_and_animate","dismiss","marked_as_shown","_mark_delivery","notif_attr","notif_start","notif_goal","exiting_el","showing_video","_get_el","_get_notification_display_el","use_transitions","_remove_class","_add_class","_remove_notification_el","_animate_els","goal","class_name","anims","mss","done_cb","start_time","ai","anim","time_diff","in_progress","cur_time","anim_diff","anim_dir","shown","_get_shown_campaigns","notification_el","notif_el","_mark_as_shown","click_el","show_video","_track_event","_switch_to_video","tracking_cb","_matches_event_data","event_data","display_trigger","_browser_lte","browser_versions","img_html","thumb_img_html","notification_html","video_src","video_html","cancel_html","close_html","play_html","youtube_video","yt_custom","vimeo_video","video_iframe","flip_animate","main_html","style_vals","bg","bg_actions","bg_hover","bg_light","border_gray","cancel_opacity","mini_hover","text_title","text_main","text_tagline","text_hover","video_shadow","mini_shadow","thumb_total_size","anim_seconds","notif_media_queries","notif_styles","doc_width","doc_height","VENDOR_STYLES","VENDOR_PREFIXES","si","pi","media_queries","create_style_text","style_text","head_el","style_el","style_defs","mq_defs","mqt","mq","create_media_query_text","styleSheet","cssText","youtube_match","vimeo_match","_yt_video_ready","firstScriptTag","get_style","style_name","defaultView","currentStyle","extra_props","all_loaded_cb","preloaded_imgs","img_objs","img","imgs_loaded","clearInterval","_video_progress_checker","visibility","get_browser_version","browser_ex","ActiveXObject","scrollHeight","ie_ver","sample_styles","is_css_compatible","rule","overlay","video_ready","video_inited","progress_bar","progress_time","progress_el","ytplayer","video_duration","update_video_time","current_time","mins","clickx","init_type","mixpanel_master","MixpanelPeople","$add","track_charge","clear_charges","delete_user","_identify_called","get_distinct_id","device_id","get_property","user_id","had_persisted_distinct_id","people","_enqueue","conf_var","_flags","identify_called","_flush_one_queue","action_method","queue_to_params_fn","queued_data","action_params","_flush","_set_callback","_add_callback","_append_callback","_set_once_callback","_union_callback","_unset_callback","_remove_callback","$append_queue","$remove_queue","$append_item","append_callback","$remove_item","remove_callback","IDENTITY_FUNC","NOOP_FUNC","PRIMARY_INSTANCE_NAME","USE_XHR","XMLHttpRequest","ENQUEUE_REQUESTS","sendBeacon","DEFAULT_CONFIG","DOM_LOADED","MixpanelLib","create_mplib","_cached_groups","_user_decide_check_complete","_events_tracked_before_user_decide_check_complete","_execute_array","encode_data_for_request","json_data","_loaded","variable_features","api_host","is_custom_api","set_config","__dom_loaded_queue","__request_queue","__disabled_events","_batch_requests","init_batchers","unpersisted_superprops","_gdpr_init","uuid","_set_default_superprops","_dom_loaded","_track_dom","has_opted_out_tracking","DomClass","dt","_prepare_callback","jsc","randomized_cb","callback_string","DEFAULT_OPTIONS","body_data","use_post","use_sendBeacon","verbose_mode","req","headerValue","headerName","setRequestHeader","withCredentials","onreadystatechange","responseText","statusText","send","script","async","fn_name","alias_calls","other_calls","tracking_calls","execute","calls","caller","are_batchers_initialized","batcher_for","queue_suffix","_run_hook","start_batch_senders","stop_batch_senders","disable_all_events","truncated_data","should_send_immediately","send_request_options","request_enqueued_or_initiated","send_request_immediately","skip_hooks","_event_is_disabled","start_timestamp","duration_in_ms","toFixed","property_blacklist","blacklisted_prop","_check_and_handle_triggered_notifications","set_group","group_ids","add_group","old_values","remove_group","old_value","track_with_groups","tracking_props","_create_map_key","_remove_group_from_cache","get_group","map_key","group","track_pageview","track_links","track_forms","time_event","REGISTER_DEFAULTS","options_for_register","days_or_options","_register_single","identify","new_distinct_id","previous_distinct_id","_check_and_handle_notifications","reset","alias","name_tag","prop_name","hook_name","property_name","_show_notification","distinct_id","notifications","notif","_handle_user_decide_check_complete","has_opted_in_tracking","opt_in_tracking","opt_out_tracking","clear_opt_in_out_tracking","_gdpr_update_persistence","_gdpr_call_func","instances","override_mp_init_func","dom_loaded_handler","inst","attachEvent","toplevel","frameElement","doScroll","do_scroll_check","add_dom_loaded_handler","webpackContext","webpackContextResolve","code","_applyCycle","alt","cycle","_distribute","isFromKeyword","originX","originY","wrap","distances","grid","Infinity","TweenMax","_cycle","_yoyo","_repeat","_repeatDelay","TweenLiteInternals","_blankArray","distribute","_yoyoEase","updateTo","resetDuration","curRatio","endValue","inv","cycleDuration","totalDur","prevTotalTime","prevCycle","staggerTo","allTo","onCompleteAll","onCompleteAllParams","onCompleteAllScope","staggerFunc","fromCycle","staggerFrom","allFrom","staggerFromTo","allFromTo","isTweening","_getChildrenOf","includeTimelines","cnt","getAllTweens","killAll","delayedCalls","timelines","isDC","allTrue","killChildTweensOf","curParent","_changePause","pauseAll","resumeAll","globalTimeScale","cycleDur","_hasPriority","_suffixMap","_cs","CSSPlugin","_specialProps","defaultTransformPerspective","defaultSkewType","defaultSmoothOrigin","suffixMap","bottom","fontSize","padding","margin","perspective","lineHeight","_autoRound","_reqSafariFix","_isSafari","_isFirefox","_isSafariLT6","_ieVers","_numExp","_relNumExp","_valuesExp","_valuesExpWithCommas","_NaNExp","_suffixExp","_opacityExp","_opacityValExp","_alphaFilterExp","_rgbhslExp","_capsExp","_camelExp","_urlExp","_camelFunc","_horizExp","_ieGetMatrixExp","_ieSetMatrixExp","_commasOutsideParenExp","_complexExp","_DEG2RAD","_RAD2DEG","_forcePT","_dummyElement","_createElement","_tempDiv","_tempImg","_agent","_supportsOpacity","$1","_getIEOpacity","_log","_prefixCSS","_prefix","_checkPropPrefix","_computedStyleScope","_getComputedStyle","_getStyle","getStyle","cs","calc","dflt","rv","_convertToPixels","convertToPixels","sfx","recurse","pix","horiz","neg","precise","_gsCache","cacheWidths","_calculateOffset","calculateOffset","dim","_getAllStyles","tr","_transformPropCSS","_transformProp","_getTransform","rotation","skewX","_supports3D","z","rotationX","rotationY","scaleZ","_cssDif","s1","s2","forceLookup","mpt","difs","MiniPropTween","firstMPT","_dimensions","_margins","_getDimension","getCTM","_isSVG","getBBox","_parsePosition","recObj","oxp","oyp","oxr","oyr","ox","oy","_parseChange","_parseVal","_parseAngle","directionalEnd","cap","dif","_colorLookup","aqua","lime","silver","black","maroon","teal","blue","navy","fuchsia","olive","yellow","orange","gray","purple","green","red","pink","cyan","transparent","_hue","h","m1","m2","_parseColor","parseColor","toHSL","wasHSL","_formatColors","temp","colors","_colorExp","parsed","colorStringFilter","combined","_getFormatter","clr","collapsible","multi","_formatter2","dColor","dVals","pfx","delim","numVals","dSfx","vals","_getEdgeParser","cssp","_setPluginRatio","proxy","autoRotate","xs0","xs1","CSSPropTween","_parseToProxy","shallow","xp","bpt","oldForce","rxp","_addNonTweeningNumericPT","_parseComplex","parseComplex","clrs","xi","ni","bv","ev","bnums","enums","bn","hasAlpha","cv","useHSL","ba","ea","autoRound","appendXtra","xfirst","SpecialProp","formatter","defaultValue","parser","allowFunc","_registerComplexSpecialProp","_registerPluginProp","pluginName","pluginClass","_cssRegister","bi","ei","kwd","registerSpecialProp","onInitTween","useSVGTransformAttr","_useSVGTransformAttr","svg","_transformProps","_transformOriginProp","Transform","force3D","defaultForce3D","_SVGElement","SVGElement","_createSVG","container","reg","setAttributeNS","_docElement","_forceSVGTransformAttr","chrome","_parseSVGOrigin","local","decoratee","absolute","smoothOrigin","skipRecord","xOrigin","yOrigin","determinant","xOriginOld","yOriginOld","tm","_gsTransform","_getMatrix","_identity2DMatrix","xOffset","yOffset","_getBBoxHack","swapIfPossible","bbox","ownerSVGElement","oldParent","oldSibling","nextSibling","oldCSS","_originalGetBBox","_getBBox","force2D","isDefault","dec","rnd","offsetParent","_removeProp","baseVal","consolidate","getTransform","rec","invX","zOrigin","t1","t2","t3","a11","a21","a31","a41","a12","a22","a32","a42","a13","a23","a33","a14","a24","a34","a43","angle","skewType","_setIETransformRatio","ang","skew","dx","dy","clip","xPercent","yPercent","marg","mult","ieOffsetX","ieOffsetY","_setTransformRatio","set3DTransformRatio","setTransformRatio","comma","zero","sx","sy","sz","isSVG","skewY","tan","parsingProp","_lastParsedTransform","scaleFunc","has3D","hasChange","dr","originalGSTransform","endRotations","transformOriginString","parseTransform","orig","rotationZ","svgOrigin","transformPerspective","directionalRotation","shortRotation","shortRotationX","shortRotationY","_transformType","ea1","es2","bs2","bs","es","en","esfx","bsfx","rel","hn","vn","em","pct","bp","backgroundPositionX","backgroundPositionY","clipTop","clipRight","clipBottom","clipLeft","bw","_setIEOpacityRatio","xn1","isAutoAlpha","removeProperty","_setClassNameRatio","_gsClassPT","difData","cnpt","cnptLookup","_classNamePT","_setClearPropsRatio","clearTransform","transformParse","_vars","tpt","threeD","_addLazySet","WebkitBackfaceVisibility","_linkCSSP","sp","isStr","strictUnits","xs2","xn2","xs3","xn3","xs4","xn4","xs5","_enableTransforms","lazySet","autoAlpha","alpha","_getChildStyles","cascadeTo","AttrPlugin","RoundPropsPlugin","_getRoundFunc","_roundLinkedList","rp","roundProps","rpt","_add","DirectionalRotationPlugin","finals","useRadians","_labels","_copy","_pauseCallback","pauseCallback","_defaultImmediateRender","defaultFalse","ir","_forcingPlayhead","_hasPause","Engine","exportRoot","ignoreDelayedCalls","hasNegativeStart","root","curTime","beforeRawTime","_parseTimeOrLabel","addLabel","removeLabel","offsetOrLabel","insertMultiple","appendMultiple","addPause","getLabelTime","timeOrLabel","appendIfAbsent","ignore","clippedDuration","recent","gotoAndPlay","gotoAndStop","internalForce","pauseTween","prevStart","prevTimeScale","prevPaused","_hasPausedChild","getChildren","ignoreBeforeTime","_contains","shiftChildren","adjustLabels","labels","_calculatingDuration","usesFrames","wrapRepeats","TimelineMax","_easeNone","addCallback","removeCallback","removePause","tweenTo","isFromTo","tweenFromTo","fromPosition","toPosition","_locked","backwards","recTotalTime","recCycle","recRawPrevTime","recTime","getActive","getLabelAfter","getLabelsArray","getLabelBefore","currentLabel","_r1","_r2","_r3","_corProps","Segment","da","cubicToQuadratic","q1","q2","q3","q4","mab","mbc","mcd","mabc","mbcd","m8","_calculateControlPoints","curviness","quad","basic","correlate","p1","p2","p3","seg","mm","cp2","qb","ii","cp1","_parseAnchors","bezierThrough","quadratic","_addCubicLengths","steps","resolution","d1","bez","inc","BezierPlugin","_props","_timeRes","timeResolution","isFunc","second","orientToBezier","_autoRotate","_beziers","soft","_parseBezierData","_segCount","ld","lengths","segments","curLS","_parseLengthData","_length","_lengths","_segments","_l1","_li","_s1","_si","_l2","_curSeg","_s2","_prec","_initialRotations","_startRatio","curIndex","curSeg","v1","notStart","b2","conv","ar","quadraticToCubic","pluginValues","SteppedEase","ExpoScaleEase","RoughEase","_createElastic","_2PI","_HALF_PI","_create","_wrap","EaseOut","EaseIn","EaseInOut","aliases","easeOut","EasePoint","_createBack","overshoot","_p1","_p2","Back","SlowMo","linearRatio","yoyoMode","_p","_p3","immediateStart","bump","pnt","taper","randomize","clamp","template","strength","amplitude","period","asin","Elastic","Bounce","Circ","Expo","Sine","_autoActivated","require"],"mappings":"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","file":"js/application-c92cafbeee72f42e78b4.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://d1uyinv54o97jy.cloudfront.net/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 151);\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * VERSION: 2.1.3\n * DATE: 2019-05-17\n * UPDATES AND DOCS AT: http://greensock.com\n *\n * @license Copyright (c) 2008-2019, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n *\n * @author: Jack Doyle, jack@greensock.com\n */\n\n/* eslint-disable */\n\n/* ES6 changes:\n\t- declare and export _gsScope at top.\n\t- set var TweenLite = the result of the main function\n\t- export default TweenLite at the bottom\n\t- return TweenLite at the bottom of the main function\n\t- pass in _gsScope as the first parameter of the main function (which is actually at the bottom)\n\t- remove the \"export to multiple environments\" in Definition().\n */\nexport var _gsScope = typeof window !== \"undefined\" ? window : typeof module !== \"undefined\" && module.exports && typeof global !== \"undefined\" ? global : this || {};\nexport var TweenLite = function (window) {\n \"use strict\";\n\n var _exports = {},\n _doc = window.document,\n _globals = window.GreenSockGlobals = window.GreenSockGlobals || window;\n\n if (_globals.TweenLite) {\n return _globals.TweenLite; //in case the core set of classes is already loaded, don't instantiate twice.\n }\n\n var _namespace = function _namespace(ns) {\n var a = ns.split(\".\"),\n p = _globals,\n i;\n\n for (i = 0; i < a.length; i++) {\n p[a[i]] = p = p[a[i]] || {};\n }\n\n return p;\n },\n gs = _namespace(\"com.greensock\"),\n _tinyNum = 0.00000001,\n _slice = function _slice(a) {\n //don't use Array.prototype.slice.call(target, 0) because that doesn't work in IE8 with a NodeList that's returned by querySelectorAll()\n var b = [],\n l = a.length,\n i;\n\n for (i = 0; i !== l; b.push(a[i++])) {}\n\n return b;\n },\n _emptyFunc = function _emptyFunc() {},\n _isArray = function () {\n //works around issues in iframe environments where the Array global isn't shared, thus if the object originates in a different window/iframe, \"(obj instanceof Array)\" will evaluate false. We added some speed optimizations to avoid Object.prototype.toString.call() unless it's absolutely necessary because it's VERY slow (like 20x slower)\n var toString = Object.prototype.toString,\n array = toString.call([]);\n return function (obj) {\n return obj != null && (obj instanceof Array || _typeof(obj) === \"object\" && !!obj.push && toString.call(obj) === array);\n };\n }(),\n a,\n i,\n p,\n _ticker,\n _tickerActive,\n _defLookup = {},\n\n /**\n * @constructor\n * Defines a GreenSock class, optionally with an array of dependencies that must be instantiated first and passed into the definition.\n * This allows users to load GreenSock JS files in any order even if they have interdependencies (like CSSPlugin extends TweenPlugin which is\n * inside TweenLite.js, but if CSSPlugin is loaded first, it should wait to run its code until TweenLite.js loads and instantiates TweenPlugin\n * and then pass TweenPlugin to CSSPlugin's definition). This is all done automatically and internally.\n *\n * Every definition will be added to a \"com.greensock\" global object (typically window, but if a window.GreenSockGlobals object is found,\n * it will go there as of v1.7). For example, TweenLite will be found at window.com.greensock.TweenLite and since it's a global class that should be available anywhere,\n * it is ALSO referenced at window.TweenLite. However some classes aren't considered global, like the base com.greensock.core.Animation class, so\n * those will only be at the package like window.com.greensock.core.Animation. Again, if you define a GreenSockGlobals object on the window, everything\n * gets tucked neatly inside there instead of on the window directly. This allows you to do advanced things like load multiple versions of GreenSock\n * files and put them into distinct objects (imagine a banner ad uses a newer version but the main site uses an older one). In that case, you could\n * sandbox the banner one like:\n *\n * \n * \n * \n * \n * \n *\n * @param {!string} ns The namespace of the class definition, leaving off \"com.greensock.\" as that's assumed. For example, \"TweenLite\" or \"plugins.CSSPlugin\" or \"easing.Back\".\n * @param {!Array.} dependencies An array of dependencies (described as their namespaces minus \"com.greensock.\" prefix). For example [\"TweenLite\",\"plugins.TweenPlugin\",\"core.Animation\"]\n * @param {!function():Object} func The function that should be called and passed the resolved dependencies which will return the actual class for this definition.\n * @param {boolean=} global If true, the class will be added to the global scope (typically window unless you define a window.GreenSockGlobals object)\n */\n Definition = function Definition(ns, dependencies, func, global) {\n this.sc = _defLookup[ns] ? _defLookup[ns].sc : []; //subclasses\n\n _defLookup[ns] = this;\n this.gsClass = null;\n this.func = func;\n var _classes = [];\n\n this.check = function (init) {\n var i = dependencies.length,\n missing = i,\n cur,\n a,\n n,\n cl;\n\n while (--i > -1) {\n if ((cur = _defLookup[dependencies[i]] || new Definition(dependencies[i], [])).gsClass) {\n _classes[i] = cur.gsClass;\n missing--;\n } else if (init) {\n cur.sc.push(this);\n }\n }\n\n if (missing === 0 && func) {\n a = (\"com.greensock.\" + ns).split(\".\");\n n = a.pop();\n cl = _namespace(a.join(\".\"))[n] = this.gsClass = func.apply(func, _classes); //exports to multiple environments\n\n if (global) {\n _globals[n] = _exports[n] = cl; //provides a way to avoid global namespace pollution. By default, the main classes like TweenLite, Power1, Strong, etc. are added to window unless a GreenSockGlobals is defined. So if you want to have things added to a custom object instead, just do something like window.GreenSockGlobals = {} before loading any GreenSock files. You can even set up an alias like window.GreenSockGlobals = windows.gs = {} so that you can access everything like gs.TweenLite. Also remember that ALL classes are added to the window.com.greensock object (in their respective packages, like com.greensock.easing.Power1, com.greensock.TweenLite, etc.)\n\n /*\n if (typeof(module) !== \"undefined\" && module.exports) { //node\n \tif (ns === moduleName) {\n \t\tmodule.exports = _exports[moduleName] = cl;\n \t\tfor (i in _exports) {\n \t\t\tcl[i] = _exports[i];\n \t\t}\n \t} else if (_exports[moduleName]) {\n \t\t_exports[moduleName][n] = cl;\n \t}\n } else if (typeof(define) === \"function\" && define.amd){ //AMD\n \tdefine((window.GreenSockAMDPath ? window.GreenSockAMDPath + \"/\" : \"\") + ns.split(\".\").pop(), [], function() { return cl; });\n }\n */\n }\n\n for (i = 0; i < this.sc.length; i++) {\n this.sc[i].check();\n }\n }\n };\n\n this.check(true);\n },\n //used to create Definition instances (which basically registers a class that has dependencies).\n _gsDefine = window._gsDefine = function (ns, dependencies, func, global) {\n return new Definition(ns, dependencies, func, global);\n },\n //a quick way to create a class that doesn't have any dependencies. Returns the class, but first registers it in the GreenSock namespace so that other classes can grab it (other classes might be dependent on the class).\n _class = gs._class = function (ns, func, global) {\n func = func || function () {};\n\n _gsDefine(ns, [], function () {\n return func;\n }, global);\n\n return func;\n };\n\n _gsDefine.globals = _globals;\n /*\n * ----------------------------------------------------------------\n * Ease\n * ----------------------------------------------------------------\n */\n\n var _baseParams = [0, 0, 1, 1],\n Ease = _class(\"easing.Ease\", function (func, extraParams, type, power) {\n this._func = func;\n this._type = type || 0;\n this._power = power || 0;\n this._params = extraParams ? _baseParams.concat(extraParams) : _baseParams;\n }, true),\n _easeMap = Ease.map = {},\n _easeReg = Ease.register = function (ease, names, types, create) {\n var na = names.split(\",\"),\n i = na.length,\n ta = (types || \"easeIn,easeOut,easeInOut\").split(\",\"),\n e,\n name,\n j,\n type;\n\n while (--i > -1) {\n name = na[i];\n e = create ? _class(\"easing.\" + name, null, true) : gs.easing[name] || {};\n j = ta.length;\n\n while (--j > -1) {\n type = ta[j];\n _easeMap[name + \".\" + type] = _easeMap[type + name] = e[type] = ease.getRatio ? ease : ease[type] || new ease();\n }\n }\n };\n\n p = Ease.prototype;\n p._calcEnd = false;\n\n p.getRatio = function (p) {\n if (this._func) {\n this._params[0] = p;\n return this._func.apply(null, this._params);\n }\n\n var t = this._type,\n pw = this._power,\n r = t === 1 ? 1 - p : t === 2 ? p : p < 0.5 ? p * 2 : (1 - p) * 2;\n\n if (pw === 1) {\n r *= r;\n } else if (pw === 2) {\n r *= r * r;\n } else if (pw === 3) {\n r *= r * r * r;\n } else if (pw === 4) {\n r *= r * r * r * r;\n }\n\n return t === 1 ? 1 - r : t === 2 ? r : p < 0.5 ? r / 2 : 1 - r / 2;\n }; //create all the standard eases like Linear, Quad, Cubic, Quart, Quint, Strong, Power0, Power1, Power2, Power3, and Power4 (each with easeIn, easeOut, and easeInOut)\n\n\n a = [\"Linear\", \"Quad\", \"Cubic\", \"Quart\", \"Quint,Strong\"];\n i = a.length;\n\n while (--i > -1) {\n p = a[i] + \",Power\" + i;\n\n _easeReg(new Ease(null, null, 1, i), p, \"easeOut\", true);\n\n _easeReg(new Ease(null, null, 2, i), p, \"easeIn\" + (i === 0 ? \",easeNone\" : \"\"));\n\n _easeReg(new Ease(null, null, 3, i), p, \"easeInOut\");\n }\n\n _easeMap.linear = gs.easing.Linear.easeIn;\n _easeMap.swing = gs.easing.Quad.easeInOut; //for jQuery folks\n\n /*\n * ----------------------------------------------------------------\n * EventDispatcher\n * ----------------------------------------------------------------\n */\n\n var EventDispatcher = _class(\"events.EventDispatcher\", function (target) {\n this._listeners = {};\n this._eventTarget = target || this;\n });\n\n p = EventDispatcher.prototype;\n\n p.addEventListener = function (type, callback, scope, useParam, priority) {\n priority = priority || 0;\n var list = this._listeners[type],\n index = 0,\n listener,\n i;\n\n if (this === _ticker && !_tickerActive) {\n _ticker.wake();\n }\n\n if (list == null) {\n this._listeners[type] = list = [];\n }\n\n i = list.length;\n\n while (--i > -1) {\n listener = list[i];\n\n if (listener.c === callback && listener.s === scope) {\n list.splice(i, 1);\n } else if (index === 0 && listener.pr < priority) {\n index = i + 1;\n }\n }\n\n list.splice(index, 0, {\n c: callback,\n s: scope,\n up: useParam,\n pr: priority\n });\n };\n\n p.removeEventListener = function (type, callback) {\n var list = this._listeners[type],\n i;\n\n if (list) {\n i = list.length;\n\n while (--i > -1) {\n if (list[i].c === callback) {\n list.splice(i, 1);\n return;\n }\n }\n }\n };\n\n p.dispatchEvent = function (type) {\n var list = this._listeners[type],\n i,\n t,\n listener;\n\n if (list) {\n i = list.length;\n\n if (i > 1) {\n list = list.slice(0); //in case addEventListener() is called from within a listener/callback (otherwise the index could change, resulting in a skip)\n }\n\n t = this._eventTarget;\n\n while (--i > -1) {\n listener = list[i];\n\n if (listener) {\n if (listener.up) {\n listener.c.call(listener.s || t, {\n type: type,\n target: t\n });\n } else {\n listener.c.call(listener.s || t);\n }\n }\n }\n }\n };\n /*\n * ----------------------------------------------------------------\n * Ticker\n * ----------------------------------------------------------------\n */\n\n\n var _reqAnimFrame = window.requestAnimationFrame,\n _cancelAnimFrame = window.cancelAnimationFrame,\n _getTime = Date.now || function () {\n return new Date().getTime();\n },\n _lastUpdate = _getTime(); //now try to determine the requestAnimationFrame and cancelAnimationFrame functions and if none are found, we'll use a setTimeout()/clearTimeout() polyfill.\n\n\n a = [\"ms\", \"moz\", \"webkit\", \"o\"];\n i = a.length;\n\n while (--i > -1 && !_reqAnimFrame) {\n _reqAnimFrame = window[a[i] + \"RequestAnimationFrame\"];\n _cancelAnimFrame = window[a[i] + \"CancelAnimationFrame\"] || window[a[i] + \"CancelRequestAnimationFrame\"];\n }\n\n _class(\"Ticker\", function (fps, useRAF) {\n var _self = this,\n _startTime = _getTime(),\n _useRAF = useRAF !== false && _reqAnimFrame ? \"auto\" : false,\n _lagThreshold = 500,\n _adjustedLag = 33,\n _tickWord = \"tick\",\n //helps reduce gc burden\n _fps,\n _req,\n _id,\n _gap,\n _nextTime,\n _tick = function _tick(manual) {\n var elapsed = _getTime() - _lastUpdate,\n overlap,\n dispatch;\n\n if (elapsed > _lagThreshold) {\n _startTime += elapsed - _adjustedLag;\n }\n\n _lastUpdate += elapsed;\n _self.time = (_lastUpdate - _startTime) / 1000;\n overlap = _self.time - _nextTime;\n\n if (!_fps || overlap > 0 || manual === true) {\n _self.frame++;\n _nextTime += overlap + (overlap >= _gap ? 0.004 : _gap - overlap);\n dispatch = true;\n }\n\n if (manual !== true) {\n //make sure the request is made before we dispatch the \"tick\" event so that timing is maintained. Otherwise, if processing the \"tick\" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.\n _id = _req(_tick);\n }\n\n if (dispatch) {\n _self.dispatchEvent(_tickWord);\n }\n };\n\n EventDispatcher.call(_self);\n _self.time = _self.frame = 0;\n\n _self.tick = function () {\n _tick(true);\n };\n\n _self.lagSmoothing = function (threshold, adjustedLag) {\n if (!arguments.length) {\n //if lagSmoothing() is called with no arguments, treat it like a getter that returns a boolean indicating if it's enabled or not. This is purposely undocumented and is for internal use.\n return _lagThreshold < 1 / _tinyNum;\n }\n\n _lagThreshold = threshold || 1 / _tinyNum; //zero should be interpreted as basically unlimited\n\n _adjustedLag = Math.min(adjustedLag, _lagThreshold, 0);\n };\n\n _self.sleep = function () {\n if (_id == null) {\n return;\n }\n\n if (!_useRAF || !_cancelAnimFrame) {\n clearTimeout(_id);\n } else {\n _cancelAnimFrame(_id);\n }\n\n _req = _emptyFunc;\n _id = null;\n\n if (_self === _ticker) {\n _tickerActive = false;\n }\n };\n\n _self.wake = function (seamless) {\n if (_id !== null) {\n _self.sleep();\n } else if (seamless) {\n _startTime += -_lastUpdate + (_lastUpdate = _getTime());\n } else if (_self.frame > 10) {\n //don't trigger lagSmoothing if we're just waking up, and make sure that at least 10 frames have elapsed because of the iOS bug that we work around below with the 1.5-second setTimout().\n _lastUpdate = _getTime() - _lagThreshold + 5;\n }\n\n _req = _fps === 0 ? _emptyFunc : !_useRAF || !_reqAnimFrame ? function (f) {\n return setTimeout(f, (_nextTime - _self.time) * 1000 + 1 | 0);\n } : _reqAnimFrame;\n\n if (_self === _ticker) {\n _tickerActive = true;\n }\n\n _tick(2);\n };\n\n _self.fps = function (value) {\n if (!arguments.length) {\n return _fps;\n }\n\n _fps = value;\n _gap = 1 / (_fps || 60);\n _nextTime = this.time + _gap;\n\n _self.wake();\n };\n\n _self.useRAF = function (value) {\n if (!arguments.length) {\n return _useRAF;\n }\n\n _self.sleep();\n\n _useRAF = value;\n\n _self.fps(_fps);\n };\n\n _self.fps(fps); //a bug in iOS 6 Safari occasionally prevents the requestAnimationFrame from working initially, so we use a 1.5-second timeout that automatically falls back to setTimeout() if it senses this condition.\n\n\n setTimeout(function () {\n if (_useRAF === \"auto\" && _self.frame < 5 && (_doc || {}).visibilityState !== \"hidden\") {\n _self.useRAF(false);\n }\n }, 1500);\n });\n\n p = gs.Ticker.prototype = new gs.events.EventDispatcher();\n p.constructor = gs.Ticker;\n /*\n * ----------------------------------------------------------------\n * Animation\n * ----------------------------------------------------------------\n */\n\n var Animation = _class(\"core.Animation\", function (duration, vars) {\n this.vars = vars = vars || {};\n this._duration = this._totalDuration = duration || 0;\n this._delay = Number(vars.delay) || 0;\n this._timeScale = 1;\n this._active = !!vars.immediateRender;\n this.data = vars.data;\n this._reversed = !!vars.reversed;\n\n if (!_rootTimeline) {\n return;\n }\n\n if (!_tickerActive) {\n //some browsers (like iOS 6 Safari) shut down JavaScript execution when the tab is disabled and they [occasionally] neglect to start up requestAnimationFrame again when returning - this code ensures that the engine starts up again properly.\n _ticker.wake();\n }\n\n var tl = this.vars.useFrames ? _rootFramesTimeline : _rootTimeline;\n tl.add(this, tl._time);\n\n if (this.vars.paused) {\n this.paused(true);\n }\n });\n\n _ticker = Animation.ticker = new gs.Ticker();\n p = Animation.prototype;\n p._dirty = p._gc = p._initted = p._paused = false;\n p._totalTime = p._time = 0;\n p._rawPrevTime = -1;\n p._next = p._last = p._onUpdate = p._timeline = p.timeline = null;\n p._paused = false; //some browsers (like iOS) occasionally drop the requestAnimationFrame event when the user switches to a different tab and then comes back again, so we use a 2-second setTimeout() to sense if/when that condition occurs and then wake() the ticker.\n\n var _checkTimeout = function _checkTimeout() {\n if (_tickerActive && _getTime() - _lastUpdate > 2000 && ((_doc || {}).visibilityState !== \"hidden\" || !_ticker.lagSmoothing())) {\n //note: if the tab is hidden, we should still wake if lagSmoothing has been disabled.\n _ticker.wake();\n }\n\n var t = setTimeout(_checkTimeout, 2000);\n\n if (t.unref) {\n // allows a node process to exit even if the timeout’s callback hasn't been invoked. Without it, the node process could hang as this function is called every two seconds.\n t.unref();\n }\n };\n\n _checkTimeout();\n\n p.play = function (from, suppressEvents) {\n if (from != null) {\n this.seek(from, suppressEvents);\n }\n\n return this.reversed(false).paused(false);\n };\n\n p.pause = function (atTime, suppressEvents) {\n if (atTime != null) {\n this.seek(atTime, suppressEvents);\n }\n\n return this.paused(true);\n };\n\n p.resume = function (from, suppressEvents) {\n if (from != null) {\n this.seek(from, suppressEvents);\n }\n\n return this.paused(false);\n };\n\n p.seek = function (time, suppressEvents) {\n return this.totalTime(Number(time), suppressEvents !== false);\n };\n\n p.restart = function (includeDelay, suppressEvents) {\n return this.reversed(false).paused(false).totalTime(includeDelay ? -this._delay : 0, suppressEvents !== false, true);\n };\n\n p.reverse = function (from, suppressEvents) {\n if (from != null) {\n this.seek(from || this.totalDuration(), suppressEvents);\n }\n\n return this.reversed(true).paused(false);\n };\n\n p.render = function (time, suppressEvents, force) {//stub - we override this method in subclasses.\n };\n\n p.invalidate = function () {\n this._time = this._totalTime = 0;\n this._initted = this._gc = false;\n this._rawPrevTime = -1;\n\n if (this._gc || !this.timeline) {\n this._enabled(true);\n }\n\n return this;\n };\n\n p.isActive = function () {\n var tl = this._timeline,\n //the 2 root timelines won't have a _timeline; they're always active.\n startTime = this._startTime,\n rawTime;\n return !tl || !this._gc && !this._paused && tl.isActive() && (rawTime = tl.rawTime(true)) >= startTime && rawTime < startTime + this.totalDuration() / this._timeScale - _tinyNum;\n };\n\n p._enabled = function (enabled, ignoreTimeline) {\n if (!_tickerActive) {\n _ticker.wake();\n }\n\n this._gc = !enabled;\n this._active = this.isActive();\n\n if (ignoreTimeline !== true) {\n if (enabled && !this.timeline) {\n this._timeline.add(this, this._startTime - this._delay);\n } else if (!enabled && this.timeline) {\n this._timeline._remove(this, true);\n }\n }\n\n return false;\n };\n\n p._kill = function (vars, target) {\n return this._enabled(false, false);\n };\n\n p.kill = function (vars, target) {\n this._kill(vars, target);\n\n return this;\n };\n\n p._uncache = function (includeSelf) {\n var tween = includeSelf ? this : this.timeline;\n\n while (tween) {\n tween._dirty = true;\n tween = tween.timeline;\n }\n\n return this;\n };\n\n p._swapSelfInParams = function (params) {\n var i = params.length,\n copy = params.concat();\n\n while (--i > -1) {\n if (params[i] === \"{self}\") {\n copy[i] = this;\n }\n }\n\n return copy;\n };\n\n p._callback = function (type) {\n var v = this.vars,\n callback = v[type],\n params = v[type + \"Params\"],\n scope = v[type + \"Scope\"] || v.callbackScope || this,\n l = params ? params.length : 0;\n\n switch (l) {\n //speed optimization; call() is faster than apply() so use it when there are only a few parameters (which is by far most common). Previously we simply did var v = this.vars; v[type].apply(v[type + \"Scope\"] || v.callbackScope || this, v[type + \"Params\"] || _blankArray);\n case 0:\n callback.call(scope);\n break;\n\n case 1:\n callback.call(scope, params[0]);\n break;\n\n case 2:\n callback.call(scope, params[0], params[1]);\n break;\n\n default:\n callback.apply(scope, params);\n }\n }; //----Animation getters/setters --------------------------------------------------------\n\n\n p.eventCallback = function (type, callback, params, scope) {\n if ((type || \"\").substr(0, 2) === \"on\") {\n var v = this.vars;\n\n if (arguments.length === 1) {\n return v[type];\n }\n\n if (callback == null) {\n delete v[type];\n } else {\n v[type] = callback;\n v[type + \"Params\"] = _isArray(params) && params.join(\"\").indexOf(\"{self}\") !== -1 ? this._swapSelfInParams(params) : params;\n v[type + \"Scope\"] = scope;\n }\n\n if (type === \"onUpdate\") {\n this._onUpdate = callback;\n }\n }\n\n return this;\n };\n\n p.delay = function (value) {\n if (!arguments.length) {\n return this._delay;\n }\n\n if (this._timeline.smoothChildTiming) {\n this.startTime(this._startTime + value - this._delay);\n }\n\n this._delay = value;\n return this;\n };\n\n p.duration = function (value) {\n if (!arguments.length) {\n this._dirty = false;\n return this._duration;\n }\n\n this._duration = this._totalDuration = value;\n\n this._uncache(true); //true in case it's a TweenMax or TimelineMax that has a repeat - we'll need to refresh the totalDuration.\n\n\n if (this._timeline.smoothChildTiming) if (this._time > 0) if (this._time < this._duration) if (value !== 0) {\n this.totalTime(this._totalTime * (value / this._duration), true);\n }\n return this;\n };\n\n p.totalDuration = function (value) {\n this._dirty = false;\n return !arguments.length ? this._totalDuration : this.duration(value);\n };\n\n p.time = function (value, suppressEvents) {\n if (!arguments.length) {\n return this._time;\n }\n\n if (this._dirty) {\n this.totalDuration();\n }\n\n return this.totalTime(value > this._duration ? this._duration : value, suppressEvents);\n };\n\n p.totalTime = function (time, suppressEvents, uncapped) {\n if (!_tickerActive) {\n _ticker.wake();\n }\n\n if (!arguments.length) {\n return this._totalTime;\n }\n\n if (this._timeline) {\n if (time < 0 && !uncapped) {\n time += this.totalDuration();\n }\n\n if (this._timeline.smoothChildTiming) {\n if (this._dirty) {\n this.totalDuration();\n }\n\n var totalDuration = this._totalDuration,\n tl = this._timeline;\n\n if (time > totalDuration && !uncapped) {\n time = totalDuration;\n }\n\n this._startTime = (this._paused ? this._pauseTime : tl._time) - (!this._reversed ? time : totalDuration - time) / this._timeScale;\n\n if (!tl._dirty) {\n //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.\n this._uncache(false);\n } //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The startTime of that child would get pushed out, but one of the ancestors may have completed.\n\n\n if (tl._timeline) {\n while (tl._timeline) {\n if (tl._timeline._time !== (tl._startTime + tl._totalTime) / tl._timeScale) {\n tl.totalTime(tl._totalTime, true);\n }\n\n tl = tl._timeline;\n }\n }\n }\n\n if (this._gc) {\n this._enabled(true, false);\n }\n\n if (this._totalTime !== time || this._duration === 0) {\n if (_lazyTweens.length) {\n _lazyRender();\n }\n\n this.render(time, suppressEvents, false);\n\n if (_lazyTweens.length) {\n //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.\n _lazyRender();\n }\n }\n }\n\n return this;\n };\n\n p.progress = p.totalProgress = function (value, suppressEvents) {\n var duration = this.duration();\n return !arguments.length ? duration ? this._time / duration : this.ratio : this.totalTime(duration * value, suppressEvents);\n };\n\n p.startTime = function (value) {\n if (!arguments.length) {\n return this._startTime;\n }\n\n if (value !== this._startTime) {\n this._startTime = value;\n if (this.timeline) if (this.timeline._sortChildren) {\n this.timeline.add(this, value - this._delay); //ensures that any necessary re-sequencing of Animations in the timeline occurs to make sure the rendering order is correct.\n }\n }\n\n return this;\n };\n\n p.endTime = function (includeRepeats) {\n return this._startTime + (includeRepeats != false ? this.totalDuration() : this.duration()) / this._timeScale;\n };\n\n p.timeScale = function (value) {\n if (!arguments.length) {\n return this._timeScale;\n }\n\n var pauseTime, t;\n value = value || _tinyNum; //can't allow zero because it'll throw the math off\n\n if (this._timeline && this._timeline.smoothChildTiming) {\n pauseTime = this._pauseTime;\n t = pauseTime || pauseTime === 0 ? pauseTime : this._timeline.totalTime();\n this._startTime = t - (t - this._startTime) * this._timeScale / value;\n }\n\n this._timeScale = value;\n t = this.timeline;\n\n while (t && t.timeline) {\n //must update the duration/totalDuration of all ancestor timelines immediately in case in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.\n t._dirty = true;\n t.totalDuration();\n t = t.timeline;\n }\n\n return this;\n };\n\n p.reversed = function (value) {\n if (!arguments.length) {\n return this._reversed;\n }\n\n if (value != this._reversed) {\n this._reversed = value;\n this.totalTime(this._timeline && !this._timeline.smoothChildTiming ? this.totalDuration() - this._totalTime : this._totalTime, true);\n }\n\n return this;\n };\n\n p.paused = function (value) {\n if (!arguments.length) {\n return this._paused;\n }\n\n var tl = this._timeline,\n raw,\n elapsed;\n if (value != this._paused) if (tl) {\n if (!_tickerActive && !value) {\n _ticker.wake();\n }\n\n raw = tl.rawTime();\n elapsed = raw - this._pauseTime;\n\n if (!value && tl.smoothChildTiming) {\n this._startTime += elapsed;\n\n this._uncache(false);\n }\n\n this._pauseTime = value ? raw : null;\n this._paused = value;\n this._active = this.isActive();\n\n if (!value && elapsed !== 0 && this._initted && this.duration()) {\n raw = tl.smoothChildTiming ? this._totalTime : (raw - this._startTime) / this._timeScale;\n this.render(raw, raw === this._totalTime, true); //in case the target's properties changed via some other tween or manual update by the user, we should force a render.\n }\n }\n\n if (this._gc && !value) {\n this._enabled(true, false);\n }\n\n return this;\n };\n /*\n * ----------------------------------------------------------------\n * SimpleTimeline\n * ----------------------------------------------------------------\n */\n\n\n var SimpleTimeline = _class(\"core.SimpleTimeline\", function (vars) {\n Animation.call(this, 0, vars);\n this.autoRemoveChildren = this.smoothChildTiming = true;\n });\n\n p = SimpleTimeline.prototype = new Animation();\n p.constructor = SimpleTimeline;\n p.kill()._gc = false;\n p._first = p._last = p._recent = null;\n p._sortChildren = false;\n\n p.add = p.insert = function (child, position, align, stagger) {\n var prevTween, st;\n child._startTime = Number(position || 0) + child._delay;\n if (child._paused) if (this !== child._timeline) {\n //we only adjust the _pauseTime if it wasn't in this timeline already. Remember, sometimes a tween will be inserted again into the same timeline when its startTime is changed so that the tweens in the TimelineLite/Max are re-ordered properly in the linked list (so everything renders in the proper order).\n child._pauseTime = this.rawTime() - (child._timeline.rawTime() - child._pauseTime);\n }\n\n if (child.timeline) {\n child.timeline._remove(child, true); //removes from existing timeline so that it can be properly added to this one.\n\n }\n\n child.timeline = child._timeline = this;\n\n if (child._gc) {\n child._enabled(true, true);\n }\n\n prevTween = this._last;\n\n if (this._sortChildren) {\n st = child._startTime;\n\n while (prevTween && prevTween._startTime > st) {\n prevTween = prevTween._prev;\n }\n }\n\n if (prevTween) {\n child._next = prevTween._next;\n prevTween._next = child;\n } else {\n child._next = this._first;\n this._first = child;\n }\n\n if (child._next) {\n child._next._prev = child;\n } else {\n this._last = child;\n }\n\n child._prev = prevTween;\n this._recent = child;\n\n if (this._timeline) {\n this._uncache(true);\n }\n\n return this;\n };\n\n p._remove = function (tween, skipDisable) {\n if (tween.timeline === this) {\n if (!skipDisable) {\n tween._enabled(false, true);\n }\n\n if (tween._prev) {\n tween._prev._next = tween._next;\n } else if (this._first === tween) {\n this._first = tween._next;\n }\n\n if (tween._next) {\n tween._next._prev = tween._prev;\n } else if (this._last === tween) {\n this._last = tween._prev;\n }\n\n tween._next = tween._prev = tween.timeline = null;\n\n if (tween === this._recent) {\n this._recent = this._last;\n }\n\n if (this._timeline) {\n this._uncache(true);\n }\n }\n\n return this;\n };\n\n p.render = function (time, suppressEvents, force) {\n var tween = this._first,\n next;\n this._totalTime = this._time = this._rawPrevTime = time;\n\n while (tween) {\n next = tween._next; //record it here because the value could change after rendering...\n\n if (tween._active || time >= tween._startTime && !tween._paused && !tween._gc) {\n if (!tween._reversed) {\n tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force);\n } else {\n tween.render((!tween._dirty ? tween._totalDuration : tween.totalDuration()) - (time - tween._startTime) * tween._timeScale, suppressEvents, force);\n }\n }\n\n tween = next;\n }\n };\n\n p.rawTime = function () {\n if (!_tickerActive) {\n _ticker.wake();\n }\n\n return this._totalTime;\n };\n /*\n * ----------------------------------------------------------------\n * TweenLite\n * ----------------------------------------------------------------\n */\n\n\n var TweenLite = _class(\"TweenLite\", function (target, duration, vars) {\n Animation.call(this, duration, vars);\n this.render = TweenLite.prototype.render; //speed optimization (avoid prototype lookup on this \"hot\" method)\n\n if (target == null) {\n throw \"Cannot tween a null target.\";\n }\n\n this.target = target = typeof target !== \"string\" ? target : TweenLite.selector(target) || target;\n var isSelector = target.jquery || target.length && target !== window && target[0] && (target[0] === window || target[0].nodeType && target[0].style && !target.nodeType),\n overwrite = this.vars.overwrite,\n i,\n targ,\n targets;\n this._overwrite = overwrite = overwrite == null ? _overwriteLookup[TweenLite.defaultOverwrite] : typeof overwrite === \"number\" ? overwrite >> 0 : _overwriteLookup[overwrite];\n\n if ((isSelector || target instanceof Array || target.push && _isArray(target)) && typeof target[0] !== \"number\") {\n this._targets = targets = _slice(target); //don't use Array.prototype.slice.call(target, 0) because that doesn't work in IE8 with a NodeList that's returned by querySelectorAll()\n\n this._propLookup = [];\n this._siblings = [];\n\n for (i = 0; i < targets.length; i++) {\n targ = targets[i];\n\n if (!targ) {\n targets.splice(i--, 1);\n continue;\n } else if (typeof targ === \"string\") {\n targ = targets[i--] = TweenLite.selector(targ); //in case it's an array of strings\n\n if (typeof targ === \"string\") {\n targets.splice(i + 1, 1); //to avoid an endless loop (can't imagine why the selector would return a string, but just in case)\n }\n\n continue;\n } else if (targ.length && targ !== window && targ[0] && (targ[0] === window || targ[0].nodeType && targ[0].style && !targ.nodeType)) {\n //in case the user is passing in an array of selector objects (like jQuery objects), we need to check one more level and pull things out if necessary. Also note that \n\n
\n ${location.Name}\n ${location.Distance}m\n
\n\n
\n ${location.Address.Street} ${location.Address.HouseNr}, ${location.Address.City}\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Maandag${location.OpeningHours.Monday ? location.OpeningHours.Monday.string : 'Gesloten'}
Dinsdag${location.OpeningHours.Tuesday ? location.OpeningHours.Tuesday.string : 'Gesloten'}
Woensdag${location.OpeningHours.Wednesday ? location.OpeningHours.Wednesday.string : 'Gesloten'}
Donderdag${location.OpeningHours.Thursday ? location.OpeningHours.Thursday.string : 'Gesloten'}
Vrijdag${location.OpeningHours.Friday ? location.OpeningHours.Friday.string : 'Gesloten'}
Zaterdag${location.OpeningHours.Saturday ? location.OpeningHours.Saturday.string : 'Gesloten'}
Zondag${location.OpeningHours.Sunday ? location.OpeningHours.Sunday.string : 'Gesloten'}
\n \n `)\n }.bind(this))\n }.bind(this))\n }\n\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\n connect() {\n this.stylePrice()\n }\n\n stylePrice() {\n let price = this.splitPrice(this.price)\n let base = []\n if (this.basePrice) {\n base = this.splitPrice(this.basePrice)\n }\n\n if (this.promotion) {\n this.element.innerHTML = `
${base[1]}.${base[2]}
${price[1]}.${price[2]}`\n } else {\n this.element.innerHTML = `${price[1]}.${price[2]}`\n }\n }\n\n splitPrice(price) {\n return price.match(/^€(\\d*)[,|\\.](\\d{2})\\s?$/)\n }\n\n get basePrice() {\n return this.element.dataset.basePrice\n }\n\n get price() {\n return this.element.dataset.price\n }\n\n get promotion() {\n return this.element.hasAttribute('data-promotion')\n }\n\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"dropdown\" ]\n\n connect() {\n this.element[\"quickview\"] = this\n }\n\n toggle(event) {\n event.preventDefault()\n event.stopPropagation()\n this.loading()\n this.element.classList.toggle(\"open\")\n if (this.element.classList.contains('open')) {\n document.querySelector('.site-header').classList.add('open-cart')\n } else {\n document.querySelector('.site-header').classList.remove('open-cart')\n }\n this.getShoppingCart()\n }\n\n open() {\n this.loading()\n this.element.classList.add(\"open\")\n document.querySelector('.site-header').classList.add('open-cart')\n this.getShoppingCart()\n }\n\n updateQuantity(event) {\n $(event.currentTarget.parentElement).submit()\n }\n\n deleteItem(event) {\n let orderItemId = event.currentTarget.dataset.id\n let orderItem = document.querySelector(`.quickview-list-item[data-id=\"${orderItemId}\"]`)\n orderItem.parentElement.removeChild(orderItem)\n }\n\n updateCart() {\n this.loading()\n\n // Update cart\n fetch(`/shopping_cart/quickview/update_cart`, {\n method: 'PUT',\n credentials: 'same-origin',\n headers: {\n 'X-CSRF-Token': this.token,\n 'Content-Type': 'application/json'\n }\n }).then(function(response) {\n if (response.ok) this.getShoppingCart()\n }.bind(this))\n }\n\n getShoppingCart() {\n fetch(`/shopping_cart/quickview`, {\n credentials: \"same-origin\"\n }).then(response => response.text())\n .then(function(html) {\n this.dropdownTarget.innerHTML = html\n }.bind(this))\n }\n\n loading() {\n this.dropdownTarget.innerHTML = `
\n
\n
\n
`\n }\n\n close(event) {\n this.element.classList.remove(\"open\")\n document.querySelector('.site-header').classList.remove('open-cart')\n }\n\n outsideClose(event) {\n let rect = this.dropdownTarget.getBoundingClientRect()\n if (event.clientX < rect.x && event.clientX > 0)\n this.close() \n }\n\n get token() {\n return document.querySelector('meta[name=\"csrf-token\"]').content\n }\n\n}","import { Controller } from 'stimulus'\n\nexport default class extends Controller {\n static targets = [ \"businessFields\", \"form\" ]\n \n connect() {\n this.toggleBusinessFields()\n }\n \n toggleBusinessFields() {\n this.businessFieldsTarget.style.display = this.business ? \"block\" : \"none\"\n }\n \n get business() {\n return this.formTarget.elements[\"customer_account[company_account]\"].value == \"true\"\n }\n \n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"results\" ]\n\n submitQuery = debounce(function(query) {\n let url = new URL(this.element.dataset.autocomplete)\n let params = {query: query}\n Object.keys(params).forEach(key => url.searchParams.append(key, params[key]))\n\n fetch(url, {credentials: \"same-origin\"}).then(response => response.text()).then(function(html) {\n this.resultsTarget.innerHTML = html\n\n // Send to Google Analytics\n ga('send', 'pageview', `${url.pathname}${url.search}`)\n\n // Track search in GA4\n document.body.analytics.trackSearch(query)\n }.bind(this))\n }, 300)\n\n search(event) {\n this.submitQuery(event.currentTarget.value)\n }\n\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\n connect() {\n this.fetchDate()\n if (this.currentLocale == \"de\") {\n moment.locale(\"de\");\n } else {\n moment.locale('nl');\n }\n }\n\n fetchDate() {\n fetch(this.element.dataset.url, {credentials: \"same-origin\"})\n .then((response) => response.text())\n .then(function(date) {\n let momentdate = moment(date)\n \n if (this.currentLocale == \"de\") {\n let dateString = momentdate.calendar(null, {\n sameDay: '[Heute]',\n nextDay: '[Morgen] D MMMM',\n nextWeek: 'dddd D MMMM',\n lastDay: '[Gestern] D MMMM',\n lastWeek: '[Letzte Woche] dddd D MMMM',\n sameElse: 'dddd D MMMM'\n })\n \n let now = moment()\n let cutoff = moment().hour(17).minutes(0)\n \n if (now.isAfter(cutoff)) {\n this.element.insertAdjacentHTML('afterbegin',`Jetzt bestellen, ${dateString} im Haus`)\n } else {\n this.element.insertAdjacentHTML('afterbegin', `Vor 17:00 Uhr bestellt, ${dateString} im Haus`)\n }\n } else {\n let dateString = momentdate.calendar(null, {\n sameDay: '[vandaag]',\n nextDay: '[morgen] D MMMM',\n nextWeek: 'dddd D MMMM',\n lastDay: '[gisteren] D MMMM',\n lastWeek: '[vorige week] dddd D MMMM',\n sameElse: 'dddd D MMMM'\n })\n \n let now = moment()\n let cutoff = moment().hour(17).minutes(0)\n \n if (now.isAfter(cutoff)) {\n this.element.insertAdjacentHTML('afterbegin',`Nu bestellen, ${dateString} in huis`)\n } else {\n this.element.insertAdjacentHTML('afterbegin', `Vóór 17:00 uur besteld, ${dateString} in huis`)\n }\n }\n \n // // Black friday melding\n // this.element.insertAdjacentHTML(\"beforeend\", `
Let op: Mogelijke vertraging bij PostNL
`)\n }.bind(this))\n }\n \n get currentLocale() {\n return (navigator.language || navigator.userLanguage).split(\"-\")[0]\n }\n\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n \n connect() {\n // fetch(\"/analytics/\" + this.orderToken, {\n // method: \"GET\",\n // credentials: \"same-origin\"\n // }).then((response) => response.json())\n // .then(function(json) {\n // gtag(\"event\", \"purchase\", json)\n // })\n }\n \n get orderToken() {\n // return this.element.dataset.token\n }\n \n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\n connect() {\n if(this.checkedIns.includes(this.productId))\n this.drawBadge()\n }\n\n drawBadge() {\n this.element.innerHTML = \"
Untappd
\"\n }\n\n get checkedIns() {\n if(document.body.dataset.checkedInIds) {\n return document.body.dataset.checkedInIds.split('-')\n } else {\n return []\n }\n }\n\n get productId() {\n return this.element.dataset.productId\n }\n\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"locations\", \"postalCode\" ]\n\n connect() {\n this.getLocations()\n this.cleavePostalCode()\n }\n\n cleavePostalCode() {\n // Reset cleave instance\n if (this.cleaveInstance) this.cleaveInstance.destroy()\n this.cleaveInstance = new Cleave(this.postalCodeTarget, {blocks: [5], numericOnly: true})\n }\n\n chooseLocation(event) {\n let button = event.currentTarget\n button.nextElementSibling.checked = true\n }\n\n getLocations() {\n fetch(`/checkout/ups_access_points?postal_code=${this.postalCodeTarget.value}`, {credentials: \"same-origin\"})\n .then((response) => response.json())\n .then(function(locations) {\n this.locationsTarget.innerHTML = \"\"\n\n locations.forEach(function(location) {\n this.locationsTarget.insertAdjacentHTML('beforeend', `
  • \n ${location.name}\n\n \n\n \n\n
    \n ${location.distance}\n
    \n\n
    \n ${location.address}, ${location.city}\n
    \n `)\n }.bind(this))\n }.bind(this))\n }\n\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"newWishlistInput\", \"newWishlistCheckbox\" ]\n \n changeInput() {\n let filled_in = this.newWishlistInputTarget.value.length > 0\n this.newWishlistCheckboxTarget.checked = filled_in\n }\n \n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n \n connect() {\n this.element['wishlistItem'] = this\n this.toggleHeart()\n }\n \n toggleHeart() {\n this.element.querySelector('a').classList.toggle('filled', this.onWishlist)\n }\n \n get onWishlist() {\n return this.wishlistIds.indexOf(this.id) >= 0\n }\n \n get id() {\n return this.element.dataset.productId\n }\n \n get wishlistIds() {\n if (document.body.dataset.wishlistIds) {\n let wishlistIds = (document.body.dataset.wishlistIds || []).split(\"-\")\n return wishlistIds\n } else {\n return []\n }\n }\n \n}","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar defaults = {\n lines: 12,\n length: 7,\n width: 5,\n radius: 10,\n scale: 1.0,\n corners: 1,\n color: '#000',\n fadeColor: 'transparent',\n animation: 'spinner-line-fade-default',\n rotate: 0,\n direction: 1,\n speed: 1,\n zIndex: 2e9,\n className: 'spinner',\n top: '50%',\n left: '50%',\n shadow: '0 0 1px transparent',\n position: 'absolute'\n};\n\nvar Spinner =\n/** @class */\nfunction () {\n function Spinner(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n this.opts = __assign(__assign({}, defaults), opts);\n }\n /**\r\n * Adds the spinner to the given target element. If this instance is already\r\n * spinning, it is automatically removed from its previous target by calling\r\n * stop() internally.\r\n */\n\n\n Spinner.prototype.spin = function (target) {\n this.stop();\n this.el = document.createElement('div');\n this.el.className = this.opts.className;\n this.el.setAttribute('role', 'progressbar');\n css(this.el, {\n position: this.opts.position,\n width: 0,\n zIndex: this.opts.zIndex,\n left: this.opts.left,\n top: this.opts.top,\n transform: \"scale(\" + this.opts.scale + \")\"\n });\n\n if (target) {\n target.insertBefore(this.el, target.firstChild || null);\n }\n\n drawLines(this.el, this.opts);\n return this;\n };\n /**\r\n * Stops and removes the Spinner.\r\n * Stopped spinners may be reused by calling spin() again.\r\n */\n\n\n Spinner.prototype.stop = function () {\n if (this.el) {\n if (typeof requestAnimationFrame !== 'undefined') {\n cancelAnimationFrame(this.animateId);\n } else {\n clearTimeout(this.animateId);\n }\n\n if (this.el.parentNode) {\n this.el.parentNode.removeChild(this.el);\n }\n\n this.el = undefined;\n }\n\n return this;\n };\n\n return Spinner;\n}();\n\nexport { Spinner };\n/**\r\n * Sets multiple style properties at once.\r\n */\n\nfunction css(el, props) {\n for (var prop in props) {\n el.style[prop] = props[prop];\n }\n\n return el;\n}\n/**\r\n * Returns the line color from the given string or array.\r\n */\n\n\nfunction getColor(color, idx) {\n return typeof color == 'string' ? color : color[idx % color.length];\n}\n/**\r\n * Internal method that draws the individual lines.\r\n */\n\n\nfunction drawLines(el, opts) {\n var borderRadius = Math.round(opts.corners * opts.width * 500) / 1000 + 'px';\n var shadow = 'none';\n\n if (opts.shadow === true) {\n shadow = '0 2px 4px #000'; // default shadow\n } else if (typeof opts.shadow === 'string') {\n shadow = opts.shadow;\n }\n\n var shadows = parseBoxShadow(shadow);\n\n for (var i = 0; i < opts.lines; i++) {\n var degrees = ~~(360 / opts.lines * i + opts.rotate);\n var backgroundLine = css(document.createElement('div'), {\n position: 'absolute',\n top: -opts.width / 2 + \"px\",\n width: opts.length + opts.width + 'px',\n height: opts.width + 'px',\n background: getColor(opts.fadeColor, i),\n borderRadius: borderRadius,\n transformOrigin: 'left',\n transform: \"rotate(\" + degrees + \"deg) translateX(\" + opts.radius + \"px)\"\n });\n var delay = i * opts.direction / opts.lines / opts.speed;\n delay -= 1 / opts.speed; // so initial animation state will include trail\n\n var line = css(document.createElement('div'), {\n width: '100%',\n height: '100%',\n background: getColor(opts.color, i),\n borderRadius: borderRadius,\n boxShadow: normalizeShadow(shadows, degrees),\n animation: 1 / opts.speed + \"s linear \" + delay + \"s infinite \" + opts.animation\n });\n backgroundLine.appendChild(line);\n el.appendChild(backgroundLine);\n }\n}\n\nfunction parseBoxShadow(boxShadow) {\n var regex = /^\\s*([a-zA-Z]+\\s+)?(-?\\d+(\\.\\d+)?)([a-zA-Z]*)\\s+(-?\\d+(\\.\\d+)?)([a-zA-Z]*)(.*)$/;\n var shadows = [];\n\n for (var _i = 0, _a = boxShadow.split(','); _i < _a.length; _i++) {\n var shadow = _a[_i];\n var matches = shadow.match(regex);\n\n if (matches === null) {\n continue; // invalid syntax\n }\n\n var x = +matches[2];\n var y = +matches[5];\n var xUnits = matches[4];\n var yUnits = matches[7];\n\n if (x === 0 && !xUnits) {\n xUnits = yUnits;\n }\n\n if (y === 0 && !yUnits) {\n yUnits = xUnits;\n }\n\n if (xUnits !== yUnits) {\n continue; // units must match to use as coordinates\n }\n\n shadows.push({\n prefix: matches[1] || '',\n x: x,\n y: y,\n xUnits: xUnits,\n yUnits: yUnits,\n end: matches[8]\n });\n }\n\n return shadows;\n}\n/**\r\n * Modify box-shadow x/y offsets to counteract rotation\r\n */\n\n\nfunction normalizeShadow(shadows, degrees) {\n var normalized = [];\n\n for (var _i = 0, shadows_1 = shadows; _i < shadows_1.length; _i++) {\n var shadow = shadows_1[_i];\n var xy = convertOffset(shadow.x, shadow.y, degrees);\n normalized.push(shadow.prefix + xy[0] + shadow.xUnits + ' ' + xy[1] + shadow.yUnits + shadow.end);\n }\n\n return normalized.join(', ');\n}\n\nfunction convertOffset(x, y, degrees) {\n var radians = degrees * Math.PI / 180;\n var sin = Math.sin(radians);\n var cos = Math.cos(radians);\n return [Math.round((x * cos + y * sin) * 1000) / 1000, Math.round((-x * sin + y * cos) * 1000) / 1000];\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\r\n * Ladda\r\n * http://lab.hakim.se/ladda\r\n * MIT licensed\r\n *\r\n * Copyright (C) 2018 Hakim El Hattab, http://hakim.se\r\n */\nimport { Spinner } from 'spin.js'; // All currently instantiated instances of Ladda\n\nvar ALL_INSTANCES = [];\n/**\r\n * Creates a new instance of Ladda which wraps the\r\n * target button element.\r\n *\r\n * @return An API object that can be used to control\r\n * the loading animation state.\r\n */\n\nexport function create(button) {\n if (typeof button === 'undefined') {\n console.warn(\"Ladda button target must be defined.\");\n return;\n } // The button must have the class \"ladda-button\"\n\n\n if (!button.classList.contains('ladda-button')) {\n button.classList.add('ladda-button');\n } // Style is required, default to \"expand-right\"\n\n\n if (!button.hasAttribute('data-style')) {\n button.setAttribute('data-style', 'expand-right');\n } // The text contents must be wrapped in a ladda-label\n // element, create one if it doesn't already exist\n\n\n if (!button.querySelector('.ladda-label')) {\n var laddaLabel = document.createElement('span');\n laddaLabel.className = 'ladda-label';\n wrapContent(button, laddaLabel);\n } // The spinner component\n\n\n var spinner,\n spinnerWrapper = button.querySelector('.ladda-spinner'); // Wrapper element for the spinner\n\n if (!spinnerWrapper) {\n spinnerWrapper = document.createElement('span');\n spinnerWrapper.className = 'ladda-spinner';\n }\n\n button.appendChild(spinnerWrapper); // Timer used to delay starting/stopping\n\n var timer;\n var instance = {\n /**\r\n * Enter the loading state.\r\n */\n start: function start() {\n // Create the spinner if it doesn't already exist\n if (!spinner) {\n spinner = createSpinner(button);\n }\n\n button.disabled = true;\n button.setAttribute('data-loading', '');\n clearTimeout(timer);\n spinner.spin(spinnerWrapper);\n this.setProgress(0);\n return this; // chain\n },\n\n /**\r\n * Enter the loading state, after a delay.\r\n */\n startAfter: function startAfter(delay) {\n clearTimeout(timer);\n timer = setTimeout(function () {\n instance.start();\n }, delay);\n return this; // chain\n },\n\n /**\r\n * Exit the loading state.\r\n */\n stop: function stop() {\n if (instance.isLoading()) {\n button.disabled = false;\n button.removeAttribute('data-loading');\n } // Kill the animation after a delay to make sure it\n // runs for the duration of the button transition\n\n\n clearTimeout(timer);\n\n if (spinner) {\n timer = setTimeout(function () {\n spinner.stop();\n }, 1000);\n }\n\n return this; // chain\n },\n\n /**\r\n * Toggle the loading state on/off.\r\n */\n toggle: function toggle() {\n return this.isLoading() ? this.stop() : this.start();\n },\n\n /**\r\n * Sets the width of the visual progress bar inside of\r\n * this Ladda button\r\n *\r\n * @param {Number} progress in the range of 0-1\r\n */\n setProgress: function setProgress(progress) {\n // Cap it\n progress = Math.max(Math.min(progress, 1), 0);\n var progressElement = button.querySelector('.ladda-progress'); // Remove the progress bar if we're at 0 progress\n\n if (progress === 0 && progressElement && progressElement.parentNode) {\n progressElement.parentNode.removeChild(progressElement);\n } else {\n if (!progressElement) {\n progressElement = document.createElement('div');\n progressElement.className = 'ladda-progress';\n button.appendChild(progressElement);\n }\n\n progressElement.style.width = (progress || 0) * button.offsetWidth + 'px';\n }\n },\n isLoading: function isLoading() {\n return button.hasAttribute('data-loading');\n },\n remove: function remove() {\n clearTimeout(timer);\n button.disabled = false;\n button.removeAttribute('data-loading');\n\n if (spinner) {\n spinner.stop();\n spinner = null;\n }\n\n ALL_INSTANCES.splice(ALL_INSTANCES.indexOf(instance), 1);\n }\n };\n ALL_INSTANCES.push(instance);\n return instance;\n}\n/**\r\n * Binds the target buttons to automatically enter the\r\n * loading state when clicked.\r\n *\r\n * @param target Either an HTML element or a CSS selector.\r\n * @param options\r\n * - timeout Number of milliseconds to wait before\r\n * automatically cancelling the animation.\r\n * - callback A function to be called with the Ladda\r\n * instance when a target button is clicked.\r\n */\n\nexport function bind(target, options) {\n var targets;\n\n if (typeof target === 'string') {\n targets = document.querySelectorAll(target);\n } else if (_typeof(target) === 'object') {\n targets = [target];\n } else {\n throw new Error('target must be string or object');\n }\n\n options = options || {};\n\n for (var i = 0; i < targets.length; i++) {\n bindElement(targets[i], options);\n }\n}\n/**\r\n * Stops ALL current loading animations.\r\n */\n\nexport function stopAll() {\n for (var i = 0, len = ALL_INSTANCES.length; i < len; i++) {\n ALL_INSTANCES[i].stop();\n }\n}\n/**\r\n* Get the first ancestor node from an element, having a\r\n* certain type.\r\n*\r\n* @param elem An HTML element\r\n* @param type an HTML tag type (uppercased)\r\n*\r\n* @return An HTML element\r\n*/\n\nfunction getAncestorOfTagType(elem, type) {\n while (elem.parentNode && elem.tagName !== type) {\n elem = elem.parentNode;\n }\n\n return type === elem.tagName ? elem : undefined;\n}\n\nfunction createSpinner(button) {\n var height = button.offsetHeight,\n spinnerColor,\n spinnerLines;\n\n if (height === 0) {\n // We may have an element that is not visible so\n // we attempt to get the height in a different way\n height = parseFloat(window.getComputedStyle(button).height);\n } // If the button is tall we can afford some padding\n\n\n if (height > 32) {\n height *= 0.8;\n } // Prefer an explicit height if one is defined\n\n\n if (button.hasAttribute('data-spinner-size')) {\n height = parseInt(button.getAttribute('data-spinner-size'), 10);\n } // Allow buttons to specify the color of the spinner element\n\n\n if (button.hasAttribute('data-spinner-color')) {\n spinnerColor = button.getAttribute('data-spinner-color');\n } // Allow buttons to specify the number of lines of the spinner\n\n\n if (button.hasAttribute('data-spinner-lines')) {\n spinnerLines = parseInt(button.getAttribute('data-spinner-lines'), 10);\n }\n\n var radius = height * 0.2,\n length = radius * 0.6,\n width = radius < 7 ? 2 : 3;\n return new Spinner({\n color: spinnerColor || '#fff',\n lines: spinnerLines || 12,\n radius: radius,\n length: length,\n width: width,\n animation: 'ladda-spinner-line-fade',\n zIndex: 'auto',\n top: 'auto',\n left: 'auto',\n className: ''\n });\n}\n\nfunction wrapContent(node, wrapper) {\n var r = document.createRange();\n r.selectNodeContents(node);\n r.surroundContents(wrapper);\n node.appendChild(wrapper);\n}\n\nfunction bindElement(element, options) {\n if (typeof element.addEventListener !== 'function') {\n return;\n }\n\n var instance = create(element);\n var timeout = -1;\n element.addEventListener('click', function () {\n // If the button belongs to a form, make sure all the\n // fields in that form are filled out\n var valid = true;\n var form = getAncestorOfTagType(element, 'FORM');\n\n if (typeof form !== 'undefined' && !form.hasAttribute('novalidate')) {\n // Modern form validation\n if (typeof form.checkValidity === 'function') {\n valid = form.checkValidity();\n }\n }\n\n if (valid) {\n // This is asynchronous to avoid an issue where disabling\n // the button prevents forms from submitting\n instance.startAfter(1); // Set a loading timeout if one is specified\n\n if (typeof options.timeout === 'number') {\n clearTimeout(timeout);\n timeout = setTimeout(instance.stop, options.timeout);\n } // Invoke callbacks\n\n\n if (typeof options.callback === 'function') {\n options.callback.apply(null, [instance]);\n }\n }\n }, false);\n}","import Swiper from 'swiper'\nimport { Controller } from \"stimulus\"\nimport * as Ladda from 'ladda'\nimport { animatedScrollTo } from 'es6-scroll-to'\n\nexport default class extends Controller {\n static targets = [ \"titles\", \"currentStep\", \"budget\", \"exclusivity\", \"stylesPreset\", \"lastStep\", \"resultsTotals\", \"resultsSwiper\", \"swiper\", \"resultName\", \"resultPrice\", \"resultDescription\", \"resultHeader\", \"backButton\", \"progress\", \"total\", \"beerCount\", \"loading\", \"loadingTexts\", \"resultStyle\", \"resultVolume\", \"resultAlcohol\", \"untappdUsername\", \"untappdUserInput\", \"searchUntappdButton\", \"untappdLoader\", \"untappdSearchForm\", \"untappdResult\", \"untappdBeers\", \"untappdUserNotFoundMessage\", \"smaakprofielUntappd\", \"customStylesList\", \"message\", \"messageContainer\", \"untappdStylePreset\" ]\n\n connect() {\n // Ladda button\n if (this.hasSearchUntappdButtonTarget) {\n this.ladda_button = Ladda.create(this.searchUntappdButtonTarget)\n }\n\n // Gift\n this.gift = \"\"\n\n // Custom styles\n this.customStyles = new Set()\n\n // Initialize swiper\n this.swiper = new Swiper(this.swiperTarget.querySelector('.swiper-container'), {\n slidesPerView: 2,\n centeredSlides: true,\n grabCursor: true,\n slideToClickedSlide: true,\n pagination: {\n el: '.swiper-pagination',\n type: 'bullets'\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n },\n breakpoints: {\n 640: { slidesPerView: 4 },\n 960: { slidesPerView: 6 }\n }\n })\n this.swiper.on('slideChange observerUpdate', function() {\n let currentSlide = this.swiper.slides[this.swiper.activeIndex]\n this.resultNameTarget.innerText = currentSlide.dataset.name\n this.resultPriceTarget.innerText = currentSlide.dataset.price\n this.resultDescriptionTarget.innerText = currentSlide.dataset.description\n this.resultStyleTarget.innerText = currentSlide.dataset.style\n this.resultVolumeTarget.innerText = currentSlide.dataset.volume\n this.resultAlcoholTarget.innerText = currentSlide.dataset.alcohol\n this.resultHeaderTarget.querySelector('.stars-filled-in').style.width = `${currentSlide.dataset.score}%`\n }.bind(this))\n\n this.loadingSwiper = new Swiper(this.loadingTextsTarget, {\n centeredSlides: true,\n loop: true,\n autoplay: {\n delay: 2000\n }\n })\n }\n\n scrollToTop() {\n // Scroll to Y\n animatedScrollTo({to: document.querySelector(\".beer-finder-wizard\").offsetTop - 200})\n }\n\n toggleCustomStylesList(event) {\n event.preventDefault()\n $(this.customStylesListTarget).slideToggle()\n }\n\n setUntappd(event) {\n event.preventDefault()\n this.nextStep()\n }\n\n setGift(event) {\n this.gift = event.currentTarget.dataset.gift\n if (this.hasUntappdUsernameTarget) {\n this.untappdUsernameTarget.value = \"\"\n }\n if (this.hasSmaakprofielUntappdTarget) {\n this.smaakprofielUntappdTarget.innerText = \"\"\n }\n if (this.hasUntappdUserInputTarget) {\n this.untappdUserInputTarget.value = \"\" \n }\n this.nextStep()\n }\n\n searchUntappdUser(event) {\n this.searchUntappdButtonTarget.disabled = true\n this.untappdUserNotFoundMessageTarget.style.display = \"none\"\n this.ladda_button.start()\n\n fetch(`/untappd_users.json`, {\n method: 'post',\n headers: {\n 'X-CSRF-Token': $.rails.csrfToken(),\n 'Content-Type': 'application/json'\n },\n credentials: \"same-origin\",\n body: JSON.stringify({\n username: this.untappdUserInputTarget.value\n })\n }).then(response => response.json())\n .then(function(json) {\n if (json.status == \"ok\") {\n this.untappdUsernameTarget.value = json.username\n if (this.hasSmaakprofielUntappdTarget) {\n this.untappdStylePresetTarget.style.display = \"block\"\n this.smaakprofielUntappdTarget.innerText = json.name\n }\n setTimeout(function() {\n this.searchUntappdButtonTarget.disabled = false\n this.untappdSearchFormTarget.style.display = \"none\"\n this.untappdResultTarget.style.display = \"flex\"\n this.untappdBeersTarget.innerText = `${json.beer_count} gedronken bieren`\n }.bind(this), 4000)\n } else {\n this.untappdUserNotFoundMessageTarget.style.display = \"block\"\n this.untappdUserInputTarget.value = \"\"\n this.ladda_button.stop()\n this.searchUntappdButtonTarget.disabled = false\n }\n }.bind(this))\n }\n\n setBudget(event) {\n this.budgetTarget.value = event.currentTarget.dataset.budget\n this.nextStep()\n }\n\n setExclusivity(event) {\n this.exclusivityTarget.value = event.currentTarget.dataset.exclusivity\n this.nextStep()\n }\n\n setStylesPreset(event) {\n this.stylesPresetTarget.value = event.currentTarget.dataset.stylesPreset\n this.findBeers()\n this.startLoading()\n this.nextStep()\n\n clearTimeout(this.timer)\n this.timer = setTimeout(function() {\n this.nextStep()\n this.stopLoading()\n }.bind(this), 4000)\n }\n\n toggleCustomStyle(event) {\n let checkbox = event.currentTarget\n\n if (checkbox.checked) {\n this.customStyles.add(checkbox.value)\n } else {\n this.customStyles.delete(checkbox.value)\n }\n }\n\n startLoading() {\n this.loadingSwiper.autoplay.start()\n }\n\n stopLoading() {\n this.loadingSwiper.autoplay.stop()\n }\n\n findBeers() {\n this.resultsSwiperTarget.innerHTML = ''\n fetch(this.element.dataset.url, {\n method: 'post',\n headers: {\n 'X-CSRF-Token': $.rails.csrfToken(),\n 'Content-Type': 'application/json'\n },\n credentials: \"same-origin\",\n body: JSON.stringify({\n budget: this.budgetTarget.value,\n exclusivity: this.exclusivityTarget.value,\n styles_preset: this.stylesPresetTarget.value,\n custom_styles: this.customStylesForSubmit,\n gift: this.gift,\n untappd_username: this.hasUntappdUsernameTarget ? this.untappdUsernameTarget.value : \"\"\n })\n }).then(response => response.json())\n .then(function(json) {\n // Set totals\n this.beerCountTarget.innerText = json.beers.length\n this.totalTarget.innerText = json.total\n this.messageTarget.innerHTML = json.message\n let span = this.messageTarget.querySelector('span')\n if (span && parseInt(json.suggestions) > 0) {\n this.messageContainerTarget.style.display = \"block\"\n this.element.querySelector(\".beer-finder-result-header\").classList.add(\"large-mobile-margin\")\n span.innerText = json.suggestions\n } else {\n this.element.querySelector(\".beer-finder-result-header\").classList.remove(\"large-mobile-margin\")\n this.messageContainerTarget.style.display = \"none\"\n }\n\n // Add slides to swiper\n json.beers.forEach(function(beer) {\n this.resultsSwiperTarget.insertAdjacentHTML('beforeend', `\n
    \n \n
    \n `)\n }.bind(this))\n\n // Update the swiper\n this.swiper.update()\n this.swiper.slideTo(1)\n this.swiper.slideTo(0)\n }.bind(this))\n }\n\n retry() {\n let currentSlide = this.swiper.slides[this.swiper.activeIndex]\n let untappdUsername = \"\"\n if (this.hasUntappdUsernameTarget) {\n untappdUsername = this.untappdUsernameTarget.value\n }\n\n fetch(this.element.dataset.url, {\n method: 'put',\n headers: {\n 'X-CSRF-Token': $.rails.csrfToken(),\n 'Content-Type': 'application/json'\n },\n credentials: \"same-origin\",\n body: JSON.stringify({\n product_ids: this.productIds,\n replace_id: currentSlide.dataset.id,\n budget: this.budgetTarget.value,\n exclusivity: this.exclusivityTarget.value,\n styles_preset: this.stylesPresetTarget.value,\n custom_styles: this.customStylesForSubmit,\n gift: this.gift,\n untappd_username: untappdUsername\n })\n }).then(response => response.json())\n .then(function(beer) {\n $(currentSlide.querySelector('img')).fadeOut(300)\n setTimeout(function() {\n currentSlide.innerHTML = ``\n setTimeout(function() {\n $(currentSlide.querySelector('img')).animate({opacity: 1}, 300)\n }, 300)\n }.bind(this), 300)\n currentSlide.dataset.name = beer.name\n currentSlide.dataset.price = beer.price\n currentSlide.dataset.description = beer.description\n currentSlide.dataset.score = beer.score\n currentSlide.dataset.alcohol = beer.alcohol\n currentSlide.dataset.volume = beer.volume\n currentSlide.dataset.style = beer.style\n currentSlide.dataset.id = beer.id\n \n this.swiper.update()\n this.resultNameTarget.innerText = beer.name\n this.resultPriceTarget.innerText = beer.price\n this.resultDescriptionTarget.innerText = beer.description\n this.resultStyleTarget.innerText = beer.style\n this.resultVolumeTarget.innerText = beer.volume\n this.resultAlcoholTarget.innerText = beer.alcohol\n this.resultHeaderTarget.querySelector('.stars-filled-in').style.width = `${beer.score}%`\n\n this.beerCountTarget.innerText = this.swiper.slides.length\n this.totalTarget.innerText = this.totalPrice.format()\n }.bind(this))\n }\n\n buy() {\n if (!this.buying) {\n // Buy just once!\n this.buying = true\n \n $.ajax({\n url: this.element.dataset.addToCartUrl,\n data: {product_ids: this.productIds},\n method: \"POST\",\n dataType: \"script\",\n success: function() {\n this.currentStepTarget.classList.add('no-animation')\n setTimeout(function() {\n this.currentStepTarget.classList.remove('no-animation')\n }.bind(this), 1000)\n this.setStep(1)\n this.buying = false\n this.setTitle()\n }.bind(this)\n })\n }\n }\n\n share(event) {\n event.preventDefault()\n $.ajax({\n url: this.element.dataset.shareUrl,\n data: {product_ids: this.productIds},\n method: \"POST\",\n dataType: \"script\"\n })\n }\n\n previousStep(event) {\n event.preventDefault()\n if (this.currentStep > 1 && this.currentStep != 6) this.setStep(this.currentStep - 1)\n if (this.currentStep == 6) this.setStep(4)\n this.setTitle()\n }\n\n nextStep() {\n if (this.currentStep < this.totalSteps) this.setStep(this.currentStep + 1)\n this.setTitle()\n }\n\n setTitle() {\n this.backButtonTarget.style.display = this.currentStep > 1 ? \"block\" : \"none\"\n this.titlesTarget.querySelectorAll('div').forEach(function(title) {\n title.classList.remove('active')\n })\n this.titlesTarget.querySelector(`div:nth-child(${this.currentStep})`).classList.add('active')\n }\n\n clickTitle(event) {\n let step = parseInt(event.currentTarget.dataset.step)\n if (step < this.currentStep) {\n this.setStep(step)\n this.setTitle()\n }\n }\n\n setStep(step) {\n this.currentStepTarget.dataset.step = step\n if (step > 4) step = step - 1\n this.progressTarget.style.transform = `scaleX(${(step)/(this.totalSteps - 1)})`\n }\n\n get totalSteps() {\n return this.currentStepTarget.querySelectorAll('.beer-finder-step').length\n }\n\n get totalPrice() {\n let prices = Array.from(this.swiper.slides).map(function(slide) {\n return currency(slide.dataset.price, {decimal: ','})\n })\n return prices.reduce((a, b) => a.add(b), currency(0, {formatWithSymbol: true, symbol: '€', separator: '.', decimal: ','}))\n }\n\n get productIds() {\n return Array.from(this.swiper.slides).map(function(slide) {\n return parseInt(slide.dataset.id)\n })\n }\n\n get currentStep() {\n return parseInt(this.currentStepTarget.dataset.step)\n }\n\n get currentStepElement() {\n return this.currentStepTarget.querySelector(`.beer-finder-step:nth-child(${this.currentStep})`)\n }\n\n get customStylesForSubmit() {\n return Array.from(this.customStyles).join(\",\")\n }\n\n}","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","exports.f = {}.propertyIsEnumerable;\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","require('../../modules/es6.array.find');\nmodule.exports = require('../../modules/_core').Array.find;\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","require('../../modules/es6.array.find-index');\nmodule.exports = require('../../modules/_core').Array.findIndex;\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.map');\nrequire('../modules/es7.map.to-json');\nrequire('../modules/es7.map.of');\nrequire('../modules/es7.map.from');\nmodule.exports = require('../modules/_core').Map;\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","exports.f = Object.getOwnPropertySymbols;\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.set');\nrequire('../modules/es7.set.to-json');\nrequire('../modules/es7.set.of');\nrequire('../modules/es7.set.from');\nmodule.exports = require('../modules/_core').Set;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n","// element-closest | CC0-1.0 | github.com/jonathantneal/closest\n(function (ElementProto) {\n if (typeof ElementProto.matches !== 'function') {\n ElementProto.matches = ElementProto.msMatchesSelector || ElementProto.mozMatchesSelector || ElementProto.webkitMatchesSelector || function matches(selector) {\n var element = this;\n var elements = (element.document || element.ownerDocument).querySelectorAll(selector);\n var index = 0;\n\n while (elements[index] && elements[index] !== element) {\n ++index;\n }\n\n return Boolean(elements[index]);\n };\n }\n\n if (typeof ElementProto.closest !== 'function') {\n ElementProto.closest = function closest(selector) {\n var element = this;\n\n while (element && element.nodeType === 1) {\n if (element.matches(selector)) {\n return element;\n }\n\n element = element.parentNode;\n }\n\n return null;\n };\n }\n})(window.Element.prototype);","if (window.MutationObserver) {\n var element = document.createElement(\"div\");\n element.innerHTML = \"
    \";\n new MutationObserver(function (mutations, observer) {\n observer.disconnect();\n\n if (mutations[0] && mutations[0].type == \"childList\" && mutations[0].removedNodes[0].childNodes.length == 0) {\n var prototype = HTMLElement.prototype;\n var descriptor = Object.getOwnPropertyDescriptor(prototype, \"innerHTML\");\n\n if (descriptor && descriptor.set) {\n Object.defineProperty(prototype, \"innerHTML\", {\n set: function set(value) {\n while (this.lastChild) {\n this.removeChild(this.lastChild);\n }\n\n descriptor.set.call(this, value);\n }\n });\n }\n }\n }).observe(element, {\n childList: true,\n subtree: true\n });\n element.innerHTML = \"\";\n}","module.exports = function (originalModule) {\n if (!originalModule.webpackPolyfill) {\n var module = Object.create(originalModule); // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n Object.defineProperty(module, \"exports\", {\n enumerable: true\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar Config = {\n DEBUG: false,\n LIB_VERSION: '2.41.0'\n}; // since es6 imports are static and we run unit tests from the console, window won't be defined when importing this file\n\nvar window$1;\n\nif (typeof window === 'undefined') {\n var loc = {\n hostname: ''\n };\n window$1 = {\n navigator: {\n userAgent: ''\n },\n document: {\n location: loc,\n referrer: ''\n },\n screen: {\n width: 0,\n height: 0\n },\n location: loc\n };\n} else {\n window$1 = window;\n}\n/*\n * Saved references to long variable names, so that closure compiler can\n * minimize file size.\n */\n\n\nvar ArrayProto = Array.prototype;\nvar FuncProto = Function.prototype;\nvar ObjProto = Object.prototype;\nvar slice = ArrayProto.slice;\nvar toString = ObjProto.toString;\nvar hasOwnProperty = ObjProto.hasOwnProperty;\nvar windowConsole = window$1.console;\nvar navigator$1 = window$1.navigator;\nvar document$1 = window$1.document;\nvar windowOpera = window$1.opera;\nvar screen = window$1.screen;\nvar userAgent = navigator$1.userAgent;\nvar nativeBind = FuncProto.bind;\nvar nativeForEach = ArrayProto.forEach;\nvar nativeIndexOf = ArrayProto.indexOf;\nvar nativeMap = ArrayProto.map;\nvar nativeIsArray = Array.isArray;\nvar breaker = {};\nvar _ = {\n trim: function trim(str) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n}; // Console override\n\nvar console = {\n /** @type {function(...*)} */\n log: function log() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n try {\n windowConsole.log.apply(windowConsole, arguments);\n } catch (err) {\n _.each(arguments, function (arg) {\n windowConsole.log(arg);\n });\n }\n }\n },\n\n /** @type {function(...*)} */\n warn: function warn() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel warning:'].concat(_.toArray(arguments));\n\n try {\n windowConsole.warn.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function (arg) {\n windowConsole.warn(arg);\n });\n }\n }\n },\n\n /** @type {function(...*)} */\n error: function error() {\n if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n\n try {\n windowConsole.error.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function (arg) {\n windowConsole.error(arg);\n });\n }\n }\n },\n\n /** @type {function(...*)} */\n critical: function critical() {\n if (!_.isUndefined(windowConsole) && windowConsole) {\n var args = ['Mixpanel error:'].concat(_.toArray(arguments));\n\n try {\n windowConsole.error.apply(windowConsole, args);\n } catch (err) {\n _.each(args, function (arg) {\n windowConsole.error(arg);\n });\n }\n }\n }\n};\n\nvar log_func_with_prefix = function log_func_with_prefix(func, prefix) {\n return function () {\n arguments[0] = '[' + prefix + '] ' + arguments[0];\n return func.apply(console, arguments);\n };\n};\n\nvar console_with_prefix = function console_with_prefix(prefix) {\n return {\n log: log_func_with_prefix(console.log, prefix),\n error: log_func_with_prefix(console.error, prefix),\n critical: log_func_with_prefix(console.critical, prefix)\n };\n}; // UNDERSCORE\n// Embed part of the Underscore Library\n\n\n_.bind = function (func, context) {\n var args, _bound;\n\n if (nativeBind && func.bind === nativeBind) {\n return nativeBind.apply(func, slice.call(arguments, 1));\n }\n\n if (!_.isFunction(func)) {\n throw new TypeError();\n }\n\n args = slice.call(arguments, 2);\n\n _bound = function bound() {\n if (!(this instanceof _bound)) {\n return func.apply(context, args.concat(slice.call(arguments)));\n }\n\n var ctor = {};\n ctor.prototype = func.prototype;\n var self = new ctor();\n ctor.prototype = null;\n var result = func.apply(self, args.concat(slice.call(arguments)));\n\n if (Object(result) === result) {\n return result;\n }\n\n return self;\n };\n\n return _bound;\n};\n\n_.bind_instance_methods = function (obj) {\n for (var func in obj) {\n if (typeof obj[func] === 'function') {\n obj[func] = _.bind(obj[func], obj);\n }\n }\n};\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} context\n */\n\n\n_.each = function (obj, iterator, context) {\n if (obj === null || obj === undefined) {\n return;\n }\n\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) {\n return;\n }\n }\n } else {\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n if (iterator.call(context, obj[key], key, obj) === breaker) {\n return;\n }\n }\n }\n }\n};\n\n_.escapeHTML = function (s) {\n var escaped = s;\n\n if (escaped && _.isString(escaped)) {\n escaped = escaped.replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n }\n\n return escaped;\n};\n\n_.extend = function (obj) {\n _.each(slice.call(arguments, 1), function (source) {\n for (var prop in source) {\n if (source[prop] !== void 0) {\n obj[prop] = source[prop];\n }\n }\n });\n\n return obj;\n};\n\n_.isArray = nativeIsArray || function (obj) {\n return toString.call(obj) === '[object Array]';\n}; // from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// var bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\n\n\n_.isFunction = function (f) {\n try {\n return /^\\s*\\bfunction\\b/.test(f);\n } catch (x) {\n return false;\n }\n};\n\n_.isArguments = function (obj) {\n return !!(obj && hasOwnProperty.call(obj, 'callee'));\n};\n\n_.toArray = function (iterable) {\n if (!iterable) {\n return [];\n }\n\n if (iterable.toArray) {\n return iterable.toArray();\n }\n\n if (_.isArray(iterable)) {\n return slice.call(iterable);\n }\n\n if (_.isArguments(iterable)) {\n return slice.call(iterable);\n }\n\n return _.values(iterable);\n};\n\n_.map = function (arr, callback, context) {\n if (nativeMap && arr.map === nativeMap) {\n return arr.map(callback, context);\n } else {\n var results = [];\n\n _.each(arr, function (item) {\n results.push(callback.call(context, item));\n });\n\n return results;\n }\n};\n\n_.keys = function (obj) {\n var results = [];\n\n if (obj === null) {\n return results;\n }\n\n _.each(obj, function (value, key) {\n results[results.length] = key;\n });\n\n return results;\n};\n\n_.values = function (obj) {\n var results = [];\n\n if (obj === null) {\n return results;\n }\n\n _.each(obj, function (value) {\n results[results.length] = value;\n });\n\n return results;\n};\n\n_.include = function (obj, target) {\n var found = false;\n\n if (obj === null) {\n return found;\n }\n\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n return obj.indexOf(target) != -1;\n }\n\n _.each(obj, function (value) {\n if (found || (found = value === target)) {\n return breaker;\n }\n });\n\n return found;\n};\n\n_.includes = function (str, needle) {\n return str.indexOf(needle) !== -1;\n}; // Underscore Addons\n\n\n_.inherit = function (subclass, superclass) {\n subclass.prototype = new superclass();\n subclass.prototype.constructor = subclass;\n subclass.superclass = superclass.prototype;\n return subclass;\n};\n\n_.isObject = function (obj) {\n return obj === Object(obj) && !_.isArray(obj);\n};\n\n_.isEmptyObject = function (obj) {\n if (_.isObject(obj)) {\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n};\n\n_.isUndefined = function (obj) {\n return obj === void 0;\n};\n\n_.isString = function (obj) {\n return toString.call(obj) == '[object String]';\n};\n\n_.isDate = function (obj) {\n return toString.call(obj) == '[object Date]';\n};\n\n_.isNumber = function (obj) {\n return toString.call(obj) == '[object Number]';\n};\n\n_.isElement = function (obj) {\n return !!(obj && obj.nodeType === 1);\n};\n\n_.encodeDates = function (obj) {\n _.each(obj, function (v, k) {\n if (_.isDate(v)) {\n obj[k] = _.formatDate(v);\n } else if (_.isObject(v)) {\n obj[k] = _.encodeDates(v); // recurse\n }\n });\n\n return obj;\n};\n\n_.timestamp = function () {\n Date.now = Date.now || function () {\n return +new Date();\n };\n\n return Date.now();\n};\n\n_.formatDate = function (d) {\n // YYYY-MM-DDTHH:MM:SS in UTC\n function pad(n) {\n return n < 10 ? '0' + n : n;\n }\n\n return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds());\n};\n\n_.safewrap = function (f) {\n return function () {\n try {\n return f.apply(this, arguments);\n } catch (e) {\n console.critical('Implementation error. Please turn on debug and contact support@mixpanel.com.');\n\n if (Config.DEBUG) {\n console.critical(e);\n }\n }\n };\n};\n\n_.safewrap_class = function (klass, functions) {\n for (var i = 0; i < functions.length; i++) {\n klass.prototype[functions[i]] = _.safewrap(klass.prototype[functions[i]]);\n }\n};\n\n_.safewrap_instance_methods = function (obj) {\n for (var func in obj) {\n if (typeof obj[func] === 'function') {\n obj[func] = _.safewrap(obj[func]);\n }\n }\n};\n\n_.strip_empty_properties = function (p) {\n var ret = {};\n\n _.each(p, function (v, k) {\n if (_.isString(v) && v.length > 0) {\n ret[k] = v;\n }\n });\n\n return ret;\n};\n/*\n * this function returns a copy of object after truncating it. If\n * passed an Array or Object it will iterate through obj and\n * truncate all the values recursively.\n */\n\n\n_.truncate = function (obj, length) {\n var ret;\n\n if (typeof obj === 'string') {\n ret = obj.slice(0, length);\n } else if (_.isArray(obj)) {\n ret = [];\n\n _.each(obj, function (val) {\n ret.push(_.truncate(val, length));\n });\n } else if (_.isObject(obj)) {\n ret = {};\n\n _.each(obj, function (val, key) {\n ret[key] = _.truncate(val, length);\n });\n } else {\n ret = obj;\n }\n\n return ret;\n};\n\n_.JSONEncode = function () {\n return function (mixed_val) {\n var value = mixed_val;\n\n var quote = function quote(string) {\n var escapable = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g; // eslint-disable-line no-control-regex\n\n var meta = {\n // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n };\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c : \"\\\\u\" + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n };\n\n var str = function str(key, holder) {\n var gap = '';\n var indent = ' ';\n var i = 0; // The loop counter.\n\n var k = ''; // The member key.\n\n var v = ''; // The member value.\n\n var length = 0;\n var mind = gap;\n var partial = [];\n var value = holder[key]; // If the value has a toJSON method, call it to obtain a replacement value.\n\n if (value && _typeof(value) === 'object' && typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n } // What happens next depends on the value's type.\n\n\n switch (_typeof(value)) {\n case 'string':\n return quote(value);\n\n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n\n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n return String(value);\n\n case 'object':\n // If the type is 'object', we might be dealing with an object or an array or\n // null.\n // Due to a specification blunder in ECMAScript, typeof null is 'object',\n // so watch out for that case.\n if (!value) {\n return 'null';\n } // Make an array to hold the partial results of stringifying this object value.\n\n\n gap += indent;\n partial = []; // Is the value an array?\n\n if (toString.apply(value) === '[object Array]') {\n // The value is an array. Stringify every element. Use null as a placeholder\n // for non-JSON values.\n length = value.length;\n\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n } // Join all of the elements together, separated with commas, and wrap them in\n // brackets.\n\n\n v = partial.length === 0 ? '[]' : gap ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n } // Iterate through all of the keys in the object.\n\n\n for (k in value) {\n if (hasOwnProperty.call(value, k)) {\n v = str(k, value);\n\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n } // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n\n\n v = partial.length === 0 ? '{}' : gap ? '{' + partial.join(',') + '' + mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n }; // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n\n\n return str('', {\n '': value\n });\n };\n}();\n/**\n * From https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js\n * Slightly modified to throw a real Error rather than a POJO\n */\n\n\n_.JSONDecode = function () {\n var at,\n // The index of the current character\n ch,\n // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n 'b': '\\b',\n 'f': '\\f',\n 'n': '\\n',\n 'r': '\\r',\n 't': '\\t'\n },\n text,\n error = function error(m) {\n var e = new SyntaxError(m);\n e.at = at;\n e.text = text;\n throw e;\n },\n next = function next(c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error('Expected \\'' + c + '\\' instead of \\'' + ch + '\\'');\n } // Get the next character. When there are no more characters,\n // return the empty string.\n\n\n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n number = function number() {\n // Parse a number value.\n var number,\n string = '';\n\n if (ch === '-') {\n string = '-';\n next('-');\n }\n\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n\n if (ch === '.') {\n string += '.';\n\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n\n number = +string;\n\n if (!isFinite(number)) {\n error('Bad number');\n } else {\n return number;\n }\n },\n string = function string() {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff; // When parsing for string values, we must look for \" and \\ characters.\n\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n }\n\n if (ch === '\\\\') {\n next();\n\n if (ch === 'u') {\n uffff = 0;\n\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n\n if (!isFinite(hex)) {\n break;\n }\n\n uffff = uffff * 16 + hex;\n }\n\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n\n error('Bad string');\n },\n white = function white() {\n // Skip whitespace.\n while (ch && ch <= ' ') {\n next();\n }\n },\n word = function word() {\n // true, false, or null.\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n\n error('Unexpected \"' + ch + '\"');\n },\n value,\n // Placeholder for the value function.\n array = function array() {\n // Parse an array value.\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n\n while (ch) {\n array.push(value());\n white();\n\n if (ch === ']') {\n next(']');\n return array;\n }\n\n next(',');\n white();\n }\n }\n\n error('Bad array');\n },\n object = function object() {\n // Parse an object value.\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n\n while (ch) {\n key = string();\n white();\n next(':');\n\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n\n object[key] = value();\n white();\n\n if (ch === '}') {\n next('}');\n return object;\n }\n\n next(',');\n white();\n }\n }\n\n error('Bad object');\n };\n\n value = function value() {\n // Parse a JSON value. It could be an object, an array, a string,\n // a number, or a word.\n white();\n\n switch (ch) {\n case '{':\n return object();\n\n case '[':\n return array();\n\n case '\"':\n return string();\n\n case '-':\n return number();\n\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n }; // Return the json_parse function. It will have access to all of the\n // above functions and variables.\n\n\n return function (source) {\n var result;\n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n\n if (ch) {\n error('Syntax error');\n }\n\n return result;\n };\n}();\n\n_.base64Encode = function (data) {\n var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var o1,\n o2,\n o3,\n h1,\n h2,\n h3,\n h4,\n bits,\n i = 0,\n ac = 0,\n enc = '',\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data = _.utf8Encode(data);\n\n do {\n // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n bits = o1 << 16 | o2 << 8 | o3;\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f; // use hexets to index into b64, and append result to encoded string\n\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n};\n\n_.utf8Encode = function (string) {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n var utftext = '',\n start,\n end;\n var stringl = 0,\n n;\n start = end = 0;\n stringl = string.length;\n\n for (n = 0; n < stringl; n++) {\n var c1 = string.charCodeAt(n);\n var enc = null;\n\n if (c1 < 128) {\n end++;\n } else if (c1 > 127 && c1 < 2048) {\n enc = String.fromCharCode(c1 >> 6 | 192, c1 & 63 | 128);\n } else {\n enc = String.fromCharCode(c1 >> 12 | 224, c1 >> 6 & 63 | 128, c1 & 63 | 128);\n }\n\n if (enc !== null) {\n if (end > start) {\n utftext += string.substring(start, end);\n }\n\n utftext += enc;\n start = end = n + 1;\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length);\n }\n\n return utftext;\n};\n\n_.UUID = function () {\n // Time/ticks information\n // 1*new Date() is a cross browser version of Date.now()\n var T = function T() {\n var d = 1 * new Date(),\n i = 0; // this while loop figures how many browser ticks go by\n // before 1*new Date() returns a new number, ie the amount\n // of ticks that go by per millisecond\n\n while (d == 1 * new Date()) {\n i++;\n }\n\n return d.toString(16) + i.toString(16);\n }; // Math.Random entropy\n\n\n var R = function R() {\n return Math.random().toString(16).replace('.', '');\n }; // User agent entropy\n // This function takes the user agent string, and then xors\n // together each sequence of 8 bytes. This produces a final\n // sequence of 8 bytes which it returns as hex.\n\n\n var UA = function UA() {\n var ua = userAgent,\n i,\n ch,\n buffer = [],\n ret = 0;\n\n function xor(result, byte_array) {\n var j,\n tmp = 0;\n\n for (j = 0; j < byte_array.length; j++) {\n tmp |= buffer[j] << j * 8;\n }\n\n return result ^ tmp;\n }\n\n for (i = 0; i < ua.length; i++) {\n ch = ua.charCodeAt(i);\n buffer.unshift(ch & 0xFF);\n\n if (buffer.length >= 4) {\n ret = xor(ret, buffer);\n buffer = [];\n }\n }\n\n if (buffer.length > 0) {\n ret = xor(ret, buffer);\n }\n\n return ret.toString(16);\n };\n\n return function () {\n var se = (screen.height * screen.width).toString(16);\n return T() + '-' + R() + '-' + UA() + '-' + se + '-' + T();\n };\n}(); // _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false tracking data\n\n\nvar BLOCKED_UA_STRS = ['baiduspider', 'bingbot', 'bingpreview', 'facebookexternal', 'pinterest', 'screaming frog', 'yahoo! slurp', 'yandexbot', // a whole bunch of goog-specific crawlers\n// https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n'adsbot-google', 'apis-google', 'duplexweb-google', 'feedfetcher-google', 'google favicon', 'google web preview', 'google-read-aloud', 'googlebot', 'googleweblight', 'mediapartners-google', 'storebot-google'];\n\n_.isBlockedUA = function (ua) {\n var i;\n ua = ua.toLowerCase();\n\n for (i = 0; i < BLOCKED_UA_STRS.length; i++) {\n if (ua.indexOf(BLOCKED_UA_STRS[i]) !== -1) {\n return true;\n }\n }\n\n return false;\n};\n/**\n * @param {Object=} formdata\n * @param {string=} arg_separator\n */\n\n\n_.HTTPBuildQuery = function (formdata, arg_separator) {\n var use_val,\n use_key,\n tmp_arr = [];\n\n if (_.isUndefined(arg_separator)) {\n arg_separator = '&';\n }\n\n _.each(formdata, function (val, key) {\n use_val = encodeURIComponent(val.toString());\n use_key = encodeURIComponent(key);\n tmp_arr[tmp_arr.length] = use_key + '=' + use_val;\n });\n\n return tmp_arr.join(arg_separator);\n};\n\n_.getQueryParam = function (url, param) {\n // Expects a raw URL\n param = param.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n var regexS = '[\\\\?&]' + param + '=([^&#]*)',\n regex = new RegExp(regexS),\n results = regex.exec(url);\n\n if (results === null || results && typeof results[1] !== 'string' && results[1].length) {\n return '';\n } else {\n var result = results[1];\n\n try {\n result = decodeURIComponent(result);\n } catch (err) {\n console.error('Skipping decoding for malformed query param: ' + result);\n }\n\n return result.replace(/\\+/g, ' ');\n }\n}; // _.cookie\n// Methods partially borrowed from quirksmode.org/js/cookies.html\n\n\n_.cookie = {\n get: function get(name) {\n var nameEQ = name + '=';\n var ca = document$1.cookie.split(';');\n\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n\n while (c.charAt(0) == ' ') {\n c = c.substring(1, c.length);\n }\n\n if (c.indexOf(nameEQ) === 0) {\n return decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n\n return null;\n },\n parse: function parse(name) {\n var cookie;\n\n try {\n cookie = _.JSONDecode(_.cookie.get(name)) || {};\n } catch (err) {// noop\n }\n\n return cookie;\n },\n set_seconds: function set_seconds(name, value, seconds, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '',\n expires = '',\n secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (seconds) {\n var date = new Date();\n date.setTime(date.getTime() + seconds * 1000);\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n\n if (is_secure) {\n secure += '; secure';\n }\n\n document$1.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n },\n set: function set(name, value, days, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '',\n expires = '',\n secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n\n if (is_secure) {\n secure += '; secure';\n }\n\n var new_cookie_val = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n document$1.cookie = new_cookie_val;\n return new_cookie_val;\n },\n remove: function remove(name, is_cross_subdomain, domain_override) {\n _.cookie.set(name, '', -1, is_cross_subdomain, false, false, domain_override);\n }\n};\nvar _localStorageSupported = null;\n\nvar localStorageSupported = function localStorageSupported(storage, forceCheck) {\n if (_localStorageSupported !== null && !forceCheck) {\n return _localStorageSupported;\n }\n\n var supported = true;\n\n try {\n storage = storage || window.localStorage;\n var key = '__mplss_' + cheap_guid(8),\n val = 'xyz';\n storage.setItem(key, val);\n\n if (storage.getItem(key) !== val) {\n supported = false;\n }\n\n storage.removeItem(key);\n } catch (err) {\n supported = false;\n }\n\n _localStorageSupported = supported;\n return supported;\n}; // _.localStorage\n\n\n_.localStorage = {\n is_supported: function is_supported(force_check) {\n var supported = localStorageSupported(null, force_check);\n\n if (!supported) {\n console.error('localStorage unsupported; falling back to cookie store');\n }\n\n return supported;\n },\n error: function error(msg) {\n console.error('localStorage error: ' + msg);\n },\n get: function get(name) {\n try {\n return window.localStorage.getItem(name);\n } catch (err) {\n _.localStorage.error(err);\n }\n\n return null;\n },\n parse: function parse(name) {\n try {\n return _.JSONDecode(_.localStorage.get(name)) || {};\n } catch (err) {// noop\n }\n\n return null;\n },\n set: function set(name, value) {\n try {\n window.localStorage.setItem(name, value);\n } catch (err) {\n _.localStorage.error(err);\n }\n },\n remove: function remove(name) {\n try {\n window.localStorage.removeItem(name);\n } catch (err) {\n _.localStorage.error(err);\n }\n }\n};\n\n_.register_event = function () {\n // written by Dean Edwards, 2005\n // with input from Tino Zijdel - crisp@xs4all.nl\n // with input from Carl Sverre - mail@carlsverre.com\n // with input from Mixpanel\n // http://dean.edwards.name/weblog/2005/10/add-event/\n // https://gist.github.com/1930440\n\n /**\n * @param {Object} element\n * @param {string} type\n * @param {function(...*)} handler\n * @param {boolean=} oldSchool\n * @param {boolean=} useCapture\n */\n var register_event = function register_event(element, type, handler, oldSchool, useCapture) {\n if (!element) {\n console.error('No valid element provided to register_event');\n return;\n }\n\n if (element.addEventListener && !oldSchool) {\n element.addEventListener(type, handler, !!useCapture);\n } else {\n var ontype = 'on' + type;\n var old_handler = element[ontype]; // can be undefined\n\n element[ontype] = makeHandler(element, handler, old_handler);\n }\n };\n\n function makeHandler(element, new_handler, old_handlers) {\n var handler = function handler(event) {\n event = event || fixEvent(window.event); // this basically happens in firefox whenever another script\n // overwrites the onload callback and doesn't pass the event\n // object to previously defined callbacks. All the browsers\n // that don't define window.event implement addEventListener\n // so the dom_loaded handler will still be fired as usual.\n\n if (!event) {\n return undefined;\n }\n\n var ret = true;\n var old_result, new_result;\n\n if (_.isFunction(old_handlers)) {\n old_result = old_handlers(event);\n }\n\n new_result = new_handler.call(element, event);\n\n if (false === old_result || false === new_result) {\n ret = false;\n }\n\n return ret;\n };\n\n return handler;\n }\n\n function fixEvent(event) {\n if (event) {\n event.preventDefault = fixEvent.preventDefault;\n event.stopPropagation = fixEvent.stopPropagation;\n }\n\n return event;\n }\n\n fixEvent.preventDefault = function () {\n this.returnValue = false;\n };\n\n fixEvent.stopPropagation = function () {\n this.cancelBubble = true;\n };\n\n return register_event;\n}();\n\nvar TOKEN_MATCH_REGEX = new RegExp('^(\\\\w*)\\\\[(\\\\w+)([=~\\\\|\\\\^\\\\$\\\\*]?)=?\"?([^\\\\]\"]*)\"?\\\\]$');\n\n_.dom_query = function () {\n /* document.getElementsBySelector(selector)\n - returns an array of element objects from the current document\n matching the CSS selector. Selectors can contain element names,\n class names and ids and can be nested. For example:\n elements = document.getElementsBySelector('div#main p a.external')\n Will return an array of all 'a' elements with 'external' in their\n class attribute that are contained inside 'p' elements that are\n contained inside the 'div' element which has id=\"main\"\n New in version 0.4: Support for CSS2 and CSS3 attribute selectors:\n See http://www.w3.org/TR/css3-selectors/#attribute-selectors\n Version 0.4 - Simon Willison, March 25th 2003\n -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows\n -- Opera 7 fails\n Version 0.5 - Carl Sverre, Jan 7th 2013\n -- Now uses jQuery-esque `hasClass` for testing class name\n equality. This fixes a bug related to '-' characters being\n considered not part of a 'word' in regex.\n */\n function getAllChildren(e) {\n // Returns all children of element. Workaround required for IE5/Windows. Ugh.\n return e.all ? e.all : e.getElementsByTagName('*');\n }\n\n var bad_whitespace = /[\\t\\r\\n]/g;\n\n function hasClass(elem, selector) {\n var className = ' ' + selector + ' ';\n return (' ' + elem.className + ' ').replace(bad_whitespace, ' ').indexOf(className) >= 0;\n }\n\n function getElementsBySelector(selector) {\n // Attempt to fail gracefully in lesser browsers\n if (!document$1.getElementsByTagName) {\n return [];\n } // Split selector in to tokens\n\n\n var tokens = selector.split(' ');\n var token, bits, tagName, found, foundCount, i, j, k, elements, currentContextIndex;\n var currentContext = [document$1];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i].replace(/^\\s+/, '').replace(/\\s+$/, '');\n\n if (token.indexOf('#') > -1) {\n // Token is an ID selector\n bits = token.split('#');\n tagName = bits[0];\n var id = bits[1];\n var element = document$1.getElementById(id);\n\n if (!element || tagName && element.nodeName.toLowerCase() != tagName) {\n // element not found or tag with that ID not found, return false\n return [];\n } // Set currentContext to contain just this element\n\n\n currentContext = [element];\n continue; // Skip to next token\n }\n\n if (token.indexOf('.') > -1) {\n // Token contains a class selector\n bits = token.split('.');\n tagName = bits[0];\n var className = bits[1];\n\n if (!tagName) {\n tagName = '*';\n } // Get elements matching tag, filter them for class selector\n\n\n found = [];\n foundCount = 0;\n\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n\n currentContext = [];\n currentContextIndex = 0;\n\n for (j = 0; j < found.length; j++) {\n if (found[j].className && _.isString(found[j].className) && // some SVG elements have classNames which are not strings\n hasClass(found[j], className)) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n\n continue; // Skip to next token\n } // Code to deal with attribute selectors\n\n\n var token_match = token.match(TOKEN_MATCH_REGEX);\n\n if (token_match) {\n tagName = token_match[1];\n var attrName = token_match[2];\n var attrOperator = token_match[3];\n var attrValue = token_match[4];\n\n if (!tagName) {\n tagName = '*';\n } // Grab all of the tagName elements within current context\n\n\n found = [];\n foundCount = 0;\n\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n\n currentContext = [];\n currentContextIndex = 0;\n var checkFunction; // This function will be used to filter the elements\n\n switch (attrOperator) {\n case '=':\n // Equality\n checkFunction = function checkFunction(e) {\n return e.getAttribute(attrName) == attrValue;\n };\n\n break;\n\n case '~':\n // Match one of space seperated words\n checkFunction = function checkFunction(e) {\n return e.getAttribute(attrName).match(new RegExp('\\\\b' + attrValue + '\\\\b'));\n };\n\n break;\n\n case '|':\n // Match start with value followed by optional hyphen\n checkFunction = function checkFunction(e) {\n return e.getAttribute(attrName).match(new RegExp('^' + attrValue + '-?'));\n };\n\n break;\n\n case '^':\n // Match starts with value\n checkFunction = function checkFunction(e) {\n return e.getAttribute(attrName).indexOf(attrValue) === 0;\n };\n\n break;\n\n case '$':\n // Match ends with value - fails with \"Warning\" in Opera 7\n checkFunction = function checkFunction(e) {\n return e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length;\n };\n\n break;\n\n case '*':\n // Match ends with value\n checkFunction = function checkFunction(e) {\n return e.getAttribute(attrName).indexOf(attrValue) > -1;\n };\n\n break;\n\n default:\n // Just test for existence of attribute\n checkFunction = function checkFunction(e) {\n return e.getAttribute(attrName);\n };\n\n }\n\n currentContext = [];\n currentContextIndex = 0;\n\n for (j = 0; j < found.length; j++) {\n if (checkFunction(found[j])) {\n currentContext[currentContextIndex++] = found[j];\n }\n } // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);\n\n\n continue; // Skip to next token\n } // If we get here, token is JUST an element (not a class or ID selector)\n\n\n tagName = token;\n found = [];\n foundCount = 0;\n\n for (j = 0; j < currentContext.length; j++) {\n elements = currentContext[j].getElementsByTagName(tagName);\n\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n\n currentContext = found;\n }\n\n return currentContext;\n }\n\n return function (query) {\n if (_.isElement(query)) {\n return [query];\n } else if (_.isObject(query) && !_.isUndefined(query.length)) {\n return query;\n } else {\n return getElementsBySelector.call(this, query);\n }\n };\n}();\n\n_.info = {\n campaignParams: function campaignParams() {\n var campaign_keywords = 'utm_source utm_medium utm_campaign utm_content utm_term'.split(' '),\n kw = '',\n params = {};\n\n _.each(campaign_keywords, function (kwkey) {\n kw = _.getQueryParam(document$1.URL, kwkey);\n\n if (kw.length) {\n params[kwkey] = kw;\n }\n });\n\n return params;\n },\n searchEngine: function searchEngine(referrer) {\n if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n return 'google';\n } else if (referrer.search('https?://(.*)bing.com') === 0) {\n return 'bing';\n } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n return 'yahoo';\n } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n return 'duckduckgo';\n } else {\n return null;\n }\n },\n searchInfo: function searchInfo(referrer) {\n var search = _.info.searchEngine(referrer),\n param = search != 'yahoo' ? 'q' : 'p',\n ret = {};\n\n if (search !== null) {\n ret['$search_engine'] = search;\n\n var keyword = _.getQueryParam(referrer, param);\n\n if (keyword.length) {\n ret['mp_keyword'] = keyword;\n }\n }\n\n return ret;\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include key words used in later checks.\n */\n browser: function browser(user_agent, vendor, opera) {\n vendor = vendor || ''; // vendor is undefined for at least IE9\n\n if (opera || _.includes(user_agent, ' OPR/')) {\n if (_.includes(user_agent, 'Mini')) {\n return 'Opera Mini';\n }\n\n return 'Opera';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (_.includes(user_agent, 'IEMobile') || _.includes(user_agent, 'WPDesktop')) {\n return 'Internet Explorer Mobile';\n } else if (_.includes(user_agent, 'SamsungBrowser/')) {\n // https://developer.samsung.com/internet/user-agent-string-format\n return 'Samsung Internet';\n } else if (_.includes(user_agent, 'Edge') || _.includes(user_agent, 'Edg/')) {\n return 'Microsoft Edge';\n } else if (_.includes(user_agent, 'FBIOS')) {\n return 'Facebook Mobile';\n } else if (_.includes(user_agent, 'Chrome')) {\n return 'Chrome';\n } else if (_.includes(user_agent, 'CriOS')) {\n return 'Chrome iOS';\n } else if (_.includes(user_agent, 'UCWEB') || _.includes(user_agent, 'UCBrowser')) {\n return 'UC Browser';\n } else if (_.includes(user_agent, 'FxiOS')) {\n return 'Firefox iOS';\n } else if (_.includes(vendor, 'Apple')) {\n if (_.includes(user_agent, 'Mobile')) {\n return 'Mobile Safari';\n }\n\n return 'Safari';\n } else if (_.includes(user_agent, 'Android')) {\n return 'Android Mobile';\n } else if (_.includes(user_agent, 'Konqueror')) {\n return 'Konqueror';\n } else if (_.includes(user_agent, 'Firefox')) {\n return 'Firefox';\n } else if (_.includes(user_agent, 'MSIE') || _.includes(user_agent, 'Trident/')) {\n return 'Internet Explorer';\n } else if (_.includes(user_agent, 'Gecko')) {\n return 'Mozilla';\n } else {\n return '';\n }\n },\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n */\n browserVersion: function browserVersion(userAgent, vendor, opera) {\n var browser = _.info.browser(userAgent, vendor, opera);\n\n var versionRegexs = {\n 'Internet Explorer Mobile': /rv:(\\d+(\\.\\d+)?)/,\n 'Microsoft Edge': /Edge?\\/(\\d+(\\.\\d+)?)/,\n 'Chrome': /Chrome\\/(\\d+(\\.\\d+)?)/,\n 'Chrome iOS': /CriOS\\/(\\d+(\\.\\d+)?)/,\n 'UC Browser': /(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/,\n 'Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Mobile Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Opera': /(Opera|OPR)\\/(\\d+(\\.\\d+)?)/,\n 'Firefox': /Firefox\\/(\\d+(\\.\\d+)?)/,\n 'Firefox iOS': /FxiOS\\/(\\d+(\\.\\d+)?)/,\n 'Konqueror': /Konqueror:(\\d+(\\.\\d+)?)/,\n 'BlackBerry': /BlackBerry (\\d+(\\.\\d+)?)/,\n 'Android Mobile': /android\\s(\\d+(\\.\\d+)?)/,\n 'Samsung Internet': /SamsungBrowser\\/(\\d+(\\.\\d+)?)/,\n 'Internet Explorer': /(rv:|MSIE )(\\d+(\\.\\d+)?)/,\n 'Mozilla': /rv:(\\d+(\\.\\d+)?)/\n };\n var regex = versionRegexs[browser];\n\n if (regex === undefined) {\n return null;\n }\n\n var matches = userAgent.match(regex);\n\n if (!matches) {\n return null;\n }\n\n return parseFloat(matches[matches.length - 2]);\n },\n os: function os() {\n var a = userAgent;\n\n if (/Windows/i.test(a)) {\n if (/Phone/.test(a) || /WPDesktop/.test(a)) {\n return 'Windows Phone';\n }\n\n return 'Windows';\n } else if (/(iPhone|iPad|iPod)/.test(a)) {\n return 'iOS';\n } else if (/Android/.test(a)) {\n return 'Android';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {\n return 'BlackBerry';\n } else if (/Mac/i.test(a)) {\n return 'Mac OS X';\n } else if (/Linux/.test(a)) {\n return 'Linux';\n } else if (/CrOS/.test(a)) {\n return 'Chrome OS';\n } else {\n return '';\n }\n },\n device: function device(user_agent) {\n if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return 'Windows Phone';\n } else if (/iPad/.test(user_agent)) {\n return 'iPad';\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch';\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (/Android/.test(user_agent)) {\n return 'Android';\n } else {\n return '';\n }\n },\n referringDomain: function referringDomain(referrer) {\n var split = referrer.split('/');\n\n if (split.length >= 3) {\n return split[2];\n }\n\n return '';\n },\n properties: function properties() {\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator$1.vendor, windowOpera),\n '$referrer': document$1.referrer,\n '$referring_domain': _.info.referringDomain(document$1.referrer),\n '$device': _.info.device(userAgent)\n }), {\n '$current_url': window$1.location.href,\n '$browser_version': _.info.browserVersion(userAgent, navigator$1.vendor, windowOpera),\n '$screen_height': screen.height,\n '$screen_width': screen.width,\n 'mp_lib': 'web',\n '$lib_version': Config.LIB_VERSION,\n '$insert_id': cheap_guid(),\n 'time': _.timestamp() / 1000 // epoch time in seconds\n\n });\n },\n people_properties: function people_properties() {\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator$1.vendor, windowOpera)\n }), {\n '$browser_version': _.info.browserVersion(userAgent, navigator$1.vendor, windowOpera)\n });\n },\n pageviewInfo: function pageviewInfo(page) {\n return _.strip_empty_properties({\n 'mp_page': page,\n 'mp_referrer': document$1.referrer,\n 'mp_browser': _.info.browser(userAgent, navigator$1.vendor, windowOpera),\n 'mp_platform': _.info.os()\n });\n }\n};\n\nvar cheap_guid = function cheap_guid(maxlen) {\n var guid = Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10);\n return maxlen ? guid.substring(0, maxlen) : guid;\n};\n/**\n * Check deterministically whether to include or exclude from a feature rollout/test based on the\n * given string and the desired percentage to include.\n * @param {String} str - string to run the check against (for instance a project's token)\n * @param {String} feature - name of feature (for inclusion in hash, to ensure different results\n * for different features)\n * @param {Number} percent_allowed - percentage chance that a given string will be included\n * @returns {Boolean} whether the given string should be included\n */\n\n\nvar determine_eligibility = _.safewrap(function (str, feature, percent_allowed) {\n str = str + feature; // Bernstein's hash: http://www.cse.yorku.ca/~oz/hash.html#djb2\n\n var hash = 5381;\n\n for (var i = 0; i < str.length; i++) {\n hash = (hash << 5) + hash + str.charCodeAt(i);\n hash = hash & hash;\n }\n\n var dart = (hash >>> 0) % 100;\n return dart < percent_allowed;\n}); // naive way to extract domain name (example.com) from full hostname (my.sub.example.com)\n\n\nvar SIMPLE_DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]*\\.[a-z]+$/i; // this next one attempts to account for some ccSLDs, e.g. extracting oxford.ac.uk from www.oxford.ac.uk\n\nvar DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z.]{2,6}$/i;\n/**\n * Attempts to extract main domain name from full hostname, using a few blunt heuristics. For\n * common TLDs like .com/.org that always have a simple SLD.TLD structure (example.com), we\n * simply extract the last two .-separated parts of the hostname (SIMPLE_DOMAIN_MATCH_REGEX).\n * For others, we attempt to account for short ccSLD+TLD combos (.ac.uk) with the legacy\n * DOMAIN_MATCH_REGEX (kept to maintain backwards compatibility with existing Mixpanel\n * integrations). The only _reliable_ way to extract domain from hostname is with an up-to-date\n * list like at https://publicsuffix.org/ so for cases that this helper fails at, the SDK\n * offers the 'cookie_domain' config option to set it explicitly.\n * @example\n * extract_domain('my.sub.example.com')\n * // 'example.com'\n */\n\nvar extract_domain = function extract_domain(hostname) {\n var domain_regex = DOMAIN_MATCH_REGEX;\n var parts = hostname.split('.');\n var tld = parts[parts.length - 1];\n\n if (tld.length > 4 || tld === 'com' || tld === 'org') {\n domain_regex = SIMPLE_DOMAIN_MATCH_REGEX;\n }\n\n var matches = hostname.match(domain_regex);\n return matches ? matches[0] : '';\n};\n\nvar JSONStringify = null;\nvar JSONParse = null;\n\nif (typeof JSON !== 'undefined') {\n JSONStringify = JSON.stringify;\n JSONParse = JSON.parse;\n}\n\nJSONStringify = JSONStringify || _.JSONEncode;\nJSONParse = JSONParse || _.JSONDecode; // EXPORTS (for closure compiler)\n\n_['toArray'] = _.toArray;\n_['isObject'] = _.isObject;\n_['JSONEncode'] = _.JSONEncode;\n_['JSONDecode'] = _.JSONDecode;\n_['isBlockedUA'] = _.isBlockedUA;\n_['isEmptyObject'] = _.isEmptyObject;\n_['info'] = _.info;\n_['info']['device'] = _.info.device;\n_['info']['browser'] = _.info.browser;\n_['info']['browserVersion'] = _.info.browserVersion;\n_['info']['properties'] = _.info.properties;\n/**\n * DomTracker Object\n * @constructor\n */\n\nvar DomTracker = function DomTracker() {}; // interface\n\n\nDomTracker.prototype.create_properties = function () {};\n\nDomTracker.prototype.event_handler = function () {};\n\nDomTracker.prototype.after_track_handler = function () {};\n\nDomTracker.prototype.init = function (mixpanel_instance) {\n this.mp = mixpanel_instance;\n return this;\n};\n/**\n * @param {Object|string} query\n * @param {string} event_name\n * @param {Object=} properties\n * @param {function=} user_callback\n */\n\n\nDomTracker.prototype.track = function (query, event_name, properties, user_callback) {\n var that = this;\n\n var elements = _.dom_query(query);\n\n if (elements.length === 0) {\n console.error('The DOM query (' + query + ') returned 0 elements');\n return;\n }\n\n _.each(elements, function (element) {\n _.register_event(element, this.override_event, function (e) {\n var options = {};\n var props = that.create_properties(properties, this);\n var timeout = that.mp.get_config('track_links_timeout');\n that.event_handler(e, this, options); // in case the mixpanel servers don't get back to us in time\n\n window.setTimeout(that.track_callback(user_callback, props, options, true), timeout); // fire the tracking event\n\n that.mp.track(event_name, props, that.track_callback(user_callback, props, options));\n });\n }, this);\n\n return true;\n};\n/**\n * @param {function} user_callback\n * @param {Object} props\n * @param {boolean=} timeout_occured\n */\n\n\nDomTracker.prototype.track_callback = function (user_callback, props, options, timeout_occured) {\n timeout_occured = timeout_occured || false;\n var that = this;\n return function () {\n // options is referenced from both callbacks, so we can have\n // a 'lock' of sorts to ensure only one fires\n if (options.callback_fired) {\n return;\n }\n\n options.callback_fired = true;\n\n if (user_callback && user_callback(timeout_occured, props) === false) {\n // user can prevent the default functionality by\n // returning false from their callback\n return;\n }\n\n that.after_track_handler(props, options, timeout_occured);\n };\n};\n\nDomTracker.prototype.create_properties = function (properties, element) {\n var props;\n\n if (typeof properties === 'function') {\n props = properties(element);\n } else {\n props = _.extend({}, properties);\n }\n\n return props;\n};\n/**\n * LinkTracker Object\n * @constructor\n * @extends DomTracker\n */\n\n\nvar LinkTracker = function LinkTracker() {\n this.override_event = 'click';\n};\n\n_.inherit(LinkTracker, DomTracker);\n\nLinkTracker.prototype.create_properties = function (properties, element) {\n var props = LinkTracker.superclass.create_properties.apply(this, arguments);\n\n if (element.href) {\n props['url'] = element.href;\n }\n\n return props;\n};\n\nLinkTracker.prototype.event_handler = function (evt, element, options) {\n options.new_tab = evt.which === 2 || evt.metaKey || evt.ctrlKey || element.target === '_blank';\n options.href = element.href;\n\n if (!options.new_tab) {\n evt.preventDefault();\n }\n};\n\nLinkTracker.prototype.after_track_handler = function (props, options) {\n if (options.new_tab) {\n return;\n }\n\n setTimeout(function () {\n window.location = options.href;\n }, 0);\n};\n/**\n * FormTracker Object\n * @constructor\n * @extends DomTracker\n */\n\n\nvar FormTracker = function FormTracker() {\n this.override_event = 'submit';\n};\n\n_.inherit(FormTracker, DomTracker);\n\nFormTracker.prototype.event_handler = function (evt, element, options) {\n options.element = element;\n evt.preventDefault();\n};\n\nFormTracker.prototype.after_track_handler = function (props, options) {\n setTimeout(function () {\n options.element.submit();\n }, 0);\n}; // eslint-disable-line camelcase\n\n\nvar logger$2 = console_with_prefix('lock');\n/**\n * SharedLock: a mutex built on HTML5 localStorage, to ensure that only one browser\n * window/tab at a time will be able to access shared resources.\n *\n * Based on the Alur and Taubenfeld fast lock\n * (http://www.cs.rochester.edu/research/synchronization/pseudocode/fastlock.html)\n * with an added timeout to ensure there will be eventual progress in the event\n * that a window is closed in the middle of the callback.\n *\n * Implementation based on the original version by David Wolever (https://github.com/wolever)\n * at https://gist.github.com/wolever/5fd7573d1ef6166e8f8c4af286a69432.\n *\n * @example\n * const myLock = new SharedLock('some-key');\n * myLock.withLock(function() {\n * console.log('I hold the mutex!');\n * });\n *\n * @constructor\n */\n\nvar SharedLock = function SharedLock(key, options) {\n options = options || {};\n this.storageKey = key;\n this.storage = options.storage || window.localStorage;\n this.pollIntervalMS = options.pollIntervalMS || 100;\n this.timeoutMS = options.timeoutMS || 2000;\n}; // pass in a specific pid to test contention scenarios; otherwise\n// it is chosen randomly for each acquisition attempt\n\n\nSharedLock.prototype.withLock = function (lockedCB, errorCB, pid) {\n if (!pid && typeof errorCB !== 'function') {\n pid = errorCB;\n errorCB = null;\n }\n\n var i = pid || new Date().getTime() + '|' + Math.random();\n var startTime = new Date().getTime();\n var key = this.storageKey;\n var pollIntervalMS = this.pollIntervalMS;\n var timeoutMS = this.timeoutMS;\n var storage = this.storage;\n var keyX = key + ':X';\n var keyY = key + ':Y';\n var keyZ = key + ':Z';\n\n var reportError = function reportError(err) {\n errorCB && errorCB(err);\n };\n\n var delay = function delay(cb) {\n if (new Date().getTime() - startTime > timeoutMS) {\n logger$2.error('Timeout waiting for mutex on ' + key + '; clearing lock. [' + i + ']');\n storage.removeItem(keyZ);\n storage.removeItem(keyY);\n loop();\n return;\n }\n\n setTimeout(function () {\n try {\n cb();\n } catch (err) {\n reportError(err);\n }\n }, pollIntervalMS * (Math.random() + 0.1));\n };\n\n var waitFor = function waitFor(predicate, cb) {\n if (predicate()) {\n cb();\n } else {\n delay(function () {\n waitFor(predicate, cb);\n });\n }\n };\n\n var getSetY = function getSetY() {\n var valY = storage.getItem(keyY);\n\n if (valY && valY !== i) {\n // if Y == i then this process already has the lock (useful for test cases)\n return false;\n } else {\n storage.setItem(keyY, i);\n\n if (storage.getItem(keyY) === i) {\n return true;\n } else {\n if (!localStorageSupported(storage, true)) {\n throw new Error('localStorage support dropped while acquiring lock');\n }\n\n return false;\n }\n }\n };\n\n var loop = function loop() {\n storage.setItem(keyX, i);\n waitFor(getSetY, function () {\n if (storage.getItem(keyX) === i) {\n criticalSection();\n return;\n }\n\n delay(function () {\n if (storage.getItem(keyY) !== i) {\n loop();\n return;\n }\n\n waitFor(function () {\n return !storage.getItem(keyZ);\n }, criticalSection);\n });\n });\n };\n\n var criticalSection = function criticalSection() {\n storage.setItem(keyZ, '1');\n\n try {\n lockedCB();\n } finally {\n storage.removeItem(keyZ);\n\n if (storage.getItem(keyY) === i) {\n storage.removeItem(keyY);\n }\n\n if (storage.getItem(keyX) === i) {\n storage.removeItem(keyX);\n }\n }\n };\n\n try {\n if (localStorageSupported(storage, true)) {\n loop();\n } else {\n throw new Error('localStorage support check failed');\n }\n } catch (err) {\n reportError(err);\n }\n}; // eslint-disable-line camelcase\n\n\nvar logger$1 = console_with_prefix('batch');\n/**\n * RequestQueue: queue for batching API requests with localStorage backup for retries.\n * Maintains an in-memory queue which represents the source of truth for the current\n * page, but also writes all items out to a copy in the browser's localStorage, which\n * can be read on subsequent pageloads and retried. For batchability, all the request\n * items in the queue should be of the same type (events, people updates, group updates)\n * so they can be sent in a single request to the same API endpoint.\n *\n * LocalStorage keying and locking: In order for reloads and subsequent pageloads of\n * the same site to access the same persisted data, they must share the same localStorage\n * key (for instance based on project token and queue type). Therefore access to the\n * localStorage entry is guarded by an asynchronous mutex (SharedLock) to prevent\n * simultaneously open windows/tabs from overwriting each other's data (which would lead\n * to data loss in some situations).\n * @constructor\n */\n\nvar RequestQueue = function RequestQueue(storageKey, options) {\n options = options || {};\n this.storageKey = storageKey;\n this.storage = options.storage || window.localStorage;\n this.lock = new SharedLock(storageKey, {\n storage: this.storage\n });\n this.pid = options.pid || null; // pass pid to test out storage lock contention scenarios\n\n this.memQueue = [];\n};\n/**\n * Add one item to queues (memory and localStorage). The queued entry includes\n * the given item along with an auto-generated ID and a \"flush-after\" timestamp.\n * It is expected that the item will be sent over the network and dequeued\n * before the flush-after time; if this doesn't happen it is considered orphaned\n * (e.g., the original tab where it was enqueued got closed before it could be\n * sent) and the item can be sent by any tab that finds it in localStorage.\n *\n * The final callback param is called with a param indicating success or\n * failure of the enqueue operation; it is asynchronous because the localStorage\n * lock is asynchronous.\n */\n\n\nRequestQueue.prototype.enqueue = function (item, flushInterval, cb) {\n var queueEntry = {\n 'id': cheap_guid(),\n 'flushAfter': new Date().getTime() + flushInterval * 2,\n 'payload': item\n };\n this.lock.withLock(_.bind(function lockAcquired() {\n var succeeded;\n\n try {\n var storedQueue = this.readFromStorage();\n storedQueue.push(queueEntry);\n succeeded = this.saveToStorage(storedQueue);\n\n if (succeeded) {\n // only add to in-memory queue when storage succeeds\n this.memQueue.push(queueEntry);\n }\n } catch (err) {\n logger$1.error('Error enqueueing item', item);\n succeeded = false;\n }\n\n if (cb) {\n cb(succeeded);\n }\n }, this), function lockFailure(err) {\n logger$1.error('Error acquiring storage lock', err);\n\n if (cb) {\n cb(false);\n }\n }, this.pid);\n};\n/**\n * Read out the given number of queue entries. If this.memQueue\n * has fewer than batchSize items, then look for \"orphaned\" items\n * in the persisted queue (items where the 'flushAfter' time has\n * already passed).\n */\n\n\nRequestQueue.prototype.fillBatch = function (batchSize) {\n var batch = this.memQueue.slice(0, batchSize);\n\n if (batch.length < batchSize) {\n // don't need lock just to read events; localStorage is thread-safe\n // and the worst that could happen is a duplicate send of some\n // orphaned events, which will be deduplicated on the server side\n var storedQueue = this.readFromStorage();\n\n if (storedQueue.length) {\n // item IDs already in batch; don't duplicate out of storage\n var idsInBatch = {}; // poor man's Set\n\n _.each(batch, function (item) {\n idsInBatch[item['id']] = true;\n });\n\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n\n if (new Date().getTime() > item['flushAfter'] && !idsInBatch[item['id']]) {\n item.orphaned = true;\n batch.push(item);\n\n if (batch.length >= batchSize) {\n break;\n }\n }\n }\n }\n }\n\n return batch;\n};\n/**\n * Remove items with matching 'id' from array (immutably)\n * also remove any item without a valid id (e.g., malformed\n * storage entries).\n */\n\n\nvar filterOutIDsAndInvalid = function filterOutIDsAndInvalid(items, idSet) {\n var filteredItems = [];\n\n _.each(items, function (item) {\n if (item['id'] && !idSet[item['id']]) {\n filteredItems.push(item);\n }\n });\n\n return filteredItems;\n};\n/**\n * Remove items with matching IDs from both in-memory queue\n * and persisted queue\n */\n\n\nRequestQueue.prototype.removeItemsByID = function (ids, cb) {\n var idSet = {}; // poor man's Set\n\n _.each(ids, function (id) {\n idSet[id] = true;\n });\n\n this.memQueue = filterOutIDsAndInvalid(this.memQueue, idSet);\n this.lock.withLock(_.bind(function lockAcquired() {\n var succeeded;\n\n try {\n var storedQueue = this.readFromStorage();\n storedQueue = filterOutIDsAndInvalid(storedQueue, idSet);\n succeeded = this.saveToStorage(storedQueue);\n } catch (err) {\n logger$1.error('Error removing items', ids);\n succeeded = false;\n }\n\n if (cb) {\n cb(succeeded);\n }\n }, this), function lockFailure(err) {\n logger$1.error('Error acquiring storage lock', err);\n\n if (cb) {\n cb(false);\n }\n }, this.pid);\n}; // internal helper for RequestQueue.updatePayloads\n\n\nvar updatePayloads = function updatePayloads(existingItems, itemsToUpdate) {\n var newItems = [];\n\n _.each(existingItems, function (item) {\n var id = item['id'];\n\n if (id in itemsToUpdate) {\n var newPayload = itemsToUpdate[id];\n\n if (newPayload !== null) {\n item['payload'] = newPayload;\n newItems.push(item);\n }\n } else {\n // no update\n newItems.push(item);\n }\n });\n\n return newItems;\n};\n/**\n * Update payloads of given items in both in-memory queue and\n * persisted queue. Items set to null are removed from queues.\n */\n\n\nRequestQueue.prototype.updatePayloads = function (itemsToUpdate, cb) {\n this.memQueue = updatePayloads(this.memQueue, itemsToUpdate);\n this.lock.withLock(_.bind(function lockAcquired() {\n var succeeded;\n\n try {\n var storedQueue = this.readFromStorage();\n storedQueue = updatePayloads(storedQueue, itemsToUpdate);\n succeeded = this.saveToStorage(storedQueue);\n } catch (err) {\n logger$1.error('Error updating items', itemsToUpdate);\n succeeded = false;\n }\n\n if (cb) {\n cb(succeeded);\n }\n }, this), function lockFailure(err) {\n logger$1.error('Error acquiring storage lock', err);\n\n if (cb) {\n cb(false);\n }\n }, this.pid);\n};\n/**\n * Read and parse items array from localStorage entry, handling\n * malformed/missing data if necessary.\n */\n\n\nRequestQueue.prototype.readFromStorage = function () {\n var storageEntry;\n\n try {\n storageEntry = this.storage.getItem(this.storageKey);\n\n if (storageEntry) {\n storageEntry = JSONParse(storageEntry);\n\n if (!_.isArray(storageEntry)) {\n logger$1.error('Invalid storage entry:', storageEntry);\n storageEntry = null;\n }\n }\n } catch (err) {\n logger$1.error('Error retrieving queue', err);\n storageEntry = null;\n }\n\n return storageEntry || [];\n};\n/**\n * Serialize the given items array to localStorage.\n */\n\n\nRequestQueue.prototype.saveToStorage = function (queue) {\n try {\n this.storage.setItem(this.storageKey, JSONStringify(queue));\n return true;\n } catch (err) {\n logger$1.error('Error saving queue', err);\n return false;\n }\n};\n/**\n * Clear out queues (memory and localStorage).\n */\n\n\nRequestQueue.prototype.clear = function () {\n this.memQueue = [];\n this.storage.removeItem(this.storageKey);\n}; // eslint-disable-line camelcase\n// maximum interval between request retries after exponential backoff\n\n\nvar MAX_RETRY_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes\n\nvar logger = console_with_prefix('batch');\n/**\n * RequestBatcher: manages the queueing, flushing, retry etc of requests of one\n * type (events, people, groups).\n * Uses RequestQueue to manage the backing store.\n * @constructor\n */\n\nvar RequestBatcher = function RequestBatcher(storageKey, options) {\n this.queue = new RequestQueue(storageKey, {\n storage: options.storage\n });\n this.libConfig = options.libConfig;\n this.sendRequest = options.sendRequestFunc;\n this.beforeSendHook = options.beforeSendHook; // seed variable batch size + flush interval with configured values\n\n this.batchSize = this.libConfig['batch_size'];\n this.flushInterval = this.libConfig['batch_flush_interval_ms'];\n this.stopped = !this.libConfig['batch_autostart'];\n};\n/**\n * Add one item to queue.\n */\n\n\nRequestBatcher.prototype.enqueue = function (item, cb) {\n this.queue.enqueue(item, this.flushInterval, cb);\n};\n/**\n * Start flushing batches at the configured time interval. Must call\n * this method upon SDK init in order to send anything over the network.\n */\n\n\nRequestBatcher.prototype.start = function () {\n this.stopped = false;\n this.flush();\n};\n/**\n * Stop flushing batches. Can be restarted by calling start().\n */\n\n\nRequestBatcher.prototype.stop = function () {\n this.stopped = true;\n\n if (this.timeoutID) {\n clearTimeout(this.timeoutID);\n this.timeoutID = null;\n }\n};\n/**\n * Clear out queue.\n */\n\n\nRequestBatcher.prototype.clear = function () {\n this.queue.clear();\n};\n/**\n * Restore batch size configuration to whatever is set in the main SDK.\n */\n\n\nRequestBatcher.prototype.resetBatchSize = function () {\n this.batchSize = this.libConfig['batch_size'];\n};\n/**\n * Restore flush interval time configuration to whatever is set in the main SDK.\n */\n\n\nRequestBatcher.prototype.resetFlush = function () {\n this.scheduleFlush(this.libConfig['batch_flush_interval_ms']);\n};\n/**\n * Schedule the next flush in the given number of milliseconds.\n */\n\n\nRequestBatcher.prototype.scheduleFlush = function (flushMS) {\n this.flushInterval = flushMS;\n\n if (!this.stopped) {\n // don't schedule anymore if batching has been stopped\n this.timeoutID = setTimeout(_.bind(this.flush, this), this.flushInterval);\n }\n};\n/**\n * Flush one batch to network. Depending on success/failure modes, it will either\n * remove the batch from the queue or leave it in for retry, and schedule the next\n * flush. In cases of most network or API failures, it will back off exponentially\n * when retrying.\n * @param {Object} [options]\n * @param {boolean} [options.sendBeacon] - whether to send batch with\n * navigator.sendBeacon (only useful for sending batches before page unloads, as\n * sendBeacon offers no callbacks or status indications)\n */\n\n\nRequestBatcher.prototype.flush = function (options) {\n try {\n if (this.requestInProgress) {\n logger.log('Flush: Request already in progress');\n return;\n }\n\n options = options || {};\n var timeoutMS = this.libConfig['batch_request_timeout_ms'];\n var startTime = new Date().getTime();\n var currentBatchSize = this.batchSize;\n var batch = this.queue.fillBatch(currentBatchSize);\n var dataForRequest = [];\n var transformedItems = {};\n\n _.each(batch, function (item) {\n var payload = item['payload'];\n\n if (this.beforeSendHook && !item.orphaned) {\n payload = this.beforeSendHook(payload);\n }\n\n if (payload) {\n dataForRequest.push(payload);\n }\n\n transformedItems[item['id']] = payload;\n }, this);\n\n if (dataForRequest.length < 1) {\n this.resetFlush();\n return; // nothing to do\n }\n\n this.requestInProgress = true;\n\n var batchSendCallback = _.bind(function (res) {\n this.requestInProgress = false;\n\n try {\n // handle API response in a try-catch to make sure we can reset the\n // flush operation if something goes wrong\n var removeItemsFromQueue = false;\n\n if (options.unloading) {\n // update persisted data to include hook transformations\n this.queue.updatePayloads(transformedItems);\n } else if (_.isObject(res) && res.error === 'timeout' && new Date().getTime() - startTime >= timeoutMS) {\n logger.error('Network timeout; retrying');\n this.flush();\n } else if (_.isObject(res) && res.xhr_req && (res.xhr_req['status'] >= 500 || res.xhr_req['status'] <= 0)) {\n // network or API error, retry\n var retryMS = this.flushInterval * 2;\n var headers = res.xhr_req['responseHeaders'];\n\n if (headers) {\n var retryAfter = headers['Retry-After'];\n\n if (retryAfter) {\n retryMS = parseInt(retryAfter, 10) * 1000 || retryMS;\n }\n }\n\n retryMS = Math.min(MAX_RETRY_INTERVAL_MS, retryMS);\n logger.error('Error; retry in ' + retryMS + ' ms');\n this.scheduleFlush(retryMS);\n } else if (_.isObject(res) && res.xhr_req && res.xhr_req['status'] === 413) {\n // 413 Payload Too Large\n if (batch.length > 1) {\n var halvedBatchSize = Math.max(1, Math.floor(currentBatchSize / 2));\n this.batchSize = Math.min(this.batchSize, halvedBatchSize, batch.length - 1);\n logger.error('413 response; reducing batch size to ' + this.batchSize);\n this.resetFlush();\n } else {\n logger.error('Single-event request too large; dropping', batch);\n this.resetBatchSize();\n removeItemsFromQueue = true;\n }\n } else {\n // successful network request+response; remove each item in batch from queue\n // (even if it was e.g. a 400, in which case retrying won't help)\n removeItemsFromQueue = true;\n }\n\n if (removeItemsFromQueue) {\n this.queue.removeItemsByID(_.map(batch, function (item) {\n return item['id'];\n }), _.bind(this.flush, this) // handle next batch if the queue isn't empty\n );\n }\n } catch (err) {\n logger.error('Error handling API response', err);\n this.resetFlush();\n }\n }, this);\n\n var requestOptions = {\n method: 'POST',\n verbose: true,\n ignore_json_errors: true,\n // eslint-disable-line camelcase\n timeout_ms: timeoutMS // eslint-disable-line camelcase\n\n };\n\n if (options.unloading) {\n requestOptions.transport = 'sendBeacon';\n }\n\n logger.log('MIXPANEL REQUEST:', dataForRequest);\n this.sendRequest(dataForRequest, requestOptions, batchSendCallback);\n } catch (err) {\n logger.error('Error flushing request queue', err);\n this.resetFlush();\n }\n};\n/**\n * A function used to track a Mixpanel event (e.g. MixpanelLib.track)\n * @callback trackFunction\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n */\n\n/** Public **/\n\n\nvar GDPR_DEFAULT_PERSISTENCE_PREFIX = '__mp_opt_in_out_';\n/**\n * Opt the user in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\n\nfunction optIn(token, options) {\n _optInOut(true, token, options);\n}\n/**\n * Opt the user out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not\n */\n\n\nfunction optOut(token, options) {\n _optInOut(false, token, options);\n}\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} whether the user has opted in to the given opt type\n */\n\n\nfunction hasOptedIn(token, options) {\n return _getStorageValue(token, options) === '1';\n}\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the user has opted out of the given opt type\n */\n\n\nfunction hasOptedOut(token, options) {\n if (_hasDoNotTrackFlagOn(options)) {\n console.warn('This browser has \"Do Not Track\" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the \"Do Not Track\" browser setting, initialize the Mixpanel instance with the config \"ignore_dnt: true\"');\n return true;\n }\n\n var optedOut = _getStorageValue(token, options) === '0';\n\n if (optedOut) {\n console.warn('You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data.');\n }\n\n return optedOut;\n}\n/**\n * Wrap a MixpanelLib method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\n\n\nfunction addOptOutCheckMixpanelLib(method) {\n return _addOptOutCheck(method, function (name) {\n return this.get_config(name);\n });\n}\n/**\n * Wrap a MixpanelPeople method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\n\n\nfunction addOptOutCheckMixpanelPeople(method) {\n return _addOptOutCheck(method, function (name) {\n return this._get_config(name);\n });\n}\n/**\n * Wrap a MixpanelGroup method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\n\n\nfunction addOptOutCheckMixpanelGroup(method) {\n return _addOptOutCheck(method, function (name) {\n return this._get_config(name);\n });\n}\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\n\n\nfunction clearOptInOut(token, options) {\n options = options || {};\n\n _getStorage(options).remove(_getStorageKey(token, options), !!options.crossSubdomainCookie, options.cookieDomain);\n}\n/** Private **/\n\n/**\n * Get storage util\n * @param {Object} [options]\n * @param {string} [options.persistenceType]\n * @returns {object} either _.cookie or _.localstorage\n */\n\n\nfunction _getStorage(options) {\n options = options || {};\n return options.persistenceType === 'localStorage' ? _.localStorage : _.cookie;\n}\n/**\n * Get the name of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the name of the cookie for the given opt type\n */\n\n\nfunction _getStorageKey(token, options) {\n options = options || {};\n return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token;\n}\n/**\n * Get the value of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the value of the cookie for the given opt type\n */\n\n\nfunction _getStorageValue(token, options) {\n return _getStorage(options).get(_getStorageKey(token, options));\n}\n/**\n * Check whether the user has set the DNT/doNotTrack setting to true in their browser\n * @param {Object} [options]\n * @param {string} [options.window] - alternate window object to check; used to force various DNT settings in browser tests\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the DNT setting is true\n */\n\n\nfunction _hasDoNotTrackFlagOn(options) {\n if (options && options.ignoreDnt) {\n return false;\n }\n\n var win = options && options.window || window$1;\n var nav = win['navigator'] || {};\n var hasDntOn = false;\n\n _.each([nav['doNotTrack'], // standard\n nav['msDoNotTrack'], win['doNotTrack']], function (dntValue) {\n if (_.includes([true, 1, '1', 'yes'], dntValue)) {\n hasDntOn = true;\n }\n });\n\n return hasDntOn;\n}\n/**\n * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type\n * @param {boolean} optValue - whether to opt the user in or out for the given opt type\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\n\n\nfunction _optInOut(optValue, token, options) {\n if (!_.isString(token) || !token.length) {\n console.error('gdpr.' + (optValue ? 'optIn' : 'optOut') + ' called with an invalid token');\n return;\n }\n\n options = options || {};\n\n _getStorage(options).set(_getStorageKey(token, options), optValue ? 1 : 0, _.isNumber(options.cookieExpiration) ? options.cookieExpiration : null, !!options.crossSubdomainCookie, !!options.secureCookie, !!options.crossSiteCookie, options.cookieDomain);\n\n if (options.track && optValue) {\n // only track event if opting in (optValue=true)\n options.track(options.trackEventName || '$opt_in', options.trackProperties, {\n 'send_immediately': true\n });\n }\n}\n/**\n * Wrap a method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @param {function} getConfigValue - getter function for the Mixpanel API token and other options to be used with opt-out check\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\n\n\nfunction _addOptOutCheck(method, getConfigValue) {\n return function () {\n var optedOut = false;\n\n try {\n var token = getConfigValue.call(this, 'token');\n var ignoreDnt = getConfigValue.call(this, 'ignore_dnt');\n var persistenceType = getConfigValue.call(this, 'opt_out_tracking_persistence_type');\n var persistencePrefix = getConfigValue.call(this, 'opt_out_tracking_cookie_prefix');\n var win = getConfigValue.call(this, 'window'); // used to override window during browser tests\n\n if (token) {\n // if there was an issue getting the token, continue method execution as normal\n optedOut = hasOptedOut(token, {\n ignoreDnt: ignoreDnt,\n persistenceType: persistenceType,\n persistencePrefix: persistencePrefix,\n window: win\n });\n }\n } catch (err) {\n console.error('Unexpected error when checking tracking opt-out status: ' + err);\n }\n\n if (!optedOut) {\n return method.apply(this, arguments);\n }\n\n var callback = arguments[arguments.length - 1];\n\n if (typeof callback === 'function') {\n callback(0);\n }\n\n return;\n };\n}\n/** @const */\n\n\nvar SET_ACTION = '$set';\n/** @const */\n\nvar SET_ONCE_ACTION = '$set_once';\n/** @const */\n\nvar UNSET_ACTION = '$unset';\n/** @const */\n\nvar ADD_ACTION = '$add';\n/** @const */\n\nvar APPEND_ACTION = '$append';\n/** @const */\n\nvar UNION_ACTION = '$union';\n/** @const */\n\nvar REMOVE_ACTION = '$remove';\n/** @const */\n\nvar DELETE_ACTION = '$delete'; // Common internal methods for mixpanel.people and mixpanel.group APIs.\n// These methods shouldn't involve network I/O.\n\nvar apiActions = {\n set_action: function set_action(prop, to) {\n var data = {};\n var $set = {};\n\n if (_.isObject(prop)) {\n _.each(prop, function (v, k) {\n if (!this._is_reserved_property(k)) {\n $set[k] = v;\n }\n }, this);\n } else {\n $set[prop] = to;\n }\n\n data[SET_ACTION] = $set;\n return data;\n },\n unset_action: function unset_action(prop) {\n var data = {};\n var $unset = [];\n\n if (!_.isArray(prop)) {\n prop = [prop];\n }\n\n _.each(prop, function (k) {\n if (!this._is_reserved_property(k)) {\n $unset.push(k);\n }\n }, this);\n\n data[UNSET_ACTION] = $unset;\n return data;\n },\n set_once_action: function set_once_action(prop, to) {\n var data = {};\n var $set_once = {};\n\n if (_.isObject(prop)) {\n _.each(prop, function (v, k) {\n if (!this._is_reserved_property(k)) {\n $set_once[k] = v;\n }\n }, this);\n } else {\n $set_once[prop] = to;\n }\n\n data[SET_ONCE_ACTION] = $set_once;\n return data;\n },\n union_action: function union_action(list_name, values) {\n var data = {};\n var $union = {};\n\n if (_.isObject(list_name)) {\n _.each(list_name, function (v, k) {\n if (!this._is_reserved_property(k)) {\n $union[k] = _.isArray(v) ? v : [v];\n }\n }, this);\n } else {\n $union[list_name] = _.isArray(values) ? values : [values];\n }\n\n data[UNION_ACTION] = $union;\n return data;\n },\n append_action: function append_action(list_name, value) {\n var data = {};\n var $append = {};\n\n if (_.isObject(list_name)) {\n _.each(list_name, function (v, k) {\n if (!this._is_reserved_property(k)) {\n $append[k] = v;\n }\n }, this);\n } else {\n $append[list_name] = value;\n }\n\n data[APPEND_ACTION] = $append;\n return data;\n },\n remove_action: function remove_action(list_name, value) {\n var data = {};\n var $remove = {};\n\n if (_.isObject(list_name)) {\n _.each(list_name, function (v, k) {\n if (!this._is_reserved_property(k)) {\n $remove[k] = v;\n }\n }, this);\n } else {\n $remove[list_name] = value;\n }\n\n data[REMOVE_ACTION] = $remove;\n return data;\n },\n delete_action: function delete_action() {\n var data = {};\n data[DELETE_ACTION] = '';\n return data;\n }\n};\n/**\n * Mixpanel Group Object\n * @constructor\n */\n\nvar MixpanelGroup = function MixpanelGroup() {};\n\n_.extend(MixpanelGroup.prototype, apiActions);\n\nMixpanelGroup.prototype._init = function (mixpanel_instance, group_key, group_id) {\n this._mixpanel = mixpanel_instance;\n this._group_key = group_key;\n this._group_id = group_id;\n};\n/**\n * Set properties on a group.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, dates, or lists\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\n\n\nMixpanelGroup.prototype.set = addOptOutCheckMixpanelGroup(function (prop, to, callback) {\n var data = this.set_action(prop, to);\n\n if (_.isObject(prop)) {\n callback = to;\n }\n\n return this._send_request(data, callback);\n});\n/**\n * Set properties on a group, only if they do not yet exist.\n * This will not overwrite previous group property values, unlike\n * group.set().\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set_once('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set_once({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, lists or dates\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\n\nMixpanelGroup.prototype.set_once = addOptOutCheckMixpanelGroup(function (prop, to, callback) {\n var data = this.set_once_action(prop, to);\n\n if (_.isObject(prop)) {\n callback = to;\n }\n\n return this._send_request(data, callback);\n});\n/**\n * Unset properties on a group permanently.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').unset('Founded');\n *\n * @param {String} prop The name of the property.\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\n\nMixpanelGroup.prototype.unset = addOptOutCheckMixpanelGroup(function (prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n/**\n * Merge a given list with a list-valued group property, excluding duplicate values.\n *\n * ### Usage:\n *\n * // merge a value to a list, creating it if needed\n * mixpanel.get_group('company', 'mixpanel').union('Location', ['San Francisco', 'London']);\n *\n * @param {String} list_name Name of the property.\n * @param {Array} values Values to merge with the given property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\n\nMixpanelGroup.prototype.union = addOptOutCheckMixpanelGroup(function (list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n/**\n * Permanently delete a group.\n *\n * ### Usage:\n * mixpanel.get_group('company', 'mixpanel').delete();\n */\n\nMixpanelGroup.prototype['delete'] = addOptOutCheckMixpanelGroup(function (callback) {\n var data = this.delete_action();\n return this._send_request(data, callback);\n});\n/**\n * Remove a property from a group. The value will be ignored if doesn't exist.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').remove('Location', 'London');\n *\n * @param {String} list_name Name of the property.\n * @param {Object} value Value to remove from the given group property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\n\nMixpanelGroup.prototype.remove = addOptOutCheckMixpanelGroup(function (list_name, value, callback) {\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\nMixpanelGroup.prototype._send_request = function (data, callback) {\n data['$group_key'] = this._group_key;\n data['$group_id'] = this._group_id;\n data['$token'] = this._get_config('token');\n\n var date_encoded_data = _.encodeDates(data);\n\n return this._mixpanel._track_or_batch({\n type: 'groups',\n data: date_encoded_data,\n endpoint: this._get_config('api_host') + '/groups/',\n batcher: this._mixpanel.request_batchers.groups\n }, callback);\n};\n\nMixpanelGroup.prototype._is_reserved_property = function (prop) {\n return prop === '$group_key' || prop === '$group_id';\n};\n\nMixpanelGroup.prototype._get_config = function (conf) {\n return this._mixpanel.get_config(conf);\n};\n\nMixpanelGroup.prototype.toString = function () {\n return this._mixpanel.toString() + '.group.' + this._group_key + '.' + this._group_id;\n}; // MixpanelGroup Exports\n\n\nMixpanelGroup.prototype['remove'] = MixpanelGroup.prototype.remove;\nMixpanelGroup.prototype['set'] = MixpanelGroup.prototype.set;\nMixpanelGroup.prototype['set_once'] = MixpanelGroup.prototype.set_once;\nMixpanelGroup.prototype['union'] = MixpanelGroup.prototype.union;\nMixpanelGroup.prototype['unset'] = MixpanelGroup.prototype.unset;\nMixpanelGroup.prototype['toString'] = MixpanelGroup.prototype.toString;\n/*\n * Constants\n */\n\n/** @const */\n\nvar SET_QUEUE_KEY = '__mps';\n/** @const */\n\nvar SET_ONCE_QUEUE_KEY = '__mpso';\n/** @const */\n\nvar UNSET_QUEUE_KEY = '__mpus';\n/** @const */\n\nvar ADD_QUEUE_KEY = '__mpa';\n/** @const */\n\nvar APPEND_QUEUE_KEY = '__mpap';\n/** @const */\n\nvar REMOVE_QUEUE_KEY = '__mpr';\n/** @const */\n\nvar UNION_QUEUE_KEY = '__mpu'; // This key is deprecated, but we want to check for it to see whether aliasing is allowed.\n\n/** @const */\n\nvar PEOPLE_DISTINCT_ID_KEY = '$people_distinct_id';\n/** @const */\n\nvar ALIAS_ID_KEY = '__alias';\n/** @const */\n\nvar CAMPAIGN_IDS_KEY = '__cmpns';\n/** @const */\n\nvar EVENT_TIMERS_KEY = '__timers';\n/** @const */\n\nvar RESERVED_PROPERTIES = [SET_QUEUE_KEY, SET_ONCE_QUEUE_KEY, UNSET_QUEUE_KEY, ADD_QUEUE_KEY, APPEND_QUEUE_KEY, REMOVE_QUEUE_KEY, UNION_QUEUE_KEY, PEOPLE_DISTINCT_ID_KEY, ALIAS_ID_KEY, CAMPAIGN_IDS_KEY, EVENT_TIMERS_KEY];\n/**\n * Mixpanel Persistence Object\n * @constructor\n */\n\nvar MixpanelPersistence = function MixpanelPersistence(config) {\n this['props'] = {};\n this.campaign_params_saved = false;\n\n if (config['persistence_name']) {\n this.name = 'mp_' + config['persistence_name'];\n } else {\n this.name = 'mp_' + config['token'] + '_mixpanel';\n }\n\n var storage_type = config['persistence'];\n\n if (storage_type !== 'cookie' && storage_type !== 'localStorage') {\n console.critical('Unknown persistence type ' + storage_type + '; falling back to cookie');\n storage_type = config['persistence'] = 'cookie';\n }\n\n if (storage_type === 'localStorage' && _.localStorage.is_supported()) {\n this.storage = _.localStorage;\n } else {\n this.storage = _.cookie;\n }\n\n this.load();\n this.update_config(config);\n this.upgrade(config);\n this.save();\n};\n\nMixpanelPersistence.prototype.properties = function () {\n var p = {}; // Filter out reserved properties\n\n _.each(this['props'], function (v, k) {\n if (!_.include(RESERVED_PROPERTIES, k)) {\n p[k] = v;\n }\n });\n\n return p;\n};\n\nMixpanelPersistence.prototype.load = function () {\n if (this.disabled) {\n return;\n }\n\n var entry = this.storage.parse(this.name);\n\n if (entry) {\n this['props'] = _.extend({}, entry);\n }\n};\n\nMixpanelPersistence.prototype.upgrade = function (config) {\n var upgrade_from_old_lib = config['upgrade'],\n old_cookie_name,\n old_cookie;\n\n if (upgrade_from_old_lib) {\n old_cookie_name = 'mp_super_properties'; // Case where they had a custom cookie name before.\n\n if (typeof upgrade_from_old_lib === 'string') {\n old_cookie_name = upgrade_from_old_lib;\n }\n\n old_cookie = this.storage.parse(old_cookie_name); // remove the cookie\n\n this.storage.remove(old_cookie_name);\n this.storage.remove(old_cookie_name, true);\n\n if (old_cookie) {\n this['props'] = _.extend(this['props'], old_cookie['all'], old_cookie['events']);\n }\n }\n\n if (!config['cookie_name'] && config['name'] !== 'mixpanel') {\n // special case to handle people with cookies of the form\n // mp_TOKEN_INSTANCENAME from the first release of this library\n old_cookie_name = 'mp_' + config['token'] + '_' + config['name'];\n old_cookie = this.storage.parse(old_cookie_name);\n\n if (old_cookie) {\n this.storage.remove(old_cookie_name);\n this.storage.remove(old_cookie_name, true); // Save the prop values that were in the cookie from before -\n // this should only happen once as we delete the old one.\n\n this.register_once(old_cookie);\n }\n }\n\n if (this.storage === _.localStorage) {\n old_cookie = _.cookie.parse(this.name);\n\n _.cookie.remove(this.name);\n\n _.cookie.remove(this.name, true);\n\n if (old_cookie) {\n this.register_once(old_cookie);\n }\n }\n};\n\nMixpanelPersistence.prototype.save = function () {\n if (this.disabled) {\n return;\n }\n\n this._expire_notification_campaigns();\n\n this.storage.set(this.name, _.JSONEncode(this['props']), this.expire_days, this.cross_subdomain, this.secure, this.cross_site, this.cookie_domain);\n};\n\nMixpanelPersistence.prototype.remove = function () {\n // remove both domain and subdomain cookies\n this.storage.remove(this.name, false, this.cookie_domain);\n this.storage.remove(this.name, true, this.cookie_domain);\n}; // removes the storage entry and deletes all loaded data\n// forced name for tests\n\n\nMixpanelPersistence.prototype.clear = function () {\n this.remove();\n this['props'] = {};\n};\n/**\n* @param {Object} props\n* @param {*=} default_value\n* @param {number=} days\n*/\n\n\nMixpanelPersistence.prototype.register_once = function (props, default_value, days) {\n if (_.isObject(props)) {\n if (typeof default_value === 'undefined') {\n default_value = 'None';\n }\n\n this.expire_days = typeof days === 'undefined' ? this.default_expiry : days;\n\n _.each(props, function (val, prop) {\n if (!this['props'].hasOwnProperty(prop) || this['props'][prop] === default_value) {\n this['props'][prop] = val;\n }\n }, this);\n\n this.save();\n return true;\n }\n\n return false;\n};\n/**\n* @param {Object} props\n* @param {number=} days\n*/\n\n\nMixpanelPersistence.prototype.register = function (props, days) {\n if (_.isObject(props)) {\n this.expire_days = typeof days === 'undefined' ? this.default_expiry : days;\n\n _.extend(this['props'], props);\n\n this.save();\n return true;\n }\n\n return false;\n};\n\nMixpanelPersistence.prototype.unregister = function (prop) {\n if (prop in this['props']) {\n delete this['props'][prop];\n this.save();\n }\n};\n\nMixpanelPersistence.prototype._expire_notification_campaigns = _.safewrap(function () {\n var campaigns_shown = this['props'][CAMPAIGN_IDS_KEY],\n EXPIRY_TIME = Config.DEBUG ? 60 * 1000 : 60 * 60 * 1000; // 1 minute (Config.DEBUG) / 1 hour (PDXN)\n\n if (!campaigns_shown) {\n return;\n }\n\n for (var campaign_id in campaigns_shown) {\n if (1 * new Date() - campaigns_shown[campaign_id] > EXPIRY_TIME) {\n delete campaigns_shown[campaign_id];\n }\n }\n\n if (_.isEmptyObject(campaigns_shown)) {\n delete this['props'][CAMPAIGN_IDS_KEY];\n }\n});\n\nMixpanelPersistence.prototype.update_campaign_params = function () {\n if (!this.campaign_params_saved) {\n this.register_once(_.info.campaignParams());\n this.campaign_params_saved = true;\n }\n};\n\nMixpanelPersistence.prototype.update_search_keyword = function (referrer) {\n this.register(_.info.searchInfo(referrer));\n}; // EXPORTED METHOD, we test this directly.\n\n\nMixpanelPersistence.prototype.update_referrer_info = function (referrer) {\n // If referrer doesn't exist, we want to note the fact that it was type-in traffic.\n this.register_once({\n '$initial_referrer': referrer || '$direct',\n '$initial_referring_domain': _.info.referringDomain(referrer) || '$direct'\n }, '');\n};\n\nMixpanelPersistence.prototype.get_referrer_info = function () {\n return _.strip_empty_properties({\n '$initial_referrer': this['props']['$initial_referrer'],\n '$initial_referring_domain': this['props']['$initial_referring_domain']\n });\n}; // safely fills the passed in object with stored properties,\n// does not override any properties defined in both\n// returns the passed in object\n\n\nMixpanelPersistence.prototype.safe_merge = function (props) {\n _.each(this['props'], function (val, prop) {\n if (!(prop in props)) {\n props[prop] = val;\n }\n });\n\n return props;\n};\n\nMixpanelPersistence.prototype.update_config = function (config) {\n this.default_expiry = this.expire_days = config['cookie_expiration'];\n this.set_disabled(config['disable_persistence']);\n this.set_cookie_domain(config['cookie_domain']);\n this.set_cross_site(config['cross_site_cookie']);\n this.set_cross_subdomain(config['cross_subdomain_cookie']);\n this.set_secure(config['secure_cookie']);\n};\n\nMixpanelPersistence.prototype.set_disabled = function (disabled) {\n this.disabled = disabled;\n\n if (this.disabled) {\n this.remove();\n } else {\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cookie_domain = function (cookie_domain) {\n if (cookie_domain !== this.cookie_domain) {\n this.remove();\n this.cookie_domain = cookie_domain;\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_site = function (cross_site) {\n if (cross_site !== this.cross_site) {\n this.cross_site = cross_site;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_subdomain = function (cross_subdomain) {\n if (cross_subdomain !== this.cross_subdomain) {\n this.cross_subdomain = cross_subdomain;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.get_cross_subdomain = function () {\n return this.cross_subdomain;\n};\n\nMixpanelPersistence.prototype.set_secure = function (secure) {\n if (secure !== this.secure) {\n this.secure = secure ? true : false;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype._add_to_people_queue = function (queue, data) {\n var q_key = this._get_queue_key(queue),\n q_data = data[queue],\n set_q = this._get_or_create_queue(SET_ACTION),\n set_once_q = this._get_or_create_queue(SET_ONCE_ACTION),\n unset_q = this._get_or_create_queue(UNSET_ACTION),\n add_q = this._get_or_create_queue(ADD_ACTION),\n union_q = this._get_or_create_queue(UNION_ACTION),\n remove_q = this._get_or_create_queue(REMOVE_ACTION, []),\n append_q = this._get_or_create_queue(APPEND_ACTION, []);\n\n if (q_key === SET_QUEUE_KEY) {\n // Update the set queue - we can override any existing values\n _.extend(set_q, q_data); // if there was a pending increment, override it\n // with the set.\n\n\n this._pop_from_people_queue(ADD_ACTION, q_data); // if there was a pending union, override it\n // with the set.\n\n\n this._pop_from_people_queue(UNION_ACTION, q_data);\n\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === SET_ONCE_QUEUE_KEY) {\n // only queue the data if there is not already a set_once call for it.\n _.each(q_data, function (v, k) {\n if (!(k in set_once_q)) {\n set_once_q[k] = v;\n }\n });\n\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNSET_QUEUE_KEY) {\n _.each(q_data, function (prop) {\n // undo previously-queued actions on this key\n _.each([set_q, set_once_q, add_q, union_q], function (enqueued_obj) {\n if (prop in enqueued_obj) {\n delete enqueued_obj[prop];\n }\n });\n\n _.each(append_q, function (append_obj) {\n if (prop in append_obj) {\n delete append_obj[prop];\n }\n });\n\n unset_q[prop] = true;\n });\n } else if (q_key === ADD_QUEUE_KEY) {\n _.each(q_data, function (v, k) {\n // If it exists in the set queue, increment\n // the value\n if (k in set_q) {\n set_q[k] += v;\n } else {\n // If it doesn't exist, update the add\n // queue\n if (!(k in add_q)) {\n add_q[k] = 0;\n }\n\n add_q[k] += v;\n }\n }, this);\n\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNION_QUEUE_KEY) {\n _.each(q_data, function (v, k) {\n if (_.isArray(v)) {\n if (!(k in union_q)) {\n union_q[k] = [];\n } // We may send duplicates, the server will dedup them.\n\n\n union_q[k] = union_q[k].concat(v);\n }\n });\n\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === REMOVE_QUEUE_KEY) {\n remove_q.push(q_data);\n\n this._pop_from_people_queue(APPEND_ACTION, q_data);\n } else if (q_key === APPEND_QUEUE_KEY) {\n append_q.push(q_data);\n\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n }\n\n console.log('MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):');\n console.log(data);\n this.save();\n};\n\nMixpanelPersistence.prototype._pop_from_people_queue = function (queue, data) {\n var q = this._get_queue(queue);\n\n if (!_.isUndefined(q)) {\n _.each(data, function (v, k) {\n if (queue === APPEND_ACTION || queue === REMOVE_ACTION) {\n // list actions: only remove if both k+v match\n // e.g. remove should not override append in a case like\n // append({foo: 'bar'}); remove({foo: 'qux'})\n _.each(q, function (queued_action) {\n if (queued_action[k] === v) {\n delete queued_action[k];\n }\n });\n } else {\n delete q[k];\n }\n }, this);\n\n this.save();\n }\n};\n\nMixpanelPersistence.prototype._get_queue_key = function (queue) {\n if (queue === SET_ACTION) {\n return SET_QUEUE_KEY;\n } else if (queue === SET_ONCE_ACTION) {\n return SET_ONCE_QUEUE_KEY;\n } else if (queue === UNSET_ACTION) {\n return UNSET_QUEUE_KEY;\n } else if (queue === ADD_ACTION) {\n return ADD_QUEUE_KEY;\n } else if (queue === APPEND_ACTION) {\n return APPEND_QUEUE_KEY;\n } else if (queue === REMOVE_ACTION) {\n return REMOVE_QUEUE_KEY;\n } else if (queue === UNION_ACTION) {\n return UNION_QUEUE_KEY;\n } else {\n console.error('Invalid queue:', queue);\n }\n};\n\nMixpanelPersistence.prototype._get_queue = function (queue) {\n return this['props'][this._get_queue_key(queue)];\n};\n\nMixpanelPersistence.prototype._get_or_create_queue = function (queue, default_val) {\n var key = this._get_queue_key(queue);\n\n default_val = _.isUndefined(default_val) ? {} : default_val;\n return this['props'][key] || (this['props'][key] = default_val);\n};\n\nMixpanelPersistence.prototype.set_event_timer = function (event_name, timestamp) {\n var timers = this['props'][EVENT_TIMERS_KEY] || {};\n timers[event_name] = timestamp;\n this['props'][EVENT_TIMERS_KEY] = timers;\n this.save();\n};\n\nMixpanelPersistence.prototype.remove_event_timer = function (event_name) {\n var timers = this['props'][EVENT_TIMERS_KEY] || {};\n var timestamp = timers[event_name];\n\n if (!_.isUndefined(timestamp)) {\n delete this['props'][EVENT_TIMERS_KEY][event_name];\n this.save();\n }\n\n return timestamp;\n};\n/*\n * This file is a js implementation for a subset in eval_node.c\n */\n\n/*\n * Constants\n */\n// Metadata keys\n\n/** @const */\n\n\nvar OPERATOR_KEY = 'operator';\n/** @const */\n\nvar PROPERTY_KEY = 'property';\n/** @const */\n\nvar WINDOW_KEY = 'window';\n/** @const */\n\nvar UNIT_KEY = 'unit';\n/** @const */\n\nvar VALUE_KEY = 'value';\n/** @const */\n\nvar HOUR_KEY = 'hour';\n/** @const */\n\nvar DAY_KEY = 'day';\n/** @const */\n\nvar WEEK_KEY = 'week';\n/** @const */\n\nvar MONTH_KEY = 'month'; // Operands\n\n/** @const */\n\nvar EVENT_PROPERTY = 'event';\n/** @const */\n\nvar LITERAL_PROPERTY = 'literal'; // Binary Operators\n\n/** @const */\n\nvar AND_OPERATOR = 'and';\n/** @const */\n\nvar OR_OPERATOR = 'or';\n/** @const */\n\nvar IN_OPERATOR = 'in';\n/** @const */\n\nvar NOT_IN_OPERATOR = 'not in';\n/** @const */\n\nvar PLUS_OPERATOR = '+';\n/** @const */\n\nvar MINUS_OPERATOR = '-';\n/** @const */\n\nvar MUL_OPERATOR = '*';\n/** @const */\n\nvar DIV_OPERATOR = '/';\n/** @const */\n\nvar MOD_OPERATOR = '%';\n/** @const */\n\nvar EQUALS_OPERATOR = '==';\n/** @const */\n\nvar NOT_EQUALS_OPERATOR = '!=';\n/** @const */\n\nvar GREATER_OPERATOR = '>';\n/** @const */\n\nvar LESS_OPERATOR = '<';\n/** @const */\n\nvar GREATER_EQUAL_OPERATOR = '>=';\n/** @const */\n\nvar LESS_EQUAL_OPERATOR = '<='; // Typecast Operators\n\n/** @const */\n\nvar BOOLEAN_OPERATOR = 'boolean';\n/** @const */\n\nvar DATETIME_OPERATOR = 'datetime';\n/** @const */\n\nvar LIST_OPERATOR = 'list';\n/** @const */\n\nvar NUMBER_OPERATOR = 'number';\n/** @const */\n\nvar STRING_OPERATOR = 'string'; // Unary Operators\n\n/** @const */\n\nvar NOT_OPERATOR = 'not';\n/** @const */\n\nvar DEFINED_OPERATOR = 'defined';\n/** @const */\n\nvar NOT_DEFINED_OPERATOR = 'not defined'; // Special literals\n\n/** @const */\n\nvar NOW_LITERAL = 'now'; // Type cast functions\n\nfunction toNumber(value) {\n if (value === null) {\n return null;\n }\n\n switch (_typeof(value)) {\n case 'object':\n if (_.isDate(value) && value.getTime() >= 0) {\n return value.getTime();\n }\n\n return null;\n\n case 'boolean':\n return Number(value);\n\n case 'number':\n return value;\n\n case 'string':\n value = Number(value);\n\n if (!isNaN(value)) {\n return value;\n }\n\n return 0;\n }\n\n return null;\n}\n\nfunction evaluateNumber(op, properties) {\n if (!op['operator'] || op['operator'] !== NUMBER_OPERATOR || !op['children'] || op['children'].length !== 1) {\n throw 'Invalid cast operator: number ' + op;\n }\n\n return toNumber(evaluateSelector(op['children'][0], properties));\n}\n\nfunction toBoolean(value) {\n if (value === null) {\n return false;\n }\n\n switch (_typeof(value)) {\n case 'boolean':\n return value;\n\n case 'number':\n return value !== 0.0;\n\n case 'string':\n return value.length > 0;\n\n case 'object':\n if (_.isArray(value) && value.length > 0) {\n return true;\n }\n\n if (_.isDate(value) && value.getTime() > 0) {\n return true;\n }\n\n if (_.isObject(value) && !_.isEmptyObject(value)) {\n return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction evaluateBoolean(op, properties) {\n if (!op['operator'] || op['operator'] !== BOOLEAN_OPERATOR || !op['children'] || op['children'].length !== 1) {\n throw 'Invalid cast operator: boolean ' + op;\n }\n\n return toBoolean(evaluateSelector(op['children'][0], properties));\n}\n\nfunction evaluateDateTime(op, properties) {\n if (!op['operator'] || op['operator'] !== DATETIME_OPERATOR || !op['children'] || op['children'].length !== 1) {\n throw 'Invalid cast operator: datetime ' + op;\n }\n\n var v = evaluateSelector(op['children'][0], properties);\n\n if (v === null) {\n return null;\n }\n\n switch (_typeof(v)) {\n case 'number':\n case 'string':\n var d = new Date(v);\n\n if (isNaN(d.getTime())) {\n return null;\n }\n\n return d;\n\n case 'object':\n if (_.isDate(v)) {\n return v;\n }\n\n }\n\n return null;\n}\n\nfunction evaluateList(op, properties) {\n if (!op['operator'] || op['operator'] !== LIST_OPERATOR || !op['children'] || op['children'].length !== 1) {\n throw 'Invalid cast operator: list ' + op;\n }\n\n var v = evaluateSelector(op['children'][0], properties);\n\n if (v === null) {\n return null;\n }\n\n if (_.isArray(v)) {\n return v;\n }\n\n return null;\n}\n\nfunction evaluateString(op, properties) {\n if (!op['operator'] || op['operator'] !== STRING_OPERATOR || !op['children'] || op['children'].length !== 1) {\n throw 'Invalid cast operator: string ' + op;\n }\n\n var v = evaluateSelector(op['children'][0], properties);\n\n switch (_typeof(v)) {\n case 'object':\n if (_.isDate(v)) {\n return v.toJSON();\n }\n\n return JSON.stringify(v);\n }\n\n return String(v);\n} // Operators\n\n\nfunction evaluateAnd(op, properties) {\n if (!op['operator'] || op['operator'] !== AND_OPERATOR || !op['children'] || op['children'].length !== 2) {\n throw 'Invalid operator: AND ' + op;\n }\n\n return toBoolean(evaluateSelector(op['children'][0], properties)) && toBoolean(evaluateSelector(op['children'][1], properties));\n}\n\nfunction evaluateOr(op, properties) {\n if (!op['operator'] || op['operator'] !== OR_OPERATOR || !op['children'] || op['children'].length !== 2) {\n throw 'Invalid operator: OR ' + op;\n }\n\n return toBoolean(evaluateSelector(op['children'][0], properties)) || toBoolean(evaluateSelector(op['children'][1], properties));\n}\n\nfunction evaluateIn(op, properties) {\n if (!op['operator'] || [IN_OPERATOR, NOT_IN_OPERATOR].indexOf(op['operator']) === -1 || !op['children'] || op['children'].length !== 2) {\n throw 'Invalid operator: IN/NOT IN ' + op;\n }\n\n var leftValue = evaluateSelector(op['children'][0], properties);\n var rightValue = evaluateSelector(op['children'][1], properties);\n\n if (!_.isArray(rightValue) && !_.isString(rightValue)) {\n throw 'Invalid operand for operator IN: invalid type' + rightValue;\n }\n\n var v = rightValue.indexOf(leftValue) > -1;\n\n if (op['operator'] === NOT_IN_OPERATOR) {\n return !v;\n }\n\n return v;\n}\n\nfunction evaluatePlus(op, properties) {\n if (!op['operator'] || op['operator'] !== PLUS_OPERATOR || !op['children'] || op['children'].length < 2) {\n throw 'Invalid operator: PLUS ' + op;\n }\n\n var l = evaluateSelector(op['children'][0], properties);\n var r = evaluateSelector(op['children'][1], properties);\n\n if (typeof l === 'number' && typeof r === 'number') {\n return l + r;\n }\n\n if (typeof l === 'string' && typeof r === 'string') {\n return l + r;\n }\n\n return null;\n}\n\nfunction evaluateArithmetic(op, properties) {\n if (!op['operator'] || [MINUS_OPERATOR, MUL_OPERATOR, DIV_OPERATOR, MOD_OPERATOR].indexOf(op['operator']) === -1 || !op['children'] || op['children'].length < 2) {\n throw 'Invalid arithmetic operator ' + op;\n }\n\n var l = evaluateSelector(op['children'][0], properties);\n var r = evaluateSelector(op['children'][1], properties);\n\n if (typeof l === 'number' && typeof r === 'number') {\n switch (op['operator']) {\n case MINUS_OPERATOR:\n return l - r;\n\n case MUL_OPERATOR:\n return l * r;\n\n case DIV_OPERATOR:\n if (r !== 0) {\n return l / r;\n }\n\n return null;\n\n case MOD_OPERATOR:\n if (r === 0) {\n return null;\n }\n\n if (l === 0) {\n return 0;\n }\n\n if (l < 0 && r > 0 || l > 0 && r < 0) {\n /* Mimic python modulo - result takes sign of the divisor\n * if one operand is negative. */\n return -(Math.floor(l / r) * r - l);\n }\n\n return l % r;\n\n default:\n throw 'Unknown operator: ' + op['operator'];\n }\n }\n\n return null;\n}\n\nfunction _isArrayEqual(l, r) {\n if (l === r) return true;\n if (l === null || r === null) return false;\n if (l.length !== r.length) return false;\n\n for (var i = 0; i < l.length; i++) {\n if (l[i] !== r[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction _isEqual(l, r) {\n if (l === null && l === r) {\n return true;\n }\n\n if (_typeof(l) === _typeof(r)) {\n switch (_typeof(l)) {\n case 'number':\n case 'string':\n case 'boolean':\n return l === r;\n\n case 'object':\n if (_.isArray(l) && _.isArray(r)) {\n return _isArrayEqual(l, r);\n }\n\n if (_.isDate(l) && _.isDate(r)) {\n return l.getTime() === r.getTime();\n }\n\n if (_.isObject(l) && _.isObject(r)) {\n return JSON.stringify(l) === JSON.stringify(r);\n }\n\n }\n }\n\n return false;\n}\n\nfunction evaluateEquality(op, properties) {\n if (!op['operator'] || [EQUALS_OPERATOR, NOT_EQUALS_OPERATOR].indexOf(op['operator']) === -1 || !op['children'] || op['children'].length !== 2) {\n throw 'Invalid equality operator ' + op;\n }\n\n var v = _isEqual(evaluateSelector(op['children'][0], properties), evaluateSelector(op['children'][1], properties));\n\n switch (op['operator']) {\n case EQUALS_OPERATOR:\n return v;\n\n case NOT_EQUALS_OPERATOR:\n return !v;\n }\n}\n\nfunction evaluateComparison(op, properties) {\n if (!op['operator'] || [GREATER_OPERATOR, GREATER_EQUAL_OPERATOR, LESS_OPERATOR, LESS_EQUAL_OPERATOR].indexOf(op['operator']) === -1 || !op['children'] || op['children'].length !== 2) {\n throw 'Invalid comparison operator ' + op;\n }\n\n var l = evaluateSelector(op['children'][0], properties);\n var r = evaluateSelector(op['children'][1], properties);\n\n if (_typeof(l) === _typeof(r)) {\n if (typeof r === 'number' || _.isDate(r)) {\n l = toNumber(l);\n r = toNumber(r);\n\n switch (op['operator']) {\n case GREATER_OPERATOR:\n return l > r;\n\n case GREATER_EQUAL_OPERATOR:\n return l >= r;\n\n case LESS_OPERATOR:\n return l < r;\n\n case LESS_EQUAL_OPERATOR:\n return l <= r;\n }\n } else if (typeof r === 'string') {\n var compare = l.localeCompare(r);\n\n switch (op['operator']) {\n case GREATER_OPERATOR:\n return compare > 0;\n\n case GREATER_EQUAL_OPERATOR:\n return compare >= 0;\n\n case LESS_OPERATOR:\n return compare < 0;\n\n case LESS_EQUAL_OPERATOR:\n return compare <= 0;\n }\n }\n }\n\n return null;\n}\n\nfunction evaluateDefined(op, properties) {\n if (!op['operator'] || [DEFINED_OPERATOR, NOT_DEFINED_OPERATOR].indexOf(op['operator']) === -1 || !op['children'] || op['children'].length !== 1) {\n throw 'Invalid defined/not defined operator: ' + op;\n }\n\n var b = evaluateSelector(op['children'][0], properties) !== null;\n\n if (op['operator'] === NOT_DEFINED_OPERATOR) {\n return !b;\n }\n\n return b;\n}\n\nfunction evaluateNot(op, properties) {\n if (!op['operator'] || op['operator'] !== NOT_OPERATOR || !op['children'] || op['children'].length !== 1) {\n throw 'Invalid not operator: ' + op;\n }\n\n var v = evaluateSelector(op['children'][0], properties);\n\n if (v === null) {\n return true;\n }\n\n if (typeof v === 'boolean') {\n return !v;\n }\n\n return null;\n}\n\nfunction evaluateOperator(op, properties) {\n if (!op['operator']) {\n throw 'Invalid operator: operator key missing ' + op;\n }\n\n switch (op['operator']) {\n case AND_OPERATOR:\n return evaluateAnd(op, properties);\n\n case OR_OPERATOR:\n return evaluateOr(op, properties);\n\n case IN_OPERATOR:\n case NOT_IN_OPERATOR:\n return evaluateIn(op, properties);\n\n case PLUS_OPERATOR:\n return evaluatePlus(op, properties);\n\n case MINUS_OPERATOR:\n case MUL_OPERATOR:\n case DIV_OPERATOR:\n case MOD_OPERATOR:\n return evaluateArithmetic(op, properties);\n\n case EQUALS_OPERATOR:\n case NOT_EQUALS_OPERATOR:\n return evaluateEquality(op, properties);\n\n case GREATER_OPERATOR:\n case LESS_OPERATOR:\n case GREATER_EQUAL_OPERATOR:\n case LESS_EQUAL_OPERATOR:\n return evaluateComparison(op, properties);\n\n case BOOLEAN_OPERATOR:\n return evaluateBoolean(op, properties);\n\n case DATETIME_OPERATOR:\n return evaluateDateTime(op, properties);\n\n case LIST_OPERATOR:\n return evaluateList(op, properties);\n\n case NUMBER_OPERATOR:\n return evaluateNumber(op, properties);\n\n case STRING_OPERATOR:\n return evaluateString(op, properties);\n\n case DEFINED_OPERATOR:\n case NOT_DEFINED_OPERATOR:\n return evaluateDefined(op, properties);\n\n case NOT_OPERATOR:\n return evaluateNot(op, properties);\n }\n}\n\nfunction evaluateWindow(value) {\n var win = value[WINDOW_KEY];\n\n if (!win || !win[UNIT_KEY] || !win[VALUE_KEY]) {\n throw 'Invalid window: missing required keys ' + JSON.stringify(value);\n }\n\n var out = new Date();\n\n switch (win[UNIT_KEY]) {\n case HOUR_KEY:\n out.setTime(out.getTime() + win[VALUE_KEY] * -1 * 60 * 60 * 1000);\n break;\n\n case DAY_KEY:\n out.setTime(out.getTime() + win[VALUE_KEY] * -1 * 24 * 60 * 60 * 1000);\n break;\n\n case WEEK_KEY:\n out.setTime(out.getTime() + win[VALUE_KEY] * -1 * 7 * 24 * 60 * 60 * 1000);\n break;\n\n case MONTH_KEY:\n out.setTime(out.getTime() + win[VALUE_KEY] * -1 * 30 * 24 * 60 * 60 * 1000);\n break;\n\n default:\n throw 'Invalid unit: ' + win[UNIT_KEY];\n }\n\n return out;\n}\n\nfunction evaluateOperand(op, properties) {\n if (!op['property'] || !op['value']) {\n throw 'Invalid operand: missing required keys ' + op;\n }\n\n switch (op['property']) {\n case EVENT_PROPERTY:\n if (properties[op['value']] !== undefined) {\n return properties[op['value']];\n }\n\n return null;\n\n case LITERAL_PROPERTY:\n if (op['value'] === NOW_LITERAL) {\n return new Date();\n }\n\n if (_typeof(op['value']) === 'object') {\n return evaluateWindow(op['value']);\n }\n\n return op['value'];\n\n default:\n throw 'Invalid operand: Invalid property type ' + op['property'];\n }\n}\n\nfunction evaluateSelector(filters, properties) {\n if (filters[PROPERTY_KEY]) {\n return evaluateOperand(filters, properties);\n }\n\n if (filters[OPERATOR_KEY]) {\n return evaluateOperator(filters, properties);\n }\n} // Internal class for notification display\n\n\nvar MixpanelNotification = function MixpanelNotification(notif_data, mixpanel_instance) {\n _.bind_instance_methods(this);\n\n this.mixpanel = mixpanel_instance;\n this.persistence = this.mixpanel['persistence'];\n this.resource_protocol = this.mixpanel.get_config('inapp_protocol');\n this.cdn_host = this.mixpanel.get_config('cdn');\n this.campaign_id = _.escapeHTML(notif_data['id']);\n this.message_id = _.escapeHTML(notif_data['message_id']);\n this.body = (_.escapeHTML(notif_data['body']) || '').replace(/\\n/g, '
    ');\n this.cta = _.escapeHTML(notif_data['cta']) || 'Close';\n this.notif_type = _.escapeHTML(notif_data['type']) || 'takeover';\n this.style = _.escapeHTML(notif_data['style']) || 'light';\n this.title = _.escapeHTML(notif_data['title']) || '';\n this.video_width = MixpanelNotification.VIDEO_WIDTH;\n this.video_height = MixpanelNotification.VIDEO_HEIGHT;\n this.display_triggers = notif_data['display_triggers'] || []; // These fields are url-sanitized in the backend already.\n\n this.dest_url = notif_data['cta_url'] || null;\n this.image_url = notif_data['image_url'] || null;\n this.thumb_image_url = notif_data['thumb_image_url'] || null;\n this.video_url = notif_data['video_url'] || null;\n\n if (this.thumb_image_url && this.thumb_image_url.indexOf('//') === 0) {\n this.thumb_image_url = this.thumb_image_url.replace('//', this.resource_protocol);\n }\n\n this.clickthrough = true;\n\n if (!this.dest_url) {\n this.dest_url = '#dismiss';\n this.clickthrough = false;\n }\n\n this.mini = this.notif_type === 'mini';\n\n if (!this.mini) {\n this.notif_type = 'takeover';\n }\n\n this.notif_width = !this.mini ? MixpanelNotification.NOTIF_WIDTH : MixpanelNotification.NOTIF_WIDTH_MINI;\n\n this._set_client_config();\n\n this.imgs_to_preload = this._init_image_html();\n\n this._init_video();\n};\n\nMixpanelNotification.ANIM_TIME = 200;\nMixpanelNotification.MARKUP_PREFIX = 'mixpanel-notification';\nMixpanelNotification.BG_OPACITY = 0.6;\nMixpanelNotification.NOTIF_TOP = 25;\nMixpanelNotification.NOTIF_START_TOP = 200;\nMixpanelNotification.NOTIF_WIDTH = 388;\nMixpanelNotification.NOTIF_WIDTH_MINI = 420;\nMixpanelNotification.NOTIF_HEIGHT_MINI = 85;\nMixpanelNotification.THUMB_BORDER_SIZE = 5;\nMixpanelNotification.THUMB_IMG_SIZE = 60;\nMixpanelNotification.THUMB_OFFSET = Math.round(MixpanelNotification.THUMB_IMG_SIZE / 2);\nMixpanelNotification.VIDEO_WIDTH = 595;\nMixpanelNotification.VIDEO_HEIGHT = 334;\n\nMixpanelNotification.prototype.show = function () {\n var self = this;\n\n this._set_client_config(); // don't display until HTML body exists\n\n\n if (!this.body_el) {\n setTimeout(function () {\n self.show();\n }, 300);\n return;\n }\n\n this._init_styles();\n\n this._init_notification_el(); // wait for any images to load before showing notification\n\n\n this._preload_images(this._attach_and_animate);\n};\n\nMixpanelNotification.prototype.dismiss = _.safewrap(function () {\n if (!this.marked_as_shown) {\n // unexpected condition: user interacted with notif even though we didn't consider it\n // visible (see _mark_as_shown()); send tracking signals to mark delivery\n this._mark_delivery({\n 'invisible': true\n });\n }\n\n var exiting_el = this.showing_video ? this._get_el('video') : this._get_notification_display_el();\n\n if (this.use_transitions) {\n this._remove_class('bg', 'visible');\n\n this._add_class(exiting_el, 'exiting');\n\n setTimeout(this._remove_notification_el, MixpanelNotification.ANIM_TIME);\n } else {\n var notif_attr, notif_start, notif_goal;\n\n if (this.mini) {\n notif_attr = 'right';\n notif_start = 20;\n notif_goal = -100;\n } else {\n notif_attr = 'top';\n notif_start = MixpanelNotification.NOTIF_TOP;\n notif_goal = MixpanelNotification.NOTIF_START_TOP + MixpanelNotification.NOTIF_TOP;\n }\n\n this._animate_els([{\n el: this._get_el('bg'),\n attr: 'opacity',\n start: MixpanelNotification.BG_OPACITY,\n goal: 0.0\n }, {\n el: exiting_el,\n attr: 'opacity',\n start: 1.0,\n goal: 0.0\n }, {\n el: exiting_el,\n attr: notif_attr,\n start: notif_start,\n goal: notif_goal\n }], MixpanelNotification.ANIM_TIME, this._remove_notification_el);\n }\n});\nMixpanelNotification.prototype._add_class = _.safewrap(function (el, class_name) {\n class_name = MixpanelNotification.MARKUP_PREFIX + '-' + class_name;\n\n if (typeof el === 'string') {\n el = this._get_el(el);\n }\n\n if (!el.className) {\n el.className = class_name;\n } else if (!~(' ' + el.className + ' ').indexOf(' ' + class_name + ' ')) {\n el.className += ' ' + class_name;\n }\n});\nMixpanelNotification.prototype._remove_class = _.safewrap(function (el, class_name) {\n class_name = MixpanelNotification.MARKUP_PREFIX + '-' + class_name;\n\n if (typeof el === 'string') {\n el = this._get_el(el);\n }\n\n if (el.className) {\n el.className = (' ' + el.className + ' ').replace(' ' + class_name + ' ', '').replace(/^[\\s\\xA0]+/, '').replace(/[\\s\\xA0]+$/, '');\n }\n});\nMixpanelNotification.prototype._animate_els = _.safewrap(function (anims, mss, done_cb, start_time) {\n var self = this,\n in_progress = false,\n ai,\n anim,\n cur_time = 1 * new Date(),\n time_diff;\n start_time = start_time || cur_time;\n time_diff = cur_time - start_time;\n\n for (ai = 0; ai < anims.length; ai++) {\n anim = anims[ai];\n\n if (typeof anim.val === 'undefined') {\n anim.val = anim.start;\n }\n\n if (anim.val !== anim.goal) {\n in_progress = true;\n var anim_diff = anim.goal - anim.start,\n anim_dir = anim.goal >= anim.start ? 1 : -1;\n anim.val = anim.start + anim_diff * time_diff / mss;\n\n if (anim.attr !== 'opacity') {\n anim.val = Math.round(anim.val);\n }\n\n if (anim_dir > 0 && anim.val >= anim.goal || anim_dir < 0 && anim.val <= anim.goal) {\n anim.val = anim.goal;\n }\n }\n }\n\n if (!in_progress) {\n if (done_cb) {\n done_cb();\n }\n\n return;\n }\n\n for (ai = 0; ai < anims.length; ai++) {\n anim = anims[ai];\n\n if (anim.el) {\n var suffix = anim.attr === 'opacity' ? '' : 'px';\n anim.el.style[anim.attr] = String(anim.val) + suffix;\n }\n }\n\n setTimeout(function () {\n self._animate_els(anims, mss, done_cb, start_time);\n }, 10);\n});\nMixpanelNotification.prototype._attach_and_animate = _.safewrap(function () {\n var self = this; // no possibility to double-display\n\n if (this.shown || this._get_shown_campaigns()[this.campaign_id]) {\n return;\n }\n\n this.shown = true;\n this.body_el.appendChild(this.notification_el);\n setTimeout(function () {\n var notif_el = self._get_notification_display_el();\n\n if (self.use_transitions) {\n if (!self.mini) {\n self._add_class('bg', 'visible');\n }\n\n self._add_class(notif_el, 'visible');\n\n self._mark_as_shown();\n } else {\n var notif_attr, notif_start, notif_goal;\n\n if (self.mini) {\n notif_attr = 'right';\n notif_start = -100;\n notif_goal = 20;\n } else {\n notif_attr = 'top';\n notif_start = MixpanelNotification.NOTIF_START_TOP + MixpanelNotification.NOTIF_TOP;\n notif_goal = MixpanelNotification.NOTIF_TOP;\n }\n\n self._animate_els([{\n el: self._get_el('bg'),\n attr: 'opacity',\n start: 0.0,\n goal: MixpanelNotification.BG_OPACITY\n }, {\n el: notif_el,\n attr: 'opacity',\n start: 0.0,\n goal: 1.0\n }, {\n el: notif_el,\n attr: notif_attr,\n start: notif_start,\n goal: notif_goal\n }], MixpanelNotification.ANIM_TIME, self._mark_as_shown);\n }\n }, 100);\n\n _.register_event(self._get_el('cancel'), 'click', function (e) {\n e.preventDefault();\n self.dismiss();\n });\n\n var click_el = self._get_el('button') || self._get_el('mini-content');\n\n _.register_event(click_el, 'click', function (e) {\n e.preventDefault();\n\n if (self.show_video) {\n self._track_event('$campaign_open', {\n '$resource_type': 'video'\n });\n\n self._switch_to_video();\n } else {\n self.dismiss();\n\n if (self.clickthrough) {\n var tracking_cb = null;\n\n if (self.mixpanel.get_config('inapp_link_new_window')) {\n window.open(self.dest_url);\n } else {\n tracking_cb = function tracking_cb() {\n window.location.href = self.dest_url;\n };\n }\n\n self._track_event('$campaign_open', {\n '$resource_type': 'link'\n }, tracking_cb);\n }\n }\n });\n});\n\nMixpanelNotification.prototype._get_el = function (id) {\n return document.getElementById(MixpanelNotification.MARKUP_PREFIX + '-' + id);\n};\n\nMixpanelNotification.prototype._get_notification_display_el = function () {\n return this._get_el(this.notif_type);\n};\n\nMixpanelNotification.prototype._get_shown_campaigns = function () {\n return this.persistence['props'][CAMPAIGN_IDS_KEY] || (this.persistence['props'][CAMPAIGN_IDS_KEY] = {});\n};\n\nMixpanelNotification.prototype._matches_event_data = _.safewrap(function (event_data) {\n var event_name = event_data['event'] || '';\n\n for (var i = 0; i < this.display_triggers.length; i++) {\n var display_trigger = this.display_triggers[i];\n var match_event = display_trigger['event'] || '';\n\n if (match_event === '$any_event' || event_name === display_trigger['event']) {\n if (display_trigger['selector'] && !_.isEmptyObject(display_trigger['selector'])) {\n if (evaluateSelector(display_trigger['selector'], event_data['properties'])) {\n return true;\n }\n } else {\n return true;\n }\n }\n }\n\n return false;\n});\n\nMixpanelNotification.prototype._browser_lte = function (browser, version) {\n return this.browser_versions[browser] && this.browser_versions[browser] <= version;\n};\n\nMixpanelNotification.prototype._init_image_html = function () {\n var imgs_to_preload = [];\n\n if (!this.mini) {\n if (this.image_url) {\n imgs_to_preload.push(this.image_url);\n this.img_html = '';\n } else {\n this.img_html = '';\n }\n\n if (this.thumb_image_url) {\n imgs_to_preload.push(this.thumb_image_url);\n this.thumb_img_html = '
    ' + '' + '
    ';\n } else {\n this.thumb_img_html = '';\n }\n } else {\n this.thumb_image_url = this.thumb_image_url || this.cdn_host + '/site_media/images/icons/notifications/mini-news-dark.png';\n imgs_to_preload.push(this.thumb_image_url);\n }\n\n return imgs_to_preload;\n};\n\nMixpanelNotification.prototype._init_notification_el = function () {\n var notification_html = '';\n var video_src = '';\n var video_html = '';\n var cancel_html = '
    ' + '
    ' + '
    ';\n this.notification_el = document.createElement('div');\n this.notification_el.id = MixpanelNotification.MARKUP_PREFIX + '-wrapper';\n\n if (!this.mini) {\n // TAKEOVER notification\n var close_html = this.clickthrough || this.show_video ? '' : '
    ',\n play_html = this.show_video ? '
    ' : '';\n\n if (this._browser_lte('ie', 7)) {\n close_html = '';\n play_html = '';\n }\n\n notification_html = '
    ' + this.thumb_img_html + '
    ' + cancel_html + '
    ' + this.img_html + '
    ' + this.title + '
    ' + '
    ' + this.body + '
    ' + '' + '
    ' + '
    ' + close_html + '' + this.cta + '' + play_html + '
    ' + '
    ' + '
    ';\n } else {\n // MINI notification\n notification_html = '
    ' + '
    ' + cancel_html + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + this.body + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ';\n }\n\n if (this.youtube_video) {\n video_src = this.resource_protocol + 'www.youtube.com/embed/' + this.youtube_video + '?wmode=transparent&showinfo=0&modestbranding=0&rel=0&autoplay=1&loop=0&vq=hd1080';\n\n if (this.yt_custom) {\n video_src += '&enablejsapi=1&html5=1&controls=0';\n video_html = '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ';\n }\n } else if (this.vimeo_video) {\n video_src = this.resource_protocol + 'player.vimeo.com/video/' + this.vimeo_video + '?autoplay=1&title=0&byline=0&portrait=0';\n }\n\n if (this.show_video) {\n this.video_iframe = '';\n video_html = '
    ' + '
    ' + '
    ' + video_html + '
    ' + '
    ';\n }\n\n var main_html = video_html + notification_html;\n\n if (this.flip_animate) {\n main_html = (this.mini ? notification_html : '') + '
    ' + (this.mini ? video_html : main_html) + '
    ';\n }\n\n this.notification_el.innerHTML = ('
    ' + '
    ' + '
    ' + '
    ' + main_html + '
    ' + '
    ' + '
    ').replace(/class=\"/g, 'class=\"' + MixpanelNotification.MARKUP_PREFIX + '-').replace(/id=\"/g, 'id=\"' + MixpanelNotification.MARKUP_PREFIX + '-');\n};\n\nMixpanelNotification.prototype._init_styles = function () {\n if (this.style === 'dark') {\n this.style_vals = {\n bg: '#1d1f25',\n bg_actions: '#282b32',\n bg_hover: '#3a4147',\n bg_light: '#4a5157',\n border_gray: '#32353c',\n cancel_opacity: '0.4',\n mini_hover: '#2a3137',\n text_title: '#fff',\n text_main: '#9498a3',\n text_tagline: '#464851',\n text_hover: '#ddd'\n };\n } else {\n this.style_vals = {\n bg: '#fff',\n bg_actions: '#e7eaee',\n bg_hover: '#eceff3',\n bg_light: '#f5f5f5',\n border_gray: '#e4ecf2',\n cancel_opacity: '1.0',\n mini_hover: '#fafafa',\n text_title: '#5c6578',\n text_main: '#8b949b',\n text_tagline: '#ced9e6',\n text_hover: '#7c8598'\n };\n }\n\n var shadow = '0px 0px 35px 0px rgba(45, 49, 56, 0.7)',\n video_shadow = shadow,\n mini_shadow = shadow,\n thumb_total_size = MixpanelNotification.THUMB_IMG_SIZE + MixpanelNotification.THUMB_BORDER_SIZE * 2,\n anim_seconds = MixpanelNotification.ANIM_TIME / 1000 + 's';\n\n if (this.mini) {\n shadow = 'none';\n } // don't display on small viewports\n\n\n var notif_media_queries = {},\n min_width = MixpanelNotification.NOTIF_WIDTH_MINI + 20;\n notif_media_queries['@media only screen and (max-width: ' + (min_width - 1) + 'px)'] = {\n '#overlay': {\n 'display': 'none'\n }\n };\n var notif_styles = {\n '.flipped': {\n 'transform': 'rotateY(180deg)'\n },\n '#overlay': {\n 'position': 'fixed',\n 'top': '0',\n 'left': '0',\n 'width': '100%',\n 'height': '100%',\n 'overflow': 'auto',\n 'text-align': 'center',\n 'z-index': '10000',\n 'font-family': '\"Helvetica\", \"Arial\", sans-serif',\n '-webkit-font-smoothing': 'antialiased',\n '-moz-osx-font-smoothing': 'grayscale'\n },\n '#overlay.mini': {\n 'height': '0',\n 'overflow': 'visible'\n },\n '#overlay a': {\n 'width': 'initial',\n 'padding': '0',\n 'text-decoration': 'none',\n 'text-transform': 'none',\n 'color': 'inherit'\n },\n '#bgwrapper': {\n 'position': 'relative',\n 'width': '100%',\n 'height': '100%'\n },\n '#bg': {\n 'position': 'fixed',\n 'top': '0',\n 'left': '0',\n 'width': '100%',\n 'height': '100%',\n 'min-width': this.doc_width * 4 + 'px',\n 'min-height': this.doc_height * 4 + 'px',\n 'background-color': 'black',\n 'opacity': '0.0',\n '-ms-filter': 'progid:DXImageTransform.Microsoft.Alpha(Opacity=60)',\n // IE8\n 'filter': 'alpha(opacity=60)',\n // IE5-7\n 'transition': 'opacity ' + anim_seconds\n },\n '#bg.visible': {\n 'opacity': MixpanelNotification.BG_OPACITY\n },\n '.mini #bg': {\n 'width': '0',\n 'height': '0',\n 'min-width': '0'\n },\n '#flipcontainer': {\n 'perspective': '1000px',\n 'position': 'absolute',\n 'width': '100%'\n },\n '#flipper': {\n 'position': 'relative',\n 'transform-style': 'preserve-3d',\n 'transition': '0.3s'\n },\n '#takeover': {\n 'position': 'absolute',\n 'left': '50%',\n 'width': MixpanelNotification.NOTIF_WIDTH + 'px',\n 'margin-left': Math.round(-MixpanelNotification.NOTIF_WIDTH / 2) + 'px',\n 'backface-visibility': 'hidden',\n 'transform': 'rotateY(0deg)',\n 'opacity': '0.0',\n 'top': MixpanelNotification.NOTIF_START_TOP + 'px',\n 'transition': 'opacity ' + anim_seconds + ', top ' + anim_seconds\n },\n '#takeover.visible': {\n 'opacity': '1.0',\n 'top': MixpanelNotification.NOTIF_TOP + 'px'\n },\n '#takeover.exiting': {\n 'opacity': '0.0',\n 'top': MixpanelNotification.NOTIF_START_TOP + 'px'\n },\n '#thumbspacer': {\n 'height': MixpanelNotification.THUMB_OFFSET + 'px'\n },\n '#thumbborder-wrapper': {\n 'position': 'absolute',\n 'top': -MixpanelNotification.THUMB_BORDER_SIZE + 'px',\n 'left': MixpanelNotification.NOTIF_WIDTH / 2 - MixpanelNotification.THUMB_OFFSET - MixpanelNotification.THUMB_BORDER_SIZE + 'px',\n 'width': thumb_total_size + 'px',\n 'height': thumb_total_size / 2 + 'px',\n 'overflow': 'hidden'\n },\n '#thumbborder': {\n 'position': 'absolute',\n 'width': thumb_total_size + 'px',\n 'height': thumb_total_size + 'px',\n 'border-radius': thumb_total_size + 'px',\n 'background-color': this.style_vals.bg_actions,\n 'opacity': '0.5'\n },\n '#thumbnail': {\n 'position': 'absolute',\n 'top': '0px',\n 'left': MixpanelNotification.NOTIF_WIDTH / 2 - MixpanelNotification.THUMB_OFFSET + 'px',\n 'width': MixpanelNotification.THUMB_IMG_SIZE + 'px',\n 'height': MixpanelNotification.THUMB_IMG_SIZE + 'px',\n 'overflow': 'hidden',\n 'z-index': '100',\n 'border-radius': MixpanelNotification.THUMB_IMG_SIZE + 'px'\n },\n '#mini': {\n 'position': 'absolute',\n 'right': '20px',\n 'top': MixpanelNotification.NOTIF_TOP + 'px',\n 'width': this.notif_width + 'px',\n 'height': MixpanelNotification.NOTIF_HEIGHT_MINI * 2 + 'px',\n 'margin-top': 20 - MixpanelNotification.NOTIF_HEIGHT_MINI + 'px',\n 'backface-visibility': 'hidden',\n 'opacity': '0.0',\n 'transform': 'rotateX(90deg)',\n 'transition': 'opacity 0.3s, transform 0.3s, right 0.3s'\n },\n '#mini.visible': {\n 'opacity': '1.0',\n 'transform': 'rotateX(0deg)'\n },\n '#mini.exiting': {\n 'opacity': '0.0',\n 'right': '-150px'\n },\n '#mainbox': {\n 'border-radius': '4px',\n 'box-shadow': shadow,\n 'text-align': 'center',\n 'background-color': this.style_vals.bg,\n 'font-size': '14px',\n 'color': this.style_vals.text_main\n },\n '#mini #mainbox': {\n 'height': MixpanelNotification.NOTIF_HEIGHT_MINI + 'px',\n 'margin-top': MixpanelNotification.NOTIF_HEIGHT_MINI + 'px',\n 'border-radius': '3px',\n 'transition': 'background-color ' + anim_seconds\n },\n '#mini-border': {\n 'height': MixpanelNotification.NOTIF_HEIGHT_MINI + 6 + 'px',\n 'width': MixpanelNotification.NOTIF_WIDTH_MINI + 6 + 'px',\n 'position': 'absolute',\n 'top': '-3px',\n 'left': '-3px',\n 'margin-top': MixpanelNotification.NOTIF_HEIGHT_MINI + 'px',\n 'border-radius': '6px',\n 'opacity': '0.25',\n 'background-color': '#fff',\n 'z-index': '-1',\n 'box-shadow': mini_shadow\n },\n '#mini-icon': {\n 'position': 'relative',\n 'display': 'inline-block',\n 'width': '75px',\n 'height': MixpanelNotification.NOTIF_HEIGHT_MINI + 'px',\n 'border-radius': '3px 0 0 3px',\n 'background-color': this.style_vals.bg_actions,\n 'background': 'linear-gradient(135deg, ' + this.style_vals.bg_light + ' 0%, ' + this.style_vals.bg_actions + ' 100%)',\n 'transition': 'background-color ' + anim_seconds\n },\n '#mini:hover #mini-icon': {\n 'background-color': this.style_vals.mini_hover\n },\n '#mini:hover #mainbox': {\n 'background-color': this.style_vals.mini_hover\n },\n '#mini-icon-img': {\n 'position': 'absolute',\n 'background-image': 'url(' + this.thumb_image_url + ')',\n 'width': '48px',\n 'height': '48px',\n 'top': '20px',\n 'left': '12px'\n },\n '#content': {\n 'padding': '30px 20px 0px 20px'\n },\n '#mini-content': {\n 'text-align': 'left',\n 'height': MixpanelNotification.NOTIF_HEIGHT_MINI + 'px',\n 'cursor': 'pointer'\n },\n '#img': {\n 'width': '328px',\n 'margin-top': '30px',\n 'border-radius': '5px'\n },\n '#title': {\n 'max-height': '600px',\n 'overflow': 'hidden',\n 'word-wrap': 'break-word',\n 'padding': '25px 0px 20px 0px',\n 'font-size': '19px',\n 'font-weight': 'bold',\n 'color': this.style_vals.text_title\n },\n '#body': {\n 'max-height': '600px',\n 'margin-bottom': '25px',\n 'overflow': 'hidden',\n 'word-wrap': 'break-word',\n 'line-height': '21px',\n 'font-size': '15px',\n 'font-weight': 'normal',\n 'text-align': 'left'\n },\n '#mini #body': {\n 'display': 'inline-block',\n 'max-width': '250px',\n 'margin': '0 0 0 30px',\n 'height': MixpanelNotification.NOTIF_HEIGHT_MINI + 'px',\n 'font-size': '16px',\n 'letter-spacing': '0.8px',\n 'color': this.style_vals.text_title\n },\n '#mini #body-text': {\n 'display': 'table',\n 'height': MixpanelNotification.NOTIF_HEIGHT_MINI + 'px'\n },\n '#mini #body-text div': {\n 'display': 'table-cell',\n 'vertical-align': 'middle'\n },\n '#tagline': {\n 'margin-bottom': '15px',\n 'font-size': '10px',\n 'font-weight': '600',\n 'letter-spacing': '0.8px',\n 'color': '#ccd7e0',\n 'text-align': 'left'\n },\n '#tagline a': {\n 'color': this.style_vals.text_tagline,\n 'transition': 'color ' + anim_seconds\n },\n '#tagline a:hover': {\n 'color': this.style_vals.text_hover\n },\n '#cancel': {\n 'position': 'absolute',\n 'right': '0',\n 'width': '8px',\n 'height': '8px',\n 'padding': '10px',\n 'border-radius': '20px',\n 'margin': '12px 12px 0 0',\n 'box-sizing': 'content-box',\n 'cursor': 'pointer',\n 'transition': 'background-color ' + anim_seconds\n },\n '#mini #cancel': {\n 'margin': '7px 7px 0 0'\n },\n '#cancel-icon': {\n 'width': '8px',\n 'height': '8px',\n 'overflow': 'hidden',\n 'background-image': 'url(' + this.cdn_host + '/site_media/images/icons/notifications/cancel-x.png)',\n 'opacity': this.style_vals.cancel_opacity\n },\n '#cancel:hover': {\n 'background-color': this.style_vals.bg_hover\n },\n '#button': {\n 'display': 'block',\n 'height': '60px',\n 'line-height': '60px',\n 'text-align': 'center',\n 'background-color': this.style_vals.bg_actions,\n 'border-radius': '0 0 4px 4px',\n 'overflow': 'hidden',\n 'cursor': 'pointer',\n 'transition': 'background-color ' + anim_seconds\n },\n '#button-close': {\n 'display': 'inline-block',\n 'width': '9px',\n 'height': '60px',\n 'margin-right': '8px',\n 'vertical-align': 'top',\n 'background-image': 'url(' + this.cdn_host + '/site_media/images/icons/notifications/close-x-' + this.style + '.png)',\n 'background-repeat': 'no-repeat',\n 'background-position': '0px 25px'\n },\n '#button-play': {\n 'display': 'inline-block',\n 'width': '30px',\n 'height': '60px',\n 'margin-left': '15px',\n 'background-image': 'url(' + this.cdn_host + '/site_media/images/icons/notifications/play-' + this.style + '-small.png)',\n 'background-repeat': 'no-repeat',\n 'background-position': '0px 15px'\n },\n 'a#button-link': {\n 'display': 'inline-block',\n 'vertical-align': 'top',\n 'text-align': 'center',\n 'font-size': '17px',\n 'font-weight': 'bold',\n 'overflow': 'hidden',\n 'word-wrap': 'break-word',\n 'color': this.style_vals.text_title,\n 'transition': 'color ' + anim_seconds\n },\n '#button:hover': {\n 'background-color': this.style_vals.bg_hover,\n 'color': this.style_vals.text_hover\n },\n '#button:hover a': {\n 'color': this.style_vals.text_hover\n },\n '#video-noflip': {\n 'position': 'relative',\n 'top': -this.video_height * 2 + 'px'\n },\n '#video-flip': {\n 'backface-visibility': 'hidden',\n 'transform': 'rotateY(180deg)'\n },\n '#video': {\n 'position': 'absolute',\n 'width': this.video_width - 1 + 'px',\n 'height': this.video_height + 'px',\n 'top': MixpanelNotification.NOTIF_TOP + 'px',\n 'margin-top': '100px',\n 'left': '50%',\n 'margin-left': Math.round(-this.video_width / 2) + 'px',\n 'overflow': 'hidden',\n 'border-radius': '5px',\n 'box-shadow': video_shadow,\n 'transform': 'translateZ(1px)',\n // webkit rendering bug http://stackoverflow.com/questions/18167981/clickable-link-area-unexpectedly-smaller-after-css-transform\n 'transition': 'opacity ' + anim_seconds + ', top ' + anim_seconds\n },\n '#video.exiting': {\n 'opacity': '0.0',\n 'top': this.video_height + 'px'\n },\n '#video-holder': {\n 'position': 'absolute',\n 'width': this.video_width - 1 + 'px',\n 'height': this.video_height + 'px',\n 'overflow': 'hidden',\n 'border-radius': '5px'\n },\n '#video-frame': {\n 'margin-left': '-1px',\n 'width': this.video_width + 'px'\n },\n '#video-controls': {\n 'opacity': '0',\n 'transition': 'opacity 0.5s'\n },\n '#video:hover #video-controls': {\n 'opacity': '1.0'\n },\n '#video .video-progress-el': {\n 'position': 'absolute',\n 'bottom': '0',\n 'height': '25px',\n 'border-radius': '0 0 0 5px'\n },\n '#video-progress': {\n 'width': '90%'\n },\n '#video-progress-total': {\n 'width': '100%',\n 'background-color': this.style_vals.bg,\n 'opacity': '0.7'\n },\n '#video-elapsed': {\n 'width': '0',\n 'background-color': '#6cb6f5',\n 'opacity': '0.9'\n },\n '#video #video-time': {\n 'width': '10%',\n 'right': '0',\n 'font-size': '11px',\n 'line-height': '25px',\n 'color': this.style_vals.text_main,\n 'background-color': '#666',\n 'border-radius': '0 0 5px 0'\n }\n }; // IE hacks\n\n if (this._browser_lte('ie', 8)) {\n _.extend(notif_styles, {\n '* html #overlay': {\n 'position': 'absolute'\n },\n '* html #bg': {\n 'position': 'absolute'\n },\n 'html, body': {\n 'height': '100%'\n }\n });\n }\n\n if (this._browser_lte('ie', 7)) {\n _.extend(notif_styles, {\n '#mini #body': {\n 'display': 'inline',\n 'zoom': '1',\n 'border': '1px solid ' + this.style_vals.bg_hover\n },\n '#mini #body-text': {\n 'padding': '20px'\n },\n '#mini #mini-icon': {\n 'display': 'none'\n }\n });\n } // add vendor-prefixed style rules\n\n\n var VENDOR_STYLES = ['backface-visibility', 'border-radius', 'box-shadow', 'opacity', 'perspective', 'transform', 'transform-style', 'transition'],\n VENDOR_PREFIXES = ['khtml', 'moz', 'ms', 'o', 'webkit'];\n\n for (var selector in notif_styles) {\n for (var si = 0; si < VENDOR_STYLES.length; si++) {\n var prop = VENDOR_STYLES[si];\n\n if (prop in notif_styles[selector]) {\n var val = notif_styles[selector][prop];\n\n for (var pi = 0; pi < VENDOR_PREFIXES.length; pi++) {\n notif_styles[selector]['-' + VENDOR_PREFIXES[pi] + '-' + prop] = val;\n }\n }\n }\n }\n\n var inject_styles = function inject_styles(styles, media_queries) {\n var create_style_text = function create_style_text(style_defs) {\n var st = '';\n\n for (var selector in style_defs) {\n var mp_selector = selector.replace(/#/g, '#' + MixpanelNotification.MARKUP_PREFIX + '-').replace(/\\./g, '.' + MixpanelNotification.MARKUP_PREFIX + '-');\n st += '\\n' + mp_selector + ' {';\n var props = style_defs[selector];\n\n for (var k in props) {\n st += k + ':' + props[k] + ';';\n }\n\n st += '}';\n }\n\n return st;\n };\n\n var create_media_query_text = function create_media_query_text(mq_defs) {\n var mqt = '';\n\n for (var mq in mq_defs) {\n mqt += '\\n' + mq + ' {' + create_style_text(mq_defs[mq]) + '\\n}';\n }\n\n return mqt;\n };\n\n var style_text = create_style_text(styles) + create_media_query_text(media_queries),\n head_el = document.head || document.getElementsByTagName('head')[0] || document.documentElement,\n style_el = document.createElement('style');\n head_el.appendChild(style_el);\n style_el.setAttribute('type', 'text/css');\n\n if (style_el.styleSheet) {\n // IE\n style_el.styleSheet.cssText = style_text;\n } else {\n style_el.textContent = style_text;\n }\n };\n\n inject_styles(notif_styles, notif_media_queries);\n};\n\nMixpanelNotification.prototype._init_video = _.safewrap(function () {\n if (!this.video_url) {\n return;\n }\n\n var self = this; // Youtube iframe API compatibility\n\n self.yt_custom = 'postMessage' in window;\n self.dest_url = self.video_url;\n var youtube_match = self.video_url.match( // http://stackoverflow.com/questions/2936467/parse-youtube-video-id-using-preg-match\n /(?:youtube(?:-nocookie)?\\.com\\/(?:[^/]+\\/.+\\/|(?:v|e(?:mbed)?)\\/|.*[?&]v=)|youtu\\.be\\/)([^\"&?/ ]{11})/i),\n vimeo_match = self.video_url.match(/vimeo\\.com\\/.*?(\\d+)/i);\n\n if (youtube_match) {\n self.show_video = true;\n self.youtube_video = youtube_match[1];\n\n if (self.yt_custom) {\n window['onYouTubeIframeAPIReady'] = function () {\n if (self._get_el('video-frame')) {\n self._yt_video_ready();\n }\n }; // load Youtube iframe API; see https://developers.google.com/youtube/iframe_api_reference\n\n\n var tag = document.createElement('script');\n tag.src = self.resource_protocol + 'www.youtube.com/iframe_api';\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n }\n } else if (vimeo_match) {\n self.show_video = true;\n self.vimeo_video = vimeo_match[1];\n } // IE <= 7, FF <= 3: fall through to video link rather than embedded player\n\n\n if (self._browser_lte('ie', 7) || self._browser_lte('firefox', 3)) {\n self.show_video = false;\n self.clickthrough = true;\n }\n});\nMixpanelNotification.prototype._mark_as_shown = _.safewrap(function () {\n // click on background to dismiss\n var self = this;\n\n _.register_event(self._get_el('bg'), 'click', function () {\n self.dismiss();\n });\n\n var get_style = function get_style(el, style_name) {\n var styles = {};\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n styles = document.defaultView.getComputedStyle(el, null); // FF3 requires both args\n } else if (el.currentStyle) {\n // IE\n styles = el.currentStyle;\n }\n\n return styles[style_name];\n };\n\n if (this.campaign_id) {\n var notif_el = this._get_el('overlay');\n\n if (notif_el && get_style(notif_el, 'visibility') !== 'hidden' && get_style(notif_el, 'display') !== 'none') {\n this._mark_delivery();\n }\n }\n});\nMixpanelNotification.prototype._mark_delivery = _.safewrap(function (extra_props) {\n if (!this.marked_as_shown) {\n this.marked_as_shown = true;\n\n if (this.campaign_id) {\n // mark notification shown (local cache)\n this._get_shown_campaigns()[this.campaign_id] = 1 * new Date();\n this.persistence.save();\n } // track delivery\n\n\n this._track_event('$campaign_delivery', extra_props); // mark notification shown (mixpanel property)\n\n\n this.mixpanel['people']['append']({\n '$campaigns': this.campaign_id,\n '$notifications': {\n 'campaign_id': this.campaign_id,\n 'message_id': this.message_id,\n 'type': 'web',\n 'time': new Date()\n }\n });\n }\n});\n\nMixpanelNotification.prototype._preload_images = function (all_loaded_cb) {\n var self = this;\n\n if (this.imgs_to_preload.length === 0) {\n all_loaded_cb();\n return;\n }\n\n var preloaded_imgs = 0;\n var img_objs = [];\n\n var onload = function onload() {\n preloaded_imgs++;\n\n if (preloaded_imgs === self.imgs_to_preload.length && all_loaded_cb) {\n all_loaded_cb();\n all_loaded_cb = null;\n }\n };\n\n for (var i = 0; i < this.imgs_to_preload.length; i++) {\n var img = new Image();\n img.onload = onload;\n img.src = this.imgs_to_preload[i];\n\n if (img.complete) {\n onload();\n }\n\n img_objs.push(img);\n } // IE6/7 doesn't fire onload reliably\n\n\n if (this._browser_lte('ie', 7)) {\n setTimeout(function () {\n var imgs_loaded = true;\n\n for (i = 0; i < img_objs.length; i++) {\n if (!img_objs[i].complete) {\n imgs_loaded = false;\n }\n }\n\n if (imgs_loaded && all_loaded_cb) {\n all_loaded_cb();\n all_loaded_cb = null;\n }\n }, 500);\n }\n};\n\nMixpanelNotification.prototype._remove_notification_el = _.safewrap(function () {\n window.clearInterval(this._video_progress_checker);\n this.notification_el.style.visibility = 'hidden';\n this.body_el.removeChild(this.notification_el);\n});\n\nMixpanelNotification.prototype._set_client_config = function () {\n var get_browser_version = function get_browser_version(browser_ex) {\n var match = navigator.userAgent.match(browser_ex);\n return match && match[1];\n };\n\n this.browser_versions = {};\n this.browser_versions['chrome'] = get_browser_version(/Chrome\\/(\\d+)/);\n this.browser_versions['firefox'] = get_browser_version(/Firefox\\/(\\d+)/);\n this.browser_versions['ie'] = get_browser_version(/MSIE (\\d+).+/);\n\n if (!this.browser_versions['ie'] && !window.ActiveXObject && 'ActiveXObject' in window) {\n this.browser_versions['ie'] = 11;\n }\n\n this.body_el = document.body || document.getElementsByTagName('body')[0];\n\n if (this.body_el) {\n this.doc_width = Math.max(this.body_el.scrollWidth, document.documentElement.scrollWidth, this.body_el.offsetWidth, document.documentElement.offsetWidth, this.body_el.clientWidth, document.documentElement.clientWidth);\n this.doc_height = Math.max(this.body_el.scrollHeight, document.documentElement.scrollHeight, this.body_el.offsetHeight, document.documentElement.offsetHeight, this.body_el.clientHeight, document.documentElement.clientHeight);\n } // detect CSS compatibility\n\n\n var ie_ver = this.browser_versions['ie'];\n\n var sample_styles = document.createElement('div').style,\n is_css_compatible = function is_css_compatible(rule) {\n if (rule in sample_styles) {\n return true;\n }\n\n if (!ie_ver) {\n rule = rule[0].toUpperCase() + rule.slice(1);\n var props = ['O' + rule, 'Webkit' + rule, 'Moz' + rule];\n\n for (var i = 0; i < props.length; i++) {\n if (props[i] in sample_styles) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n this.use_transitions = this.body_el && is_css_compatible('transition') && is_css_compatible('transform');\n this.flip_animate = (this.browser_versions['chrome'] >= 33 || this.browser_versions['firefox'] >= 15) && this.body_el && is_css_compatible('backfaceVisibility') && is_css_compatible('perspective') && is_css_compatible('transform');\n};\n\nMixpanelNotification.prototype._switch_to_video = _.safewrap(function () {\n var self = this,\n anims = [{\n el: self._get_notification_display_el(),\n attr: 'opacity',\n start: 1.0,\n goal: 0.0\n }, {\n el: self._get_notification_display_el(),\n attr: 'top',\n start: MixpanelNotification.NOTIF_TOP,\n goal: -500\n }, {\n el: self._get_el('video-noflip'),\n attr: 'opacity',\n start: 0.0,\n goal: 1.0\n }, {\n el: self._get_el('video-noflip'),\n attr: 'top',\n start: -self.video_height * 2,\n goal: 0\n }];\n\n if (self.mini) {\n var bg = self._get_el('bg'),\n overlay = self._get_el('overlay');\n\n bg.style.width = '100%';\n bg.style.height = '100%';\n overlay.style.width = '100%';\n\n self._add_class(self._get_notification_display_el(), 'exiting');\n\n self._add_class(bg, 'visible');\n\n anims.push({\n el: self._get_el('bg'),\n attr: 'opacity',\n start: 0.0,\n goal: MixpanelNotification.BG_OPACITY\n });\n }\n\n var video_el = self._get_el('video-holder');\n\n video_el.innerHTML = self.video_iframe;\n\n var video_ready = function video_ready() {\n if (window['YT'] && window['YT']['loaded']) {\n self._yt_video_ready();\n }\n\n self.showing_video = true;\n self._get_notification_display_el().style.visibility = 'hidden';\n };\n\n if (self.flip_animate) {\n self._add_class('flipper', 'flipped');\n\n setTimeout(video_ready, MixpanelNotification.ANIM_TIME);\n } else {\n self._animate_els(anims, MixpanelNotification.ANIM_TIME, video_ready);\n }\n});\n\nMixpanelNotification.prototype._track_event = function (event_name, properties, cb) {\n if (this.campaign_id) {\n properties = properties || {};\n properties = _.extend(properties, {\n 'campaign_id': this.campaign_id,\n 'message_id': this.message_id,\n 'message_type': 'web_inapp',\n 'message_subtype': this.notif_type\n });\n this.mixpanel['track'](event_name, properties, cb);\n } else if (cb) {\n cb.call();\n }\n};\n\nMixpanelNotification.prototype._yt_video_ready = _.safewrap(function () {\n var self = this;\n\n if (self.video_inited) {\n return;\n }\n\n self.video_inited = true;\n\n var progress_bar = self._get_el('video-elapsed'),\n progress_time = self._get_el('video-time'),\n progress_el = self._get_el('video-progress');\n\n new window['YT']['Player'](MixpanelNotification.MARKUP_PREFIX + '-video-frame', {\n 'events': {\n 'onReady': function onReady(event) {\n var ytplayer = event['target'],\n video_duration = ytplayer['getDuration'](),\n pad = function pad(i) {\n return ('00' + i).slice(-2);\n },\n update_video_time = function update_video_time(current_time) {\n var secs = Math.round(video_duration - current_time),\n mins = Math.floor(secs / 60),\n hours = Math.floor(mins / 60);\n secs -= mins * 60;\n mins -= hours * 60;\n progress_time.innerHTML = '-' + (hours ? hours + ':' : '') + pad(mins) + ':' + pad(secs);\n };\n\n update_video_time(0);\n self._video_progress_checker = window.setInterval(function () {\n var current_time = ytplayer['getCurrentTime']();\n progress_bar.style.width = current_time / video_duration * 100 + '%';\n update_video_time(current_time);\n }, 250);\n\n _.register_event(progress_el, 'click', function (e) {\n var clickx = Math.max(0, e.pageX - progress_el.getBoundingClientRect().left);\n ytplayer['seekTo'](video_duration * clickx / progress_el.clientWidth, true);\n });\n }\n }\n });\n});\n/**\n * Mixpanel People Object\n * @constructor\n */\n\nvar MixpanelPeople = function MixpanelPeople() {};\n\n_.extend(MixpanelPeople.prototype, apiActions);\n\nMixpanelPeople.prototype._init = function (mixpanel_instance) {\n this._mixpanel = mixpanel_instance;\n};\n/*\n* Set properties on a user record.\n*\n* ### Usage:\n*\n* mixpanel.people.set('gender', 'm');\n*\n* // or set multiple properties at once\n* mixpanel.people.set({\n* 'Company': 'Acme',\n* 'Plan': 'Premium',\n* 'Upgrade date': new Date()\n* });\n* // properties can be strings, integers, dates, or lists\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\n\n\nMixpanelPeople.prototype.set = addOptOutCheckMixpanelPeople(function (prop, to, callback) {\n var data = this.set_action(prop, to);\n\n if (_.isObject(prop)) {\n callback = to;\n } // make sure that the referrer info has been updated and saved\n\n\n if (this._get_config('save_referrer')) {\n this._mixpanel['persistence'].update_referrer_info(document.referrer);\n } // update $set object with default people properties\n\n\n data[SET_ACTION] = _.extend({}, _.info.people_properties(), this._mixpanel['persistence'].get_referrer_info(), data[SET_ACTION]);\n return this._send_request(data, callback);\n});\n/*\n* Set properties on a user record, only if they do not yet exist.\n* This will not overwrite previous people property values, unlike\n* people.set().\n*\n* ### Usage:\n*\n* mixpanel.people.set_once('First Login Date', new Date());\n*\n* // or set multiple properties at once\n* mixpanel.people.set_once({\n* 'First Login Date': new Date(),\n* 'Starting Plan': 'Premium'\n* });\n*\n* // properties can be strings, integers or dates\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\n\nMixpanelPeople.prototype.set_once = addOptOutCheckMixpanelPeople(function (prop, to, callback) {\n var data = this.set_once_action(prop, to);\n\n if (_.isObject(prop)) {\n callback = to;\n }\n\n return this._send_request(data, callback);\n});\n/*\n* Unset properties on a user record (permanently removes the properties and their values from a profile).\n*\n* ### Usage:\n*\n* mixpanel.people.unset('gender');\n*\n* // or unset multiple properties at once\n* mixpanel.people.unset(['gender', 'Company']);\n*\n* @param {Array|String} prop If a string, this is the name of the property. If an array, this is a list of property names.\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\n\nMixpanelPeople.prototype.unset = addOptOutCheckMixpanelPeople(function (prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n/*\n* Increment/decrement numeric people analytics properties.\n*\n* ### Usage:\n*\n* mixpanel.people.increment('page_views', 1);\n*\n* // or, for convenience, if you're just incrementing a counter by\n* // 1, you can simply do\n* mixpanel.people.increment('page_views');\n*\n* // to decrement a counter, pass a negative number\n* mixpanel.people.increment('credits_left', -1);\n*\n* // like mixpanel.people.set(), you can increment multiple\n* // properties at once:\n* mixpanel.people.increment({\n* counter1: 1,\n* counter2: 6\n* });\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and numeric values.\n* @param {Number} [by] An amount to increment the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\n\nMixpanelPeople.prototype.increment = addOptOutCheckMixpanelPeople(function (prop, by, callback) {\n var data = {};\n var $add = {};\n\n if (_.isObject(prop)) {\n _.each(prop, function (v, k) {\n if (!this._is_reserved_property(k)) {\n if (isNaN(parseFloat(v))) {\n console.error('Invalid increment value passed to mixpanel.people.increment - must be a number');\n return;\n } else {\n $add[k] = v;\n }\n }\n }, this);\n\n callback = by;\n } else {\n // convenience: mixpanel.people.increment('property'); will\n // increment 'property' by 1\n if (_.isUndefined(by)) {\n by = 1;\n }\n\n $add[prop] = by;\n }\n\n data[ADD_ACTION] = $add;\n return this._send_request(data, callback);\n});\n/*\n* Append a value to a list-valued people analytics property.\n*\n* ### Usage:\n*\n* // append a value to a list, creating it if needed\n* mixpanel.people.append('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.append({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value An item to append to the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\n\nMixpanelPeople.prototype.append = addOptOutCheckMixpanelPeople(function (list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n\n var data = this.append_action(list_name, value);\n return this._send_request(data, callback);\n});\n/*\n* Remove a value from a list-valued people analytics property.\n*\n* ### Usage:\n*\n* mixpanel.people.remove('School', 'UCB');\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value Item to remove from the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\n\nMixpanelPeople.prototype.remove = addOptOutCheckMixpanelPeople(function (list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n/*\n* Merge a given list with a list-valued people analytics property,\n* excluding duplicate values.\n*\n* ### Usage:\n*\n* // merge a value to a list, creating it if needed\n* mixpanel.people.union('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.union({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* // like mixpanel.people.append(), you can append multiple\n* // values to the same list:\n* mixpanel.people.union({\n* list1: ['bob', 'billy']\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] Value / values to merge with the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\n\nMixpanelPeople.prototype.union = addOptOutCheckMixpanelPeople(function (list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n/*\n* Record that you have charged the current user a certain amount\n* of money. Charges recorded with track_charge() will appear in the\n* Mixpanel revenue report.\n*\n* ### Usage:\n*\n* // charge a user $50\n* mixpanel.people.track_charge(50);\n*\n* // charge a user $30.50 on the 2nd of january\n* mixpanel.people.track_charge(30.50, {\n* '$time': new Date('jan 1 2012')\n* });\n*\n* @param {Number} amount The amount of money charged to the current user\n* @param {Object} [properties] An associative array of properties associated with the charge\n* @param {Function} [callback] If provided, the callback will be called when the server responds\n*/\n\nMixpanelPeople.prototype.track_charge = addOptOutCheckMixpanelPeople(function (amount, properties, callback) {\n if (!_.isNumber(amount)) {\n amount = parseFloat(amount);\n\n if (isNaN(amount)) {\n console.error('Invalid value passed to mixpanel.people.track_charge - must be a number');\n return;\n }\n }\n\n return this.append('$transactions', _.extend({\n '$amount': amount\n }, properties), callback);\n});\n/*\n* Permanently clear all revenue report transactions from the\n* current user's people analytics profile.\n*\n* ### Usage:\n*\n* mixpanel.people.clear_charges();\n*\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\n\nMixpanelPeople.prototype.clear_charges = function (callback) {\n return this.set('$transactions', [], callback);\n};\n/*\n* Permanently deletes the current people analytics profile from\n* Mixpanel (using the current distinct_id).\n*\n* ### Usage:\n*\n* // remove the all data you have stored about the current user\n* mixpanel.people.delete_user();\n*\n*/\n\n\nMixpanelPeople.prototype.delete_user = function () {\n if (!this._identify_called()) {\n console.error('mixpanel.people.delete_user() requires you to call identify() first');\n return;\n }\n\n var data = {\n '$delete': this._mixpanel.get_distinct_id()\n };\n return this._send_request(data);\n};\n\nMixpanelPeople.prototype.toString = function () {\n return this._mixpanel.toString() + '.people';\n};\n\nMixpanelPeople.prototype._send_request = function (data, callback) {\n data['$token'] = this._get_config('token');\n data['$distinct_id'] = this._mixpanel.get_distinct_id();\n\n var device_id = this._mixpanel.get_property('$device_id');\n\n var user_id = this._mixpanel.get_property('$user_id');\n\n var had_persisted_distinct_id = this._mixpanel.get_property('$had_persisted_distinct_id');\n\n if (device_id) {\n data['$device_id'] = device_id;\n }\n\n if (user_id) {\n data['$user_id'] = user_id;\n }\n\n if (had_persisted_distinct_id) {\n data['$had_persisted_distinct_id'] = had_persisted_distinct_id;\n }\n\n var date_encoded_data = _.encodeDates(data);\n\n if (!this._identify_called()) {\n this._enqueue(data);\n\n if (!_.isUndefined(callback)) {\n if (this._get_config('verbose')) {\n callback({\n status: -1,\n error: null\n });\n } else {\n callback(-1);\n }\n }\n\n return _.truncate(date_encoded_data, 255);\n }\n\n return this._mixpanel._track_or_batch({\n type: 'people',\n data: date_encoded_data,\n endpoint: this._get_config('api_host') + '/engage/',\n batcher: this._mixpanel.request_batchers.people\n }, callback);\n};\n\nMixpanelPeople.prototype._get_config = function (conf_var) {\n return this._mixpanel.get_config(conf_var);\n};\n\nMixpanelPeople.prototype._identify_called = function () {\n return this._mixpanel._flags.identify_called === true;\n}; // Queue up engage operations if identify hasn't been called yet.\n\n\nMixpanelPeople.prototype._enqueue = function (data) {\n if (SET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ACTION, data);\n } else if (SET_ONCE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ONCE_ACTION, data);\n } else if (UNSET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNSET_ACTION, data);\n } else if (ADD_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(ADD_ACTION, data);\n } else if (APPEND_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, data);\n } else if (REMOVE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, data);\n } else if (UNION_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNION_ACTION, data);\n } else {\n console.error('Invalid call to _enqueue():', data);\n }\n};\n\nMixpanelPeople.prototype._flush_one_queue = function (action, action_method, callback, queue_to_params_fn) {\n var _this = this;\n\n var queued_data = _.extend({}, this._mixpanel['persistence']._get_queue(action));\n\n var action_params = queued_data;\n\n if (!_.isUndefined(queued_data) && _.isObject(queued_data) && !_.isEmptyObject(queued_data)) {\n _this._mixpanel['persistence']._pop_from_people_queue(action, queued_data);\n\n if (queue_to_params_fn) {\n action_params = queue_to_params_fn(queued_data);\n }\n\n action_method.call(_this, action_params, function (response, data) {\n // on bad response, we want to add it back to the queue\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(action, queued_data);\n }\n\n if (!_.isUndefined(callback)) {\n callback(response, data);\n }\n });\n }\n}; // Flush queued engage operations - order does not matter,\n// and there are network level race conditions anyway\n\n\nMixpanelPeople.prototype._flush = function (_set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback) {\n var _this = this;\n\n var $append_queue = this._mixpanel['persistence']._get_queue(APPEND_ACTION);\n\n var $remove_queue = this._mixpanel['persistence']._get_queue(REMOVE_ACTION);\n\n this._flush_one_queue(SET_ACTION, this.set, _set_callback);\n\n this._flush_one_queue(SET_ONCE_ACTION, this.set_once, _set_once_callback);\n\n this._flush_one_queue(UNSET_ACTION, this.unset, _unset_callback, function (queue) {\n return _.keys(queue);\n });\n\n this._flush_one_queue(ADD_ACTION, this.increment, _add_callback);\n\n this._flush_one_queue(UNION_ACTION, this.union, _union_callback); // we have to fire off each $append individually since there is\n // no concat method server side\n\n\n if (!_.isUndefined($append_queue) && _.isArray($append_queue) && $append_queue.length) {\n var $append_item;\n\n var append_callback = function append_callback(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, $append_item);\n }\n\n if (!_.isUndefined(_append_callback)) {\n _append_callback(response, data);\n }\n };\n\n for (var i = $append_queue.length - 1; i >= 0; i--) {\n $append_item = $append_queue.pop();\n\n if (!_.isEmptyObject($append_item)) {\n _this.append($append_item, append_callback);\n }\n } // Save the shortened append queue\n\n\n _this._mixpanel['persistence'].save();\n } // same for $remove\n\n\n if (!_.isUndefined($remove_queue) && _.isArray($remove_queue) && $remove_queue.length) {\n var $remove_item;\n\n var remove_callback = function remove_callback(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, $remove_item);\n }\n\n if (!_.isUndefined(_remove_callback)) {\n _remove_callback(response, data);\n }\n };\n\n for (var j = $remove_queue.length - 1; j >= 0; j--) {\n $remove_item = $remove_queue.pop();\n\n if (!_.isEmptyObject($remove_item)) {\n _this.remove($remove_item, remove_callback);\n }\n }\n\n _this._mixpanel['persistence'].save();\n }\n};\n\nMixpanelPeople.prototype._is_reserved_property = function (prop) {\n return prop === '$distinct_id' || prop === '$token' || prop === '$device_id' || prop === '$user_id' || prop === '$had_persisted_distinct_id';\n}; // MixpanelPeople Exports\n\n\nMixpanelPeople.prototype['set'] = MixpanelPeople.prototype.set;\nMixpanelPeople.prototype['set_once'] = MixpanelPeople.prototype.set_once;\nMixpanelPeople.prototype['unset'] = MixpanelPeople.prototype.unset;\nMixpanelPeople.prototype['increment'] = MixpanelPeople.prototype.increment;\nMixpanelPeople.prototype['append'] = MixpanelPeople.prototype.append;\nMixpanelPeople.prototype['remove'] = MixpanelPeople.prototype.remove;\nMixpanelPeople.prototype['union'] = MixpanelPeople.prototype.union;\nMixpanelPeople.prototype['track_charge'] = MixpanelPeople.prototype.track_charge;\nMixpanelPeople.prototype['clear_charges'] = MixpanelPeople.prototype.clear_charges;\nMixpanelPeople.prototype['delete_user'] = MixpanelPeople.prototype.delete_user;\nMixpanelPeople.prototype['toString'] = MixpanelPeople.prototype.toString;\n/*\n * Mixpanel JS Library\n *\n * Copyright 2012, Mixpanel, Inc. All Rights Reserved\n * http://mixpanel.com/\n *\n * Includes portions of Underscore.js\n * http://documentcloud.github.com/underscore/\n * (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.\n * Released under the MIT License.\n */\n// ==ClosureCompiler==\n// @compilation_level ADVANCED_OPTIMIZATIONS\n// @output_file_name mixpanel-2.8.min.js\n// ==/ClosureCompiler==\n\n/*\nSIMPLE STYLE GUIDE:\n\nthis.x === public function\nthis._x === internal - only use within this file\nthis.__x === private - only use within the class\n\nGlobals should be all caps\n*/\n\nvar init_type; // MODULE or SNIPPET loader\n\nvar mixpanel_master; // main mixpanel instance / object\n\nvar INIT_MODULE = 0;\nvar INIT_SNIPPET = 1;\n\nvar IDENTITY_FUNC = function IDENTITY_FUNC(x) {\n return x;\n};\n\nvar NOOP_FUNC = function NOOP_FUNC() {};\n/** @const */\n\n\nvar PRIMARY_INSTANCE_NAME = 'mixpanel';\n/*\n * Dynamic... constants? Is that an oxymoron?\n */\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n// https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#withCredentials\n\nvar USE_XHR = window$1.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest(); // IE<10 does not support cross-origin XHR's but script tags\n// with defer won't block window.onload; ENQUEUE_REQUESTS\n// should only be true for Opera<12\n\nvar ENQUEUE_REQUESTS = !USE_XHR && userAgent.indexOf('MSIE') === -1 && userAgent.indexOf('Mozilla') === -1; // save reference to navigator.sendBeacon so it can be minified\n\nvar sendBeacon = null;\n\nif (navigator$1['sendBeacon']) {\n sendBeacon = function sendBeacon() {\n // late reference to navigator.sendBeacon to allow patching/spying\n return navigator$1['sendBeacon'].apply(navigator$1, arguments);\n };\n}\n/*\n * Module-level globals\n */\n\n\nvar DEFAULT_CONFIG = {\n 'api_host': 'https://api-js.mixpanel.com',\n 'api_method': 'POST',\n 'api_transport': 'XHR',\n 'app_host': 'https://mixpanel.com',\n 'cdn': 'https://cdn.mxpnl.com',\n 'cross_site_cookie': false,\n 'cross_subdomain_cookie': true,\n 'persistence': 'cookie',\n 'persistence_name': '',\n 'cookie_domain': '',\n 'cookie_name': '',\n 'loaded': NOOP_FUNC,\n 'store_google': true,\n 'save_referrer': true,\n 'test': false,\n 'verbose': false,\n 'img': false,\n 'debug': false,\n 'track_links_timeout': 300,\n 'cookie_expiration': 365,\n 'upgrade': false,\n 'disable_persistence': false,\n 'disable_cookie': false,\n 'secure_cookie': false,\n 'ip': true,\n 'opt_out_tracking_by_default': false,\n 'opt_out_persistence_by_default': false,\n 'opt_out_tracking_persistence_type': 'localStorage',\n 'opt_out_tracking_cookie_prefix': null,\n 'property_blacklist': [],\n 'xhr_headers': {},\n // { header: value, header2: value }\n 'inapp_protocol': '//',\n 'inapp_link_new_window': false,\n 'ignore_dnt': false,\n 'batch_requests': false,\n // for now\n 'batch_size': 50,\n 'batch_flush_interval_ms': 5000,\n 'batch_request_timeout_ms': 90000,\n 'batch_autostart': true,\n 'hooks': {}\n};\nvar DOM_LOADED = false;\n/**\n * Mixpanel Library Object\n * @constructor\n */\n\nvar MixpanelLib = function MixpanelLib() {};\n/**\n * create_mplib(token:string, config:object, name:string)\n *\n * This function is used by the init method of MixpanelLib objects\n * as well as the main initializer at the end of the JSLib (that\n * initializes document.mixpanel as well as any additional instances\n * declared before this file has loaded).\n */\n\n\nvar create_mplib = function create_mplib(token, config, name) {\n var instance,\n target = name === PRIMARY_INSTANCE_NAME ? mixpanel_master : mixpanel_master[name];\n\n if (target && init_type === INIT_MODULE) {\n instance = target;\n } else {\n if (target && !_.isArray(target)) {\n console.error('You have already initialized ' + name);\n return;\n }\n\n instance = new MixpanelLib();\n }\n\n instance._cached_groups = {}; // cache groups in a pool\n\n instance._user_decide_check_complete = false;\n instance._events_tracked_before_user_decide_check_complete = [];\n\n instance._init(token, config, name);\n\n instance['people'] = new MixpanelPeople();\n\n instance['people']._init(instance); // if any instance on the page has debug = true, we set the\n // global debug to be true\n\n\n Config.DEBUG = Config.DEBUG || instance.get_config('debug'); // if target is not defined, we called init after the lib already\n // loaded, so there won't be an array of things to execute\n\n if (!_.isUndefined(target) && _.isArray(target)) {\n // Crunch through the people queue first - we queue this data up &\n // flush on identify, so it's better to do all these operations first\n instance._execute_array.call(instance['people'], target['people']);\n\n instance._execute_array(target);\n }\n\n return instance;\n};\n\nvar encode_data_for_request = function encode_data_for_request(data) {\n var json_data = _.JSONEncode(data);\n\n var encoded_data = _.base64Encode(json_data);\n\n return {\n 'data': encoded_data\n };\n}; // Initialization methods\n\n/**\n * This function initializes a new instance of the Mixpanel tracking object.\n * All new instances are added to the main mixpanel object as sub properties (such as\n * mixpanel.library_name) and also returned by this function. To define a\n * second instance on the page, you would call:\n *\n * mixpanel.init('new token', { your: 'config' }, 'library_name');\n *\n * and use it like so:\n *\n * mixpanel.library_name.track(...);\n *\n * @param {String} token Your Mixpanel API token\n * @param {Object} [config] A dictionary of config options to override. See a list of default config options.\n * @param {String} [name] The name for the new mixpanel instance that you want created\n */\n\n\nMixpanelLib.prototype.init = function (token, config, name) {\n if (_.isUndefined(name)) {\n console.error('You must name your new library: init(token, config, name)');\n return;\n }\n\n if (name === PRIMARY_INSTANCE_NAME) {\n console.error('You must initialize the main mixpanel object right after you include the Mixpanel js snippet');\n return;\n }\n\n var instance = create_mplib(token, config, name);\n mixpanel_master[name] = instance;\n\n instance._loaded();\n\n return instance;\n}; // mixpanel._init(token:string, config:object, name:string)\n//\n// This function sets up the current instance of the mixpanel\n// library. The difference between this method and the init(...)\n// method is this one initializes the actual instance, whereas the\n// init(...) method sets up a new library and calls _init on it.\n//\n\n\nMixpanelLib.prototype._init = function (token, config, name) {\n config = config || {};\n this['__loaded'] = true;\n this['config'] = {};\n this['_triggered_notifs'] = []; // rollout: enable batch_requests by default for 60% of projects\n // (only if they have not specified a value in their init config\n // and they aren't using a custom API host)\n\n var variable_features = {};\n var api_host = config['api_host'];\n var is_custom_api = !!api_host && !api_host.match(/\\.mixpanel\\.com$/);\n\n if (!('batch_requests' in config) && !is_custom_api && determine_eligibility(token, 'batch', 60)) {\n variable_features['batch_requests'] = true;\n }\n\n this.set_config(_.extend({}, DEFAULT_CONFIG, variable_features, config, {\n 'name': name,\n 'token': token,\n 'callback_fn': (name === PRIMARY_INSTANCE_NAME ? name : PRIMARY_INSTANCE_NAME + '.' + name) + '._jsc'\n }));\n this['_jsc'] = NOOP_FUNC;\n this.__dom_loaded_queue = [];\n this.__request_queue = [];\n this.__disabled_events = [];\n this._flags = {\n 'disable_all_events': false,\n 'identify_called': false\n }; // set up request queueing/batching\n\n this.request_batchers = {};\n this._batch_requests = this.get_config('batch_requests');\n\n if (this._batch_requests) {\n if (!_.localStorage.is_supported(true) || !USE_XHR) {\n this._batch_requests = false;\n console.log('Turning off Mixpanel request-queueing; needs XHR and localStorage support');\n } else {\n this.init_batchers();\n\n if (sendBeacon && window$1.addEventListener) {\n window$1.addEventListener('unload', _.bind(function () {\n // Before page closes, attempt to flush any events queued up via navigator.sendBeacon.\n // Since sendBeacon doesn't report success/failure, events will not be removed from\n // the persistent store; if the site is loaded again, the events will be flushed again\n // on startup and deduplicated on the Mixpanel server side.\n if (!this.request_batchers.events.stopped) {\n this.request_batchers.events.flush({\n unloading: true\n });\n }\n }, this));\n }\n }\n }\n\n this['persistence'] = this['cookie'] = new MixpanelPersistence(this['config']);\n this.unpersisted_superprops = {};\n\n this._gdpr_init();\n\n var uuid = _.UUID();\n\n if (!this.get_distinct_id()) {\n // There is no need to set the distinct id\n // or the device id if something was already stored\n // in the persitence\n this.register_once({\n 'distinct_id': uuid,\n '$device_id': uuid\n }, '');\n }\n}; // Private methods\n\n\nMixpanelLib.prototype._loaded = function () {\n this.get_config('loaded')(this);\n\n this._set_default_superprops();\n}; // update persistence with info on referrer, UTM params, etc\n\n\nMixpanelLib.prototype._set_default_superprops = function () {\n this['persistence'].update_search_keyword(document$1.referrer);\n\n if (this.get_config('store_google')) {\n this['persistence'].update_campaign_params();\n }\n\n if (this.get_config('save_referrer')) {\n this['persistence'].update_referrer_info(document$1.referrer);\n }\n};\n\nMixpanelLib.prototype._dom_loaded = function () {\n _.each(this.__dom_loaded_queue, function (item) {\n this._track_dom.apply(this, item);\n }, this);\n\n if (!this.has_opted_out_tracking()) {\n _.each(this.__request_queue, function (item) {\n this._send_request.apply(this, item);\n }, this);\n }\n\n delete this.__dom_loaded_queue;\n delete this.__request_queue;\n};\n\nMixpanelLib.prototype._track_dom = function (DomClass, args) {\n if (this.get_config('img')) {\n console.error('You can\\'t use DOM tracking functions with img = true.');\n return false;\n }\n\n if (!DOM_LOADED) {\n this.__dom_loaded_queue.push([DomClass, args]);\n\n return false;\n }\n\n var dt = new DomClass().init(this);\n return dt.track.apply(dt, args);\n};\n/**\n * _prepare_callback() should be called by callers of _send_request for use\n * as the callback argument.\n *\n * If there is no callback, this returns null.\n * If we are going to make XHR/XDR requests, this returns a function.\n * If we are going to use script tags, this returns a string to use as the\n * callback GET param.\n */\n\n\nMixpanelLib.prototype._prepare_callback = function (callback, data) {\n if (_.isUndefined(callback)) {\n return null;\n }\n\n if (USE_XHR) {\n var callback_function = function callback_function(response) {\n callback(response, data);\n };\n\n return callback_function;\n } else {\n // if the user gives us a callback, we store as a random\n // property on this instances jsc function and update our\n // callback string to reflect that.\n var jsc = this['_jsc'];\n var randomized_cb = '' + Math.floor(Math.random() * 100000000);\n var callback_string = this.get_config('callback_fn') + '[' + randomized_cb + ']';\n\n jsc[randomized_cb] = function (response) {\n delete jsc[randomized_cb];\n callback(response, data);\n };\n\n return callback_string;\n }\n};\n\nMixpanelLib.prototype._send_request = function (url, data, options, callback) {\n var succeeded = true;\n\n if (ENQUEUE_REQUESTS) {\n this.__request_queue.push(arguments);\n\n return succeeded;\n }\n\n var DEFAULT_OPTIONS = {\n method: this.get_config('api_method'),\n transport: this.get_config('api_transport'),\n verbose: this.get_config('verbose')\n };\n var body_data = null;\n\n if (!callback && (_.isFunction(options) || typeof options === 'string')) {\n callback = options;\n options = null;\n }\n\n options = _.extend(DEFAULT_OPTIONS, options || {});\n\n if (!USE_XHR) {\n options.method = 'GET';\n }\n\n var use_post = options.method === 'POST';\n var use_sendBeacon = sendBeacon && use_post && options.transport.toLowerCase() === 'sendbeacon'; // needed to correctly format responses\n\n var verbose_mode = options.verbose;\n\n if (data['verbose']) {\n verbose_mode = true;\n }\n\n if (this.get_config('test')) {\n data['test'] = 1;\n }\n\n if (verbose_mode) {\n data['verbose'] = 1;\n }\n\n if (this.get_config('img')) {\n data['img'] = 1;\n }\n\n if (!USE_XHR) {\n if (callback) {\n data['callback'] = callback;\n } else if (verbose_mode || this.get_config('test')) {\n // Verbose output (from verbose mode, or an error in test mode) is a json blob,\n // which by itself is not valid javascript. Without a callback, this verbose output will\n // cause an error when returned via jsonp, so we force a no-op callback param.\n // See the ECMA script spec: http://www.ecma-international.org/ecma-262/5.1/#sec-12.4\n data['callback'] = '(function(){})';\n }\n }\n\n data['ip'] = this.get_config('ip') ? 1 : 0;\n data['_'] = new Date().getTime().toString();\n\n if (use_post) {\n body_data = 'data=' + encodeURIComponent(data['data']);\n delete data['data'];\n }\n\n url += '?' + _.HTTPBuildQuery(data);\n\n if ('img' in data) {\n var img = document$1.createElement('img');\n img.src = url;\n document$1.body.appendChild(img);\n } else if (use_sendBeacon) {\n try {\n succeeded = sendBeacon(url, body_data);\n } catch (e) {\n console.error(e);\n succeeded = false;\n }\n\n try {\n if (callback) {\n callback(succeeded ? 1 : 0);\n }\n } catch (e) {\n console.error(e);\n }\n } else if (USE_XHR) {\n try {\n var req = new XMLHttpRequest();\n req.open(options.method, url, true);\n var headers = this.get_config('xhr_headers');\n\n if (use_post) {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n\n _.each(headers, function (headerValue, headerName) {\n req.setRequestHeader(headerName, headerValue);\n });\n\n if (options.timeout_ms && typeof req.timeout !== 'undefined') {\n req.timeout = options.timeout_ms;\n var start_time = new Date().getTime();\n } // send the mp_optout cookie\n // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n\n\n req.withCredentials = true;\n\n req.onreadystatechange = function () {\n if (req.readyState === 4) {\n // XMLHttpRequest.DONE == 4, except in safari 4\n if (req.status === 200) {\n if (callback) {\n if (verbose_mode) {\n var response;\n\n try {\n response = _.JSONDecode(req.responseText);\n } catch (e) {\n console.error(e);\n\n if (options.ignore_json_errors) {\n response = req.responseText;\n } else {\n return;\n }\n }\n\n callback(response);\n } else {\n callback(Number(req.responseText));\n }\n }\n } else {\n var error;\n\n if (req.timeout && !req.status && new Date().getTime() - start_time >= req.timeout) {\n error = 'timeout';\n } else {\n error = 'Bad HTTP status: ' + req.status + ' ' + req.statusText;\n }\n\n console.error(error);\n\n if (callback) {\n if (verbose_mode) {\n callback({\n status: 0,\n error: error,\n xhr_req: req\n });\n } else {\n callback(0);\n }\n }\n }\n }\n };\n\n req.send(body_data);\n } catch (e) {\n console.error(e);\n succeeded = false;\n }\n } else {\n var script = document$1.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n var s = document$1.getElementsByTagName('script')[0];\n s.parentNode.insertBefore(script, s);\n }\n\n return succeeded;\n};\n/**\n * _execute_array() deals with processing any mixpanel function\n * calls that were called before the Mixpanel library were loaded\n * (and are thus stored in an array so they can be called later)\n *\n * Note: we fire off all the mixpanel function calls && user defined\n * functions BEFORE we fire off mixpanel tracking calls. This is so\n * identify/register/set_config calls can properly modify early\n * tracking calls.\n *\n * @param {Array} array\n */\n\n\nMixpanelLib.prototype._execute_array = function (array) {\n var fn_name,\n alias_calls = [],\n other_calls = [],\n tracking_calls = [];\n\n _.each(array, function (item) {\n if (item) {\n fn_name = item[0];\n\n if (_.isArray(fn_name)) {\n tracking_calls.push(item); // chained call e.g. mixpanel.get_group().set()\n } else if (typeof item === 'function') {\n item.call(this);\n } else if (_.isArray(item) && fn_name === 'alias') {\n alias_calls.push(item);\n } else if (_.isArray(item) && fn_name.indexOf('track') !== -1 && typeof this[fn_name] === 'function') {\n tracking_calls.push(item);\n } else {\n other_calls.push(item);\n }\n }\n }, this);\n\n var execute = function execute(calls, context) {\n _.each(calls, function (item) {\n if (_.isArray(item[0])) {\n // chained call\n var caller = context;\n\n _.each(item, function (call) {\n caller = caller[call[0]].apply(caller, call.slice(1));\n });\n } else {\n this[item[0]].apply(this, item.slice(1));\n }\n }, context);\n };\n\n execute(alias_calls, this);\n execute(other_calls, this);\n execute(tracking_calls, this);\n}; // request queueing utils\n\n\nMixpanelLib.prototype.are_batchers_initialized = function () {\n return !!this.request_batchers.events;\n};\n\nMixpanelLib.prototype.init_batchers = function () {\n var token = this.get_config('token');\n\n if (!this.are_batchers_initialized()) {\n var batcher_for = _.bind(function (attrs) {\n return new RequestBatcher('__mpq_' + token + attrs.queue_suffix, {\n libConfig: this['config'],\n sendRequestFunc: _.bind(function (data, options, cb) {\n this._send_request(this.get_config('api_host') + attrs.endpoint, encode_data_for_request(data), options, this._prepare_callback(cb, data));\n }, this),\n beforeSendHook: _.bind(function (item) {\n return this._run_hook('before_send_' + attrs.type, item);\n }, this)\n });\n }, this);\n\n this.request_batchers = {\n events: batcher_for({\n type: 'events',\n endpoint: '/track/',\n queue_suffix: '_ev'\n }),\n people: batcher_for({\n type: 'people',\n endpoint: '/engage/',\n queue_suffix: '_pp'\n }),\n groups: batcher_for({\n type: 'groups',\n endpoint: '/groups/',\n queue_suffix: '_gr'\n })\n };\n }\n\n if (this.get_config('batch_autostart')) {\n this.start_batch_senders();\n }\n};\n\nMixpanelLib.prototype.start_batch_senders = function () {\n if (this.are_batchers_initialized()) {\n this._batch_requests = true;\n\n _.each(this.request_batchers, function (batcher) {\n batcher.start();\n });\n }\n};\n\nMixpanelLib.prototype.stop_batch_senders = function () {\n this._batch_requests = false;\n\n _.each(this.request_batchers, function (batcher) {\n batcher.stop();\n batcher.clear();\n });\n};\n/**\n * push() keeps the standard async-array-push\n * behavior around after the lib is loaded.\n * This is only useful for external integrations that\n * do not wish to rely on our convenience methods\n * (created in the snippet).\n *\n * ### Usage:\n * mixpanel.push(['register', { a: 'b' }]);\n *\n * @param {Array} item A [function_name, args...] array to be executed\n */\n\n\nMixpanelLib.prototype.push = function (item) {\n this._execute_array([item]);\n};\n/**\n * Disable events on the Mixpanel object. If passed no arguments,\n * this function disables tracking of any event. If passed an\n * array of event names, those events will be disabled, but other\n * events will continue to be tracked.\n *\n * Note: this function does not stop other mixpanel functions from\n * firing, such as register() or people.set().\n *\n * @param {Array} [events] An array of event names to disable\n */\n\n\nMixpanelLib.prototype.disable = function (events) {\n if (typeof events === 'undefined') {\n this._flags.disable_all_events = true;\n } else {\n this.__disabled_events = this.__disabled_events.concat(events);\n }\n}; // internal method for handling track vs batch-enqueue logic\n\n\nMixpanelLib.prototype._track_or_batch = function (options, callback) {\n var truncated_data = _.truncate(options.data, 255);\n\n var endpoint = options.endpoint;\n var batcher = options.batcher;\n var should_send_immediately = options.should_send_immediately;\n var send_request_options = options.send_request_options || {};\n callback = callback || NOOP_FUNC;\n var request_enqueued_or_initiated = true;\n\n var send_request_immediately = _.bind(function () {\n if (!send_request_options.skip_hooks) {\n truncated_data = this._run_hook('before_send_' + options.type, truncated_data);\n }\n\n if (truncated_data) {\n console.log('MIXPANEL REQUEST:');\n console.log(truncated_data);\n return this._send_request(endpoint, encode_data_for_request(truncated_data), send_request_options, this._prepare_callback(callback, truncated_data));\n } else {\n return null;\n }\n }, this);\n\n if (this._batch_requests && !should_send_immediately) {\n batcher.enqueue(truncated_data, function (succeeded) {\n if (succeeded) {\n callback(1, truncated_data);\n } else {\n send_request_immediately();\n }\n });\n } else {\n request_enqueued_or_initiated = send_request_immediately();\n }\n\n return request_enqueued_or_initiated && truncated_data;\n};\n/**\n * Track an event. This is the most important and\n * frequently used Mixpanel function.\n *\n * ### Usage:\n *\n * // track an event named 'Registered'\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * // track an event using navigator.sendBeacon\n * mixpanel.track('Left page', {'duration_seconds': 35}, {transport: 'sendBeacon'});\n *\n * To track link clicks or form submissions, see track_links() or track_forms().\n *\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Object} [options] Optional configuration for this track request.\n * @param {String} [options.transport] Transport method for network request ('xhr' or 'sendBeacon').\n * @param {Boolean} [options.send_immediately] Whether to bypass batching/queueing and send track request immediately.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\n\n\nMixpanelLib.prototype.track = addOptOutCheckMixpanelLib(function (event_name, properties, options, callback) {\n if (!callback && typeof options === 'function') {\n callback = options;\n options = null;\n }\n\n options = options || {};\n var transport = options['transport']; // external API, don't minify 'transport' prop\n\n if (transport) {\n options.transport = transport; // 'transport' prop name can be minified internally\n }\n\n var should_send_immediately = options['send_immediately'];\n\n if (typeof callback !== 'function') {\n callback = NOOP_FUNC;\n }\n\n if (_.isUndefined(event_name)) {\n console.error('No event name provided to mixpanel.track');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n callback(0);\n return;\n } // set defaults\n\n\n properties = properties || {};\n properties['token'] = this.get_config('token'); // set $duration if time_event was previously called for this event\n\n var start_timestamp = this['persistence'].remove_event_timer(event_name);\n\n if (!_.isUndefined(start_timestamp)) {\n var duration_in_ms = new Date().getTime() - start_timestamp;\n properties['$duration'] = parseFloat((duration_in_ms / 1000).toFixed(3));\n }\n\n this._set_default_superprops(); // note: extend writes to the first object, so lets make sure we\n // don't write to the persistence properties object and info\n // properties object by passing in a new object\n // update properties with pageview info and super-properties\n\n\n properties = _.extend({}, _.info.properties(), this['persistence'].properties(), this.unpersisted_superprops, properties);\n var property_blacklist = this.get_config('property_blacklist');\n\n if (_.isArray(property_blacklist)) {\n _.each(property_blacklist, function (blacklisted_prop) {\n delete properties[blacklisted_prop];\n });\n } else {\n console.error('Invalid value for property_blacklist config: ' + property_blacklist);\n }\n\n var data = {\n 'event': event_name,\n 'properties': properties\n };\n\n var ret = this._track_or_batch({\n type: 'events',\n data: data,\n endpoint: this.get_config('api_host') + '/track/',\n batcher: this.request_batchers.events,\n should_send_immediately: should_send_immediately,\n send_request_options: options\n }, callback);\n\n this._check_and_handle_triggered_notifications(data);\n\n return ret;\n});\n/**\n * Register the current user into one/many groups.\n *\n * ### Usage:\n *\n * mixpanel.set_group('company', ['mixpanel', 'google']) // an array of IDs\n * mixpanel.set_group('company', 'mixpanel')\n * mixpanel.set_group('company', 128746312)\n *\n * @param {String} group_key Group key\n * @param {Array|String|Number} group_ids An array of group IDs, or a singular group ID\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n *\n */\n\nMixpanelLib.prototype.set_group = addOptOutCheckMixpanelLib(function (group_key, group_ids, callback) {\n if (!_.isArray(group_ids)) {\n group_ids = [group_ids];\n }\n\n var prop = {};\n prop[group_key] = group_ids;\n this.register(prop);\n return this['people'].set(group_key, group_ids, callback);\n});\n/**\n * Add a new group for this user.\n *\n * ### Usage:\n *\n * mixpanel.add_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\n\nMixpanelLib.prototype.add_group = addOptOutCheckMixpanelLib(function (group_key, group_id, callback) {\n var old_values = this.get_property(group_key);\n\n if (old_values === undefined) {\n var prop = {};\n prop[group_key] = [group_id];\n this.register(prop);\n } else {\n if (old_values.indexOf(group_id) === -1) {\n old_values.push(group_id);\n this.register(prop);\n }\n }\n\n return this['people'].union(group_key, group_id, callback);\n});\n/**\n * Remove a group from this user.\n *\n * ### Usage:\n *\n * mixpanel.remove_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\n\nMixpanelLib.prototype.remove_group = addOptOutCheckMixpanelLib(function (group_key, group_id, callback) {\n var old_value = this.get_property(group_key); // if the value doesn't exist, the persistent store is unchanged\n\n if (old_value !== undefined) {\n var idx = old_value.indexOf(group_id);\n\n if (idx > -1) {\n old_value.splice(idx, 1);\n this.register({\n group_key: old_value\n });\n }\n\n if (old_value.length === 0) {\n this.unregister(group_key);\n }\n }\n\n return this['people'].remove(group_key, group_id, callback);\n});\n/**\n * Track an event with specific groups.\n *\n * ### Usage:\n *\n * mixpanel.track_with_groups('purchase', {'product': 'iphone'}, {'University': ['UCB', 'UCLA']})\n *\n * @param {String} event_name The name of the event (see `mixpanel.track()`)\n * @param {Object=} properties A set of properties to include with the event you're sending (see `mixpanel.track()`)\n * @param {Object=} groups An object mapping group name keys to one or more values\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\n\nMixpanelLib.prototype.track_with_groups = addOptOutCheckMixpanelLib(function (event_name, properties, groups, callback) {\n var tracking_props = _.extend({}, properties || {});\n\n _.each(groups, function (v, k) {\n if (v !== null && v !== undefined) {\n tracking_props[k] = v;\n }\n });\n\n return this.track(event_name, tracking_props, callback);\n});\n\nMixpanelLib.prototype._create_map_key = function (group_key, group_id) {\n return group_key + '_' + JSON.stringify(group_id);\n};\n\nMixpanelLib.prototype._remove_group_from_cache = function (group_key, group_id) {\n delete this._cached_groups[this._create_map_key(group_key, group_id)];\n};\n/**\n * Look up reference to a Mixpanel group\n *\n * ### Usage:\n *\n * mixpanel.get_group(group_key, group_id)\n *\n * @param {String} group_key Group key\n * @param {Object} group_id A valid Mixpanel property type\n * @returns {Object} A MixpanelGroup identifier\n */\n\n\nMixpanelLib.prototype.get_group = function (group_key, group_id) {\n var map_key = this._create_map_key(group_key, group_id);\n\n var group = this._cached_groups[map_key];\n\n if (group === undefined || group._group_key !== group_key || group._group_id !== group_id) {\n group = new MixpanelGroup();\n\n group._init(this, group_key, group_id);\n\n this._cached_groups[map_key] = group;\n }\n\n return group;\n};\n/**\n * Track mp_page_view event. This is now ignored by the server.\n *\n * @param {String} [page] The url of the page to record. If you don't include this, it defaults to the current url.\n * @deprecated\n */\n\n\nMixpanelLib.prototype.track_pageview = function (page) {\n if (_.isUndefined(page)) {\n page = document$1.location.href;\n }\n\n this.track('mp_page_view', _.info.pageviewInfo(page));\n};\n/**\n * Track clicks on a set of document elements. Selector must be a\n * valid query. Elements must exist on the page at the time track_links is called.\n *\n * ### Usage:\n *\n * // track click for link id #nav\n * mixpanel.track_links('#nav', 'Clicked Nav Link');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the Mixpanel\n * servers to respond. If they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] A properties object or function that returns a dictionary of properties when passed a DOMElement\n */\n\n\nMixpanelLib.prototype.track_links = function () {\n return this._track_dom.call(this, LinkTracker, arguments);\n};\n/**\n * Track form submissions. Selector must be a valid query.\n *\n * ### Usage:\n *\n * // track submission for form id 'register'\n * mixpanel.track_forms('#register', 'Created Account');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the mixpanel\n * servers to respond, if they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] This can be a set of properties, or a function that returns a set of properties after being passed a DOMElement\n */\n\n\nMixpanelLib.prototype.track_forms = function () {\n return this._track_dom.call(this, FormTracker, arguments);\n};\n/**\n * Time an event by including the time between this call and a\n * later 'track' call for the same event in the properties sent\n * with the event.\n *\n * ### Usage:\n *\n * // time an event named 'Registered'\n * mixpanel.time_event('Registered');\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * When called for a particular event name, the next track call for that event\n * name will include the elapsed time between the 'time_event' and 'track'\n * calls. This value is stored as seconds in the '$duration' property.\n *\n * @param {String} event_name The name of the event.\n */\n\n\nMixpanelLib.prototype.time_event = function (event_name) {\n if (_.isUndefined(event_name)) {\n console.error('No event name provided to mixpanel.time_event');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n return;\n }\n\n this['persistence'].set_event_timer(event_name, new Date().getTime());\n};\n\nvar REGISTER_DEFAULTS = {\n 'persistent': true\n};\n/**\n * Helper to parse options param for register methods, maintaining\n * legacy support for plain \"days\" param instead of options object\n * @param {Number|Object} [days_or_options] 'days' option (Number), or Options object for register methods\n * @returns {Object} options object\n */\n\nvar options_for_register = function options_for_register(days_or_options) {\n var options;\n\n if (_.isObject(days_or_options)) {\n options = days_or_options;\n } else if (!_.isUndefined(days_or_options)) {\n options = {\n 'days': days_or_options\n };\n } else {\n options = {};\n }\n\n return _.extend({}, REGISTER_DEFAULTS, options);\n};\n/**\n * Register a set of super properties, which are included with all\n * events. This will overwrite previous super property values.\n *\n * ### Usage:\n *\n * // register 'Gender' as a super property\n * mixpanel.register({'Gender': 'Female'});\n *\n * // register several super properties when a user signs up\n * mixpanel.register({\n * 'Email': 'jdoe@example.com',\n * 'Account Type': 'Free'\n * });\n *\n * // register only for the current pageload\n * mixpanel.register({'Name': 'Pat'}, {persistent: false});\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\n\n\nMixpanelLib.prototype.register = function (props, days_or_options) {\n var options = options_for_register(days_or_options);\n\n if (options['persistent']) {\n this['persistence'].register(props, options['days']);\n } else {\n _.extend(this.unpersisted_superprops, props);\n }\n};\n/**\n * Register a set of super properties only once. This will not\n * overwrite previous super property values, unlike register().\n *\n * ### Usage:\n *\n * // register a super property for the first time only\n * mixpanel.register_once({\n * 'First Login Date': new Date().toISOString()\n * });\n *\n * // register once, only for the current pageload\n * mixpanel.register_once({\n * 'First interaction time': new Date().toISOString()\n * }, 'None', {persistent: false});\n *\n * ### Notes:\n *\n * If default_value is specified, current super properties\n * with that value will be overwritten.\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None'\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\n\n\nMixpanelLib.prototype.register_once = function (props, default_value, days_or_options) {\n var options = options_for_register(days_or_options);\n\n if (options['persistent']) {\n this['persistence'].register_once(props, default_value, options['days']);\n } else {\n if (typeof default_value === 'undefined') {\n default_value = 'None';\n }\n\n _.each(props, function (val, prop) {\n if (!this.unpersisted_superprops.hasOwnProperty(prop) || this.unpersisted_superprops[prop] === default_value) {\n this.unpersisted_superprops[prop] = val;\n }\n }, this);\n }\n};\n/**\n * Delete a super property stored with the current user.\n *\n * @param {String} property The name of the super property to remove\n * @param {Object} [options]\n * @param {boolean} [options.persistent=true] - whether to look in persistent storage (cookie/localStorage)\n */\n\n\nMixpanelLib.prototype.unregister = function (property, options) {\n options = options_for_register(options);\n\n if (options['persistent']) {\n this['persistence'].unregister(property);\n } else {\n delete this.unpersisted_superprops[property];\n }\n};\n\nMixpanelLib.prototype._register_single = function (prop, value) {\n var props = {};\n props[prop] = value;\n this.register(props);\n};\n/**\n * Identify a user with a unique ID to track user activity across\n * devices, tie a user to their events, and create a user profile.\n * If you never call this method, unique visitors are tracked using\n * a UUID generated the first time they visit the site.\n *\n * Call identify when you know the identity of the current user,\n * typically after login or signup. We recommend against using\n * identify for anonymous visitors to your site.\n *\n * ### Notes:\n * If your project has\n * ID Merge\n * enabled, the identify method will connect pre- and\n * post-authentication events when appropriate.\n *\n * If your project does not have ID Merge enabled, identify will\n * change the user's local distinct_id to the unique ID you pass.\n * Events tracked prior to authentication will not be connected\n * to the same user identity. If ID Merge is disabled, alias can\n * be used to connect pre- and post-registration events.\n *\n * @param {String} [unique_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used.\n */\n\n\nMixpanelLib.prototype.identify = function (new_distinct_id, _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback) {\n // Optional Parameters\n // _set_callback:function A callback to be run if and when the People set queue is flushed\n // _add_callback:function A callback to be run if and when the People add queue is flushed\n // _append_callback:function A callback to be run if and when the People append queue is flushed\n // _set_once_callback:function A callback to be run if and when the People set_once queue is flushed\n // _union_callback:function A callback to be run if and when the People union queue is flushed\n // _unset_callback:function A callback to be run if and when the People unset queue is flushed\n var previous_distinct_id = this.get_distinct_id();\n this.register({\n '$user_id': new_distinct_id\n });\n\n if (!this.get_property('$device_id')) {\n // The persisted distinct id might not actually be a device id at all\n // it might be a distinct id of the user from before\n var device_id = previous_distinct_id;\n this.register_once({\n '$had_persisted_distinct_id': true,\n '$device_id': device_id\n }, '');\n } // identify only changes the distinct id if it doesn't match either the existing or the alias;\n // if it's new, blow away the alias as well.\n\n\n if (new_distinct_id !== previous_distinct_id && new_distinct_id !== this.get_property(ALIAS_ID_KEY)) {\n this.unregister(ALIAS_ID_KEY);\n this.register({\n 'distinct_id': new_distinct_id\n });\n }\n\n this._check_and_handle_notifications(this.get_distinct_id());\n\n this._flags.identify_called = true; // Flush any queued up people requests\n\n this['people']._flush(_set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback); // send an $identify event any time the distinct_id is changing - logic on the server\n // will determine whether or not to do anything with it.\n\n\n if (new_distinct_id !== previous_distinct_id) {\n this.track('$identify', {\n 'distinct_id': new_distinct_id,\n '$anon_distinct_id': previous_distinct_id\n }, {\n skip_hooks: true\n });\n }\n};\n/**\n * Clears super properties and generates a new random distinct_id for this instance.\n * Useful for clearing data when a user logs out.\n */\n\n\nMixpanelLib.prototype.reset = function () {\n this['persistence'].clear();\n this._flags.identify_called = false;\n\n var uuid = _.UUID();\n\n this.register_once({\n 'distinct_id': uuid,\n '$device_id': uuid\n }, '');\n};\n/**\n * Returns the current distinct id of the user. This is either the id automatically\n * generated by the library or the id that has been passed by a call to identify().\n *\n * ### Notes:\n *\n * get_distinct_id() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // set distinct_id after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * distinct_id = mixpanel.get_distinct_id();\n * }\n * });\n */\n\n\nMixpanelLib.prototype.get_distinct_id = function () {\n return this.get_property('distinct_id');\n};\n/**\n * The alias method creates an alias which Mixpanel will use to\n * remap one id to another. Multiple aliases can point to the\n * same identifier.\n *\n * The following is a valid use of alias:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // You can add multiple id aliases to the existing ID\n * mixpanel.alias('newer_id', 'existing_id');\n *\n * Aliases can also be chained - the following is a valid example:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // chain newer_id - new_id - existing_id\n * mixpanel.alias('newer_id', 'new_id');\n *\n * Aliases cannot point to multiple identifiers - the following\n * example will not work:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // this is invalid as 'new_id' already points to 'existing_id'\n * mixpanel.alias('new_id', 'newer_id');\n *\n * ### Notes:\n *\n * If your project does not have\n * ID Merge\n * enabled, the best practice is to call alias once when a unique\n * ID is first created for a user (e.g., when a user first registers\n * for an account). Do not use alias multiple times for a single\n * user without ID Merge enabled.\n *\n * @param {String} alias A unique identifier that you want to use for this user in the future.\n * @param {String} [original] The current identifier being used for this user.\n */\n\n\nMixpanelLib.prototype.alias = function (alias, original) {\n // If the $people_distinct_id key exists in persistence, there has been a previous\n // mixpanel.people.identify() call made for this user. It is VERY BAD to make an alias with\n // this ID, as it will duplicate users.\n if (alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) {\n console.critical('Attempting to create alias for existing People user - aborting.');\n return -2;\n }\n\n var _this = this;\n\n if (_.isUndefined(original)) {\n original = this.get_distinct_id();\n }\n\n if (alias !== original) {\n this._register_single(ALIAS_ID_KEY, alias);\n\n return this.track('$create_alias', {\n 'alias': alias,\n 'distinct_id': original\n }, {\n skip_hooks: true\n }, function () {\n // Flush the people queue\n _this.identify(alias);\n });\n } else {\n console.error('alias matches current distinct_id - skipping api call.');\n this.identify(alias);\n return -1;\n }\n};\n/**\n * Provide a string to recognize the user by. The string passed to\n * this method will appear in the Mixpanel Streams product rather\n * than an automatically generated name. Name tags do not have to\n * be unique.\n *\n * This value will only be included in Streams data.\n *\n * @param {String} name_tag A human readable name for the user\n * @deprecated\n */\n\n\nMixpanelLib.prototype.name_tag = function (name_tag) {\n this._register_single('mp_name_tag', name_tag);\n};\n/**\n * Update the configuration of a mixpanel library instance.\n *\n * The default config is:\n *\n * {\n * // HTTP method for tracking requests\n * api_method: 'POST'\n *\n * // transport for sending requests ('XHR' or 'sendBeacon')\n * // NB: sendBeacon should only be used for scenarios such as\n * // page unload where a \"best-effort\" attempt to send is\n * // acceptable; the sendBeacon API does not support callbacks\n * // or any way to know the result of the request. Mixpanel\n * // tracking via sendBeacon will not support any event-\n * // batching or retry mechanisms.\n * api_transport: 'XHR'\n *\n * // turn on request-batching/queueing/retry\n * batch_requests: false,\n *\n * // maximum number of events/updates to send in a single\n * // network request\n * batch_size: 50,\n *\n * // milliseconds to wait between sending batch requests\n * batch_flush_interval_ms: 5000,\n *\n * // milliseconds to wait for network responses to batch requests\n * // before they are considered timed-out and retried\n * batch_request_timeout_ms: 90000,\n *\n * // override value for cookie domain, only useful for ensuring\n * // correct cross-subdomain cookies on unusual domains like\n * // subdomain.mainsite.avocat.fr; NB this cannot be used to\n * // set cookies on a different domain than the current origin\n * cookie_domain: ''\n *\n * // super properties cookie expiration (in days)\n * cookie_expiration: 365\n *\n * // if true, cookie will be set with SameSite=None; Secure\n * // this is only useful in special situations, like embedded\n * // 3rd-party iframes that set up a Mixpanel instance\n * cross_site_cookie: false\n *\n * // super properties span subdomains\n * cross_subdomain_cookie: true\n *\n * // debug mode\n * debug: false\n *\n * // if this is true, the mixpanel cookie or localStorage entry\n * // will be deleted, and no user persistence will take place\n * disable_persistence: false\n *\n * // if this is true, Mixpanel will automatically determine\n * // City, Region and Country data using the IP address of\n * //the client\n * ip: true\n *\n * // opt users out of tracking by this Mixpanel instance by default\n * opt_out_tracking_by_default: false\n *\n * // opt users out of browser data storage by this Mixpanel instance by default\n * opt_out_persistence_by_default: false\n *\n * // persistence mechanism used by opt-in/opt-out methods - cookie\n * // or localStorage - falls back to cookie if localStorage is unavailable\n * opt_out_tracking_persistence_type: 'localStorage'\n *\n * // customize the name of cookie/localStorage set by opt-in/opt-out methods\n * opt_out_tracking_cookie_prefix: null\n *\n * // type of persistent store for super properties (cookie/\n * // localStorage) if set to 'localStorage', any existing\n * // mixpanel cookie value with the same persistence_name\n * // will be transferred to localStorage and deleted\n * persistence: 'cookie'\n *\n * // name for super properties persistent store\n * persistence_name: ''\n *\n * // names of properties/superproperties which should never\n * // be sent with track() calls\n * property_blacklist: []\n *\n * // if this is true, mixpanel cookies will be marked as\n * // secure, meaning they will only be transmitted over https\n * secure_cookie: false\n *\n * // the amount of time track_links will\n * // wait for Mixpanel's servers to respond\n * track_links_timeout: 300\n *\n * // if you set upgrade to be true, the library will check for\n * // a cookie from our old js library and import super\n * // properties from it, then the old cookie is deleted\n * // The upgrade config option only works in the initialization,\n * // so make sure you set it when you create the library.\n * upgrade: false\n *\n * // extra HTTP request headers to set for each API request, in\n * // the format {'Header-Name': value}\n * xhr_headers: {}\n *\n * // protocol for fetching in-app message resources, e.g.\n * // 'https://' or 'http://'; defaults to '//' (which defers to the\n * // current page's protocol)\n * inapp_protocol: '//'\n *\n * // whether to open in-app message link in new tab/window\n * inapp_link_new_window: false\n *\n * // whether to ignore or respect the web browser's Do Not Track setting\n * ignore_dnt: false\n * }\n *\n *\n * @param {Object} config A dictionary of new configuration values to update\n */\n\n\nMixpanelLib.prototype.set_config = function (config) {\n if (_.isObject(config)) {\n _.extend(this['config'], config);\n\n var new_batch_size = config['batch_size'];\n\n if (new_batch_size) {\n _.each(this.request_batchers, function (batcher) {\n batcher.resetBatchSize();\n });\n }\n\n if (!this.get_config('persistence_name')) {\n this['config']['persistence_name'] = this['config']['cookie_name'];\n }\n\n if (!this.get_config('disable_persistence')) {\n this['config']['disable_persistence'] = this['config']['disable_cookie'];\n }\n\n if (this['persistence']) {\n this['persistence'].update_config(this['config']);\n }\n\n Config.DEBUG = Config.DEBUG || this.get_config('debug');\n }\n};\n/**\n * returns the current config object for the library.\n */\n\n\nMixpanelLib.prototype.get_config = function (prop_name) {\n return this['config'][prop_name];\n};\n/**\n * Fetch a hook function from config, with safe default, and run it\n * against the given arguments\n * @param {string} hook_name which hook to retrieve\n * @returns {any|null} return value of user-provided hook, or null if nothing was returned\n */\n\n\nMixpanelLib.prototype._run_hook = function (hook_name) {\n var ret = (this['config']['hooks'][hook_name] || IDENTITY_FUNC).apply(this, slice.call(arguments, 1));\n\n if (typeof ret === 'undefined') {\n console.error(hook_name + ' hook did not return a value');\n ret = null;\n }\n\n return ret;\n};\n/**\n * Returns the value of the super property named property_name. If no such\n * property is set, get_property() will return the undefined value.\n *\n * ### Notes:\n *\n * get_property() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // grab value for 'user_id' after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * user_id = mixpanel.get_property('user_id');\n * }\n * });\n *\n * @param {String} property_name The name of the super property you want to retrieve\n */\n\n\nMixpanelLib.prototype.get_property = function (property_name) {\n return this['persistence']['props'][property_name];\n};\n\nMixpanelLib.prototype.toString = function () {\n var name = this.get_config('name');\n\n if (name !== PRIMARY_INSTANCE_NAME) {\n name = PRIMARY_INSTANCE_NAME + '.' + name;\n }\n\n return name;\n};\n\nMixpanelLib.prototype._event_is_disabled = function (event_name) {\n return _.isBlockedUA(userAgent) || this._flags.disable_all_events || _.include(this.__disabled_events, event_name);\n};\n\nMixpanelLib.prototype._check_and_handle_triggered_notifications = addOptOutCheckMixpanelLib(function (event_data) {\n if (!this._user_decide_check_complete) {\n this._events_tracked_before_user_decide_check_complete.push(event_data);\n } else {\n var arr = this['_triggered_notifs'];\n\n for (var i = 0; i < arr.length; i++) {\n var notif = new MixpanelNotification(arr[i], this);\n\n if (notif._matches_event_data(event_data)) {\n this._show_notification(arr[i]);\n\n return;\n }\n }\n }\n});\nMixpanelLib.prototype._check_and_handle_notifications = addOptOutCheckMixpanelLib(function (distinct_id) {\n if (!distinct_id || this._flags.identify_called || this.get_config('disable_notifications')) {\n return;\n }\n\n console.log('MIXPANEL NOTIFICATION CHECK');\n var data = {\n 'verbose': true,\n 'version': '3',\n 'lib': 'web',\n 'token': this.get_config('token'),\n 'distinct_id': distinct_id\n };\n\n this._send_request(this.get_config('api_host') + '/decide/', data, {\n method: 'GET',\n transport: 'XHR'\n }, this._prepare_callback(_.bind(function (result) {\n if (result['notifications'] && result['notifications'].length > 0) {\n this['_triggered_notifs'] = [];\n var notifications = [];\n\n _.each(result['notifications'], function (notif) {\n (notif['display_triggers'] && notif['display_triggers'].length > 0 ? this['_triggered_notifs'] : notifications).push(notif);\n }, this);\n\n if (notifications.length > 0) {\n this._show_notification.call(this, notifications[0]);\n }\n }\n\n this._handle_user_decide_check_complete();\n }, this)));\n});\n\nMixpanelLib.prototype._handle_user_decide_check_complete = function () {\n this._user_decide_check_complete = true; // check notifications against events that were tracked before decide call completed\n\n var events = this._events_tracked_before_user_decide_check_complete;\n\n while (events.length > 0) {\n var data = events.shift(); // replay in the same order they came in\n\n this._check_and_handle_triggered_notifications(data);\n }\n};\n\nMixpanelLib.prototype._show_notification = function (notif_data) {\n var notification = new MixpanelNotification(notif_data, this);\n notification.show();\n}; // perform some housekeeping around GDPR opt-in/out state\n\n\nMixpanelLib.prototype._gdpr_init = function () {\n var is_localStorage_requested = this.get_config('opt_out_tracking_persistence_type') === 'localStorage'; // try to convert opt-in/out cookies to localStorage if possible\n\n if (is_localStorage_requested && _.localStorage.is_supported()) {\n if (!this.has_opted_in_tracking() && this.has_opted_in_tracking({\n 'persistence_type': 'cookie'\n })) {\n this.opt_in_tracking({\n 'enable_persistence': false\n });\n }\n\n if (!this.has_opted_out_tracking() && this.has_opted_out_tracking({\n 'persistence_type': 'cookie'\n })) {\n this.opt_out_tracking({\n 'clear_persistence': false\n });\n }\n\n this.clear_opt_in_out_tracking({\n 'persistence_type': 'cookie',\n 'enable_persistence': false\n });\n } // check whether the user has already opted out - if so, clear & disable persistence\n\n\n if (this.has_opted_out_tracking()) {\n this._gdpr_update_persistence({\n 'clear_persistence': true\n }); // check whether we should opt out by default\n // note: we don't clear persistence here by default since opt-out default state is often\n // used as an initial state while GDPR information is being collected\n\n } else if (!this.has_opted_in_tracking() && (this.get_config('opt_out_tracking_by_default') || _.cookie.get('mp_optout'))) {\n _.cookie.remove('mp_optout');\n\n this.opt_out_tracking({\n 'clear_persistence': this.get_config('opt_out_persistence_by_default')\n });\n }\n};\n/**\n * Enable or disable persistence based on options\n * only enable/disable if persistence is not already in this state\n * @param {boolean} [options.clear_persistence] If true, will delete all data stored by the sdk in persistence and disable it\n * @param {boolean} [options.enable_persistence] If true, will re-enable sdk persistence\n */\n\n\nMixpanelLib.prototype._gdpr_update_persistence = function (options) {\n var disabled;\n\n if (options && options['clear_persistence']) {\n disabled = true;\n } else if (options && options['enable_persistence']) {\n disabled = false;\n } else {\n return;\n }\n\n if (!this.get_config('disable_persistence') && this['persistence'].disabled !== disabled) {\n this['persistence'].set_disabled(disabled);\n }\n\n if (disabled) {\n _.each(this.request_batchers, function (batcher) {\n batcher.clear();\n });\n }\n}; // call a base gdpr function after constructing the appropriate token and options args\n\n\nMixpanelLib.prototype._gdpr_call_func = function (func, options) {\n options = _.extend({\n 'track': _.bind(this.track, this),\n 'persistence_type': this.get_config('opt_out_tracking_persistence_type'),\n 'cookie_prefix': this.get_config('opt_out_tracking_cookie_prefix'),\n 'cookie_expiration': this.get_config('cookie_expiration'),\n 'cross_site_cookie': this.get_config('cross_site_cookie'),\n 'cross_subdomain_cookie': this.get_config('cross_subdomain_cookie'),\n 'cookie_domain': this.get_config('cookie_domain'),\n 'secure_cookie': this.get_config('secure_cookie'),\n 'ignore_dnt': this.get_config('ignore_dnt')\n }, options); // check if localStorage can be used for recording opt out status, fall back to cookie if not\n\n if (!_.localStorage.is_supported()) {\n options['persistence_type'] = 'cookie';\n }\n\n return func(this.get_config('token'), {\n track: options['track'],\n trackEventName: options['track_event_name'],\n trackProperties: options['track_properties'],\n persistenceType: options['persistence_type'],\n persistencePrefix: options['cookie_prefix'],\n cookieDomain: options['cookie_domain'],\n cookieExpiration: options['cookie_expiration'],\n crossSiteCookie: options['cross_site_cookie'],\n crossSubdomainCookie: options['cross_subdomain_cookie'],\n secureCookie: options['secure_cookie'],\n ignoreDnt: options['ignore_dnt']\n });\n};\n/**\n * Opt the user in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n * // opt user in\n * mixpanel.opt_in_tracking();\n *\n * // opt user in with specific event name, properties, cookie configuration\n * mixpanel.opt_in_tracking({\n * track_event_name: 'User opted in',\n * track_event_properties: {\n * 'Email': 'jdoe@example.com'\n * },\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {function} [options.track] Function used for tracking a Mixpanel event to record the opt-in action (default is this Mixpanel instance's track method)\n * @param {string} [options.track_event_name=$opt_in] Event name to be used for tracking the opt-in action\n * @param {Object} [options.track_properties] Set of properties to be tracked along with the opt-in action\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\n\n\nMixpanelLib.prototype.opt_in_tracking = function (options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(optIn, options);\n\n this._gdpr_update_persistence(options);\n};\n/**\n * Opt the user out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n * // opt user out\n * mixpanel.opt_out_tracking();\n *\n * // opt user out with different cookie configuration from Mixpanel instance\n * mixpanel.opt_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.delete_user=true] If true, will delete the currently identified user's profile and clear all charges after opting the user out\n * @param {boolean} [options.clear_persistence=true] If true, will delete all data stored by the sdk in persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\n\n\nMixpanelLib.prototype.opt_out_tracking = function (options) {\n options = _.extend({\n 'clear_persistence': true,\n 'delete_user': true\n }, options); // delete user and clear charges since these methods may be disabled by opt-out\n\n if (options['delete_user'] && this['people'] && this['people']._identify_called()) {\n this['people'].delete_user();\n this['people'].clear_charges();\n }\n\n this._gdpr_call_func(optOut, options);\n\n this._gdpr_update_persistence(options);\n};\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n * var has_opted_in = mixpanel.has_opted_in_tracking();\n * // use has_opted_in value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-in status\n */\n\n\nMixpanelLib.prototype.has_opted_in_tracking = function (options) {\n return this._gdpr_call_func(hasOptedIn, options);\n};\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n * var has_opted_out = mixpanel.has_opted_out_tracking();\n * // use has_opted_out value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-out status\n */\n\n\nMixpanelLib.prototype.has_opted_out_tracking = function (options) {\n return this._gdpr_call_func(hasOptedOut, options);\n};\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage\n *\n * // clear user's opt-in/out status\n * mixpanel.clear_opt_in_out_tracking();\n *\n * // clear user's opt-in/out status with specific cookie configuration - should match\n * // configuration used when opt_in_tracking/opt_out_tracking methods were called.\n * mixpanel.clear_opt_in_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\n\n\nMixpanelLib.prototype.clear_opt_in_out_tracking = function (options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(clearOptInOut, options);\n\n this._gdpr_update_persistence(options);\n}; // EXPORTS (for closure compiler)\n// MixpanelLib Exports\n\n\nMixpanelLib.prototype['init'] = MixpanelLib.prototype.init;\nMixpanelLib.prototype['reset'] = MixpanelLib.prototype.reset;\nMixpanelLib.prototype['disable'] = MixpanelLib.prototype.disable;\nMixpanelLib.prototype['time_event'] = MixpanelLib.prototype.time_event;\nMixpanelLib.prototype['track'] = MixpanelLib.prototype.track;\nMixpanelLib.prototype['track_links'] = MixpanelLib.prototype.track_links;\nMixpanelLib.prototype['track_forms'] = MixpanelLib.prototype.track_forms;\nMixpanelLib.prototype['track_pageview'] = MixpanelLib.prototype.track_pageview;\nMixpanelLib.prototype['register'] = MixpanelLib.prototype.register;\nMixpanelLib.prototype['register_once'] = MixpanelLib.prototype.register_once;\nMixpanelLib.prototype['unregister'] = MixpanelLib.prototype.unregister;\nMixpanelLib.prototype['identify'] = MixpanelLib.prototype.identify;\nMixpanelLib.prototype['alias'] = MixpanelLib.prototype.alias;\nMixpanelLib.prototype['name_tag'] = MixpanelLib.prototype.name_tag;\nMixpanelLib.prototype['set_config'] = MixpanelLib.prototype.set_config;\nMixpanelLib.prototype['get_config'] = MixpanelLib.prototype.get_config;\nMixpanelLib.prototype['get_property'] = MixpanelLib.prototype.get_property;\nMixpanelLib.prototype['get_distinct_id'] = MixpanelLib.prototype.get_distinct_id;\nMixpanelLib.prototype['toString'] = MixpanelLib.prototype.toString;\nMixpanelLib.prototype['_check_and_handle_notifications'] = MixpanelLib.prototype._check_and_handle_notifications;\nMixpanelLib.prototype['_handle_user_decide_check_complete'] = MixpanelLib.prototype._handle_user_decide_check_complete;\nMixpanelLib.prototype['_show_notification'] = MixpanelLib.prototype._show_notification;\nMixpanelLib.prototype['opt_out_tracking'] = MixpanelLib.prototype.opt_out_tracking;\nMixpanelLib.prototype['opt_in_tracking'] = MixpanelLib.prototype.opt_in_tracking;\nMixpanelLib.prototype['has_opted_out_tracking'] = MixpanelLib.prototype.has_opted_out_tracking;\nMixpanelLib.prototype['has_opted_in_tracking'] = MixpanelLib.prototype.has_opted_in_tracking;\nMixpanelLib.prototype['clear_opt_in_out_tracking'] = MixpanelLib.prototype.clear_opt_in_out_tracking;\nMixpanelLib.prototype['get_group'] = MixpanelLib.prototype.get_group;\nMixpanelLib.prototype['set_group'] = MixpanelLib.prototype.set_group;\nMixpanelLib.prototype['add_group'] = MixpanelLib.prototype.add_group;\nMixpanelLib.prototype['remove_group'] = MixpanelLib.prototype.remove_group;\nMixpanelLib.prototype['track_with_groups'] = MixpanelLib.prototype.track_with_groups;\nMixpanelLib.prototype['start_batch_senders'] = MixpanelLib.prototype.start_batch_senders;\nMixpanelLib.prototype['stop_batch_senders'] = MixpanelLib.prototype.stop_batch_senders; // MixpanelPersistence Exports\n\nMixpanelPersistence.prototype['properties'] = MixpanelPersistence.prototype.properties;\nMixpanelPersistence.prototype['update_search_keyword'] = MixpanelPersistence.prototype.update_search_keyword;\nMixpanelPersistence.prototype['update_referrer_info'] = MixpanelPersistence.prototype.update_referrer_info;\nMixpanelPersistence.prototype['get_cross_subdomain'] = MixpanelPersistence.prototype.get_cross_subdomain;\nMixpanelPersistence.prototype['clear'] = MixpanelPersistence.prototype.clear;\n\n_.safewrap_class(MixpanelLib, ['identify', '_check_and_handle_notifications', '_show_notification']);\n\nvar instances = {};\n\nvar extend_mp = function extend_mp() {\n // add all the sub mixpanel instances\n _.each(instances, function (instance, name) {\n if (name !== PRIMARY_INSTANCE_NAME) {\n mixpanel_master[name] = instance;\n }\n }); // add private functions as _\n\n\n mixpanel_master['_'] = _;\n};\n\nvar override_mp_init_func = function override_mp_init_func() {\n // we override the snippets init function to handle the case where a\n // user initializes the mixpanel library after the script loads & runs\n mixpanel_master['init'] = function (token, config, name) {\n if (name) {\n // initialize a sub library\n if (!mixpanel_master[name]) {\n mixpanel_master[name] = instances[name] = create_mplib(token, config, name);\n\n mixpanel_master[name]._loaded();\n }\n\n return mixpanel_master[name];\n } else {\n var instance = mixpanel_master;\n\n if (instances[PRIMARY_INSTANCE_NAME]) {\n // main mixpanel lib already initialized\n instance = instances[PRIMARY_INSTANCE_NAME];\n } else if (token) {\n // intialize the main mixpanel lib\n instance = create_mplib(token, config, PRIMARY_INSTANCE_NAME);\n\n instance._loaded();\n\n instances[PRIMARY_INSTANCE_NAME] = instance;\n }\n\n mixpanel_master = instance;\n\n if (init_type === INIT_SNIPPET) {\n window$1[PRIMARY_INSTANCE_NAME] = mixpanel_master;\n }\n\n extend_mp();\n }\n };\n};\n\nvar add_dom_loaded_handler = function add_dom_loaded_handler() {\n // Cross browser DOM Loaded support\n function dom_loaded_handler() {\n // function flag since we only want to execute this once\n if (dom_loaded_handler.done) {\n return;\n }\n\n dom_loaded_handler.done = true;\n DOM_LOADED = true;\n ENQUEUE_REQUESTS = false;\n\n _.each(instances, function (inst) {\n inst._dom_loaded();\n });\n }\n\n function do_scroll_check() {\n try {\n document$1.documentElement.doScroll('left');\n } catch (e) {\n setTimeout(do_scroll_check, 1);\n return;\n }\n\n dom_loaded_handler();\n }\n\n if (document$1.addEventListener) {\n if (document$1.readyState === 'complete') {\n // safari 4 can fire the DOMContentLoaded event before loading all\n // external JS (including this file). you will see some copypasta\n // on the internet that checks for 'complete' and 'loaded', but\n // 'loaded' is an IE thing\n dom_loaded_handler();\n } else {\n document$1.addEventListener('DOMContentLoaded', dom_loaded_handler, false);\n }\n } else if (document$1.attachEvent) {\n // IE\n document$1.attachEvent('onreadystatechange', dom_loaded_handler); // check to make sure we arn't in a frame\n\n var toplevel = false;\n\n try {\n toplevel = window$1.frameElement === null;\n } catch (e) {// noop\n }\n\n if (document$1.documentElement.doScroll && toplevel) {\n do_scroll_check();\n }\n } // fallback handler, always will work\n\n\n _.register_event(window$1, 'load', dom_loaded_handler, true);\n};\n\nfunction init_as_module() {\n init_type = INIT_MODULE;\n mixpanel_master = new MixpanelLib();\n override_mp_init_func();\n mixpanel_master['init']();\n add_dom_loaded_handler();\n return mixpanel_master;\n}\n\nvar mixpanel = init_as_module();\nmodule.exports = mixpanel;","var map = {\n\t\"./add_to_cart_controller.js\": 47,\n\t\"./analytics_controller.js\": 48,\n\t\"./beer_finder_controller.js\": 75,\n\t\"./beer_sticker_controller.js\": 49,\n\t\"./beer_sticker_form_controller.js\": 50,\n\t\"./checkbox_toggle_controller.js\": 51,\n\t\"./checkout_analytics_controller.js\": 52,\n\t\"./checkout_sidebar_summary_controller.js\": 53,\n\t\"./clipboard_controller.js\": 54,\n\t\"./countdown_timer_controller.js\": 55,\n\t\"./facebook_controller.js\": 56,\n\t\"./footer_list_controller.js\": 57,\n\t\"./gift_wrapping_controller.js\": 58,\n\t\"./infinite_scroll_controller.js\": 59,\n\t\"./modal_controller.js\": 60,\n\t\"./modal_upsells_controller.js\": 61,\n\t\"./order_item_controller.js\": 62,\n\t\"./pakjegemak_controller.js\": 63,\n\t\"./price_controller.js\": 64,\n\t\"./quickview_controller.js\": 65,\n\t\"./registration_controller.js\": 66,\n\t\"./search_controller.js\": 67,\n\t\"./soonest_delivery_date_controller.js\": 68,\n\t\"./track_purchase_controller.js\": 69,\n\t\"./untappd_controller.js\": 70,\n\t\"./ups_access_points_controller.js\": 71,\n\t\"./wishlist_controller.js\": 72,\n\t\"./wishlist_item_controller.js\": 73\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 147;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * VERSION: 2.1.3\n * DATE: 2019-05-17\n * UPDATES AND DOCS AT: http://greensock.com\n *\n * @license Copyright (c) 2008-2019, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n * \n * @author: Jack Doyle, jack@greensock.com\n **/\n\n/* eslint-disable */\nimport TweenLite, { _gsScope, globals, Animation, SimpleTimeline, Ease, Power0, Power1, Power2, Power3, Power4, Linear } from \"./TweenLite.js\";\n\n_gsScope._gsDefine(\"TweenMax\", [\"core.Animation\", \"core.SimpleTimeline\", \"TweenLite\"], function () {\n var _slice = function _slice(a) {\n //don't use [].slice because that doesn't work in IE8 with a NodeList that's returned by querySelectorAll()\n var b = [],\n l = a.length,\n i;\n\n for (i = 0; i !== l; b.push(a[i++])) {\n ;\n }\n\n return b;\n },\n _applyCycle = function _applyCycle(vars, targets, i) {\n var alt = vars.cycle,\n p,\n val;\n\n for (p in alt) {\n val = alt[p];\n vars[p] = typeof val === \"function\" ? val(i, targets[i], targets) : val[i % val.length];\n }\n\n delete vars.cycle;\n },\n //for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following\n _distribute = function _distribute(v) {\n if (typeof v === \"function\") {\n return v;\n }\n\n var vars = _typeof(v) === \"object\" ? v : {\n each: v\n },\n //n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total \"amount\" that's chunked out among them all.\n ease = vars.ease,\n from = vars.from || 0,\n base = vars.base || 0,\n cache = {},\n isFromKeyword = isNaN(from),\n axis = vars.axis,\n ratio = {\n center: 0.5,\n end: 1\n }[from] || 0;\n return function (i, target, a) {\n var l = (a || vars).length,\n distances = cache[l],\n originX,\n originY,\n x,\n y,\n d,\n j,\n max,\n min,\n wrap;\n\n if (!distances) {\n wrap = vars.grid === \"auto\" ? 0 : (vars.grid || [Infinity])[0];\n\n if (!wrap) {\n max = -Infinity;\n\n while (max < (max = a[wrap++].getBoundingClientRect().left) && wrap < l) {}\n\n wrap--;\n }\n\n distances = cache[l] = [];\n originX = isFromKeyword ? Math.min(wrap, l) * ratio - 0.5 : from % wrap;\n originY = isFromKeyword ? l * ratio / wrap - 0.5 : from / wrap | 0;\n max = 0;\n min = Infinity;\n\n for (j = 0; j < l; j++) {\n x = j % wrap - originX;\n y = originY - (j / wrap | 0);\n distances[j] = d = !axis ? Math.sqrt(x * x + y * y) : Math.abs(axis === \"y\" ? y : x);\n\n if (d > max) {\n max = d;\n }\n\n if (d < min) {\n min = d;\n }\n }\n\n distances.max = max - min;\n distances.min = min;\n distances.v = l = vars.amount || vars.each * (wrap > l ? l - 1 : !axis ? Math.max(wrap, l / wrap) : axis === \"y\" ? l / wrap : wrap) || 0;\n distances.b = l < 0 ? base - l : base;\n }\n\n l = (distances[i] - distances.min) / distances.max;\n return distances.b + (ease ? ease.getRatio(l) : l) * distances.v;\n };\n },\n TweenMax = function TweenMax(target, duration, vars) {\n TweenLite.call(this, target, duration, vars);\n this._cycle = 0;\n this._yoyo = this.vars.yoyo === true || !!this.vars.yoyoEase;\n this._repeat = this.vars.repeat || 0;\n this._repeatDelay = this.vars.repeatDelay || 0;\n\n if (this._repeat) {\n this._uncache(true); //ensures that if there is any repeat, the totalDuration will get recalculated to accurately report it.\n\n }\n\n this.render = TweenMax.prototype.render; //speed optimization (avoid prototype lookup on this \"hot\" method)\n },\n _tinyNum = 0.00000001,\n TweenLiteInternals = TweenLite._internals,\n _isSelector = TweenLiteInternals.isSelector,\n _isArray = TweenLiteInternals.isArray,\n p = TweenMax.prototype = TweenLite.to({}, 0.1, {}),\n _blankArray = [];\n\n TweenMax.version = \"2.1.3\";\n p.constructor = TweenMax;\n p.kill()._gc = false;\n TweenMax.killTweensOf = TweenMax.killDelayedCallsTo = TweenLite.killTweensOf;\n TweenMax.getTweensOf = TweenLite.getTweensOf;\n TweenMax.lagSmoothing = TweenLite.lagSmoothing;\n TweenMax.ticker = TweenLite.ticker;\n TweenMax.render = TweenLite.render;\n TweenMax.distribute = _distribute;\n\n p.invalidate = function () {\n this._yoyo = this.vars.yoyo === true || !!this.vars.yoyoEase;\n this._repeat = this.vars.repeat || 0;\n this._repeatDelay = this.vars.repeatDelay || 0;\n this._yoyoEase = null;\n\n this._uncache(true);\n\n return TweenLite.prototype.invalidate.call(this);\n };\n\n p.updateTo = function (vars, resetDuration) {\n var self = this,\n curRatio = self.ratio,\n immediate = self.vars.immediateRender || vars.immediateRender,\n p;\n\n if (resetDuration && self._startTime < self._timeline._time) {\n self._startTime = self._timeline._time;\n\n self._uncache(false);\n\n if (self._gc) {\n self._enabled(true, false);\n } else {\n self._timeline.insert(self, self._startTime - self._delay); //ensures that any necessary re-sequencing of Animations in the timeline occurs to make sure the rendering order is correct.\n\n }\n }\n\n for (p in vars) {\n self.vars[p] = vars[p];\n }\n\n if (self._initted || immediate) {\n if (resetDuration) {\n self._initted = false;\n\n if (immediate) {\n self.render(0, true, true);\n }\n } else {\n if (self._gc) {\n self._enabled(true, false);\n }\n\n if (self._notifyPluginsOfEnabled && self._firstPT) {\n TweenLite._onPluginEvent(\"_onDisable\", self); //in case a plugin like MotionBlur must perform some cleanup tasks\n\n }\n\n if (self._time / self._duration > 0.998) {\n //if the tween has finished (or come extremely close to finishing), we just need to rewind it to 0 and then render it again at the end which forces it to re-initialize (parsing the new vars). We allow tweens that are close to finishing (but haven't quite finished) to work this way too because otherwise, the values are so small when determining where to project the starting values that binary math issues creep in and can make the tween appear to render incorrectly when run backwards.\n var prevTime = self._totalTime;\n self.render(0, true, false);\n self._initted = false;\n self.render(prevTime, true, false);\n } else {\n self._initted = false;\n\n self._init();\n\n if (self._time > 0 || immediate) {\n var inv = 1 / (1 - curRatio),\n pt = self._firstPT,\n endValue;\n\n while (pt) {\n endValue = pt.s + pt.c;\n pt.c *= inv;\n pt.s = endValue - pt.c;\n pt = pt._next;\n }\n }\n }\n }\n }\n\n return self;\n };\n\n p.render = function (time, suppressEvents, force) {\n if (!this._initted) if (this._duration === 0 && this.vars.repeat) {\n //zero duration tweens that render immediately have render() called from TweenLite's constructor, before TweenMax's constructor has finished setting _repeat, _repeatDelay, and _yoyo which are critical in determining totalDuration() so we need to call invalidate() which is a low-kb way to get those set properly.\n this.invalidate();\n }\n var self = this,\n totalDur = !self._dirty ? self._totalDuration : self.totalDuration(),\n prevTime = self._time,\n prevTotalTime = self._totalTime,\n prevCycle = self._cycle,\n duration = self._duration,\n prevRawPrevTime = self._rawPrevTime,\n isComplete,\n callback,\n pt,\n cycleDuration,\n r,\n type,\n pow,\n rawPrevTime,\n yoyoEase;\n\n if (time >= totalDur - _tinyNum && time >= 0) {\n //to work around occasional floating point math artifacts.\n self._totalTime = totalDur;\n self._cycle = self._repeat;\n\n if (self._yoyo && (self._cycle & 1) !== 0) {\n self._time = 0;\n self.ratio = self._ease._calcEnd ? self._ease.getRatio(0) : 0;\n } else {\n self._time = duration;\n self.ratio = self._ease._calcEnd ? self._ease.getRatio(1) : 1;\n }\n\n if (!self._reversed) {\n isComplete = true;\n callback = \"onComplete\";\n force = force || self._timeline.autoRemoveChildren; //otherwise, if the animation is unpaused/activated after it's already finished, it doesn't get removed from the parent timeline.\n }\n\n if (duration === 0) if (self._initted || !self.vars.lazy || force) {\n //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the \"playhead\" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's \"playhead\" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.\n if (self._startTime === self._timeline._duration) {\n //if a zero-duration tween is at the VERY end of a timeline and that timeline renders at its end, it will typically add a tiny bit of cushion to the render time to prevent rounding errors from getting in the way of tweens rendering their VERY end. If we then reverse() that timeline, the zero-duration tween will trigger its onReverseComplete even though technically the playhead didn't pass over it again. It's a very specific edge case we must accommodate.\n time = 0;\n }\n\n if (prevRawPrevTime < 0 || time <= 0 && time >= -_tinyNum || prevRawPrevTime === _tinyNum && self.data !== \"isPause\") if (prevRawPrevTime !== time) {\n //note: when this.data is \"isPause\", it's a callback added by addPause() on a timeline that we should not be triggered when LEAVING its exact start time. In other words, tl.addPause(1).play(1) shouldn't pause.\n force = true;\n\n if (prevRawPrevTime > _tinyNum) {\n callback = \"onReverseComplete\";\n }\n }\n self._rawPrevTime = rawPrevTime = !suppressEvents || time || prevRawPrevTime === time ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.\n }\n } else if (time < _tinyNum) {\n //to work around occasional floating point math artifacts, round super small values to 0.\n self._totalTime = self._time = self._cycle = 0;\n self.ratio = self._ease._calcEnd ? self._ease.getRatio(0) : 0;\n\n if (prevTotalTime !== 0 || duration === 0 && prevRawPrevTime > 0) {\n callback = \"onReverseComplete\";\n isComplete = self._reversed;\n }\n\n if (time > -_tinyNum) {\n time = 0;\n } else if (time < 0) {\n self._active = false;\n if (duration === 0) if (self._initted || !self.vars.lazy || force) {\n //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the \"playhead\" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's \"playhead\" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered.\n if (prevRawPrevTime >= 0) {\n force = true;\n }\n\n self._rawPrevTime = rawPrevTime = !suppressEvents || time || prevRawPrevTime === time ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.\n }\n }\n\n if (!self._initted) {\n //if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.\n force = true;\n }\n } else {\n self._totalTime = self._time = time;\n\n if (self._repeat !== 0) {\n cycleDuration = duration + self._repeatDelay;\n self._cycle = self._totalTime / cycleDuration >> 0; //originally _totalTime % cycleDuration but floating point errors caused problems, so I normalized it. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (self._cycle !== 0) if (self._cycle === self._totalTime / cycleDuration && prevTotalTime <= time) {\n self._cycle--; //otherwise when rendered exactly at the end time, it will act as though it is repeating (at the beginning)\n }\n self._time = self._totalTime - self._cycle * cycleDuration;\n if (self._yoyo) if ((self._cycle & 1) !== 0) {\n self._time = duration - self._time;\n yoyoEase = self._yoyoEase || self.vars.yoyoEase; //note: we don't set this._yoyoEase in _init() like we do other properties because it's TweenMax-specific and doing it here allows us to optimize performance (most tweens don't have a yoyoEase). Note that we also must skip the this.ratio calculation further down right after we _init() in this function, because we're doing it here.\n\n if (yoyoEase) {\n if (!self._yoyoEase) {\n if (yoyoEase === true && !self._initted) {\n //if it's not initted and yoyoEase is true, this._ease won't have been populated yet so we must discern it here.\n yoyoEase = self.vars.ease;\n self._yoyoEase = yoyoEase = !yoyoEase ? TweenLite.defaultEase : yoyoEase instanceof Ease ? yoyoEase : typeof yoyoEase === \"function\" ? new Ease(yoyoEase, self.vars.easeParams) : Ease.map[yoyoEase] || TweenLite.defaultEase;\n } else {\n self._yoyoEase = yoyoEase = yoyoEase === true ? self._ease : yoyoEase instanceof Ease ? yoyoEase : Ease.map[yoyoEase];\n }\n }\n\n self.ratio = yoyoEase ? 1 - yoyoEase.getRatio((duration - self._time) / duration) : 0;\n }\n }\n\n if (self._time > duration) {\n self._time = duration;\n } else if (self._time < 0) {\n self._time = 0;\n }\n }\n\n if (self._easeType && !yoyoEase) {\n r = self._time / duration;\n type = self._easeType;\n pow = self._easePower;\n\n if (type === 1 || type === 3 && r >= 0.5) {\n r = 1 - r;\n }\n\n if (type === 3) {\n r *= 2;\n }\n\n if (pow === 1) {\n r *= r;\n } else if (pow === 2) {\n r *= r * r;\n } else if (pow === 3) {\n r *= r * r * r;\n } else if (pow === 4) {\n r *= r * r * r * r;\n }\n\n self.ratio = type === 1 ? 1 - r : type === 2 ? r : self._time / duration < 0.5 ? r / 2 : 1 - r / 2;\n } else if (!yoyoEase) {\n self.ratio = self._ease.getRatio(self._time / duration);\n }\n }\n\n if (prevTime === self._time && !force && prevCycle === self._cycle) {\n if (prevTotalTime !== self._totalTime) if (self._onUpdate) if (!suppressEvents) {\n //so that onUpdate fires even during the repeatDelay - as long as the totalTime changed, we should trigger onUpdate.\n self._callback(\"onUpdate\");\n }\n return;\n } else if (!self._initted) {\n self._init();\n\n if (!self._initted || self._gc) {\n //immediateRender tweens typically won't initialize until the playhead advances (_time is greater than 0) in order to ensure that overwriting occurs properly. Also, if all of the tweening properties have been overwritten (which would cause _gc to be true, as set in _init()), we shouldn't continue otherwise an onStart callback could be called for example.\n return;\n } else if (!force && self._firstPT && (self.vars.lazy !== false && self._duration || self.vars.lazy && !self._duration)) {\n //we stick it in the queue for rendering at the very end of the tick - this is a performance optimization because browsers invalidate styles and force a recalculation if you read, write, and then read style data (so it's better to read/read/read/write/write/write than read/write/read/write/read/write). The down side, of course, is that usually you WANT things to render immediately because you may have code running right after that which depends on the change. Like imagine running TweenLite.set(...) and then immediately after that, creating a nother tween that animates the same property to another value; the starting values of that 2nd tween wouldn't be accurate if lazy is true.\n self._time = prevTime;\n self._totalTime = prevTotalTime;\n self._rawPrevTime = prevRawPrevTime;\n self._cycle = prevCycle;\n TweenLiteInternals.lazyTweens.push(self);\n self._lazy = [time, suppressEvents];\n return;\n } //_ease is initially set to defaultEase, so now that init() has run, _ease is set properly and we need to recalculate the ratio. Overall this is faster than using conditional logic earlier in the method to avoid having to set ratio twice because we only init() once but renderTime() gets called VERY frequently.\n\n\n if (self._time && !isComplete && !yoyoEase) {\n self.ratio = self._ease.getRatio(self._time / duration);\n } else if (isComplete && this._ease._calcEnd && !yoyoEase) {\n self.ratio = self._ease.getRatio(self._time === 0 ? 0 : 1);\n }\n }\n\n if (self._lazy !== false) {\n self._lazy = false;\n }\n\n if (!self._active) if (!self._paused && self._time !== prevTime && time >= 0) {\n self._active = true; //so that if the user renders a tween (as opposed to the timeline rendering it), the timeline is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the tween already finished but the user manually re-renders it as halfway done.\n }\n\n if (prevTotalTime === 0) {\n if (self._initted === 2 && time > 0) {\n self._init(); //will just apply overwriting since _initted of (2) means it was a from() tween that had immediateRender:true\n\n }\n\n if (self._startAt) {\n if (time >= 0) {\n self._startAt.render(time, true, force);\n } else if (!callback) {\n callback = \"_dummyGS\"; //if no callback is defined, use a dummy value just so that the condition at the end evaluates as true because _startAt should render AFTER the normal render loop when the time is negative. We could handle this in a more intuitive way, of course, but the render loop is the MOST important thing to optimize, so this technique allows us to avoid adding extra conditional logic in a high-frequency area.\n }\n }\n\n if (self.vars.onStart) if (self._totalTime !== 0 || duration === 0) if (!suppressEvents) {\n self._callback(\"onStart\");\n }\n }\n\n pt = self._firstPT;\n\n while (pt) {\n if (pt.f) {\n pt.t[pt.p](pt.c * self.ratio + pt.s);\n } else {\n pt.t[pt.p] = pt.c * self.ratio + pt.s;\n }\n\n pt = pt._next;\n }\n\n if (self._onUpdate) {\n if (time < 0) if (self._startAt && self._startTime) {\n //if the tween is positioned at the VERY beginning (_startTime 0) of its parent timeline, it's illegal for the playhead to go back further, so we should not render the recorded startAt values.\n self._startAt.render(time, true, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.\n\n }\n if (!suppressEvents) if (self._totalTime !== prevTotalTime || callback) {\n self._callback(\"onUpdate\");\n }\n }\n\n if (self._cycle !== prevCycle) if (!suppressEvents) if (!self._gc) if (self.vars.onRepeat) {\n self._callback(\"onRepeat\");\n }\n if (callback) if (!self._gc || force) {\n //check gc because there's a chance that kill() could be called in an onUpdate\n if (time < 0 && self._startAt && !self._onUpdate && self._startTime) {\n //if the tween is positioned at the VERY beginning (_startTime 0) of its parent timeline, it's illegal for the playhead to go back further, so we should not render the recorded startAt values.\n self._startAt.render(time, true, force);\n }\n\n if (isComplete) {\n if (self._timeline.autoRemoveChildren) {\n self._enabled(false, false);\n }\n\n self._active = false;\n }\n\n if (!suppressEvents && self.vars[callback]) {\n self._callback(callback);\n }\n\n if (duration === 0 && self._rawPrevTime === _tinyNum && rawPrevTime !== _tinyNum) {\n //the onComplete or onReverseComplete could trigger movement of the playhead and for zero-duration tweens (which must discern direction) that land directly back on their start time, we don't want to fire again on the next render. Think of several addPause()'s in a timeline that forces the playhead to a certain spot, but what if it's already paused and another tween is tweening the \"time\" of the timeline? Each time it moves [forward] past that spot, it would move back, and since suppressEvents is true, it'd reset _rawPrevTime to _tinyNum so that when it begins again, the callback would fire (so ultimately it could bounce back and forth during that tween). Again, this is a very uncommon scenario, but possible nonetheless.\n self._rawPrevTime = 0;\n }\n }\n }; //---- STATIC FUNCTIONS -----------------------------------------------------------------------------------------------------------\n\n\n TweenMax.to = function (target, duration, vars) {\n return new TweenMax(target, duration, vars);\n };\n\n TweenMax.from = function (target, duration, vars) {\n vars.runBackwards = true;\n vars.immediateRender = vars.immediateRender != false;\n return new TweenMax(target, duration, vars);\n };\n\n TweenMax.fromTo = function (target, duration, fromVars, toVars) {\n toVars.startAt = fromVars;\n toVars.immediateRender = toVars.immediateRender != false && fromVars.immediateRender != false;\n return new TweenMax(target, duration, toVars);\n };\n\n TweenMax.staggerTo = TweenMax.allTo = function (targets, duration, vars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {\n var a = [],\n staggerFunc = _distribute(vars.stagger || stagger),\n cycle = vars.cycle,\n fromCycle = (vars.startAt || _blankArray).cycle,\n l,\n copy,\n i,\n p;\n\n if (!_isArray(targets)) {\n if (typeof targets === \"string\") {\n targets = TweenLite.selector(targets) || targets;\n }\n\n if (_isSelector(targets)) {\n targets = _slice(targets);\n }\n }\n\n targets = targets || [];\n l = targets.length - 1;\n\n for (i = 0; i <= l; i++) {\n copy = {};\n\n for (p in vars) {\n copy[p] = vars[p];\n }\n\n if (cycle) {\n _applyCycle(copy, targets, i);\n\n if (copy.duration != null) {\n duration = copy.duration;\n delete copy.duration;\n }\n }\n\n if (fromCycle) {\n fromCycle = copy.startAt = {};\n\n for (p in vars.startAt) {\n fromCycle[p] = vars.startAt[p];\n }\n\n _applyCycle(copy.startAt, targets, i);\n }\n\n copy.delay = staggerFunc(i, targets[i], targets) + (copy.delay || 0);\n\n if (i === l && onCompleteAll) {\n copy.onComplete = function () {\n if (vars.onComplete) {\n vars.onComplete.apply(vars.onCompleteScope || this, arguments);\n }\n\n onCompleteAll.apply(onCompleteAllScope || vars.callbackScope || this, onCompleteAllParams || _blankArray);\n };\n }\n\n a[i] = new TweenMax(targets[i], duration, copy);\n }\n\n return a;\n };\n\n TweenMax.staggerFrom = TweenMax.allFrom = function (targets, duration, vars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {\n vars.runBackwards = true;\n vars.immediateRender = vars.immediateRender != false;\n return TweenMax.staggerTo(targets, duration, vars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope);\n };\n\n TweenMax.staggerFromTo = TweenMax.allFromTo = function (targets, duration, fromVars, toVars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {\n toVars.startAt = fromVars;\n toVars.immediateRender = toVars.immediateRender != false && fromVars.immediateRender != false;\n return TweenMax.staggerTo(targets, duration, toVars, stagger, onCompleteAll, onCompleteAllParams, onCompleteAllScope);\n };\n\n TweenMax.delayedCall = function (delay, callback, params, scope, useFrames) {\n return new TweenMax(callback, 0, {\n delay: delay,\n onComplete: callback,\n onCompleteParams: params,\n callbackScope: scope,\n onReverseComplete: callback,\n onReverseCompleteParams: params,\n immediateRender: false,\n useFrames: useFrames,\n overwrite: 0\n });\n };\n\n TweenMax.set = function (target, vars) {\n return new TweenMax(target, 0, vars);\n };\n\n TweenMax.isTweening = function (target) {\n return TweenLite.getTweensOf(target, true).length > 0;\n };\n\n var _getChildrenOf = function _getChildrenOf(timeline, includeTimelines) {\n var a = [],\n cnt = 0,\n tween = timeline._first;\n\n while (tween) {\n if (tween instanceof TweenLite) {\n a[cnt++] = tween;\n } else {\n if (includeTimelines) {\n a[cnt++] = tween;\n }\n\n a = a.concat(_getChildrenOf(tween, includeTimelines));\n cnt = a.length;\n }\n\n tween = tween._next;\n }\n\n return a;\n },\n getAllTweens = TweenMax.getAllTweens = function (includeTimelines) {\n return _getChildrenOf(Animation._rootTimeline, includeTimelines).concat(_getChildrenOf(Animation._rootFramesTimeline, includeTimelines));\n };\n\n TweenMax.killAll = function (complete, tweens, delayedCalls, timelines) {\n if (tweens == null) {\n tweens = true;\n }\n\n if (delayedCalls == null) {\n delayedCalls = true;\n }\n\n var a = getAllTweens(timelines != false),\n l = a.length,\n allTrue = tweens && delayedCalls && timelines,\n isDC,\n tween,\n i;\n\n for (i = 0; i < l; i++) {\n tween = a[i];\n\n if (allTrue || tween instanceof SimpleTimeline || (isDC = tween.target === tween.vars.onComplete) && delayedCalls || tweens && !isDC) {\n if (complete) {\n tween.totalTime(tween._reversed ? 0 : tween.totalDuration());\n } else {\n tween._enabled(false, false);\n }\n }\n }\n };\n\n TweenMax.killChildTweensOf = function (parent, complete) {\n if (parent == null) {\n return;\n }\n\n var tl = TweenLiteInternals.tweenLookup,\n a,\n curParent,\n p,\n i,\n l;\n\n if (typeof parent === \"string\") {\n parent = TweenLite.selector(parent) || parent;\n }\n\n if (_isSelector(parent)) {\n parent = _slice(parent);\n }\n\n if (_isArray(parent)) {\n i = parent.length;\n\n while (--i > -1) {\n TweenMax.killChildTweensOf(parent[i], complete);\n }\n\n return;\n }\n\n a = [];\n\n for (p in tl) {\n curParent = tl[p].target.parentNode;\n\n while (curParent) {\n if (curParent === parent) {\n a = a.concat(tl[p].tweens);\n }\n\n curParent = curParent.parentNode;\n }\n }\n\n l = a.length;\n\n for (i = 0; i < l; i++) {\n if (complete) {\n a[i].totalTime(a[i].totalDuration());\n }\n\n a[i]._enabled(false, false);\n }\n };\n\n var _changePause = function _changePause(pause, tweens, delayedCalls, timelines) {\n tweens = tweens !== false;\n delayedCalls = delayedCalls !== false;\n timelines = timelines !== false;\n var a = getAllTweens(timelines),\n allTrue = tweens && delayedCalls && timelines,\n i = a.length,\n isDC,\n tween;\n\n while (--i > -1) {\n tween = a[i];\n\n if (allTrue || tween instanceof SimpleTimeline || (isDC = tween.target === tween.vars.onComplete) && delayedCalls || tweens && !isDC) {\n tween.paused(pause);\n }\n }\n };\n\n TweenMax.pauseAll = function (tweens, delayedCalls, timelines) {\n _changePause(true, tweens, delayedCalls, timelines);\n };\n\n TweenMax.resumeAll = function (tweens, delayedCalls, timelines) {\n _changePause(false, tweens, delayedCalls, timelines);\n };\n\n TweenMax.globalTimeScale = function (value) {\n var tl = Animation._rootTimeline,\n t = TweenLite.ticker.time;\n\n if (!arguments.length) {\n return tl._timeScale;\n }\n\n value = value || _tinyNum; //can't allow zero because it'll throw the math off\n\n tl._startTime = t - (t - tl._startTime) * tl._timeScale / value;\n tl = Animation._rootFramesTimeline;\n t = TweenLite.ticker.frame;\n tl._startTime = t - (t - tl._startTime) * tl._timeScale / value;\n tl._timeScale = Animation._rootTimeline._timeScale = value;\n return value;\n }; //---- GETTERS / SETTERS ----------------------------------------------------------------------------------------------------------\n\n\n p.progress = function (value, suppressEvents) {\n return !arguments.length ? this.duration() ? this._time / this._duration : this.ratio : this.totalTime(this.duration() * (this._yoyo && (this._cycle & 1) !== 0 ? 1 - value : value) + this._cycle * (this._duration + this._repeatDelay), suppressEvents);\n };\n\n p.totalProgress = function (value, suppressEvents) {\n return !arguments.length ? this._totalTime / this.totalDuration() : this.totalTime(this.totalDuration() * value, suppressEvents);\n };\n\n p.time = function (value, suppressEvents) {\n if (!arguments.length) {\n return this._time;\n }\n\n if (this._dirty) {\n this.totalDuration();\n }\n\n var duration = this._duration,\n cycle = this._cycle,\n cycleDur = cycle * (duration + this._repeatDelay);\n\n if (value > duration) {\n value = duration;\n }\n\n return this.totalTime(this._yoyo && cycle & 1 ? duration - value + cycleDur : this._repeat ? value + cycleDur : value, suppressEvents);\n };\n\n p.duration = function (value) {\n if (!arguments.length) {\n return this._duration; //don't set _dirty = false because there could be repeats that haven't been factored into the _totalDuration yet. Otherwise, if you create a repeated TweenMax and then immediately check its duration(), it would cache the value and the totalDuration would not be correct, thus repeats wouldn't take effect.\n }\n\n return Animation.prototype.duration.call(this, value);\n };\n\n p.totalDuration = function (value) {\n if (!arguments.length) {\n if (this._dirty) {\n //instead of Infinity, we use 999999999999 so that we can accommodate reverses\n this._totalDuration = this._repeat === -1 ? 999999999999 : this._duration * (this._repeat + 1) + this._repeatDelay * this._repeat;\n this._dirty = false;\n }\n\n return this._totalDuration;\n }\n\n return this._repeat === -1 ? this : this.duration((value - this._repeat * this._repeatDelay) / (this._repeat + 1));\n };\n\n p.repeat = function (value) {\n if (!arguments.length) {\n return this._repeat;\n }\n\n this._repeat = value;\n return this._uncache(true);\n };\n\n p.repeatDelay = function (value) {\n if (!arguments.length) {\n return this._repeatDelay;\n }\n\n this._repeatDelay = value;\n return this._uncache(true);\n };\n\n p.yoyo = function (value) {\n if (!arguments.length) {\n return this._yoyo;\n }\n\n this._yoyo = value;\n return this;\n };\n\n return TweenMax;\n}, true);\n\nexport var TweenMax = globals.TweenMax;\nexport var TweenMaxBase = TweenMax;\nexport { TweenMax as default };\nexport { TweenLite, Ease, Power0, Power1, Power2, Power3, Power4, Linear };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * VERSION: 2.1.3\n * DATE: 2019-05-17\n * UPDATES AND DOCS AT: http://greensock.com\n *\n * @license Copyright (c) 2008-2019, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n * \n * @author: Jack Doyle, jack@greensock.com\n */\n\n/* eslint-disable */\nimport TweenLite, { _gsScope, globals, TweenPlugin } from \"./TweenLite.js\";\n\n_gsScope._gsDefine(\"plugins.CSSPlugin\", [\"plugins.TweenPlugin\", \"TweenLite\"], function () {\n /** @constructor **/\n var CSSPlugin = function CSSPlugin() {\n TweenPlugin.call(this, \"css\");\n this._overwriteProps.length = 0;\n this.setRatio = CSSPlugin.prototype.setRatio; //speed optimization (avoid prototype lookup on this \"hot\" method)\n },\n _globals = _gsScope._gsDefine.globals,\n _hasPriority,\n //turns true whenever a CSSPropTween instance is created that has a priority other than 0. This helps us discern whether or not we should spend the time organizing the linked list or not after a CSSPlugin's _onInitTween() method is called.\n _suffixMap,\n //we set this in _onInitTween() each time as a way to have a persistent variable we can use in other methods like _parse() without having to pass it around as a parameter and we keep _parse() decoupled from a particular CSSPlugin instance\n _cs,\n //computed style (we store this in a shared variable to conserve memory and make minification tighter\n _overwriteProps,\n //alias to the currently instantiating CSSPlugin's _overwriteProps array. We use this closure in order to avoid having to pass a reference around from method to method and aid in minification.\n _specialProps = {},\n p = CSSPlugin.prototype = new TweenPlugin(\"css\");\n\n p.constructor = CSSPlugin;\n CSSPlugin.version = \"2.1.3\";\n CSSPlugin.API = 2;\n CSSPlugin.defaultTransformPerspective = 0;\n CSSPlugin.defaultSkewType = \"compensated\";\n CSSPlugin.defaultSmoothOrigin = true;\n p = \"px\"; //we'll reuse the \"p\" variable to keep file size down\n\n CSSPlugin.suffixMap = {\n top: p,\n right: p,\n bottom: p,\n left: p,\n width: p,\n height: p,\n fontSize: p,\n padding: p,\n margin: p,\n perspective: p,\n lineHeight: \"\"\n };\n\n var _numExp = /(?:\\-|\\.|\\b)(\\d|\\.|e\\-)+/g,\n _relNumExp = /(?:\\d|\\-\\d|\\.\\d|\\-\\.\\d|\\+=\\d|\\-=\\d|\\+=.\\d|\\-=\\.\\d)+/g,\n _valuesExp = /(?:\\+=|\\-=|\\-|\\b)[\\d\\-\\.]+[a-zA-Z0-9]*(?:%|\\b)/gi,\n //finds all the values that begin with numbers or += or -= and then a number. Includes suffixes. We use this to split complex values apart like \"1px 5px 20px rgb(255,102,51)\"\n _valuesExpWithCommas = /(?:\\+=|\\-=|\\-|\\b)[\\d\\-\\.]+[a-zA-Z0-9]*(?:%|\\b),?/gi,\n //finds all the values that begin with numbers or += or -= and then a number. Includes suffixes. We use this to split complex values apart like \"1px 5px 20px rgb(255,102,51)\"\n _NaNExp = /(?![+-]?\\d*\\.?\\d+|[+-]|e[+-]\\d+)[^0-9]/g,\n //also allows scientific notation and doesn't kill the leading -/+ in -= and +=\n _suffixExp = /(?:\\d|\\-|\\+|=|#|\\.)*/g,\n _opacityExp = /opacity *= *([^)]*)/i,\n _opacityValExp = /opacity:([^;]*)/i,\n _alphaFilterExp = /alpha\\(opacity *=.+?\\)/i,\n _rgbhslExp = /^(rgb|hsl)/,\n _capsExp = /([A-Z])/g,\n _camelExp = /-([a-z])/gi,\n _urlExp = /(^(?:url\\(\\\"|url\\())|(?:(\\\"\\))$|\\)$)/gi,\n //for pulling out urls from url(...) or url(\"...\") strings (some browsers wrap urls in quotes, some don't when reporting things like backgroundImage)\n _camelFunc = function _camelFunc(s, g) {\n return g.toUpperCase();\n },\n _horizExp = /(?:Left|Right|Width)/i,\n _ieGetMatrixExp = /(M11|M12|M21|M22)=[\\d\\-\\.e]+/gi,\n _ieSetMatrixExp = /progid\\:DXImageTransform\\.Microsoft\\.Matrix\\(.+?\\)/i,\n _commasOutsideParenExp = /,(?=[^\\)]*(?:\\(|$))/gi,\n //finds any commas that are not within parenthesis\n _complexExp = /[\\s,\\(]/i,\n //for testing a string to find if it has a space, comma, or open parenthesis (clues that it's a complex value)\n _DEG2RAD = Math.PI / 180,\n _RAD2DEG = 180 / Math.PI,\n _forcePT = {},\n _dummyElement = {\n style: {}\n },\n _doc = _gsScope.document || {\n createElement: function createElement() {\n return _dummyElement;\n }\n },\n _createElement = function _createElement(type, ns) {\n var e = _doc.createElementNS ? _doc.createElementNS(ns || \"http://www.w3.org/1999/xhtml\", type) : _doc.createElement(type);\n return e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://greensock.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).\n },\n _tempDiv = _createElement(\"div\"),\n _tempImg = _createElement(\"img\"),\n _internals = CSSPlugin._internals = {\n _specialProps: _specialProps\n },\n //provides a hook to a few internal methods that we need to access from inside other plugins\n _agent = (_gsScope.navigator || {}).userAgent || \"\",\n _autoRound,\n _reqSafariFix,\n //we won't apply the Safari transform fix until we actually come across a tween that affects a transform property (to maintain best performance).\n _isSafari,\n _isFirefox,\n //Firefox has a bug that causes 3D transformed elements to randomly disappear unless a repaint is forced after each update on each element.\n _isSafariLT6,\n //Safari (and Android 4 which uses a flavor of Safari) has a bug that prevents changes to \"top\" and \"left\" properties from rendering properly if changed on the same frame as a transform UNLESS we set the element's WebkitBackfaceVisibility to hidden (weird, I know). Doing this for Android 3 and earlier seems to actually cause other problems, though (fun!)\n _ieVers,\n _supportsOpacity = function () {\n //we set _isSafari, _ieVers, _isFirefox, and _supportsOpacity all in one function here to reduce file size slightly, especially in the minified version.\n var i = _agent.indexOf(\"Android\"),\n a = _createElement(\"a\");\n\n _isSafari = _agent.indexOf(\"Safari\") !== -1 && _agent.indexOf(\"Chrome\") === -1 && (i === -1 || parseFloat(_agent.substr(i + 8, 2)) > 3);\n _isSafariLT6 = _isSafari && parseFloat(_agent.substr(_agent.indexOf(\"Version/\") + 8, 2)) < 6;\n _isFirefox = _agent.indexOf(\"Firefox\") !== -1;\n\n if (/MSIE ([0-9]{1,}[\\.0-9]{0,})/.exec(_agent) || /Trident\\/.*rv:([0-9]{1,}[\\.0-9]{0,})/.exec(_agent)) {\n _ieVers = parseFloat(RegExp.$1);\n }\n\n if (!a) {\n return false;\n }\n\n a.style.cssText = \"top:1px;opacity:.55;\";\n return /^0.55/.test(a.style.opacity);\n }(),\n _getIEOpacity = function _getIEOpacity(v) {\n return _opacityExp.test(typeof v === \"string\" ? v : (v.currentStyle ? v.currentStyle.filter : v.style.filter) || \"\") ? parseFloat(RegExp.$1) / 100 : 1;\n },\n _log = function _log(s) {\n //for logging messages, but in a way that won't throw errors in old versions of IE.\n if (_gsScope.console) {\n console.log(s);\n }\n },\n _target,\n //when initting a CSSPlugin, we set this variable so that we can access it from within many other functions without having to pass it around as params\n _index,\n //when initting a CSSPlugin, we set this variable so that we can access it from within many other functions without having to pass it around as params\n _prefixCSS = \"\",\n //the non-camelCase vendor prefix like \"-o-\", \"-moz-\", \"-ms-\", or \"-webkit-\"\n _prefix = \"\",\n //camelCase vendor prefix like \"O\", \"ms\", \"Webkit\", or \"Moz\".\n // @private feed in a camelCase property name like \"transform\" and it will check to see if it is valid as-is or if it needs a vendor prefix. It returns the corrected camelCase property name (i.e. \"WebkitTransform\" or \"MozTransform\" or \"transform\" or null if no such property is found, like if the browser is IE8 or before, \"transform\" won't be found at all)\n _checkPropPrefix = function _checkPropPrefix(p, e) {\n e = e || _tempDiv;\n var s = e.style,\n a,\n i;\n\n if (s[p] !== undefined) {\n return p;\n }\n\n p = p.charAt(0).toUpperCase() + p.substr(1);\n a = [\"O\", \"Moz\", \"ms\", \"Ms\", \"Webkit\"];\n i = 5;\n\n while (--i > -1 && s[a[i] + p] === undefined) {}\n\n if (i >= 0) {\n _prefix = i === 3 ? \"ms\" : a[i];\n _prefixCSS = \"-\" + _prefix.toLowerCase() + \"-\";\n return _prefix + p;\n }\n\n return null;\n },\n _computedStyleScope = typeof window !== \"undefined\" ? window : _doc.defaultView || {\n getComputedStyle: function getComputedStyle() {}\n },\n _getComputedStyle = function _getComputedStyle(e) {\n return _computedStyleScope.getComputedStyle(e); //to avoid errors in Microsoft Edge, we need to call getComputedStyle() from a specific scope, typically window.\n },\n\n /**\n * @private Returns the css style for a particular property of an element. For example, to get whatever the current \"left\" css value for an element with an ID of \"myElement\", you could do:\n * var currentLeft = CSSPlugin.getStyle( document.getElementById(\"myElement\"), \"left\");\n *\n * @param {!Object} t Target element whose style property you want to query\n * @param {!string} p Property name (like \"left\" or \"top\" or \"marginTop\", etc.)\n * @param {Object=} cs Computed style object. This just provides a way to speed processing if you're going to get several properties on the same element in quick succession - you can reuse the result of the getComputedStyle() call.\n * @param {boolean=} calc If true, the value will not be read directly from the element's \"style\" property (if it exists there), but instead the getComputedStyle() result will be used. This can be useful when you want to ensure that the browser itself is interpreting the value.\n * @param {string=} dflt Default value that should be returned in the place of null, \"none\", \"auto\" or \"auto auto\".\n * @return {?string} The current property value\n */\n _getStyle = CSSPlugin.getStyle = function (t, p, cs, calc, dflt) {\n var rv;\n if (!_supportsOpacity) if (p === \"opacity\") {\n //several versions of IE don't use the standard \"opacity\" property - they use things like filter:alpha(opacity=50), so we parse that here.\n return _getIEOpacity(t);\n }\n\n if (!calc && t.style[p]) {\n rv = t.style[p];\n } else if (cs = cs || _getComputedStyle(t)) {\n rv = cs[p] || cs.getPropertyValue(p) || cs.getPropertyValue(p.replace(_capsExp, \"-$1\").toLowerCase());\n } else if (t.currentStyle) {\n rv = t.currentStyle[p];\n }\n\n return dflt != null && (!rv || rv === \"none\" || rv === \"auto\" || rv === \"auto auto\") ? dflt : rv;\n },\n\n /**\n * @private Pass the target element, the property name, the numeric value, and the suffix (like \"%\", \"em\", \"px\", etc.) and it will spit back the equivalent pixel number.\n * @param {!Object} t Target element\n * @param {!string} p Property name (like \"left\", \"top\", \"marginLeft\", etc.)\n * @param {!number} v Value\n * @param {string=} sfx Suffix (like \"px\" or \"%\" or \"em\")\n * @param {boolean=} recurse If true, the call is a recursive one. In some browsers (like IE7/8), occasionally the value isn't accurately reported initially, but if we run the function again it will take effect.\n * @return {number} value in pixels\n */\n _convertToPixels = _internals.convertToPixels = function (t, p, v, sfx, recurse) {\n if (sfx === \"px\" || !sfx && p !== \"lineHeight\") {\n return v;\n }\n\n if (sfx === \"auto\" || !v) {\n return 0;\n }\n\n var horiz = _horizExp.test(p),\n node = t,\n style = _tempDiv.style,\n neg = v < 0,\n precise = v === 1,\n pix,\n cache,\n time;\n\n if (neg) {\n v = -v;\n }\n\n if (precise) {\n v *= 100;\n }\n\n if (p === \"lineHeight\" && !sfx) {\n //special case of when a simple lineHeight (without a unit) is used. Set it to the value, read back the computed value, and then revert.\n cache = _getComputedStyle(t).lineHeight;\n t.style.lineHeight = v;\n pix = parseFloat(_getComputedStyle(t).lineHeight);\n t.style.lineHeight = cache;\n } else if (sfx === \"%\" && p.indexOf(\"border\") !== -1) {\n pix = v / 100 * (horiz ? t.clientWidth : t.clientHeight);\n } else {\n style.cssText = \"border:0 solid red;position:\" + _getStyle(t, \"position\") + \";line-height:0;\";\n\n if (sfx === \"%\" || !node.appendChild || sfx.charAt(0) === \"v\" || sfx === \"rem\") {\n node = t.parentNode || _doc.body;\n\n if (_getStyle(node, \"display\").indexOf(\"flex\") !== -1) {\n //Edge and IE11 have a bug that causes offsetWidth to report as 0 if the container has display:flex and the child is position:relative. Switching to position: absolute solves it.\n style.position = \"absolute\";\n }\n\n cache = node._gsCache;\n time = TweenLite.ticker.frame;\n\n if (cache && horiz && cache.time === time) {\n //performance optimization: we record the width of elements along with the ticker frame so that we can quickly get it again on the same tick (seems relatively safe to assume it wouldn't change on the same tick)\n return cache.width * v / 100;\n }\n\n style[horiz ? \"width\" : \"height\"] = v + sfx;\n } else {\n style[horiz ? \"borderLeftWidth\" : \"borderTopWidth\"] = v + sfx;\n }\n\n node.appendChild(_tempDiv);\n pix = parseFloat(_tempDiv[horiz ? \"offsetWidth\" : \"offsetHeight\"]);\n node.removeChild(_tempDiv);\n\n if (horiz && sfx === \"%\" && CSSPlugin.cacheWidths !== false) {\n cache = node._gsCache = node._gsCache || {};\n cache.time = time;\n cache.width = pix / v * 100;\n }\n\n if (pix === 0 && !recurse) {\n pix = _convertToPixels(t, p, v, sfx, true);\n }\n }\n\n if (precise) {\n pix /= 100;\n }\n\n return neg ? -pix : pix;\n },\n _calculateOffset = _internals.calculateOffset = function (t, p, cs) {\n //for figuring out \"top\" or \"left\" in px when it's \"auto\". We need to factor in margin with the offsetLeft/offsetTop\n if (_getStyle(t, \"position\", cs) !== \"absolute\") {\n return 0;\n }\n\n var dim = p === \"left\" ? \"Left\" : \"Top\",\n v = _getStyle(t, \"margin\" + dim, cs);\n\n return t[\"offset\" + dim] - (_convertToPixels(t, p, parseFloat(v), v.replace(_suffixExp, \"\")) || 0);\n },\n // @private returns at object containing ALL of the style properties in camelCase and their associated values.\n _getAllStyles = function _getAllStyles(t, cs) {\n var s = {},\n i,\n tr,\n p;\n\n if (cs = cs || _getComputedStyle(t, null)) {\n if (i = cs.length) {\n while (--i > -1) {\n p = cs[i];\n\n if (p.indexOf(\"-transform\") === -1 || _transformPropCSS === p) {\n //Some webkit browsers duplicate transform values, one non-prefixed and one prefixed (\"transform\" and \"WebkitTransform\"), so we must weed out the extra one here.\n s[p.replace(_camelExp, _camelFunc)] = cs.getPropertyValue(p);\n }\n }\n } else {\n //some browsers behave differently - cs.length is always 0, so we must do a for...in loop.\n for (i in cs) {\n if (i.indexOf(\"Transform\") === -1 || _transformProp === i) {\n //Some webkit browsers duplicate transform values, one non-prefixed and one prefixed (\"transform\" and \"WebkitTransform\"), so we must weed out the extra one here.\n s[i] = cs[i];\n }\n }\n }\n } else if (cs = t.currentStyle || t.style) {\n for (i in cs) {\n if (typeof i === \"string\" && s[i] === undefined) {\n s[i.replace(_camelExp, _camelFunc)] = cs[i];\n }\n }\n }\n\n if (!_supportsOpacity) {\n s.opacity = _getIEOpacity(t);\n }\n\n tr = _getTransform(t, cs, false);\n s.rotation = tr.rotation;\n s.skewX = tr.skewX;\n s.scaleX = tr.scaleX;\n s.scaleY = tr.scaleY;\n s.x = tr.x;\n s.y = tr.y;\n\n if (_supports3D) {\n s.z = tr.z;\n s.rotationX = tr.rotationX;\n s.rotationY = tr.rotationY;\n s.scaleZ = tr.scaleZ;\n }\n\n if (s.filters) {\n delete s.filters;\n }\n\n return s;\n },\n // @private analyzes two style objects (as returned by _getAllStyles()) and only looks for differences between them that contain tweenable values (like a number or color). It returns an object with a \"difs\" property which refers to an object containing only those isolated properties and values for tweening, and a \"firstMPT\" property which refers to the first MiniPropTween instance in a linked list that recorded all the starting values of the different properties so that we can revert to them at the end or beginning of the tween - we don't want the cascading to get messed up. The forceLookup parameter is an optional generic object with properties that should be forced into the results - this is necessary for className tweens that are overwriting others because imagine a scenario where a rollover/rollout adds/removes a class and the user swipes the mouse over the target SUPER fast, thus nothing actually changed yet and the subsequent comparison of the properties would indicate they match (especially when px rounding is taken into consideration), thus no tweening is necessary even though it SHOULD tween and remove those properties after the tween (otherwise the inline styles will contaminate things). See the className SpecialProp code for details.\n _cssDif = function _cssDif(t, s1, s2, vars, forceLookup) {\n var difs = {},\n style = t.style,\n val,\n p,\n mpt;\n\n for (p in s2) {\n if (p !== \"cssText\") if (p !== \"length\") if (isNaN(p)) if (s1[p] !== (val = s2[p]) || forceLookup && forceLookup[p]) if (p.indexOf(\"Origin\") === -1) if (typeof val === \"number\" || typeof val === \"string\") {\n difs[p] = val === \"auto\" && (p === \"left\" || p === \"top\") ? _calculateOffset(t, p) : (val === \"\" || val === \"auto\" || val === \"none\") && typeof s1[p] === \"string\" && s1[p].replace(_NaNExp, \"\") !== \"\" ? 0 : val; //if the ending value is defaulting (\"\" or \"auto\"), we check the starting value and if it can be parsed into a number (a string which could have a suffix too, like 700px), then we swap in 0 for \"\" or \"auto\" so that things actually tween.\n\n if (style[p] !== undefined) {\n //for className tweens, we must remember which properties already existed inline - the ones that didn't should be removed when the tween isn't in progress because they were only introduced to facilitate the transition between classes.\n mpt = new MiniPropTween(style, p, style[p], mpt);\n }\n }\n }\n\n if (vars) {\n for (p in vars) {\n //copy properties (except className)\n if (p !== \"className\") {\n difs[p] = vars[p];\n }\n }\n }\n\n return {\n difs: difs,\n firstMPT: mpt\n };\n },\n _dimensions = {\n width: [\"Left\", \"Right\"],\n height: [\"Top\", \"Bottom\"]\n },\n _margins = [\"marginLeft\", \"marginRight\", \"marginTop\", \"marginBottom\"],\n\n /**\n * @private Gets the width or height of an element\n * @param {!Object} t Target element\n * @param {!string} p Property name (\"width\" or \"height\")\n * @param {Object=} cs Computed style object (if one exists). Just a speed optimization.\n * @return {number} Dimension (in pixels)\n */\n _getDimension = function _getDimension(t, p, cs) {\n if ((t.nodeName + \"\").toLowerCase() === \"svg\") {\n //Chrome no longer supports offsetWidth/offsetHeight on SVG elements.\n return (cs || _getComputedStyle(t))[p] || 0;\n } else if (t.getCTM && _isSVG(t)) {\n return t.getBBox()[p] || 0;\n }\n\n var v = parseFloat(p === \"width\" ? t.offsetWidth : t.offsetHeight),\n a = _dimensions[p],\n i = a.length;\n cs = cs || _getComputedStyle(t, null);\n\n while (--i > -1) {\n v -= parseFloat(_getStyle(t, \"padding\" + a[i], cs, true)) || 0;\n v -= parseFloat(_getStyle(t, \"border\" + a[i] + \"Width\", cs, true)) || 0;\n }\n\n return v;\n },\n // @private Parses position-related complex strings like \"top left\" or \"50px 10px\" or \"70% 20%\", etc. which are used for things like transformOrigin or backgroundPosition. Optionally decorates a supplied object (recObj) with the following properties: \"ox\" (offsetX), \"oy\" (offsetY), \"oxp\" (if true, \"ox\" is a percentage not a pixel value), and \"oxy\" (if true, \"oy\" is a percentage not a pixel value)\n _parsePosition = function _parsePosition(v, recObj) {\n if (v === \"contain\" || v === \"auto\" || v === \"auto auto\") {\n //note: Firefox uses \"auto auto\" as default whereas Chrome uses \"auto\".\n return v + \" \";\n }\n\n if (v == null || v === \"\") {\n v = \"0 0\";\n }\n\n var a = v.split(\" \"),\n x = v.indexOf(\"left\") !== -1 ? \"0%\" : v.indexOf(\"right\") !== -1 ? \"100%\" : a[0],\n y = v.indexOf(\"top\") !== -1 ? \"0%\" : v.indexOf(\"bottom\") !== -1 ? \"100%\" : a[1],\n i;\n\n if (a.length > 3 && !recObj) {\n //multiple positions\n a = v.split(\", \").join(\",\").split(\",\");\n v = [];\n\n for (i = 0; i < a.length; i++) {\n v.push(_parsePosition(a[i]));\n }\n\n return v.join(\",\");\n }\n\n if (y == null) {\n y = x === \"center\" ? \"50%\" : \"0\";\n } else if (y === \"center\") {\n y = \"50%\";\n }\n\n if (x === \"center\" || isNaN(parseFloat(x)) && (x + \"\").indexOf(\"=\") === -1) {\n //remember, the user could flip-flop the values and say \"bottom center\" or \"center bottom\", etc. \"center\" is ambiguous because it could be used to describe horizontal or vertical, hence the isNaN(). If there's an \"=\" sign in the value, it's relative.\n x = \"50%\";\n }\n\n v = x + \" \" + y + (a.length > 2 ? \" \" + a[2] : \"\");\n\n if (recObj) {\n recObj.oxp = x.indexOf(\"%\") !== -1;\n recObj.oyp = y.indexOf(\"%\") !== -1;\n recObj.oxr = x.charAt(1) === \"=\";\n recObj.oyr = y.charAt(1) === \"=\";\n recObj.ox = parseFloat(x.replace(_NaNExp, \"\"));\n recObj.oy = parseFloat(y.replace(_NaNExp, \"\"));\n recObj.v = v;\n }\n\n return recObj || v;\n },\n\n /**\n * @private Takes an ending value (typically a string, but can be a number) and a starting value and returns the change between the two, looking for relative value indicators like += and -= and it also ignores suffixes (but make sure the ending value starts with a number or +=/-= and that the starting value is a NUMBER!)\n * @param {(number|string)} e End value which is typically a string, but could be a number\n * @param {(number|string)} b Beginning value which is typically a string but could be a number\n * @return {number} Amount of change between the beginning and ending values (relative values that have a \"+=\" or \"-=\" are recognized)\n */\n _parseChange = function _parseChange(e, b) {\n if (typeof e === \"function\") {\n e = e(_index, _target);\n }\n\n return typeof e === \"string\" && e.charAt(1) === \"=\" ? parseInt(e.charAt(0) + \"1\", 10) * parseFloat(e.substr(2)) : parseFloat(e) - parseFloat(b) || 0;\n },\n\n /**\n * @private Takes a value and a default number, checks if the value is relative, null, or numeric and spits back a normalized number accordingly. Primarily used in the _parseTransform() function.\n * @param {Object} v Value to be parsed\n * @param {!number} d Default value (which is also used for relative calculations if \"+=\" or \"-=\" is found in the first parameter)\n * @return {number} Parsed value\n */\n _parseVal = function _parseVal(v, d) {\n if (typeof v === \"function\") {\n v = v(_index, _target);\n }\n\n var isRelative = typeof v === \"string\" && v.charAt(1) === \"=\";\n\n if (typeof v === \"string\" && v.charAt(v.length - 2) === \"v\") {\n //convert vw and vh into px-equivalents.\n v = (isRelative ? v.substr(0, 2) : 0) + window[\"inner\" + (v.substr(-2) === \"vh\" ? \"Height\" : \"Width\")] * (parseFloat(isRelative ? v.substr(2) : v) / 100);\n }\n\n return v == null ? d : isRelative ? parseInt(v.charAt(0) + \"1\", 10) * parseFloat(v.substr(2)) + d : parseFloat(v) || 0;\n },\n\n /**\n * @private Translates strings like \"40deg\" or \"40\" or 40rad\" or \"+=40deg\" or \"270_short\" or \"-90_cw\" or \"+=45_ccw\" to a numeric radian angle. Of course a starting/default value must be fed in too so that relative values can be calculated properly.\n * @param {Object} v Value to be parsed\n * @param {!number} d Default value (which is also used for relative calculations if \"+=\" or \"-=\" is found in the first parameter)\n * @param {string=} p property name for directionalEnd (optional - only used when the parsed value is directional (\"_short\", \"_cw\", or \"_ccw\" suffix). We need a way to store the uncompensated value so that at the end of the tween, we set it to exactly what was requested with no directional compensation). Property name would be \"rotation\", \"rotationX\", or \"rotationY\"\n * @param {Object=} directionalEnd An object that will store the raw end values for directional angles (\"_short\", \"_cw\", or \"_ccw\" suffix). We need a way to store the uncompensated value so that at the end of the tween, we set it to exactly what was requested with no directional compensation.\n * @return {number} parsed angle in radians\n */\n _parseAngle = function _parseAngle(v, d, p, directionalEnd) {\n var min = 0.000001,\n cap,\n split,\n dif,\n result,\n isRelative;\n\n if (typeof v === \"function\") {\n v = v(_index, _target);\n }\n\n if (v == null) {\n result = d;\n } else if (typeof v === \"number\") {\n result = v;\n } else {\n cap = 360;\n split = v.split(\"_\");\n isRelative = v.charAt(1) === \"=\";\n dif = (isRelative ? parseInt(v.charAt(0) + \"1\", 10) * parseFloat(split[0].substr(2)) : parseFloat(split[0])) * (v.indexOf(\"rad\") === -1 ? 1 : _RAD2DEG) - (isRelative ? 0 : d);\n\n if (split.length) {\n if (directionalEnd) {\n directionalEnd[p] = d + dif;\n }\n\n if (v.indexOf(\"short\") !== -1) {\n dif = dif % cap;\n\n if (dif !== dif % (cap / 2)) {\n dif = dif < 0 ? dif + cap : dif - cap;\n }\n }\n\n if (v.indexOf(\"_cw\") !== -1 && dif < 0) {\n dif = (dif + cap * 9999999999) % cap - (dif / cap | 0) * cap;\n } else if (v.indexOf(\"ccw\") !== -1 && dif > 0) {\n dif = (dif - cap * 9999999999) % cap - (dif / cap | 0) * cap;\n }\n }\n\n result = d + dif;\n }\n\n if (result < min && result > -min) {\n result = 0;\n }\n\n return result;\n },\n _colorLookup = {\n aqua: [0, 255, 255],\n lime: [0, 255, 0],\n silver: [192, 192, 192],\n black: [0, 0, 0],\n maroon: [128, 0, 0],\n teal: [0, 128, 128],\n blue: [0, 0, 255],\n navy: [0, 0, 128],\n white: [255, 255, 255],\n fuchsia: [255, 0, 255],\n olive: [128, 128, 0],\n yellow: [255, 255, 0],\n orange: [255, 165, 0],\n gray: [128, 128, 128],\n purple: [128, 0, 128],\n green: [0, 128, 0],\n red: [255, 0, 0],\n pink: [255, 192, 203],\n cyan: [0, 255, 255],\n transparent: [255, 255, 255, 0]\n },\n _hue = function _hue(h, m1, m2) {\n h = h < 0 ? h + 1 : h > 1 ? h - 1 : h;\n return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < 0.5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * 255 + 0.5 | 0;\n },\n\n /**\n * @private Parses a color (like #9F0, #FF9900, rgb(255,51,153) or hsl(108, 50%, 10%)) into an array with 3 elements for red, green, and blue or if toHSL parameter is true, it will populate the array with hue, saturation, and lightness values. If a relative value is found in an hsl() or hsla() string, it will preserve those relative prefixes and all the values in the array will be strings instead of numbers (in all other cases it will be populated with numbers).\n * @param {(string|number)} v The value the should be parsed which could be a string like #9F0 or rgb(255,102,51) or rgba(255,0,0,0.5) or it could be a number like 0xFF00CC or even a named color like red, blue, purple, etc.\n * @param {(boolean)} toHSL If true, an hsl() or hsla() value will be returned instead of rgb() or rgba()\n * @return {Array.} An array containing red, green, and blue (and optionally alpha) in that order, or if the toHSL parameter was true, the array will contain hue, saturation and lightness (and optionally alpha) in that order. Always numbers unless there's a relative prefix found in an hsl() or hsla() string and toHSL is true.\n */\n _parseColor = CSSPlugin.parseColor = function (v, toHSL) {\n var a, r, g, b, h, s, l, max, min, d, wasHSL;\n\n if (!v) {\n a = _colorLookup.black;\n } else if (typeof v === \"number\") {\n a = [v >> 16, v >> 8 & 255, v & 255];\n } else {\n if (v.charAt(v.length - 1) === \",\") {\n //sometimes a trailing comma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:\"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)\" - in this example \"blue,\" has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.\n v = v.substr(0, v.length - 1);\n }\n\n if (_colorLookup[v]) {\n a = _colorLookup[v];\n } else if (v.charAt(0) === \"#\") {\n if (v.length === 4) {\n //for shorthand like #9F0\n r = v.charAt(1);\n g = v.charAt(2);\n b = v.charAt(3);\n v = \"#\" + r + r + g + g + b + b;\n }\n\n v = parseInt(v.substr(1), 16);\n a = [v >> 16, v >> 8 & 255, v & 255];\n } else if (v.substr(0, 3) === \"hsl\") {\n a = wasHSL = v.match(_numExp);\n\n if (!toHSL) {\n h = Number(a[0]) % 360 / 360;\n s = Number(a[1]) / 100;\n l = Number(a[2]) / 100;\n g = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n r = l * 2 - g;\n\n if (a.length > 3) {\n a[3] = Number(a[3]);\n }\n\n a[0] = _hue(h + 1 / 3, r, g);\n a[1] = _hue(h, r, g);\n a[2] = _hue(h - 1 / 3, r, g);\n } else if (v.indexOf(\"=\") !== -1) {\n //if relative values are found, just return the raw strings with the relative prefixes in place.\n return v.match(_relNumExp);\n }\n } else {\n a = v.match(_numExp) || _colorLookup.transparent;\n }\n\n a[0] = Number(a[0]);\n a[1] = Number(a[1]);\n a[2] = Number(a[2]);\n\n if (a.length > 3) {\n a[3] = Number(a[3]);\n }\n }\n\n if (toHSL && !wasHSL) {\n r = a[0] / 255;\n g = a[1] / 255;\n b = a[2] / 255;\n max = Math.max(r, g, b);\n min = Math.min(r, g, b);\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;\n h *= 60;\n }\n\n a[0] = h + 0.5 | 0;\n a[1] = s * 100 + 0.5 | 0;\n a[2] = l * 100 + 0.5 | 0;\n }\n\n return a;\n },\n _formatColors = function _formatColors(s, toHSL) {\n var colors = s.match(_colorExp) || [],\n charIndex = 0,\n parsed = \"\",\n i,\n color,\n temp;\n\n if (!colors.length) {\n return s;\n }\n\n for (i = 0; i < colors.length; i++) {\n color = colors[i];\n temp = s.substr(charIndex, s.indexOf(color, charIndex) - charIndex);\n charIndex += temp.length + color.length;\n color = _parseColor(color, toHSL);\n\n if (color.length === 3) {\n color.push(1);\n }\n\n parsed += temp + (toHSL ? \"hsla(\" + color[0] + \",\" + color[1] + \"%,\" + color[2] + \"%,\" + color[3] : \"rgba(\" + color.join(\",\")) + \")\";\n }\n\n return parsed + s.substr(charIndex);\n },\n _colorExp = \"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#(?:[0-9a-f]{3}){1,2}\\\\b\"; //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.\n\n\n for (p in _colorLookup) {\n _colorExp += \"|\" + p + \"\\\\b\";\n }\n\n _colorExp = new RegExp(_colorExp + \")\", \"gi\");\n\n CSSPlugin.colorStringFilter = function (a) {\n var combined = a[0] + \" \" + a[1],\n toHSL;\n\n if (_colorExp.test(combined)) {\n toHSL = combined.indexOf(\"hsl(\") !== -1 || combined.indexOf(\"hsla(\") !== -1;\n a[0] = _formatColors(a[0], toHSL);\n a[1] = _formatColors(a[1], toHSL);\n }\n\n _colorExp.lastIndex = 0;\n };\n\n if (!TweenLite.defaultStringFilter) {\n TweenLite.defaultStringFilter = CSSPlugin.colorStringFilter;\n }\n /**\n * @private Returns a formatter function that handles taking a string (or number in some cases) and returning a consistently formatted one in terms of delimiters, quantity of values, etc. For example, we may get boxShadow values defined as \"0px red\" or \"0px 0px 10px rgb(255,0,0)\" or \"0px 0px 20px 20px #F00\" and we need to ensure that what we get back is described with 4 numbers and a color. This allows us to feed it into the _parseComplex() method and split the values up appropriately. The neat thing about this _getFormatter() function is that the dflt defines a pattern as well as a default, so for example, _getFormatter(\"0px 0px 0px 0px #777\", true) not only sets the default as 0px for all distances and #777 for the color, but also sets the pattern such that 4 numbers and a color will always get returned.\n * @param {!string} dflt The default value and pattern to follow. So \"0px 0px 0px 0px #777\" will ensure that 4 numbers and a color will always get returned.\n * @param {boolean=} clr If true, the values should be searched for color-related data. For example, boxShadow values typically contain a color whereas borderRadius don't.\n * @param {boolean=} collapsible If true, the value is a top/left/right/bottom style one that acts like margin or padding, where if only one value is received, it's used for all 4; if 2 are received, the first is duplicated for 3rd (bottom) and the 2nd is duplicated for the 4th spot (left), etc.\n * @return {Function} formatter function\n */\n\n\n var _getFormatter = function _getFormatter(dflt, clr, collapsible, multi) {\n if (dflt == null) {\n return function (v) {\n return v;\n };\n }\n\n var dColor = clr ? (dflt.match(_colorExp) || [\"\"])[0] : \"\",\n dVals = dflt.split(dColor).join(\"\").match(_valuesExp) || [],\n pfx = dflt.substr(0, dflt.indexOf(dVals[0])),\n sfx = dflt.charAt(dflt.length - 1) === \")\" ? \")\" : \"\",\n delim = dflt.indexOf(\" \") !== -1 ? \" \" : \",\",\n numVals = dVals.length,\n dSfx = numVals > 0 ? dVals[0].replace(_numExp, \"\") : \"\",\n _formatter2;\n\n if (!numVals) {\n return function (v) {\n return v;\n };\n }\n\n if (clr) {\n _formatter2 = function formatter(v) {\n var color, vals, i, a;\n\n if (typeof v === \"number\") {\n v += dSfx;\n } else if (multi && _commasOutsideParenExp.test(v)) {\n a = v.replace(_commasOutsideParenExp, \"|\").split(\"|\");\n\n for (i = 0; i < a.length; i++) {\n a[i] = _formatter2(a[i]);\n }\n\n return a.join(\",\");\n }\n\n color = (v.match(_colorExp) || [dColor])[0];\n vals = v.split(color).join(\"\").match(_valuesExp) || [];\n i = vals.length;\n\n if (numVals > i--) {\n while (++i < numVals) {\n vals[i] = collapsible ? vals[(i - 1) / 2 | 0] : dVals[i];\n }\n }\n\n return pfx + vals.join(delim) + delim + color + sfx + (v.indexOf(\"inset\") !== -1 ? \" inset\" : \"\");\n };\n\n return _formatter2;\n }\n\n _formatter2 = function _formatter(v) {\n var vals, a, i;\n\n if (typeof v === \"number\") {\n v += dSfx;\n } else if (multi && _commasOutsideParenExp.test(v)) {\n a = v.replace(_commasOutsideParenExp, \"|\").split(\"|\");\n\n for (i = 0; i < a.length; i++) {\n a[i] = _formatter2(a[i]);\n }\n\n return a.join(\",\");\n }\n\n vals = v.match(delim === \",\" ? _valuesExp : _valuesExpWithCommas) || [];\n i = vals.length;\n\n if (numVals > i--) {\n while (++i < numVals) {\n vals[i] = collapsible ? vals[(i - 1) / 2 | 0] : dVals[i];\n }\n }\n\n return (pfx && v !== \"none\" ? v.substr(0, v.indexOf(vals[0])) || pfx : pfx) + vals.join(delim) + sfx; //note: prefix might be different, like for clipPath it could start with inset( or polygon(\n };\n\n return _formatter2;\n },\n\n /**\n * @private returns a formatter function that's used for edge-related values like marginTop, marginLeft, paddingBottom, paddingRight, etc. Just pass a comma-delimited list of property names related to the edges.\n * @param {!string} props a comma-delimited list of property names in order from top to left, like \"marginTop,marginRight,marginBottom,marginLeft\"\n * @return {Function} a formatter function\n */\n _getEdgeParser = function _getEdgeParser(props) {\n props = props.split(\",\");\n return function (t, e, p, cssp, pt, plugin, vars) {\n var a = (e + \"\").split(\" \"),\n i;\n vars = {};\n\n for (i = 0; i < 4; i++) {\n vars[props[i]] = a[i] = a[i] || a[(i - 1) / 2 >> 0];\n }\n\n return cssp.parse(t, vars, pt, plugin);\n };\n },\n // @private used when other plugins must tween values first, like BezierPlugin or ThrowPropsPlugin, etc. That plugin's setRatio() gets called first so that the values are updated, and then we loop through the MiniPropTweens which handle copying the values into their appropriate slots so that they can then be applied correctly in the main CSSPlugin setRatio() method. Remember, we typically create a proxy object that has a bunch of uniquely-named properties that we feed to the sub-plugin and it does its magic normally, and then we must interpret those values and apply them to the css because often numbers must get combined/concatenated, suffixes added, etc. to work with css, like boxShadow could have 4 values plus a color.\n _setPluginRatio = _internals._setPluginRatio = function (v) {\n this.plugin.setRatio(v);\n var d = this.data,\n proxy = d.proxy,\n mpt = d.firstMPT,\n min = 0.000001,\n val,\n pt,\n i,\n str,\n p;\n\n while (mpt) {\n val = proxy[mpt.v];\n\n if (mpt.r) {\n val = mpt.r(val);\n } else if (val < min && val > -min) {\n val = 0;\n }\n\n mpt.t[mpt.p] = val;\n mpt = mpt._next;\n }\n\n if (d.autoRotate) {\n d.autoRotate.rotation = d.mod ? d.mod.call(this._tween, proxy.rotation, this.t, this._tween) : proxy.rotation; //special case for ModifyPlugin to hook into an auto-rotating bezier\n } //at the end, we must set the CSSPropTween's \"e\" (end) value dynamically here because that's what is used in the final setRatio() method. Same for \"b\" at the beginning.\n\n\n if (v === 1 || v === 0) {\n mpt = d.firstMPT;\n p = v === 1 ? \"e\" : \"b\";\n\n while (mpt) {\n pt = mpt.t;\n\n if (!pt.type) {\n pt[p] = pt.s + pt.xs0;\n } else if (pt.type === 1) {\n str = pt.xs0 + pt.s + pt.xs1;\n\n for (i = 1; i < pt.l; i++) {\n str += pt[\"xn\" + i] + pt[\"xs\" + (i + 1)];\n }\n\n pt[p] = str;\n }\n\n mpt = mpt._next;\n }\n }\n },\n\n /**\n * @private @constructor Used by a few SpecialProps to hold important values for proxies. For example, _parseToProxy() creates a MiniPropTween instance for each property that must get tweened on the proxy, and we record the original property name as well as the unique one we create for the proxy, plus whether or not the value needs to be rounded plus the original value.\n * @param {!Object} t target object whose property we're tweening (often a CSSPropTween)\n * @param {!string} p property name\n * @param {(number|string|object)} v value\n * @param {MiniPropTween=} next next MiniPropTween in the linked list\n * @param {boolean=} r if true, the tweened value should be rounded to the nearest integer\n */\n MiniPropTween = function MiniPropTween(t, p, v, next, r) {\n this.t = t;\n this.p = p;\n this.v = v;\n this.r = r;\n\n if (next) {\n next._prev = this;\n this._next = next;\n }\n },\n\n /**\n * @private Most other plugins (like BezierPlugin and ThrowPropsPlugin and others) can only tween numeric values, but CSSPlugin must accommodate special values that have a bunch of extra data (like a suffix or strings between numeric values, etc.). For example, boxShadow has values like \"10px 10px 20px 30px rgb(255,0,0)\" which would utterly confuse other plugins. This method allows us to split that data apart and grab only the numeric data and attach it to uniquely-named properties of a generic proxy object ({}) so that we can feed that to virtually any plugin to have the numbers tweened. However, we must also keep track of which properties from the proxy go with which CSSPropTween values and instances. So we create a linked list of MiniPropTweens. Each one records a target (the original CSSPropTween), property (like \"s\" or \"xn1\" or \"xn2\") that we're tweening and the unique property name that was used for the proxy (like \"boxShadow_xn1\" and \"boxShadow_xn2\") and whether or not they need to be rounded. That way, in the _setPluginRatio() method we can simply copy the values over from the proxy to the CSSPropTween instance(s). Then, when the main CSSPlugin setRatio() method runs and applies the CSSPropTween values accordingly, they're updated nicely. So the external plugin tweens the numbers, _setPluginRatio() copies them over, and setRatio() acts normally, applying css-specific values to the element.\n * This method returns an object that has the following properties:\n * - proxy: a generic object containing the starting values for all the properties that will be tweened by the external plugin. This is what we feed to the external _onInitTween() as the target\n * - end: a generic object containing the ending values for all the properties that will be tweened by the external plugin. This is what we feed to the external plugin's _onInitTween() as the destination values\n * - firstMPT: the first MiniPropTween in the linked list\n * - pt: the first CSSPropTween in the linked list that was created when parsing. If shallow is true, this linked list will NOT attach to the one passed into the _parseToProxy() as the \"pt\" (4th) parameter.\n * @param {!Object} t target object to be tweened\n * @param {!(Object|string)} vars the object containing the information about the tweening values (typically the end/destination values) that should be parsed\n * @param {!CSSPlugin} cssp The CSSPlugin instance\n * @param {CSSPropTween=} pt the next CSSPropTween in the linked list\n * @param {TweenPlugin=} plugin the external TweenPlugin instance that will be handling tweening the numeric values\n * @param {boolean=} shallow if true, the resulting linked list from the parse will NOT be attached to the CSSPropTween that was passed in as the \"pt\" (4th) parameter.\n * @return An object containing the following properties: proxy, end, firstMPT, and pt (see above for descriptions)\n */\n _parseToProxy = _internals._parseToProxy = function (t, vars, cssp, pt, plugin, shallow) {\n var bpt = pt,\n start = {},\n end = {},\n transform = cssp._transform,\n oldForce = _forcePT,\n i,\n p,\n xp,\n mpt,\n firstPT;\n cssp._transform = null;\n _forcePT = vars;\n pt = firstPT = cssp.parse(t, vars, pt, plugin);\n _forcePT = oldForce; //break off from the linked list so the new ones are isolated.\n\n if (shallow) {\n cssp._transform = transform;\n\n if (bpt) {\n bpt._prev = null;\n\n if (bpt._prev) {\n bpt._prev._next = null;\n }\n }\n }\n\n while (pt && pt !== bpt) {\n if (pt.type <= 1) {\n p = pt.p;\n end[p] = pt.s + pt.c;\n start[p] = pt.s;\n\n if (!shallow) {\n mpt = new MiniPropTween(pt, \"s\", p, mpt, pt.r);\n pt.c = 0;\n }\n\n if (pt.type === 1) {\n i = pt.l;\n\n while (--i > 0) {\n xp = \"xn\" + i;\n p = pt.p + \"_\" + xp;\n end[p] = pt.data[xp];\n start[p] = pt[xp];\n\n if (!shallow) {\n mpt = new MiniPropTween(pt, xp, p, mpt, pt.rxp[xp]);\n }\n }\n }\n }\n\n pt = pt._next;\n }\n\n return {\n proxy: start,\n end: end,\n firstMPT: mpt,\n pt: firstPT\n };\n },\n\n /**\n * @constructor Each property that is tweened has at least one CSSPropTween associated with it. These instances store important information like the target, property, starting value, amount of change, etc. They can also optionally have a number of \"extra\" strings and numeric values named xs1, xn1, xs2, xn2, xs3, xn3, etc. where \"s\" indicates string and \"n\" indicates number. These can be pieced together in a complex-value tween (type:1) that has alternating types of data like a string, number, string, number, etc. For example, boxShadow could be \"5px 5px 8px rgb(102, 102, 51)\". In that value, there are 6 numbers that may need to tween and then pieced back together into a string again with spaces, suffixes, etc. xs0 is special in that it stores the suffix for standard (type:0) tweens, -OR- the first string (prefix) in a complex-value (type:1) CSSPropTween -OR- it can be the non-tweening value in a type:-1 CSSPropTween. We do this to conserve memory.\n * CSSPropTweens have the following optional properties as well (not defined through the constructor):\n * - l: Length in terms of the number of extra properties that the CSSPropTween has (default: 0). For example, for a boxShadow we may need to tween 5 numbers in which case l would be 5; Keep in mind that the start/end values for the first number that's tweened are always stored in the s and c properties to conserve memory. All additional values thereafter are stored in xn1, xn2, etc.\n * - xfirst: The first instance of any sub-CSSPropTweens that are tweening properties of this instance. For example, we may split up a boxShadow tween so that there's a main CSSPropTween of type:1 that has various xs* and xn* values associated with the h-shadow, v-shadow, blur, color, etc. Then we spawn a CSSPropTween for each of those that has a higher priority and runs BEFORE the main CSSPropTween so that the values are all set by the time it needs to re-assemble them. The xfirst gives us an easy way to identify the first one in that chain which typically ends at the main one (because they're all prepende to the linked list)\n * - plugin: The TweenPlugin instance that will handle the tweening of any complex values. For example, sometimes we don't want to use normal subtweens (like xfirst refers to) to tween the values - we might want ThrowPropsPlugin or BezierPlugin some other plugin to do the actual tweening, so we create a plugin instance and store a reference here. We need this reference so that if we get a request to round values or disable a tween, we can pass along that request.\n * - data: Arbitrary data that needs to be stored with the CSSPropTween. Typically if we're going to have a plugin handle the tweening of a complex-value tween, we create a generic object that stores the END values that we're tweening to and the CSSPropTween's xs1, xs2, etc. have the starting values. We store that object as data. That way, we can simply pass that object to the plugin and use the CSSPropTween as the target.\n * - setRatio: Only used for type:2 tweens that require custom functionality. In this case, we call the CSSPropTween's setRatio() method and pass the ratio each time the tween updates. This isn't quite as efficient as doing things directly in the CSSPlugin's setRatio() method, but it's very convenient and flexible.\n * @param {!Object} t Target object whose property will be tweened. Often a DOM element, but not always. It could be anything.\n * @param {string} p Property to tween (name). For example, to tween element.width, p would be \"width\".\n * @param {number} s Starting numeric value\n * @param {number} c Change in numeric value over the course of the entire tween. For example, if element.width starts at 5 and should end at 100, c would be 95.\n * @param {CSSPropTween=} next The next CSSPropTween in the linked list. If one is defined, we will define its _prev as the new instance, and the new instance's _next will be pointed at it.\n * @param {number=} type The type of CSSPropTween where -1 = a non-tweening value, 0 = a standard simple tween, 1 = a complex value (like one that has multiple numbers in a comma- or space-delimited string like border:\"1px solid red\"), and 2 = one that uses a custom setRatio function that does all of the work of applying the values on each update.\n * @param {string=} n Name of the property that should be used for overwriting purposes which is typically the same as p but not always. For example, we may need to create a subtween for the 2nd part of a \"clip:rect(...)\" tween in which case \"p\" might be xs1 but \"n\" is still \"clip\"\n * @param {boolean=} r If true, the value(s) should be rounded\n * @param {number=} pr Priority in the linked list order. Higher priority CSSPropTweens will be updated before lower priority ones. The default priority is 0.\n * @param {string=} b Beginning value. We store this to ensure that it is EXACTLY what it was when the tween began without any risk of interpretation issues.\n * @param {string=} e Ending value. We store this to ensure that it is EXACTLY what the user defined at the end of the tween without any risk of interpretation issues.\n */\n CSSPropTween = _internals.CSSPropTween = function (t, p, s, c, next, type, n, r, pr, b, e) {\n this.t = t; //target\n\n this.p = p; //property\n\n this.s = s; //starting value\n\n this.c = c; //change value\n\n this.n = n || p; //name that this CSSPropTween should be associated to (usually the same as p, but not always - n is what overwriting looks at)\n\n if (!(t instanceof CSSPropTween)) {\n _overwriteProps.push(this.n);\n }\n\n this.r = !r ? r : typeof r === \"function\" ? r : Math.round; //round (boolean)\n\n this.type = type || 0; //0 = normal tween, -1 = non-tweening (in which case xs0 will be applied to the target's property, like tp.t[tp.p] = tp.xs0), 1 = complex-value SpecialProp, 2 = custom setRatio() that does all the work\n\n if (pr) {\n this.pr = pr;\n _hasPriority = true;\n }\n\n this.b = b === undefined ? s : b;\n this.e = e === undefined ? s + c : e;\n\n if (next) {\n this._next = next;\n next._prev = this;\n }\n },\n _addNonTweeningNumericPT = function _addNonTweeningNumericPT(target, prop, start, end, next, overwriteProp) {\n //cleans up some code redundancies and helps minification. Just a fast way to add a NUMERIC non-tweening CSSPropTween\n var pt = new CSSPropTween(target, prop, start, end - start, next, -1, overwriteProp);\n pt.b = start;\n pt.e = pt.xs0 = end;\n return pt;\n },\n\n /**\n * Takes a target, the beginning value and ending value (as strings) and parses them into a CSSPropTween (possibly with child CSSPropTweens) that accommodates multiple numbers, colors, comma-delimited values, etc. For example:\n * sp.parseComplex(element, \"boxShadow\", \"5px 10px 20px rgb(255,102,51)\", \"0px 0px 0px red\", true, \"0px 0px 0px rgb(0,0,0,0)\", pt);\n * It will walk through the beginning and ending values (which should be in the same format with the same number and type of values) and figure out which parts are numbers, what strings separate the numeric/tweenable values, and then create the CSSPropTweens accordingly. If a plugin is defined, no child CSSPropTweens will be created. Instead, the ending values will be stored in the \"data\" property of the returned CSSPropTween like: {s:-5, xn1:-10, xn2:-20, xn3:255, xn4:0, xn5:0} so that it can be fed to any other plugin and it'll be plain numeric tweens but the recomposition of the complex value will be handled inside CSSPlugin's setRatio().\n * If a setRatio is defined, the type of the CSSPropTween will be set to 2 and recomposition of the values will be the responsibility of that method.\n *\n * @param {!Object} t Target whose property will be tweened\n * @param {!string} p Property that will be tweened (its name, like \"left\" or \"backgroundColor\" or \"boxShadow\")\n * @param {string} b Beginning value\n * @param {string} e Ending value\n * @param {boolean} clrs If true, the value could contain a color value like \"rgb(255,0,0)\" or \"#F00\" or \"red\". The default is false, so no colors will be recognized (a performance optimization)\n * @param {(string|number|Object)} dflt The default beginning value that should be used if no valid beginning value is defined or if the number of values inside the complex beginning and ending values don't match\n * @param {?CSSPropTween} pt CSSPropTween instance that is the current head of the linked list (we'll prepend to this).\n * @param {number=} pr Priority in the linked list order. Higher priority properties will be updated before lower priority ones. The default priority is 0.\n * @param {TweenPlugin=} plugin If a plugin should handle the tweening of extra properties, pass the plugin instance here. If one is defined, then NO subtweens will be created for any extra properties (the properties will be created - just not additional CSSPropTween instances to tween them) because the plugin is expected to do so. However, the end values WILL be populated in the \"data\" property, like {s:100, xn1:50, xn2:300}\n * @param {function(number)=} setRatio If values should be set in a custom function instead of being pieced together in a type:1 (complex-value) CSSPropTween, define that custom function here.\n * @return {CSSPropTween} The first CSSPropTween in the linked list which includes the new one(s) added by the parseComplex() call.\n */\n _parseComplex = CSSPlugin.parseComplex = function (t, p, b, e, clrs, dflt, pt, pr, plugin, setRatio) {\n //DEBUG: _log(\"parseComplex: \"+p+\", b: \"+b+\", e: \"+e);\n b = b || dflt || \"\";\n\n if (typeof e === \"function\") {\n e = e(_index, _target);\n }\n\n pt = new CSSPropTween(t, p, 0, 0, pt, setRatio ? 2 : 1, null, false, pr, b, e);\n e += \"\"; //ensures it's a string\n\n if (clrs && _colorExp.test(e + b)) {\n //if colors are found, normalize the formatting to rgba() or hsla().\n e = [b, e];\n CSSPlugin.colorStringFilter(e);\n b = e[0];\n e = e[1];\n }\n\n var ba = b.split(\", \").join(\",\").split(\" \"),\n //beginning array\n ea = e.split(\", \").join(\",\").split(\" \"),\n //ending array\n l = ba.length,\n autoRound = _autoRound !== false,\n i,\n xi,\n ni,\n bv,\n ev,\n bnums,\n enums,\n bn,\n hasAlpha,\n temp,\n cv,\n str,\n useHSL;\n\n if (e.indexOf(\",\") !== -1 || b.indexOf(\",\") !== -1) {\n if ((e + b).indexOf(\"rgb\") !== -1 || (e + b).indexOf(\"hsl\") !== -1) {\n //keep rgb(), rgba(), hsl(), and hsla() values together! (remember, we're splitting on spaces)\n ba = ba.join(\" \").replace(_commasOutsideParenExp, \", \").split(\" \");\n ea = ea.join(\" \").replace(_commasOutsideParenExp, \", \").split(\" \");\n } else {\n ba = ba.join(\" \").split(\",\").join(\", \").split(\" \");\n ea = ea.join(\" \").split(\",\").join(\", \").split(\" \");\n }\n\n l = ba.length;\n }\n\n if (l !== ea.length) {\n //DEBUG: _log(\"mismatched formatting detected on \" + p + \" (\" + b + \" vs \" + e + \")\");\n ba = (dflt || \"\").split(\" \");\n l = ba.length;\n }\n\n pt.plugin = plugin;\n pt.setRatio = setRatio;\n _colorExp.lastIndex = 0;\n\n for (i = 0; i < l; i++) {\n bv = ba[i];\n ev = ea[i] + \"\";\n bn = parseFloat(bv); //if the value begins with a number (most common). It's fine if it has a suffix like px\n\n if (bn || bn === 0) {\n pt.appendXtra(\"\", bn, _parseChange(ev, bn), ev.replace(_relNumExp, \"\"), autoRound && ev.indexOf(\"px\") !== -1 ? Math.round : false, true); //if the value is a color\n } else if (clrs && _colorExp.test(bv)) {\n str = ev.indexOf(\")\") + 1;\n str = \")\" + (str ? ev.substr(str) : \"\"); //if there's a comma or ) at the end, retain it.\n\n useHSL = ev.indexOf(\"hsl\") !== -1 && _supportsOpacity;\n temp = ev; //original string value so we can look for any prefix later.\n\n bv = _parseColor(bv, useHSL);\n ev = _parseColor(ev, useHSL);\n hasAlpha = bv.length + ev.length > 6;\n\n if (hasAlpha && !_supportsOpacity && ev[3] === 0) {\n //older versions of IE don't support rgba(), so if the destination alpha is 0, just use \"transparent\" for the end color\n pt[\"xs\" + pt.l] += pt.l ? \" transparent\" : \"transparent\";\n pt.e = pt.e.split(ea[i]).join(\"transparent\");\n } else {\n if (!_supportsOpacity) {\n //old versions of IE don't support rgba().\n hasAlpha = false;\n }\n\n if (useHSL) {\n pt.appendXtra(temp.substr(0, temp.indexOf(\"hsl\")) + (hasAlpha ? \"hsla(\" : \"hsl(\"), bv[0], _parseChange(ev[0], bv[0]), \",\", false, true).appendXtra(\"\", bv[1], _parseChange(ev[1], bv[1]), \"%,\", false).appendXtra(\"\", bv[2], _parseChange(ev[2], bv[2]), hasAlpha ? \"%,\" : \"%\" + str, false);\n } else {\n pt.appendXtra(temp.substr(0, temp.indexOf(\"rgb\")) + (hasAlpha ? \"rgba(\" : \"rgb(\"), bv[0], ev[0] - bv[0], \",\", Math.round, true).appendXtra(\"\", bv[1], ev[1] - bv[1], \",\", Math.round).appendXtra(\"\", bv[2], ev[2] - bv[2], hasAlpha ? \",\" : str, Math.round);\n }\n\n if (hasAlpha) {\n bv = bv.length < 4 ? 1 : bv[3];\n pt.appendXtra(\"\", bv, (ev.length < 4 ? 1 : ev[3]) - bv, str, false);\n }\n }\n\n _colorExp.lastIndex = 0; //otherwise the test() on the RegExp could move the lastIndex and taint future results.\n } else {\n bnums = bv.match(_numExp); //gets each group of numbers in the beginning value string and drops them into an array\n //if no number is found, treat it as a non-tweening value and just append the string to the current xs.\n\n if (!bnums) {\n pt[\"xs\" + pt.l] += pt.l || pt[\"xs\" + pt.l] ? \" \" + ev : ev; //loop through all the numbers that are found and construct the extra values on the pt.\n } else {\n enums = ev.match(_relNumExp); //get each group of numbers in the end value string and drop them into an array. We allow relative values too, like +=50 or -=.5\n\n if (!enums || enums.length !== bnums.length) {\n //DEBUG: _log(\"mismatched formatting detected on \" + p + \" (\" + b + \" vs \" + e + \")\");\n return pt;\n }\n\n ni = 0;\n\n for (xi = 0; xi < bnums.length; xi++) {\n cv = bnums[xi];\n temp = bv.indexOf(cv, ni);\n pt.appendXtra(bv.substr(ni, temp - ni), Number(cv), _parseChange(enums[xi], cv), \"\", autoRound && bv.substr(temp + cv.length, 2) === \"px\" ? Math.round : false, xi === 0);\n ni = temp + cv.length;\n }\n\n pt[\"xs\" + pt.l] += bv.substr(ni);\n }\n }\n } //if there are relative values (\"+=\" or \"-=\" prefix), we need to adjust the ending value to eliminate the prefixes and combine the values properly.\n\n\n if (e.indexOf(\"=\") !== -1) if (pt.data) {\n str = pt.xs0 + pt.data.s;\n\n for (i = 1; i < pt.l; i++) {\n str += pt[\"xs\" + i] + pt.data[\"xn\" + i];\n }\n\n pt.e = str + pt[\"xs\" + i];\n }\n\n if (!pt.l) {\n pt.type = -1;\n pt.xs0 = pt.e;\n }\n\n return pt.xfirst || pt;\n },\n i = 9;\n\n p = CSSPropTween.prototype;\n p.l = p.pr = 0; //length (number of extra properties like xn1, xn2, xn3, etc.\n\n while (--i > 0) {\n p[\"xn\" + i] = 0;\n p[\"xs\" + i] = \"\";\n }\n\n p.xs0 = \"\";\n p._next = p._prev = p.xfirst = p.data = p.plugin = p.setRatio = p.rxp = null;\n /**\n * Appends and extra tweening value to a CSSPropTween and automatically manages any prefix and suffix strings. The first extra value is stored in the s and c of the main CSSPropTween instance, but thereafter any extras are stored in the xn1, xn2, xn3, etc. The prefixes and suffixes are stored in the xs0, xs1, xs2, etc. properties. For example, if I walk through a clip value like \"rect(10px, 5px, 0px, 20px)\", the values would be stored like this:\n * xs0:\"rect(\", s:10, xs1:\"px, \", xn1:5, xs2:\"px, \", xn2:0, xs3:\"px, \", xn3:20, xn4:\"px)\"\n * And they'd all get joined together when the CSSPlugin renders (in the setRatio() method).\n * @param {string=} pfx Prefix (if any)\n * @param {!number} s Starting value\n * @param {!number} c Change in numeric value over the course of the entire tween. For example, if the start is 5 and the end is 100, the change would be 95.\n * @param {string=} sfx Suffix (if any)\n * @param {boolean=} r Round (if true).\n * @param {boolean=} pad If true, this extra value should be separated by the previous one by a space. If there is no previous extra and pad is true, it will automatically drop the space.\n * @return {CSSPropTween} returns itself so that multiple methods can be chained together.\n */\n\n p.appendXtra = function (pfx, s, c, sfx, r, pad) {\n var pt = this,\n l = pt.l;\n pt[\"xs\" + l] += pad && (l || pt[\"xs\" + l]) ? \" \" + pfx : pfx || \"\";\n if (!c) if (l !== 0 && !pt.plugin) {\n //typically we'll combine non-changing values right into the xs to optimize performance, but we don't combine them when there's a plugin that will be tweening the values because it may depend on the values being split apart, like for a bezier, if a value doesn't change between the first and second iteration but then it does on the 3rd, we'll run into trouble because there's no xn slot for that value!\n pt[\"xs\" + l] += s + (sfx || \"\");\n return pt;\n }\n pt.l++;\n pt.type = pt.setRatio ? 2 : 1;\n pt[\"xs\" + pt.l] = sfx || \"\";\n\n if (l > 0) {\n pt.data[\"xn\" + l] = s + c;\n pt.rxp[\"xn\" + l] = r; //round extra property (we need to tap into this in the _parseToProxy() method)\n\n pt[\"xn\" + l] = s;\n\n if (!pt.plugin) {\n pt.xfirst = new CSSPropTween(pt, \"xn\" + l, s, c, pt.xfirst || pt, 0, pt.n, r, pt.pr);\n pt.xfirst.xs0 = 0; //just to ensure that the property stays numeric which helps modern browsers speed up processing. Remember, in the setRatio() method, we do pt.t[pt.p] = val + pt.xs0 so if pt.xs0 is \"\" (the default), it'll cast the end value as a string. When a property is a number sometimes and a string sometimes, it prevents the compiler from locking in the data type, slowing things down slightly.\n }\n\n return pt;\n }\n\n pt.data = {\n s: s + c\n };\n pt.rxp = {};\n pt.s = s;\n pt.c = c;\n pt.r = r;\n return pt;\n };\n /**\n * @constructor A SpecialProp is basically a css property that needs to be treated in a non-standard way, like if it may contain a complex value like boxShadow:\"5px 10px 15px rgb(255, 102, 51)\" or if it is associated with another plugin like ThrowPropsPlugin or BezierPlugin. Every SpecialProp is associated with a particular property name like \"boxShadow\" or \"throwProps\" or \"bezier\" and it will intercept those values in the vars object that's passed to the CSSPlugin and handle them accordingly.\n * @param {!string} p Property name (like \"boxShadow\" or \"throwProps\")\n * @param {Object=} options An object containing any of the following configuration options:\n * - defaultValue: the default value\n * - parser: A function that should be called when the associated property name is found in the vars. This function should return a CSSPropTween instance and it should ensure that it is properly inserted into the linked list. It will receive 4 paramters: 1) The target, 2) The value defined in the vars, 3) The CSSPlugin instance (whose _firstPT should be used for the linked list), and 4) A computed style object if one was calculated (this is a speed optimization that allows retrieval of starting values quicker)\n * - formatter: a function that formats any value received for this special property (for example, boxShadow could take \"5px 5px red\" and format it to \"5px 5px 0px 0px red\" so that both the beginning and ending values have a common order and quantity of values.)\n * - prefix: if true, we'll determine whether or not this property requires a vendor prefix (like Webkit or Moz or ms or O)\n * - color: set this to true if the value for this SpecialProp may contain color-related values like rgb(), rgba(), etc.\n * - priority: priority in the linked list order. Higher priority SpecialProps will be updated before lower priority ones. The default priority is 0.\n * - multi: if true, the formatter should accommodate a comma-delimited list of values, like boxShadow could have multiple boxShadows listed out.\n * - collapsible: if true, the formatter should treat the value like it's a top/right/bottom/left value that could be collapsed, like \"5px\" would apply to all, \"5px, 10px\" would use 5px for top/bottom and 10px for right/left, etc.\n * - keyword: a special keyword that can [optionally] be found inside the value (like \"inset\" for boxShadow). This allows us to validate beginning/ending values to make sure they match (if the keyword is found in one, it'll be added to the other for consistency by default).\n */\n\n\n var SpecialProp = function SpecialProp(p, options) {\n options = options || {};\n this.p = options.prefix ? _checkPropPrefix(p) || p : p;\n _specialProps[p] = _specialProps[this.p] = this;\n this.format = options.formatter || _getFormatter(options.defaultValue, options.color, options.collapsible, options.multi);\n\n if (options.parser) {\n this.parse = options.parser;\n }\n\n this.clrs = options.color;\n this.multi = options.multi;\n this.keyword = options.keyword;\n this.dflt = options.defaultValue;\n this.allowFunc = options.allowFunc;\n this.pr = options.priority || 0;\n },\n //shortcut for creating a new SpecialProp that can accept multiple properties as a comma-delimited list (helps minification). dflt can be an array for multiple values (we don't do a comma-delimited list because the default value may contain commas, like rect(0px,0px,0px,0px)). We attach this method to the SpecialProp class/object instead of using a private _createSpecialProp() method so that we can tap into it externally if necessary, like from another plugin.\n _registerComplexSpecialProp = _internals._registerComplexSpecialProp = function (p, options, defaults) {\n if (_typeof(options) !== \"object\") {\n options = {\n parser: defaults\n }; //to make backwards compatible with older versions of BezierPlugin and ThrowPropsPlugin\n }\n\n var a = p.split(\",\"),\n d = options.defaultValue,\n i,\n temp;\n defaults = defaults || [d];\n\n for (i = 0; i < a.length; i++) {\n options.prefix = i === 0 && options.prefix;\n options.defaultValue = defaults[i] || d;\n temp = new SpecialProp(a[i], options);\n }\n },\n //creates a placeholder special prop for a plugin so that the property gets caught the first time a tween of it is attempted, and at that time it makes the plugin register itself, thus taking over for all future tweens of that property. This allows us to not mandate that things load in a particular order and it also allows us to log() an error that informs the user when they attempt to tween an external plugin-related property without loading its .js file.\n _registerPluginProp = _internals._registerPluginProp = function (p) {\n if (!_specialProps[p]) {\n var pluginName = p.charAt(0).toUpperCase() + p.substr(1) + \"Plugin\";\n\n _registerComplexSpecialProp(p, {\n parser: function parser(t, e, p, cssp, pt, plugin, vars) {\n var pluginClass = _globals.com.greensock.plugins[pluginName];\n\n if (!pluginClass) {\n _log(\"Error: \" + pluginName + \" js file not loaded.\");\n\n return pt;\n }\n\n pluginClass._cssRegister();\n\n return _specialProps[p].parse(t, e, p, cssp, pt, plugin, vars);\n }\n });\n }\n };\n\n p = SpecialProp.prototype;\n /**\n * Alias for _parseComplex() that automatically plugs in certain values for this SpecialProp, like its property name, whether or not colors should be sensed, the default value, and priority. It also looks for any keyword that the SpecialProp defines (like \"inset\" for boxShadow) and ensures that the beginning and ending values have the same number of values for SpecialProps where multi is true (like boxShadow and textShadow can have a comma-delimited list)\n * @param {!Object} t target element\n * @param {(string|number|object)} b beginning value\n * @param {(string|number|object)} e ending (destination) value\n * @param {CSSPropTween=} pt next CSSPropTween in the linked list\n * @param {TweenPlugin=} plugin If another plugin will be tweening the complex value, that TweenPlugin instance goes here.\n * @param {function=} setRatio If a custom setRatio() method should be used to handle this complex value, that goes here.\n * @return {CSSPropTween=} First CSSPropTween in the linked list\n */\n\n p.parseComplex = function (t, b, e, pt, plugin, setRatio) {\n var kwd = this.keyword,\n i,\n ba,\n ea,\n l,\n bi,\n ei; //if this SpecialProp's value can contain a comma-delimited list of values (like boxShadow or textShadow), we must parse them in a special way, and look for a keyword (like \"inset\" for boxShadow) and ensure that the beginning and ending BOTH have it if the end defines it as such. We also must ensure that there are an equal number of values specified (we can't tween 1 boxShadow to 3 for example)\n\n if (this.multi) if (_commasOutsideParenExp.test(e) || _commasOutsideParenExp.test(b)) {\n ba = b.replace(_commasOutsideParenExp, \"|\").split(\"|\");\n ea = e.replace(_commasOutsideParenExp, \"|\").split(\"|\");\n } else if (kwd) {\n ba = [b];\n ea = [e];\n }\n\n if (ea) {\n l = ea.length > ba.length ? ea.length : ba.length;\n\n for (i = 0; i < l; i++) {\n b = ba[i] = ba[i] || this.dflt;\n e = ea[i] = ea[i] || this.dflt;\n\n if (kwd) {\n bi = b.indexOf(kwd);\n ei = e.indexOf(kwd);\n\n if (bi !== ei) {\n if (ei === -1) {\n //if the keyword isn't in the end value, remove it from the beginning one.\n ba[i] = ba[i].split(kwd).join(\"\");\n } else if (bi === -1) {\n //if the keyword isn't in the beginning, add it.\n ba[i] += \" \" + kwd;\n }\n }\n }\n }\n\n b = ba.join(\", \");\n e = ea.join(\", \");\n }\n\n return _parseComplex(t, this.p, b, e, this.clrs, this.dflt, pt, this.pr, plugin, setRatio);\n };\n /**\n * Accepts a target and end value and spits back a CSSPropTween that has been inserted into the CSSPlugin's linked list and conforms with all the conventions we use internally, like type:-1, 0, 1, or 2, setting up any extra property tweens, priority, etc. For example, if we have a boxShadow SpecialProp and call:\n * this._firstPT = sp.parse(element, \"5px 10px 20px rgb(2550,102,51)\", \"boxShadow\", this);\n * It should figure out the starting value of the element's boxShadow, compare it to the provided end value and create all the necessary CSSPropTweens of the appropriate types to tween the boxShadow. The CSSPropTween that gets spit back should already be inserted into the linked list (the 4th parameter is the current head, so prepend to that).\n * @param {!Object} t Target object whose property is being tweened\n * @param {Object} e End value as provided in the vars object (typically a string, but not always - like a throwProps would be an object).\n * @param {!string} p Property name\n * @param {!CSSPlugin} cssp The CSSPlugin instance that should be associated with this tween.\n * @param {?CSSPropTween} pt The CSSPropTween that is the current head of the linked list (we'll prepend to it)\n * @param {TweenPlugin=} plugin If a plugin will be used to tween the parsed value, this is the plugin instance.\n * @param {Object=} vars Original vars object that contains the data for parsing.\n * @return {CSSPropTween} The first CSSPropTween in the linked list which includes the new one(s) added by the parse() call.\n */\n\n\n p.parse = function (t, e, p, cssp, pt, plugin, vars) {\n return this.parseComplex(t.style, this.format(_getStyle(t, this.p, _cs, false, this.dflt)), this.format(e), pt, plugin);\n };\n /**\n * Registers a special property that should be intercepted from any \"css\" objects defined in tweens. This allows you to handle them however you want without CSSPlugin doing it for you. The 2nd parameter should be a function that accepts 3 parameters:\n * 1) Target object whose property should be tweened (typically a DOM element)\n * 2) The end/destination value (could be a string, number, object, or whatever you want)\n * 3) The tween instance (you probably don't need to worry about this, but it can be useful for looking up information like the duration)\n *\n * Then, your function should return a function which will be called each time the tween gets rendered, passing a numeric \"ratio\" parameter to your function that indicates the change factor (usually between 0 and 1). For example:\n *\n * CSSPlugin.registerSpecialProp(\"myCustomProp\", function(target, value, tween) {\n * var start = target.style.width;\n * return function(ratio) {\n * target.style.width = (start + value * ratio) + \"px\";\n * console.log(\"set width to \" + target.style.width);\n * }\n * }, 0);\n *\n * Then, when I do this tween, it will trigger my special property:\n *\n * TweenLite.to(element, 1, {css:{myCustomProp:100}});\n *\n * In the example, of course, we're just changing the width, but you can do anything you want.\n *\n * @param {!string} name Property name (or comma-delimited list of property names) that should be intercepted and handled by your function. For example, if I define \"myCustomProp\", then it would handle that portion of the following tween: TweenLite.to(element, 1, {css:{myCustomProp:100}})\n * @param {!function(Object, Object, Object, string):function(number)} onInitTween The function that will be called when a tween of this special property is performed. The function will receive 4 parameters: 1) Target object that should be tweened, 2) Value that was passed to the tween, 3) The tween instance itself (rarely used), and 4) The property name that's being tweened. Your function should return a function that should be called on every update of the tween. That function will receive a single parameter that is a \"change factor\" value (typically between 0 and 1) indicating the amount of change as a ratio. You can use this to determine how to set the values appropriately in your function.\n * @param {number=} priority Priority that helps the engine determine the order in which to set the properties (default: 0). Higher priority properties will be updated before lower priority ones.\n */\n\n\n CSSPlugin.registerSpecialProp = function (name, onInitTween, priority) {\n _registerComplexSpecialProp(name, {\n parser: function parser(t, e, p, cssp, pt, plugin, vars) {\n var rv = new CSSPropTween(t, p, 0, 0, pt, 2, p, false, priority);\n rv.plugin = plugin;\n rv.setRatio = onInitTween(t, e, cssp._tween, p);\n return rv;\n },\n priority: priority\n });\n }; //transform-related methods and properties\n\n\n CSSPlugin.useSVGTransformAttr = true; //Safari and Firefox both have some rendering bugs when applying CSS transforms to SVG elements, so default to using the \"transform\" attribute instead (users can override this).\n\n var _transformProps = \"scaleX,scaleY,scaleZ,x,y,z,skewX,skewY,rotation,rotationX,rotationY,perspective,xPercent,yPercent\".split(\",\"),\n _transformProp = _checkPropPrefix(\"transform\"),\n //the Javascript (camelCase) transform property, like msTransform, WebkitTransform, MozTransform, or OTransform.\n _transformPropCSS = _prefixCSS + \"transform\",\n _transformOriginProp = _checkPropPrefix(\"transformOrigin\"),\n _supports3D = _checkPropPrefix(\"perspective\") !== null,\n Transform = _internals.Transform = function () {\n this.perspective = parseFloat(CSSPlugin.defaultTransformPerspective) || 0;\n this.force3D = CSSPlugin.defaultForce3D === false || !_supports3D ? false : CSSPlugin.defaultForce3D || \"auto\";\n },\n _SVGElement = _gsScope.SVGElement,\n _useSVGTransformAttr,\n //Some browsers (like Firefox and IE) don't honor transform-origin properly in SVG elements, so we need to manually adjust the matrix accordingly. We feature detect here rather than always doing the conversion for certain browsers because they may fix the problem at some point in the future.\n _createSVG = function _createSVG(type, container, attributes) {\n var element = _doc.createElementNS(\"http://www.w3.org/2000/svg\", type),\n reg = /([a-z])([A-Z])/g,\n p;\n\n for (p in attributes) {\n element.setAttributeNS(null, p.replace(reg, \"$1-$2\").toLowerCase(), attributes[p]);\n }\n\n container.appendChild(element);\n return element;\n },\n _docElement = _doc.documentElement || {},\n _forceSVGTransformAttr = function () {\n //IE and Android stock don't support CSS transforms on SVG elements, so we must write them to the \"transform\" attribute. We populate this variable in the _parseTransform() method, and only if/when we come across an SVG element\n var force = _ieVers || /Android/i.test(_agent) && !_gsScope.chrome,\n svg,\n rect,\n width;\n\n if (_doc.createElementNS && _docElement.appendChild && !force) {\n //IE8 and earlier doesn't support SVG anyway\n svg = _createSVG(\"svg\", _docElement);\n rect = _createSVG(\"rect\", svg, {\n width: 100,\n height: 50,\n x: 100\n });\n width = rect.getBoundingClientRect().width;\n rect.style[_transformOriginProp] = \"50% 50%\";\n rect.style[_transformProp] = \"scaleX(0.5)\";\n force = width === rect.getBoundingClientRect().width && !(_isFirefox && _supports3D); //note: Firefox fails the test even though it does support CSS transforms in 3D. Since we can't push 3D stuff into the transform attribute, we force Firefox to pass the test here (as long as it does truly support 3D).\n\n _docElement.removeChild(svg);\n }\n\n return force;\n }(),\n _parseSVGOrigin = function _parseSVGOrigin(e, local, decoratee, absolute, smoothOrigin, skipRecord) {\n var tm = e._gsTransform,\n m = _getMatrix(e, true),\n v,\n x,\n y,\n xOrigin,\n yOrigin,\n a,\n b,\n c,\n d,\n tx,\n ty,\n determinant,\n xOriginOld,\n yOriginOld;\n\n if (tm) {\n xOriginOld = tm.xOrigin; //record the original values before we alter them.\n\n yOriginOld = tm.yOrigin;\n }\n\n if (!absolute || (v = absolute.split(\" \")).length < 2) {\n b = e.getBBox();\n\n if (b.x === 0 && b.y === 0 && b.width + b.height === 0) {\n //some browsers (like Firefox) misreport the bounds if the element has zero width and height (it just assumes it's at x:0, y:0), thus we need to manually grab the position in that case.\n b = {\n x: parseFloat(e.hasAttribute(\"x\") ? e.getAttribute(\"x\") : e.hasAttribute(\"cx\") ? e.getAttribute(\"cx\") : 0) || 0,\n y: parseFloat(e.hasAttribute(\"y\") ? e.getAttribute(\"y\") : e.hasAttribute(\"cy\") ? e.getAttribute(\"cy\") : 0) || 0,\n width: 0,\n height: 0\n };\n }\n\n local = _parsePosition(local).split(\" \");\n v = [(local[0].indexOf(\"%\") !== -1 ? parseFloat(local[0]) / 100 * b.width : parseFloat(local[0])) + b.x, (local[1].indexOf(\"%\") !== -1 ? parseFloat(local[1]) / 100 * b.height : parseFloat(local[1])) + b.y];\n }\n\n decoratee.xOrigin = xOrigin = parseFloat(v[0]);\n decoratee.yOrigin = yOrigin = parseFloat(v[1]);\n\n if (absolute && m !== _identity2DMatrix) {\n //if svgOrigin is being set, we must invert the matrix and determine where the absolute point is, factoring in the current transforms. Otherwise, the svgOrigin would be based on the element's non-transformed position on the canvas.\n a = m[0];\n b = m[1];\n c = m[2];\n d = m[3];\n tx = m[4];\n ty = m[5];\n determinant = a * d - b * c;\n\n if (determinant) {\n //if it's zero (like if scaleX and scaleY are zero), skip it to avoid errors with dividing by zero.\n x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;\n y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;\n xOrigin = decoratee.xOrigin = v[0] = x;\n yOrigin = decoratee.yOrigin = v[1] = y;\n }\n }\n\n if (tm) {\n //avoid jump when transformOrigin is changed - adjust the x/y values accordingly\n if (skipRecord) {\n decoratee.xOffset = tm.xOffset;\n decoratee.yOffset = tm.yOffset;\n tm = decoratee;\n }\n\n if (smoothOrigin || smoothOrigin !== false && CSSPlugin.defaultSmoothOrigin !== false) {\n x = xOrigin - xOriginOld;\n y = yOrigin - yOriginOld; //originally, we simply adjusted the x and y values, but that would cause problems if, for example, you created a rotational tween part-way through an x/y tween. Managing the offset in a separate variable gives us ultimate flexibility.\n //tm.x -= x - (x * m[0] + y * m[2]);\n //tm.y -= y - (x * m[1] + y * m[3]);\n\n tm.xOffset += x * m[0] + y * m[2] - x;\n tm.yOffset += x * m[1] + y * m[3] - y;\n } else {\n tm.xOffset = tm.yOffset = 0;\n }\n }\n\n if (!skipRecord) {\n e.setAttribute(\"data-svg-origin\", v.join(\" \"));\n }\n },\n _getBBoxHack = function _getBBoxHack(swapIfPossible) {\n //works around issues in some browsers (like Firefox) that don't correctly report getBBox() on SVG elements inside a element and/or . We try creating an SVG, adding it to the documentElement and toss the element in there so that it's definitely part of the rendering tree, then grab the bbox and if it works, we actually swap out the original getBBox() method for our own that does these extra steps whenever getBBox is needed. This helps ensure that performance is optimal (only do all these extra steps when absolutely necessary...most elements don't need it).\n var svg = _createElement(\"svg\", this.ownerSVGElement && this.ownerSVGElement.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\"),\n oldParent = this.parentNode,\n oldSibling = this.nextSibling,\n oldCSS = this.style.cssText,\n bbox;\n\n _docElement.appendChild(svg);\n\n svg.appendChild(this);\n this.style.display = \"block\";\n\n if (swapIfPossible) {\n try {\n bbox = this.getBBox();\n this._originalGetBBox = this.getBBox;\n this.getBBox = _getBBoxHack;\n } catch (e) {}\n } else if (this._originalGetBBox) {\n bbox = this._originalGetBBox();\n }\n\n if (oldSibling) {\n oldParent.insertBefore(this, oldSibling);\n } else {\n oldParent.appendChild(this);\n }\n\n _docElement.removeChild(svg);\n\n this.style.cssText = oldCSS;\n return bbox;\n },\n _getBBox = function _getBBox(e) {\n try {\n return e.getBBox(); //Firefox throws errors if you try calling getBBox() on an SVG element that's not rendered (like in a or ). https://bugzilla.mozilla.org/show_bug.cgi?id=612118\n } catch (error) {\n return _getBBoxHack.call(e, true);\n }\n },\n _isSVG = function _isSVG(e) {\n //reports if the element is an SVG on which getBBox() actually works\n return !!(_SVGElement && e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));\n },\n _identity2DMatrix = [1, 0, 0, 1, 0, 0],\n _getMatrix = function _getMatrix(e, force2D) {\n var tm = e._gsTransform || new Transform(),\n rnd = 100000,\n style = e.style,\n isDefault,\n s,\n m,\n n,\n dec,\n nextSibling,\n parent;\n\n if (_transformProp) {\n s = _getStyle(e, _transformPropCSS, null, true);\n } else if (e.currentStyle) {\n //for older versions of IE, we need to interpret the filter portion that is in the format: progid:DXImageTransform.Microsoft.Matrix(M11=6.123233995736766e-17, M12=-1, M21=1, M22=6.123233995736766e-17, sizingMethod='auto expand') Notice that we need to swap b and c compared to a normal matrix.\n s = e.currentStyle.filter.match(_ieGetMatrixExp);\n s = s && s.length === 4 ? [s[0].substr(4), Number(s[2].substr(4)), Number(s[1].substr(4)), s[3].substr(4), tm.x || 0, tm.y || 0].join(\",\") : \"\";\n }\n\n isDefault = !s || s === \"none\" || s === \"matrix(1, 0, 0, 1, 0, 0)\";\n\n if (_transformProp && isDefault && !e.offsetParent && e !== _docElement) {\n //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n //browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not \"none\". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px).\n n = style.display;\n style.display = \"block\";\n parent = e.parentNode;\n\n if (!parent || !e.offsetParent) {\n dec = 1; //flag\n\n nextSibling = e.nextSibling;\n\n _docElement.appendChild(e); //we must add it to the DOM in order to get values properly\n\n }\n\n s = _getStyle(e, _transformPropCSS, null, true);\n isDefault = !s || s === \"none\" || s === \"matrix(1, 0, 0, 1, 0, 0)\";\n\n if (n) {\n style.display = n;\n } else {\n _removeProp(style, \"display\");\n }\n\n if (dec) {\n if (nextSibling) {\n parent.insertBefore(e, nextSibling);\n } else if (parent) {\n parent.appendChild(e);\n } else {\n _docElement.removeChild(e);\n }\n }\n }\n\n if (tm.svg || e.getCTM && _isSVG(e)) {\n if (isDefault && (style[_transformProp] + \"\").indexOf(\"matrix\") !== -1) {\n //some browsers (like Chrome 40) don't correctly report transforms that are applied inline on an SVG element (they don't get included in the computed style), so we double-check here and accept matrix values\n s = style[_transformProp];\n isDefault = 0;\n }\n\n m = e.getAttribute(\"transform\");\n\n if (isDefault && m) {\n m = e.transform.baseVal.consolidate().matrix; //ensures that even complex values like \"translate(50,60) rotate(135,0,0)\" are parsed because it mashes it into a matrix.\n\n s = \"matrix(\" + m.a + \",\" + m.b + \",\" + m.c + \",\" + m.d + \",\" + m.e + \",\" + m.f + \")\";\n isDefault = 0;\n }\n }\n\n if (isDefault) {\n return _identity2DMatrix;\n } //split the matrix values out into an array (m for matrix)\n\n\n m = (s || \"\").match(_numExp) || [];\n i = m.length;\n\n while (--i > -1) {\n n = Number(m[i]);\n m[i] = (dec = n - (n |= 0)) ? (dec * rnd + (dec < 0 ? -0.5 : 0.5) | 0) / rnd + n : n; //convert strings to Numbers and round to 5 decimal places to avoid issues with tiny numbers. Roughly 20x faster than Number.toFixed(). We also must make sure to round before dividing so that values like 0.9999999999 become 1 to avoid glitches in browser rendering and interpretation of flipped/rotated 3D matrices. And don't just multiply the number by rnd, floor it, and then divide by rnd because the bitwise operations max out at a 32-bit signed integer, thus it could get clipped at a relatively low value (like 22,000.00000 for example).\n }\n\n return force2D && m.length > 6 ? [m[0], m[1], m[4], m[5], m[12], m[13]] : m;\n },\n\n /**\n * Parses the transform values for an element, returning an object with x, y, z, scaleX, scaleY, scaleZ, rotation, rotationX, rotationY, skewX, and skewY properties. Note: by default (for performance reasons), all skewing is combined into skewX and rotation but skewY still has a place in the transform object so that we can record how much of the skew is attributed to skewX vs skewY. Remember, a skewY of 10 looks the same as a rotation of 10 and skewX of -10.\n * @param {!Object} t target element\n * @param {Object=} cs computed style object (optional)\n * @param {boolean=} rec if true, the transform values will be recorded to the target element's _gsTransform object, like target._gsTransform = {x:0, y:0, z:0, scaleX:1...}\n * @param {boolean=} parse if true, we'll ignore any _gsTransform values that already exist on the element, and force a reparsing of the css (calculated style)\n * @return {object} object containing all of the transform properties/values like {x:0, y:0, z:0, scaleX:1...}\n */\n _getTransform = _internals.getTransform = function (t, cs, rec, parse) {\n if (t._gsTransform && rec && !parse) {\n return t._gsTransform; //if the element already has a _gsTransform, use that. Note: some browsers don't accurately return the calculated style for the transform (particularly for SVG), so it's almost always safest to just use the values we've already applied rather than re-parsing things.\n }\n\n var tm = rec ? t._gsTransform || new Transform() : new Transform(),\n invX = tm.scaleX < 0,\n //in order to interpret things properly, we need to know if the user applied a negative scaleX previously so that we can adjust the rotation and skewX accordingly. Otherwise, if we always interpret a flipped matrix as affecting scaleY and the user only wants to tween the scaleX on multiple sequential tweens, it would keep the negative scaleY without that being the user's intent.\n min = 0.00002,\n rnd = 100000,\n zOrigin = _supports3D ? parseFloat(_getStyle(t, _transformOriginProp, cs, false, \"0 0 0\").split(\" \")[2]) || tm.zOrigin || 0 : 0,\n defaultTransformPerspective = parseFloat(CSSPlugin.defaultTransformPerspective) || 0,\n m,\n i,\n scaleX,\n scaleY,\n rotation,\n skewX;\n tm.svg = !!(t.getCTM && _isSVG(t));\n\n if (tm.svg) {\n _parseSVGOrigin(t, _getStyle(t, _transformOriginProp, cs, false, \"50% 50%\") + \"\", tm, t.getAttribute(\"data-svg-origin\"));\n\n _useSVGTransformAttr = CSSPlugin.useSVGTransformAttr || _forceSVGTransformAttr;\n }\n\n m = _getMatrix(t);\n\n if (m !== _identity2DMatrix) {\n if (m.length === 16) {\n //we'll only look at these position-related 6 variables first because if x/y/z all match, it's relatively safe to assume we don't need to re-parse everything which risks losing important rotational information (like rotationX:180 plus rotationY:180 would look the same as rotation:180 - there's no way to know for sure which direction was taken based solely on the matrix3d() values)\n var a11 = m[0],\n a21 = m[1],\n a31 = m[2],\n a41 = m[3],\n a12 = m[4],\n a22 = m[5],\n a32 = m[6],\n a42 = m[7],\n a13 = m[8],\n a23 = m[9],\n a33 = m[10],\n a14 = m[12],\n a24 = m[13],\n a34 = m[14],\n a43 = m[11],\n angle = Math.atan2(a32, a33),\n t1,\n t2,\n t3,\n t4,\n cos,\n sin; //we manually compensate for non-zero z component of transformOrigin to work around bugs in Safari\n\n if (tm.zOrigin) {\n a34 = -tm.zOrigin;\n a14 = a13 * a34 - m[12];\n a24 = a23 * a34 - m[13];\n a34 = a33 * a34 + tm.zOrigin - m[14];\n } //note for possible future consolidation: rotationX: Math.atan2(a32, a33), rotationY: Math.atan2(-a31, Math.sqrt(a33 * a33 + a32 * a32)), rotation: Math.atan2(a21, a11), skew: Math.atan2(a12, a22). However, it doesn't seem to be quite as reliable as the full-on backwards rotation procedure.\n\n\n tm.rotationX = angle * _RAD2DEG; //rotationX\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a12 * cos + a13 * sin;\n t2 = a22 * cos + a23 * sin;\n t3 = a32 * cos + a33 * sin;\n a13 = a12 * -sin + a13 * cos;\n a23 = a22 * -sin + a23 * cos;\n a33 = a32 * -sin + a33 * cos;\n a43 = a42 * -sin + a43 * cos;\n a12 = t1;\n a22 = t2;\n a32 = t3;\n } //rotationY\n\n\n angle = Math.atan2(-a31, a33);\n tm.rotationY = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a11 * cos - a13 * sin;\n t2 = a21 * cos - a23 * sin;\n t3 = a31 * cos - a33 * sin;\n a23 = a21 * sin + a23 * cos;\n a33 = a31 * sin + a33 * cos;\n a43 = a41 * sin + a43 * cos;\n a11 = t1;\n a21 = t2;\n a31 = t3;\n } //rotationZ\n\n\n angle = Math.atan2(a21, a11);\n tm.rotation = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(angle);\n sin = Math.sin(angle);\n t1 = a11 * cos + a21 * sin;\n t2 = a12 * cos + a22 * sin;\n t3 = a13 * cos + a23 * sin;\n a21 = a21 * cos - a11 * sin;\n a22 = a22 * cos - a12 * sin;\n a23 = a23 * cos - a13 * sin;\n a11 = t1;\n a12 = t2;\n a13 = t3;\n }\n\n if (tm.rotationX && Math.abs(tm.rotationX) + Math.abs(tm.rotation) > 359.9) {\n //when rotationY is set, it will often be parsed as 180 degrees different than it should be, and rotationX and rotation both being 180 (it looks the same), so we adjust for that here.\n tm.rotationX = tm.rotation = 0;\n tm.rotationY = 180 - tm.rotationY;\n } //skewX\n\n\n angle = Math.atan2(a12, a22); //scales\n\n tm.scaleX = (Math.sqrt(a11 * a11 + a21 * a21 + a31 * a31) * rnd + 0.5 | 0) / rnd;\n tm.scaleY = (Math.sqrt(a22 * a22 + a32 * a32) * rnd + 0.5 | 0) / rnd;\n tm.scaleZ = (Math.sqrt(a13 * a13 + a23 * a23 + a33 * a33) * rnd + 0.5 | 0) / rnd;\n a11 /= tm.scaleX;\n a12 /= tm.scaleY;\n a21 /= tm.scaleX;\n a22 /= tm.scaleY;\n\n if (Math.abs(angle) > min) {\n tm.skewX = angle * _RAD2DEG;\n a12 = 0; //unskews\n\n if (tm.skewType !== \"simple\") {\n tm.scaleY *= 1 / Math.cos(angle); //by default, we compensate the scale based on the skew so that the element maintains a similar proportion when skewed, so we have to alter the scaleY here accordingly to match the default (non-adjusted) skewing that CSS does (stretching more and more as it skews).\n }\n } else {\n tm.skewX = 0;\n }\n /* //for testing purposes\n var transform = \"matrix3d(\",\n \tcomma = \",\",\n \tzero = \"0\";\n a13 /= tm.scaleZ;\n a23 /= tm.scaleZ;\n a31 /= tm.scaleX;\n a32 /= tm.scaleY;\n a33 /= tm.scaleZ;\n transform += ((a11 < min && a11 > -min) ? zero : a11) + comma + ((a21 < min && a21 > -min) ? zero : a21) + comma + ((a31 < min && a31 > -min) ? zero : a31);\n transform += comma + ((a41 < min && a41 > -min) ? zero : a41) + comma + ((a12 < min && a12 > -min) ? zero : a12) + comma + ((a22 < min && a22 > -min) ? zero : a22);\n transform += comma + ((a32 < min && a32 > -min) ? zero : a32) + comma + ((a42 < min && a42 > -min) ? zero : a42) + comma + ((a13 < min && a13 > -min) ? zero : a13);\n transform += comma + ((a23 < min && a23 > -min) ? zero : a23) + comma + ((a33 < min && a33 > -min) ? zero : a33) + comma + ((a43 < min && a43 > -min) ? zero : a43) + comma;\n transform += a14 + comma + a24 + comma + a34 + comma + (tm.perspective ? (1 + (-a34 / tm.perspective)) : 1) + \")\";\n console.log(transform);\n document.querySelector(\".test\").style[_transformProp] = transform;\n */\n\n\n tm.perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;\n tm.x = a14;\n tm.y = a24;\n tm.z = a34;\n\n if (tm.svg) {\n tm.x -= tm.xOrigin - (tm.xOrigin * a11 - tm.yOrigin * a12);\n tm.y -= tm.yOrigin - (tm.yOrigin * a21 - tm.xOrigin * a22);\n }\n } else if (!_supports3D || parse || !m.length || tm.x !== m[4] || tm.y !== m[5] || !tm.rotationX && !tm.rotationY) {\n //sometimes a 6-element matrix is returned even when we performed 3D transforms, like if rotationX and rotationY are 180. In cases like this, we still need to honor the 3D transforms. If we just rely on the 2D info, it could affect how the data is interpreted, like scaleY might get set to -1 or rotation could get offset by 180 degrees. For example, do a TweenLite.to(element, 1, {css:{rotationX:180, rotationY:180}}) and then later, TweenLite.to(element, 1, {css:{rotationX:0}}) and without this conditional logic in place, it'd jump to a state of being unrotated when the 2nd tween starts. Then again, we need to honor the fact that the user COULD alter the transforms outside of CSSPlugin, like by manually applying new css, so we try to sense that by looking at x and y because if those changed, we know the changes were made outside CSSPlugin and we force a reinterpretation of the matrix values. Also, in Webkit browsers, if the element's \"display\" is \"none\", its calculated style value will always return empty, so if we've already recorded the values in the _gsTransform object, we'll just rely on those.\n var k = m.length >= 6,\n a = k ? m[0] : 1,\n b = m[1] || 0,\n c = m[2] || 0,\n d = k ? m[3] : 1;\n tm.x = m[4] || 0;\n tm.y = m[5] || 0;\n scaleX = Math.sqrt(a * a + b * b);\n scaleY = Math.sqrt(d * d + c * c);\n rotation = a || b ? Math.atan2(b, a) * _RAD2DEG : tm.rotation || 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).\n\n skewX = c || d ? Math.atan2(c, d) * _RAD2DEG + rotation : tm.skewX || 0;\n tm.scaleX = scaleX;\n tm.scaleY = scaleY;\n tm.rotation = rotation;\n tm.skewX = skewX;\n\n if (_supports3D) {\n tm.rotationX = tm.rotationY = tm.z = 0;\n tm.perspective = defaultTransformPerspective;\n tm.scaleZ = 1;\n }\n\n if (tm.svg) {\n tm.x -= tm.xOrigin - (tm.xOrigin * a + tm.yOrigin * c);\n tm.y -= tm.yOrigin - (tm.xOrigin * b + tm.yOrigin * d);\n }\n }\n\n if (Math.abs(tm.skewX) > 90 && Math.abs(tm.skewX) < 270) {\n if (invX) {\n tm.scaleX *= -1;\n tm.skewX += tm.rotation <= 0 ? 180 : -180;\n tm.rotation += tm.rotation <= 0 ? 180 : -180;\n } else {\n tm.scaleY *= -1;\n tm.skewX += tm.skewX <= 0 ? 180 : -180;\n }\n }\n\n tm.zOrigin = zOrigin; //some browsers have a hard time with very small values like 2.4492935982947064e-16 (notice the \"e-\" towards the end) and would render the object slightly off. So we round to 0 in these cases. The conditional logic here is faster than calling Math.abs(). Also, browsers tend to render a SLIGHTLY rotated object in a fuzzy way, so we need to snap to exactly 0 when appropriate.\n\n for (i in tm) {\n if (tm[i] < min) if (tm[i] > -min) {\n tm[i] = 0;\n }\n }\n } //DEBUG: _log(\"parsed rotation of \" + t.getAttribute(\"id\")+\": \"+(tm.rotationX)+\", \"+(tm.rotationY)+\", \"+(tm.rotation)+\", scale: \"+tm.scaleX+\", \"+tm.scaleY+\", \"+tm.scaleZ+\", position: \"+tm.x+\", \"+tm.y+\", \"+tm.z+\", perspective: \"+tm.perspective+ \", origin: \"+ tm.xOrigin+ \",\"+ tm.yOrigin);\n\n\n if (rec) {\n t._gsTransform = tm; //record to the object's _gsTransform which we use so that tweens can control individual properties independently (we need all the properties to accurately recompose the matrix in the setRatio() method)\n\n if (tm.svg) {\n //if we're supposed to apply transforms to the SVG element's \"transform\" attribute, make sure there aren't any CSS transforms applied or they'll override the attribute ones. Also clear the transform attribute if we're using CSS, just to be clean.\n if (_useSVGTransformAttr && t.style[_transformProp]) {\n TweenLite.delayedCall(0.001, function () {\n //if we apply this right away (before anything has rendered), we risk there being no transforms for a brief moment and it also interferes with adjusting the transformOrigin in a tween with immediateRender:true (it'd try reading the matrix and it wouldn't have the appropriate data in place because we just removed it).\n _removeProp(t.style, _transformProp);\n });\n } else if (!_useSVGTransformAttr && t.getAttribute(\"transform\")) {\n TweenLite.delayedCall(0.001, function () {\n t.removeAttribute(\"transform\");\n });\n }\n }\n }\n\n return tm;\n },\n //for setting 2D transforms in IE6, IE7, and IE8 (must use a \"filter\" to emulate the behavior of modern day browser transforms)\n _setIETransformRatio = function _setIETransformRatio(v) {\n var t = this.data,\n //refers to the element's _gsTransform object\n ang = -t.rotation * _DEG2RAD,\n skew = ang + t.skewX * _DEG2RAD,\n rnd = 100000,\n a = (Math.cos(ang) * t.scaleX * rnd | 0) / rnd,\n b = (Math.sin(ang) * t.scaleX * rnd | 0) / rnd,\n c = (Math.sin(skew) * -t.scaleY * rnd | 0) / rnd,\n d = (Math.cos(skew) * t.scaleY * rnd | 0) / rnd,\n style = this.t.style,\n cs = this.t.currentStyle,\n filters,\n val;\n\n if (!cs) {\n return;\n }\n\n val = b; //just for swapping the variables an inverting them (reused \"val\" to avoid creating another variable in memory). IE's filter matrix uses a non-standard matrix configuration (angle goes the opposite way, and b and c are reversed and inverted)\n\n b = -c;\n c = -val;\n filters = cs.filter;\n style.filter = \"\"; //remove filters so that we can accurately measure offsetWidth/offsetHeight\n\n var w = this.t.offsetWidth,\n h = this.t.offsetHeight,\n clip = cs.position !== \"absolute\",\n m = \"progid:DXImageTransform.Microsoft.Matrix(M11=\" + a + \", M12=\" + b + \", M21=\" + c + \", M22=\" + d,\n ox = t.x + w * t.xPercent / 100,\n oy = t.y + h * t.yPercent / 100,\n dx,\n dy; //if transformOrigin is being used, adjust the offset x and y\n\n if (t.ox != null) {\n dx = (t.oxp ? w * t.ox * 0.01 : t.ox) - w / 2;\n dy = (t.oyp ? h * t.oy * 0.01 : t.oy) - h / 2;\n ox += dx - (dx * a + dy * b);\n oy += dy - (dx * c + dy * d);\n }\n\n if (!clip) {\n m += \", sizingMethod='auto expand')\";\n } else {\n dx = w / 2;\n dy = h / 2; //translate to ensure that transformations occur around the correct origin (default is center).\n\n m += \", Dx=\" + (dx - (dx * a + dy * b) + ox) + \", Dy=\" + (dy - (dx * c + dy * d) + oy) + \")\";\n }\n\n if (filters.indexOf(\"DXImageTransform.Microsoft.Matrix(\") !== -1) {\n style.filter = filters.replace(_ieSetMatrixExp, m);\n } else {\n style.filter = m + \" \" + filters; //we must always put the transform/matrix FIRST (before alpha(opacity=xx)) to avoid an IE bug that slices part of the object when rotation is applied with alpha.\n } //at the end or beginning of the tween, if the matrix is normal (1, 0, 0, 1) and opacity is 100 (or doesn't exist), remove the filter to improve browser performance.\n\n\n if (v === 0 || v === 1) if (a === 1) if (b === 0) if (c === 0) if (d === 1) if (!clip || m.indexOf(\"Dx=0, Dy=0\") !== -1) if (!_opacityExp.test(filters) || parseFloat(RegExp.$1) === 100) if (filters.indexOf(\"gradient(\" && filters.indexOf(\"Alpha\")) === -1) {\n style.removeAttribute(\"filter\");\n } //we must set the margins AFTER applying the filter in order to avoid some bugs in IE8 that could (in rare scenarios) cause them to be ignored intermittently (vibration).\n\n if (!clip) {\n var mult = _ieVers < 8 ? 1 : -1,\n //in Internet Explorer 7 and before, the box model is broken, causing the browser to treat the width/height of the actual rotated filtered image as the width/height of the box itself, but Microsoft corrected that in IE8. We must use a negative offset in IE8 on the right/bottom\n marg,\n prop,\n dif;\n dx = t.ieOffsetX || 0;\n dy = t.ieOffsetY || 0;\n t.ieOffsetX = Math.round((w - ((a < 0 ? -a : a) * w + (b < 0 ? -b : b) * h)) / 2 + ox);\n t.ieOffsetY = Math.round((h - ((d < 0 ? -d : d) * h + (c < 0 ? -c : c) * w)) / 2 + oy);\n\n for (i = 0; i < 4; i++) {\n prop = _margins[i];\n marg = cs[prop]; //we need to get the current margin in case it is being tweened separately (we want to respect that tween's changes)\n\n val = marg.indexOf(\"px\") !== -1 ? parseFloat(marg) : _convertToPixels(this.t, prop, parseFloat(marg), marg.replace(_suffixExp, \"\")) || 0;\n\n if (val !== t[prop]) {\n dif = i < 2 ? -t.ieOffsetX : -t.ieOffsetY; //if another tween is controlling a margin, we cannot only apply the difference in the ieOffsets, so we essentially zero-out the dx and dy here in that case. We record the margin(s) later so that we can keep comparing them, making this code very flexible.\n } else {\n dif = i < 2 ? dx - t.ieOffsetX : dy - t.ieOffsetY;\n }\n\n style[prop] = (t[prop] = Math.round(val - dif * (i === 0 || i === 2 ? 1 : mult))) + \"px\";\n }\n }\n },\n\n /* translates a super small decimal to a string WITHOUT scientific notation\n _safeDecimal = function(n) {\n \tvar s = (n < 0 ? -n : n) + \"\",\n \t\ta = s.split(\"e-\");\n \treturn (n < 0 ? \"-0.\" : \"0.\") + new Array(parseInt(a[1], 10) || 0).join(\"0\") + a[0].split(\".\").join(\"\");\n },\n */\n _setTransformRatio = _internals.set3DTransformRatio = _internals.setTransformRatio = function (v) {\n var t = this.data,\n //refers to the element's _gsTransform object\n style = this.t.style,\n angle = t.rotation,\n rotationX = t.rotationX,\n rotationY = t.rotationY,\n sx = t.scaleX,\n sy = t.scaleY,\n sz = t.scaleZ,\n x = t.x,\n y = t.y,\n z = t.z,\n isSVG = t.svg,\n perspective = t.perspective,\n force3D = t.force3D,\n skewY = t.skewY,\n skewX = t.skewX,\n t1,\n a11,\n a12,\n a13,\n a21,\n a22,\n a23,\n a31,\n a32,\n a33,\n a41,\n a42,\n a43,\n zOrigin,\n min,\n cos,\n sin,\n t2,\n transform,\n comma,\n zero,\n skew,\n rnd;\n\n if (skewY) {\n //for performance reasons, we combine all skewing into the skewX and rotation values. Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of 10 degrees.\n skewX += skewY;\n angle += skewY;\n } //check to see if we should render as 2D (and SVGs must use 2D when _useSVGTransformAttr is true)\n\n\n if (((v === 1 || v === 0) && force3D === \"auto\" && (this.tween._totalTime === this.tween._totalDuration || !this.tween._totalTime) || !force3D) && !z && !perspective && !rotationY && !rotationX && sz === 1 || _useSVGTransformAttr && isSVG || !_supports3D) {\n //on the final render (which could be 0 for a from tween), if there are no 3D aspects, render in 2D to free up memory and improve performance especially on mobile devices. Check the tween's totalTime/totalDuration too in order to make sure it doesn't happen between repeats if it's a repeating tween.\n //2D\n if (angle || skewX || isSVG) {\n angle *= _DEG2RAD;\n skew = skewX * _DEG2RAD;\n rnd = 100000;\n a11 = Math.cos(angle) * sx;\n a21 = Math.sin(angle) * sx;\n a12 = Math.sin(angle - skew) * -sy;\n a22 = Math.cos(angle - skew) * sy;\n\n if (skew && t.skewType === \"simple\") {\n //by default, we compensate skewing on the other axis to make it look more natural, but you can set the skewType to \"simple\" to use the uncompensated skewing that CSS does\n t1 = Math.tan(skew - skewY * _DEG2RAD);\n t1 = Math.sqrt(1 + t1 * t1);\n a12 *= t1;\n a22 *= t1;\n\n if (skewY) {\n t1 = Math.tan(skewY * _DEG2RAD);\n t1 = Math.sqrt(1 + t1 * t1);\n a11 *= t1;\n a21 *= t1;\n }\n }\n\n if (isSVG) {\n x += t.xOrigin - (t.xOrigin * a11 + t.yOrigin * a12) + t.xOffset;\n y += t.yOrigin - (t.xOrigin * a21 + t.yOrigin * a22) + t.yOffset;\n\n if (_useSVGTransformAttr && (t.xPercent || t.yPercent)) {\n //The SVG spec doesn't support percentage-based translation in the \"transform\" attribute, so we merge it into the matrix to simulate it.\n min = this.t.getBBox();\n x += t.xPercent * 0.01 * min.width;\n y += t.yPercent * 0.01 * min.height;\n }\n\n min = 0.000001;\n if (x < min) if (x > -min) {\n x = 0;\n }\n if (y < min) if (y > -min) {\n y = 0;\n }\n }\n\n transform = (a11 * rnd | 0) / rnd + \",\" + (a21 * rnd | 0) / rnd + \",\" + (a12 * rnd | 0) / rnd + \",\" + (a22 * rnd | 0) / rnd + \",\" + x + \",\" + y + \")\";\n\n if (isSVG && _useSVGTransformAttr) {\n this.t.setAttribute(\"transform\", \"matrix(\" + transform);\n } else {\n //some browsers have a hard time with very small values like 2.4492935982947064e-16 (notice the \"e-\" towards the end) and would render the object slightly off. So we round to 5 decimal places.\n style[_transformProp] = (t.xPercent || t.yPercent ? \"translate(\" + t.xPercent + \"%,\" + t.yPercent + \"%) matrix(\" : \"matrix(\") + transform;\n }\n } else {\n style[_transformProp] = (t.xPercent || t.yPercent ? \"translate(\" + t.xPercent + \"%,\" + t.yPercent + \"%) matrix(\" : \"matrix(\") + sx + \",0,0,\" + sy + \",\" + x + \",\" + y + \")\";\n }\n\n return;\n }\n\n if (_isFirefox) {\n //Firefox has a bug (at least in v25) that causes it to render the transparent part of 32-bit PNG images as black when displayed inside an iframe and the 3D scale is very small and doesn't change sufficiently enough between renders (like if you use a Power4.easeInOut to scale from 0 to 1 where the beginning values only change a tiny amount to begin the tween before accelerating). In this case, we force the scale to be 0.00002 instead which is visually the same but works around the Firefox issue.\n min = 0.0001;\n\n if (sx < min && sx > -min) {\n sx = sz = 0.00002;\n }\n\n if (sy < min && sy > -min) {\n sy = sz = 0.00002;\n }\n\n if (perspective && !t.z && !t.rotationX && !t.rotationY) {\n //Firefox has a bug that causes elements to have an odd super-thin, broken/dotted black border on elements that have a perspective set but aren't utilizing 3D space (no rotationX, rotationY, or z).\n perspective = 0;\n }\n }\n\n if (angle || skewX) {\n angle *= _DEG2RAD;\n cos = a11 = Math.cos(angle);\n sin = a21 = Math.sin(angle);\n\n if (skewX) {\n angle -= skewX * _DEG2RAD;\n cos = Math.cos(angle);\n sin = Math.sin(angle);\n\n if (t.skewType === \"simple\") {\n //by default, we compensate skewing on the other axis to make it look more natural, but you can set the skewType to \"simple\" to use the uncompensated skewing that CSS does\n t1 = Math.tan((skewX - skewY) * _DEG2RAD);\n t1 = Math.sqrt(1 + t1 * t1);\n cos *= t1;\n sin *= t1;\n\n if (t.skewY) {\n t1 = Math.tan(skewY * _DEG2RAD);\n t1 = Math.sqrt(1 + t1 * t1);\n a11 *= t1;\n a21 *= t1;\n }\n }\n }\n\n a12 = -sin;\n a22 = cos;\n } else if (!rotationY && !rotationX && sz === 1 && !perspective && !isSVG) {\n //if we're only translating and/or 2D scaling, this is faster...\n style[_transformProp] = (t.xPercent || t.yPercent ? \"translate(\" + t.xPercent + \"%,\" + t.yPercent + \"%) translate3d(\" : \"translate3d(\") + x + \"px,\" + y + \"px,\" + z + \"px)\" + (sx !== 1 || sy !== 1 ? \" scale(\" + sx + \",\" + sy + \")\" : \"\");\n return;\n } else {\n a11 = a22 = 1;\n a12 = a21 = 0;\n } // KEY INDEX AFFECTS a[row][column]\n // a11 0 rotation, rotationY, scaleX\n // a21 1 rotation, rotationY, scaleX\n // a31 2 rotationY, scaleX\n // a41 3 rotationY, scaleX\n // a12 4 rotation, skewX, rotationX, scaleY\n // a22 5 rotation, skewX, rotationX, scaleY\n // a32 6 rotationX, scaleY\n // a42 7 rotationX, scaleY\n // a13 8 rotationY, rotationX, scaleZ\n // a23 9 rotationY, rotationX, scaleZ\n // a33 10 rotationY, rotationX, scaleZ\n // a43 11 rotationY, rotationX, perspective, scaleZ\n // a14 12 x, zOrigin, svgOrigin\n // a24 13 y, zOrigin, svgOrigin\n // a34 14 z, zOrigin\n // a44 15\n // rotation: Math.atan2(a21, a11)\n // rotationY: Math.atan2(a13, a33) (or Math.atan2(a13, a11))\n // rotationX: Math.atan2(a32, a33)\n\n\n a33 = 1;\n a13 = a23 = a31 = a32 = a41 = a42 = 0;\n a43 = perspective ? -1 / perspective : 0;\n zOrigin = t.zOrigin;\n min = 0.000001; //threshold below which browsers use scientific notation which won't work.\n\n comma = \",\";\n zero = \"0\";\n angle = rotationY * _DEG2RAD;\n\n if (angle) {\n cos = Math.cos(angle);\n sin = Math.sin(angle);\n a31 = -sin;\n a41 = a43 * -sin;\n a13 = a11 * sin;\n a23 = a21 * sin;\n a33 = cos;\n a43 *= cos;\n a11 *= cos;\n a21 *= cos;\n }\n\n angle = rotationX * _DEG2RAD;\n\n if (angle) {\n cos = Math.cos(angle);\n sin = Math.sin(angle);\n t1 = a12 * cos + a13 * sin;\n t2 = a22 * cos + a23 * sin;\n a32 = a33 * sin;\n a42 = a43 * sin;\n a13 = a12 * -sin + a13 * cos;\n a23 = a22 * -sin + a23 * cos;\n a33 = a33 * cos;\n a43 = a43 * cos;\n a12 = t1;\n a22 = t2;\n }\n\n if (sz !== 1) {\n a13 *= sz;\n a23 *= sz;\n a33 *= sz;\n a43 *= sz;\n }\n\n if (sy !== 1) {\n a12 *= sy;\n a22 *= sy;\n a32 *= sy;\n a42 *= sy;\n }\n\n if (sx !== 1) {\n a11 *= sx;\n a21 *= sx;\n a31 *= sx;\n a41 *= sx;\n }\n\n if (zOrigin || isSVG) {\n if (zOrigin) {\n x += a13 * -zOrigin;\n y += a23 * -zOrigin;\n z += a33 * -zOrigin + zOrigin;\n }\n\n if (isSVG) {\n //due to bugs in some browsers, we need to manage the transform-origin of SVG manually\n x += t.xOrigin - (t.xOrigin * a11 + t.yOrigin * a12) + t.xOffset;\n y += t.yOrigin - (t.xOrigin * a21 + t.yOrigin * a22) + t.yOffset;\n }\n\n if (x < min && x > -min) {\n x = zero;\n }\n\n if (y < min && y > -min) {\n y = zero;\n }\n\n if (z < min && z > -min) {\n z = 0; //don't use string because we calculate perspective later and need the number.\n }\n } //optimized way of concatenating all the values into a string. If we do it all in one shot, it's slower because of the way browsers have to create temp strings and the way it affects memory. If we do it piece-by-piece with +=, it's a bit slower too. We found that doing it in these sized chunks works best overall:\n\n\n transform = t.xPercent || t.yPercent ? \"translate(\" + t.xPercent + \"%,\" + t.yPercent + \"%) matrix3d(\" : \"matrix3d(\";\n transform += (a11 < min && a11 > -min ? zero : a11) + comma + (a21 < min && a21 > -min ? zero : a21) + comma + (a31 < min && a31 > -min ? zero : a31);\n transform += comma + (a41 < min && a41 > -min ? zero : a41) + comma + (a12 < min && a12 > -min ? zero : a12) + comma + (a22 < min && a22 > -min ? zero : a22);\n\n if (rotationX || rotationY || sz !== 1) {\n //performance optimization (often there's no rotationX or rotationY, so we can skip these calculations)\n transform += comma + (a32 < min && a32 > -min ? zero : a32) + comma + (a42 < min && a42 > -min ? zero : a42) + comma + (a13 < min && a13 > -min ? zero : a13);\n transform += comma + (a23 < min && a23 > -min ? zero : a23) + comma + (a33 < min && a33 > -min ? zero : a33) + comma + (a43 < min && a43 > -min ? zero : a43) + comma;\n } else {\n transform += \",0,0,0,0,1,0,\";\n }\n\n transform += x + comma + y + comma + z + comma + (perspective ? 1 + -z / perspective : 1) + \")\";\n style[_transformProp] = transform;\n };\n\n p = Transform.prototype;\n p.x = p.y = p.z = p.skewX = p.skewY = p.rotation = p.rotationX = p.rotationY = p.zOrigin = p.xPercent = p.yPercent = p.xOffset = p.yOffset = 0;\n p.scaleX = p.scaleY = p.scaleZ = 1;\n\n _registerComplexSpecialProp(\"transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,svgOrigin,transformPerspective,directionalRotation,parseTransform,force3D,skewType,xPercent,yPercent,smoothOrigin\", {\n parser: function parser(t, e, parsingProp, cssp, pt, plugin, vars) {\n if (cssp._lastParsedTransform === vars) {\n return pt;\n } //only need to parse the transform once, and only if the browser supports it.\n\n\n cssp._lastParsedTransform = vars;\n var scaleFunc = vars.scale && typeof vars.scale === \"function\" ? vars.scale : 0; //if there's a function-based \"scale\" value, swap in the resulting numeric value temporarily. Otherwise, if it's called for both scaleX and scaleY independently, they may not match (like if the function uses Math.random()).\n\n if (scaleFunc) {\n vars.scale = scaleFunc(_index, t);\n }\n\n var originalGSTransform = t._gsTransform,\n style = t.style,\n min = 0.000001,\n i = _transformProps.length,\n v = vars,\n endRotations = {},\n transformOriginString = \"transformOrigin\",\n m1 = _getTransform(t, _cs, true, v.parseTransform),\n orig = v.transform && (typeof v.transform === \"function\" ? v.transform(_index, _target) : v.transform),\n m2,\n copy,\n has3D,\n hasChange,\n dr,\n x,\n y,\n matrix,\n p;\n\n m1.skewType = v.skewType || m1.skewType || CSSPlugin.defaultSkewType;\n cssp._transform = m1;\n\n if (\"rotationZ\" in v) {\n v.rotation = v.rotationZ;\n }\n\n if (orig && typeof orig === \"string\" && _transformProp) {\n //for values like transform:\"rotate(60deg) scale(0.5, 0.8)\"\n copy = _tempDiv.style; //don't use the original target because it might be SVG in which case some browsers don't report computed style correctly.\n\n copy[_transformProp] = orig;\n copy.display = \"block\"; //if display is \"none\", the browser often refuses to report the transform properties correctly.\n\n copy.position = \"absolute\";\n\n if (orig.indexOf(\"%\") !== -1) {\n //%-based translations will fail unless we set the width/height to match the original target...\n copy.width = _getStyle(t, \"width\");\n copy.height = _getStyle(t, \"height\");\n }\n\n _doc.body.appendChild(_tempDiv);\n\n m2 = _getTransform(_tempDiv, null, false);\n\n if (m1.skewType === \"simple\") {\n //the default _getTransform() reports the skewX/scaleY as if skewType is \"compensated\", thus we need to adjust that here if skewType is \"simple\".\n m2.scaleY *= Math.cos(m2.skewX * _DEG2RAD);\n }\n\n if (m1.svg) {\n //if it's an SVG element, x/y part of the matrix will be affected by whatever we use as the origin and the offsets, so compensate here...\n x = m1.xOrigin;\n y = m1.yOrigin;\n m2.x -= m1.xOffset;\n m2.y -= m1.yOffset;\n\n if (v.transformOrigin || v.svgOrigin) {\n //if this tween is altering the origin, we must factor that in here. The actual work of recording the transformOrigin values and setting up the PropTween is done later (still inside this function) so we cannot leave the changes intact here - we only want to update the x/y accordingly.\n orig = {};\n\n _parseSVGOrigin(t, _parsePosition(v.transformOrigin), orig, v.svgOrigin, v.smoothOrigin, true);\n\n x = orig.xOrigin;\n y = orig.yOrigin;\n m2.x -= orig.xOffset - m1.xOffset;\n m2.y -= orig.yOffset - m1.yOffset;\n }\n\n if (x || y) {\n matrix = _getMatrix(_tempDiv, true);\n m2.x -= x - (x * matrix[0] + y * matrix[2]);\n m2.y -= y - (x * matrix[1] + y * matrix[3]);\n }\n }\n\n _doc.body.removeChild(_tempDiv);\n\n if (!m2.perspective) {\n m2.perspective = m1.perspective; //tweening to no perspective gives very unintuitive results - just keep the same perspective in that case.\n }\n\n if (v.xPercent != null) {\n m2.xPercent = _parseVal(v.xPercent, m1.xPercent);\n }\n\n if (v.yPercent != null) {\n m2.yPercent = _parseVal(v.yPercent, m1.yPercent);\n }\n } else if (_typeof(v) === \"object\") {\n //for values like scaleX, scaleY, rotation, x, y, skewX, and skewY or transform:{...} (object)\n m2 = {\n scaleX: _parseVal(v.scaleX != null ? v.scaleX : v.scale, m1.scaleX),\n scaleY: _parseVal(v.scaleY != null ? v.scaleY : v.scale, m1.scaleY),\n scaleZ: _parseVal(v.scaleZ, m1.scaleZ),\n x: _parseVal(v.x, m1.x),\n y: _parseVal(v.y, m1.y),\n z: _parseVal(v.z, m1.z),\n xPercent: _parseVal(v.xPercent, m1.xPercent),\n yPercent: _parseVal(v.yPercent, m1.yPercent),\n perspective: _parseVal(v.transformPerspective, m1.perspective)\n };\n dr = v.directionalRotation;\n\n if (dr != null) {\n if (_typeof(dr) === \"object\") {\n for (copy in dr) {\n v[copy] = dr[copy];\n }\n } else {\n v.rotation = dr;\n }\n }\n\n if (typeof v.x === \"string\" && v.x.indexOf(\"%\") !== -1) {\n m2.x = 0;\n m2.xPercent = _parseVal(v.x, m1.xPercent);\n }\n\n if (typeof v.y === \"string\" && v.y.indexOf(\"%\") !== -1) {\n m2.y = 0;\n m2.yPercent = _parseVal(v.y, m1.yPercent);\n }\n\n m2.rotation = _parseAngle(\"rotation\" in v ? v.rotation : \"shortRotation\" in v ? v.shortRotation + \"_short\" : m1.rotation, m1.rotation, \"rotation\", endRotations);\n\n if (_supports3D) {\n m2.rotationX = _parseAngle(\"rotationX\" in v ? v.rotationX : \"shortRotationX\" in v ? v.shortRotationX + \"_short\" : m1.rotationX || 0, m1.rotationX, \"rotationX\", endRotations);\n m2.rotationY = _parseAngle(\"rotationY\" in v ? v.rotationY : \"shortRotationY\" in v ? v.shortRotationY + \"_short\" : m1.rotationY || 0, m1.rotationY, \"rotationY\", endRotations);\n }\n\n m2.skewX = _parseAngle(v.skewX, m1.skewX);\n m2.skewY = _parseAngle(v.skewY, m1.skewY);\n }\n\n if (_supports3D && v.force3D != null) {\n m1.force3D = v.force3D;\n hasChange = true;\n }\n\n has3D = m1.force3D || m1.z || m1.rotationX || m1.rotationY || m2.z || m2.rotationX || m2.rotationY || m2.perspective;\n\n if (!has3D && v.scale != null) {\n m2.scaleZ = 1; //no need to tween scaleZ.\n }\n\n while (--i > -1) {\n p = _transformProps[i];\n orig = m2[p] - m1[p];\n\n if (orig > min || orig < -min || v[p] != null || _forcePT[p] != null) {\n hasChange = true;\n pt = new CSSPropTween(m1, p, m1[p], orig, pt);\n\n if (p in endRotations) {\n pt.e = endRotations[p]; //directional rotations typically have compensated values during the tween, but we need to make sure they end at exactly what the user requested\n }\n\n pt.xs0 = 0; //ensures the value stays numeric in setRatio()\n\n pt.plugin = plugin;\n\n cssp._overwriteProps.push(pt.n);\n }\n }\n\n orig = typeof v.transformOrigin === \"function\" ? v.transformOrigin(_index, _target) : v.transformOrigin;\n\n if (m1.svg && (orig || v.svgOrigin)) {\n x = m1.xOffset; //when we change the origin, in order to prevent things from jumping we adjust the x/y so we must record those here so that we can create PropTweens for them and flip them at the same time as the origin\n\n y = m1.yOffset;\n\n _parseSVGOrigin(t, _parsePosition(orig), m2, v.svgOrigin, v.smoothOrigin);\n\n pt = _addNonTweeningNumericPT(m1, \"xOrigin\", (originalGSTransform ? m1 : m2).xOrigin, m2.xOrigin, pt, transformOriginString); //note: if there wasn't a transformOrigin defined yet, just start with the destination one; it's wasteful otherwise, and it causes problems with fromTo() tweens. For example, TweenLite.to(\"#wheel\", 3, {rotation:180, transformOrigin:\"50% 50%\", delay:1}); TweenLite.fromTo(\"#wheel\", 3, {scale:0.5, transformOrigin:\"50% 50%\"}, {scale:1, delay:2}); would cause a jump when the from values revert at the beginning of the 2nd tween.\n\n pt = _addNonTweeningNumericPT(m1, \"yOrigin\", (originalGSTransform ? m1 : m2).yOrigin, m2.yOrigin, pt, transformOriginString);\n\n if (x !== m1.xOffset || y !== m1.yOffset) {\n pt = _addNonTweeningNumericPT(m1, \"xOffset\", originalGSTransform ? x : m1.xOffset, m1.xOffset, pt, transformOriginString);\n pt = _addNonTweeningNumericPT(m1, \"yOffset\", originalGSTransform ? y : m1.yOffset, m1.yOffset, pt, transformOriginString);\n }\n\n orig = \"0px 0px\"; //certain browsers (like firefox) completely botch transform-origin, so we must remove it to prevent it from contaminating transforms. We manage it ourselves with xOrigin and yOrigin\n }\n\n if (orig || _supports3D && has3D && m1.zOrigin) {\n //if anything 3D is happening and there's a transformOrigin with a z component that's non-zero, we must ensure that the transformOrigin's z-component is set to 0 so that we can manually do those calculations to get around Safari bugs. Even if the user didn't specifically define a \"transformOrigin\" in this particular tween (maybe they did it via css directly).\n if (_transformProp) {\n hasChange = true;\n p = _transformOriginProp;\n\n if (!orig) {\n orig = (_getStyle(t, p, _cs, false, \"50% 50%\") + \"\").split(\" \");\n orig = orig[0] + \" \" + orig[1] + \" \" + m1.zOrigin + \"px\";\n }\n\n orig += \"\";\n pt = new CSSPropTween(style, p, 0, 0, pt, -1, transformOriginString);\n pt.b = style[p];\n pt.plugin = plugin;\n\n if (_supports3D) {\n copy = m1.zOrigin;\n orig = orig.split(\" \");\n m1.zOrigin = (orig.length > 2 ? parseFloat(orig[2]) : copy) || 0; //Safari doesn't handle the z part of transformOrigin correctly, so we'll manually handle it in the _set3DTransformRatio() method.\n\n pt.xs0 = pt.e = orig[0] + \" \" + (orig[1] || \"50%\") + \" 0px\"; //we must define a z value of 0px specifically otherwise iOS 5 Safari will stick with the old one (if one was defined)!\n\n pt = new CSSPropTween(m1, \"zOrigin\", 0, 0, pt, -1, pt.n); //we must create a CSSPropTween for the _gsTransform.zOrigin so that it gets reset properly at the beginning if the tween runs backward (as opposed to just setting m1.zOrigin here)\n\n pt.b = copy;\n pt.xs0 = pt.e = m1.zOrigin;\n } else {\n pt.xs0 = pt.e = orig;\n } //for older versions of IE (6-8), we need to manually calculate things inside the setRatio() function. We record origin x and y (ox and oy) and whether or not the values are percentages (oxp and oyp).\n\n } else {\n _parsePosition(orig + \"\", m1);\n }\n }\n\n if (hasChange) {\n cssp._transformType = !(m1.svg && _useSVGTransformAttr) && (has3D || this._transformType === 3) ? 3 : 2; //quicker than calling cssp._enableTransforms();\n }\n\n if (scaleFunc) {\n vars.scale = scaleFunc;\n }\n\n return pt;\n },\n allowFunc: true,\n prefix: true\n });\n\n _registerComplexSpecialProp(\"boxShadow\", {\n defaultValue: \"0px 0px 0px 0px #999\",\n prefix: true,\n color: true,\n multi: true,\n keyword: \"inset\"\n });\n\n _registerComplexSpecialProp(\"clipPath\", {\n defaultValue: \"inset(0%)\",\n prefix: true,\n multi: true,\n formatter: _getFormatter(\"inset(0% 0% 0% 0%)\", false, true)\n });\n\n _registerComplexSpecialProp(\"borderRadius\", {\n defaultValue: \"0px\",\n parser: function parser(t, e, p, cssp, pt, plugin) {\n e = this.format(e);\n var props = [\"borderTopLeftRadius\", \"borderTopRightRadius\", \"borderBottomRightRadius\", \"borderBottomLeftRadius\"],\n style = t.style,\n ea1,\n i,\n es2,\n bs2,\n bs,\n es,\n bn,\n en,\n w,\n h,\n esfx,\n bsfx,\n rel,\n hn,\n vn,\n em;\n w = parseFloat(t.offsetWidth);\n h = parseFloat(t.offsetHeight);\n ea1 = e.split(\" \");\n\n for (i = 0; i < props.length; i++) {\n //if we're dealing with percentages, we must convert things separately for the horizontal and vertical axis!\n if (this.p.indexOf(\"border\")) {\n //older browsers used a prefix\n props[i] = _checkPropPrefix(props[i]);\n }\n\n bs = bs2 = _getStyle(t, props[i], _cs, false, \"0px\");\n\n if (bs.indexOf(\" \") !== -1) {\n bs2 = bs.split(\" \");\n bs = bs2[0];\n bs2 = bs2[1];\n }\n\n es = es2 = ea1[i];\n bn = parseFloat(bs);\n bsfx = bs.substr((bn + \"\").length);\n rel = es.charAt(1) === \"=\";\n\n if (rel) {\n en = parseInt(es.charAt(0) + \"1\", 10);\n es = es.substr(2);\n en *= parseFloat(es);\n esfx = es.substr((en + \"\").length - (en < 0 ? 1 : 0)) || \"\";\n } else {\n en = parseFloat(es);\n esfx = es.substr((en + \"\").length);\n }\n\n if (esfx === \"\") {\n esfx = _suffixMap[p] || bsfx;\n }\n\n if (esfx !== bsfx) {\n hn = _convertToPixels(t, \"borderLeft\", bn, bsfx); //horizontal number (we use a bogus \"borderLeft\" property just because the _convertToPixels() method searches for the keywords \"Left\", \"Right\", \"Top\", and \"Bottom\" to determine of it's a horizontal or vertical property, and we need \"border\" in the name so that it knows it should measure relative to the element itself, not its parent.\n\n vn = _convertToPixels(t, \"borderTop\", bn, bsfx); //vertical number\n\n if (esfx === \"%\") {\n bs = hn / w * 100 + \"%\";\n bs2 = vn / h * 100 + \"%\";\n } else if (esfx === \"em\") {\n em = _convertToPixels(t, \"borderLeft\", 1, \"em\");\n bs = hn / em + \"em\";\n bs2 = vn / em + \"em\";\n } else {\n bs = hn + \"px\";\n bs2 = vn + \"px\";\n }\n\n if (rel) {\n es = parseFloat(bs) + en + esfx;\n es2 = parseFloat(bs2) + en + esfx;\n }\n }\n\n pt = _parseComplex(style, props[i], bs + \" \" + bs2, es + \" \" + es2, false, \"0px\", pt);\n }\n\n return pt;\n },\n prefix: true,\n formatter: _getFormatter(\"0px 0px 0px 0px\", false, true)\n });\n\n _registerComplexSpecialProp(\"borderBottomLeftRadius,borderBottomRightRadius,borderTopLeftRadius,borderTopRightRadius\", {\n defaultValue: \"0px\",\n parser: function parser(t, e, p, cssp, pt, plugin) {\n return _parseComplex(t.style, p, this.format(_getStyle(t, p, _cs, false, \"0px 0px\")), this.format(e), false, \"0px\", pt);\n },\n prefix: true,\n formatter: _getFormatter(\"0px 0px\", false, true)\n });\n\n _registerComplexSpecialProp(\"backgroundPosition\", {\n defaultValue: \"0 0\",\n parser: function parser(t, e, p, cssp, pt, plugin) {\n var bp = \"background-position\",\n cs = _cs || _getComputedStyle(t, null),\n bs = this.format((cs ? _ieVers ? cs.getPropertyValue(bp + \"-x\") + \" \" + cs.getPropertyValue(bp + \"-y\") : cs.getPropertyValue(bp) : t.currentStyle.backgroundPositionX + \" \" + t.currentStyle.backgroundPositionY) || \"0 0\"),\n //Internet Explorer doesn't report background-position correctly - we must query background-position-x and background-position-y and combine them (even in IE10). Before IE9, we must do the same with the currentStyle object and use camelCase\n es = this.format(e),\n ba,\n ea,\n i,\n pct,\n overlap,\n src;\n\n if (bs.indexOf(\"%\") !== -1 !== (es.indexOf(\"%\") !== -1) && es.split(\",\").length < 2) {\n src = _getStyle(t, \"backgroundImage\").replace(_urlExp, \"\");\n\n if (src && src !== \"none\") {\n ba = bs.split(\" \");\n ea = es.split(\" \");\n\n _tempImg.setAttribute(\"src\", src); //set the temp IMG's src to the background-image so that we can measure its width/height\n\n\n i = 2;\n\n while (--i > -1) {\n bs = ba[i];\n pct = bs.indexOf(\"%\") !== -1;\n\n if (pct !== (ea[i].indexOf(\"%\") !== -1)) {\n overlap = i === 0 ? t.offsetWidth - _tempImg.width : t.offsetHeight - _tempImg.height;\n ba[i] = pct ? parseFloat(bs) / 100 * overlap + \"px\" : parseFloat(bs) / overlap * 100 + \"%\";\n }\n }\n\n bs = ba.join(\" \");\n }\n }\n\n return this.parseComplex(t.style, bs, es, pt, plugin);\n },\n formatter: _parsePosition\n });\n\n _registerComplexSpecialProp(\"backgroundSize\", {\n defaultValue: \"0 0\",\n formatter: function formatter(v) {\n v += \"\"; //ensure it's a string\n\n return v.substr(0, 2) === \"co\" ? v : _parsePosition(v.indexOf(\" \") === -1 ? v + \" \" + v : v); //if set to something like \"100% 100%\", Safari typically reports the computed style as just \"100%\" (no 2nd value), but we should ensure that there are two values, so copy the first one. Otherwise, it'd be interpreted as \"100% 0\" (wrong). Also remember that it could be \"cover\" or \"contain\" which we can't tween but should be able to set.\n }\n });\n\n _registerComplexSpecialProp(\"perspective\", {\n defaultValue: \"0px\",\n prefix: true\n });\n\n _registerComplexSpecialProp(\"perspectiveOrigin\", {\n defaultValue: \"50% 50%\",\n prefix: true\n });\n\n _registerComplexSpecialProp(\"transformStyle\", {\n prefix: true\n });\n\n _registerComplexSpecialProp(\"backfaceVisibility\", {\n prefix: true\n });\n\n _registerComplexSpecialProp(\"userSelect\", {\n prefix: true\n });\n\n _registerComplexSpecialProp(\"margin\", {\n parser: _getEdgeParser(\"marginTop,marginRight,marginBottom,marginLeft\")\n });\n\n _registerComplexSpecialProp(\"padding\", {\n parser: _getEdgeParser(\"paddingTop,paddingRight,paddingBottom,paddingLeft\")\n });\n\n _registerComplexSpecialProp(\"clip\", {\n defaultValue: \"rect(0px,0px,0px,0px)\",\n parser: function parser(t, e, p, cssp, pt, plugin) {\n var b, cs, delim;\n\n if (_ieVers < 9) {\n //IE8 and earlier don't report a \"clip\" value in the currentStyle - instead, the values are split apart into clipTop, clipRight, clipBottom, and clipLeft. Also, in IE7 and earlier, the values inside rect() are space-delimited, not comma-delimited.\n cs = t.currentStyle;\n delim = _ieVers < 8 ? \" \" : \",\";\n b = \"rect(\" + cs.clipTop + delim + cs.clipRight + delim + cs.clipBottom + delim + cs.clipLeft + \")\";\n e = this.format(e).split(\",\").join(delim);\n } else {\n b = this.format(_getStyle(t, this.p, _cs, false, this.dflt));\n e = this.format(e);\n }\n\n return this.parseComplex(t.style, b, e, pt, plugin);\n }\n });\n\n _registerComplexSpecialProp(\"textShadow\", {\n defaultValue: \"0px 0px 0px #999\",\n color: true,\n multi: true\n });\n\n _registerComplexSpecialProp(\"autoRound,strictUnits\", {\n parser: function parser(t, e, p, cssp, pt) {\n return pt;\n }\n }); //just so that we can ignore these properties (not tween them)\n\n\n _registerComplexSpecialProp(\"border\", {\n defaultValue: \"0px solid #000\",\n parser: function parser(t, e, p, cssp, pt, plugin) {\n var bw = _getStyle(t, \"borderTopWidth\", _cs, false, \"0px\"),\n end = this.format(e).split(\" \"),\n esfx = end[0].replace(_suffixExp, \"\");\n\n if (esfx !== \"px\") {\n //if we're animating to a non-px value, we need to convert the beginning width to that unit.\n bw = parseFloat(bw) / _convertToPixels(t, \"borderTopWidth\", 1, esfx) + esfx;\n }\n\n return this.parseComplex(t.style, this.format(bw + \" \" + _getStyle(t, \"borderTopStyle\", _cs, false, \"solid\") + \" \" + _getStyle(t, \"borderTopColor\", _cs, false, \"#000\")), end.join(\" \"), pt, plugin);\n },\n color: true,\n formatter: function formatter(v) {\n var a = v.split(\" \");\n return a[0] + \" \" + (a[1] || \"solid\") + \" \" + (v.match(_colorExp) || [\"#000\"])[0];\n }\n });\n\n _registerComplexSpecialProp(\"borderWidth\", {\n parser: _getEdgeParser(\"borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth\")\n }); //Firefox doesn't pick up on borderWidth set in style sheets (only inline).\n\n\n _registerComplexSpecialProp(\"float,cssFloat,styleFloat\", {\n parser: function parser(t, e, p, cssp, pt, plugin) {\n var s = t.style,\n prop = \"cssFloat\" in s ? \"cssFloat\" : \"styleFloat\";\n return new CSSPropTween(s, prop, 0, 0, pt, -1, p, false, 0, s[prop], e);\n }\n }); //opacity-related\n\n\n var _setIEOpacityRatio = function _setIEOpacityRatio(v) {\n var t = this.t,\n //refers to the element's style property\n filters = t.filter || _getStyle(this.data, \"filter\") || \"\",\n val = this.s + this.c * v | 0,\n skip;\n\n if (val === 100) {\n //for older versions of IE that need to use a filter to apply opacity, we should remove the filter if opacity hits 1 in order to improve performance, but make sure there isn't a transform (matrix) or gradient in the filters.\n if (filters.indexOf(\"atrix(\") === -1 && filters.indexOf(\"radient(\") === -1 && filters.indexOf(\"oader(\") === -1) {\n t.removeAttribute(\"filter\");\n skip = !_getStyle(this.data, \"filter\"); //if a class is applied that has an alpha filter, it will take effect (we don't want that), so re-apply our alpha filter in that case. We must first remove it and then check.\n } else {\n t.filter = filters.replace(_alphaFilterExp, \"\");\n skip = true;\n }\n }\n\n if (!skip) {\n if (this.xn1) {\n t.filter = filters = filters || \"alpha(opacity=\" + val + \")\"; //works around bug in IE7/8 that prevents changes to \"visibility\" from being applied properly if the filter is changed to a different alpha on the same frame.\n }\n\n if (filters.indexOf(\"pacity\") === -1) {\n //only used if browser doesn't support the standard opacity style property (IE 7 and 8). We omit the \"O\" to avoid case-sensitivity issues\n if (val !== 0 || !this.xn1) {\n //bugs in IE7/8 won't render the filter properly if opacity is ADDED on the same frame/render as \"visibility\" changes (this.xn1 is 1 if this tween is an \"autoAlpha\" tween)\n t.filter = filters + \" alpha(opacity=\" + val + \")\"; //we round the value because otherwise, bugs in IE7/8 can prevent \"visibility\" changes from being applied properly.\n }\n } else {\n t.filter = filters.replace(_opacityExp, \"opacity=\" + val);\n }\n }\n };\n\n _registerComplexSpecialProp(\"opacity,alpha,autoAlpha\", {\n defaultValue: \"1\",\n parser: function parser(t, e, p, cssp, pt, plugin) {\n var b = parseFloat(_getStyle(t, \"opacity\", _cs, false, \"1\")),\n style = t.style,\n isAutoAlpha = p === \"autoAlpha\";\n\n if (typeof e === \"string\" && e.charAt(1) === \"=\") {\n e = (e.charAt(0) === \"-\" ? -1 : 1) * parseFloat(e.substr(2)) + b;\n }\n\n if (isAutoAlpha && b === 1 && _getStyle(t, \"visibility\", _cs) === \"hidden\" && e !== 0) {\n //if visibility is initially set to \"hidden\", we should interpret that as intent to make opacity 0 (a convenience)\n b = 0;\n }\n\n if (_supportsOpacity) {\n pt = new CSSPropTween(style, \"opacity\", b, e - b, pt);\n } else {\n pt = new CSSPropTween(style, \"opacity\", b * 100, (e - b) * 100, pt);\n pt.xn1 = isAutoAlpha ? 1 : 0; //we need to record whether or not this is an autoAlpha so that in the setRatio(), we know to duplicate the setting of the alpha in order to work around a bug in IE7 and IE8 that prevents changes to \"visibility\" from taking effect if the filter is changed to a different alpha(opacity) at the same time. Setting it to the SAME value first, then the new value works around the IE7/8 bug.\n\n style.zoom = 1; //helps correct an IE issue.\n\n pt.type = 2;\n pt.b = \"alpha(opacity=\" + pt.s + \")\";\n pt.e = \"alpha(opacity=\" + (pt.s + pt.c) + \")\";\n pt.data = t;\n pt.plugin = plugin;\n pt.setRatio = _setIEOpacityRatio;\n }\n\n if (isAutoAlpha) {\n //we have to create the \"visibility\" PropTween after the opacity one in the linked list so that they run in the order that works properly in IE8 and earlier\n pt = new CSSPropTween(style, \"visibility\", 0, 0, pt, -1, null, false, 0, b !== 0 ? \"inherit\" : \"hidden\", e === 0 ? \"hidden\" : \"inherit\");\n pt.xs0 = \"inherit\";\n\n cssp._overwriteProps.push(pt.n);\n\n cssp._overwriteProps.push(p);\n }\n\n return pt;\n }\n });\n\n var _removeProp = function _removeProp(s, p) {\n if (p) {\n if (s.removeProperty) {\n if (p.substr(0, 2) === \"ms\" || p.substr(0, 6) === \"webkit\") {\n //Microsoft and some Webkit browsers don't conform to the standard of capitalizing the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be \"ms-transform\" instead of \"-ms-transform\" for IE9, for example)\n p = \"-\" + p;\n }\n\n s.removeProperty(p.replace(_capsExp, \"-$1\").toLowerCase());\n } else {\n //note: old versions of IE use \"removeAttribute()\" instead of \"removeProperty()\"\n s.removeAttribute(p);\n }\n }\n },\n _setClassNameRatio = function _setClassNameRatio(v) {\n this.t._gsClassPT = this;\n\n if (v === 1 || v === 0) {\n this.t.setAttribute(\"class\", v === 0 ? this.b : this.e);\n var mpt = this.data,\n //first MiniPropTween\n s = this.t.style;\n\n while (mpt) {\n if (!mpt.v) {\n _removeProp(s, mpt.p);\n } else {\n s[mpt.p] = mpt.v;\n }\n\n mpt = mpt._next;\n }\n\n if (v === 1 && this.t._gsClassPT === this) {\n this.t._gsClassPT = null;\n }\n } else if (this.t.getAttribute(\"class\") !== this.e) {\n this.t.setAttribute(\"class\", this.e);\n }\n };\n\n _registerComplexSpecialProp(\"className\", {\n parser: function parser(t, e, p, cssp, pt, plugin, vars) {\n var b = t.getAttribute(\"class\") || \"\",\n //don't use t.className because it doesn't work consistently on SVG elements; getAttribute(\"class\") and setAttribute(\"class\", value\") is more reliable.\n cssText = t.style.cssText,\n difData,\n bs,\n cnpt,\n cnptLookup,\n mpt;\n pt = cssp._classNamePT = new CSSPropTween(t, p, 0, 0, pt, 2);\n pt.setRatio = _setClassNameRatio;\n pt.pr = -11;\n _hasPriority = true;\n pt.b = b;\n bs = _getAllStyles(t, _cs); //if there's a className tween already operating on the target, force it to its end so that the necessary inline styles are removed and the class name is applied before we determine the end state (we don't want inline styles interfering that were there just for class-specific values)\n\n cnpt = t._gsClassPT;\n\n if (cnpt) {\n cnptLookup = {};\n mpt = cnpt.data; //first MiniPropTween which stores the inline styles - we need to force these so that the inline styles don't contaminate things. Otherwise, there's a small chance that a tween could start and the inline values match the destination values and they never get cleaned.\n\n while (mpt) {\n cnptLookup[mpt.p] = 1;\n mpt = mpt._next;\n }\n\n cnpt.setRatio(1);\n }\n\n t._gsClassPT = pt;\n pt.e = e.charAt(1) !== \"=\" ? e : b.replace(new RegExp(\"(?:\\\\s|^)\" + e.substr(2) + \"(?![\\\\w-])\"), \"\") + (e.charAt(0) === \"+\" ? \" \" + e.substr(2) : \"\");\n t.setAttribute(\"class\", pt.e);\n difData = _cssDif(t, bs, _getAllStyles(t), vars, cnptLookup);\n t.setAttribute(\"class\", b);\n pt.data = difData.firstMPT;\n\n if (t.style.cssText !== cssText) {\n //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://greensock.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.\n t.style.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).\n }\n\n pt = pt.xfirst = cssp.parse(t, difData.difs, pt, plugin); //we record the CSSPropTween as the xfirst so that we can handle overwriting propertly (if \"className\" gets overwritten, we must kill all the properties associated with the className part of the tween, so we can loop through from xfirst to the pt itself)\n\n return pt;\n }\n });\n\n var _setClearPropsRatio = function _setClearPropsRatio(v) {\n if (v === 1 || v === 0) if (this.data._totalTime === this.data._totalDuration && this.data.data !== \"isFromStart\") {\n //this.data refers to the tween. Only clear at the END of the tween (remember, from() tweens make the ratio go from 1 to 0, so we can't just check that and if the tween is the zero-duration one that's created internally to render the starting values in a from() tween, ignore that because otherwise, for example, from(...{height:100, clearProps:\"height\", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in).\n var s = this.t.style,\n transformParse = _specialProps.transform.parse,\n a,\n p,\n i,\n clearTransform,\n transform;\n\n if (this.e === \"all\") {\n s.cssText = \"\";\n clearTransform = true;\n } else {\n a = this.e.split(\" \").join(\"\").split(\",\");\n i = a.length;\n\n while (--i > -1) {\n p = a[i];\n\n if (_specialProps[p]) {\n if (_specialProps[p].parse === transformParse) {\n clearTransform = true;\n } else {\n p = p === \"transformOrigin\" ? _transformOriginProp : _specialProps[p].p; //ensures that special properties use the proper browser-specific property name, like \"scaleX\" might be \"-webkit-transform\" or \"boxShadow\" might be \"-moz-box-shadow\"\n }\n }\n\n _removeProp(s, p);\n }\n }\n\n if (clearTransform) {\n _removeProp(s, _transformProp);\n\n transform = this.t._gsTransform;\n\n if (transform) {\n if (transform.svg) {\n this.t.removeAttribute(\"data-svg-origin\");\n this.t.removeAttribute(\"transform\");\n }\n\n delete this.t._gsTransform;\n }\n }\n }\n };\n\n _registerComplexSpecialProp(\"clearProps\", {\n parser: function parser(t, e, p, cssp, pt) {\n pt = new CSSPropTween(t, p, 0, 0, pt, 2);\n pt.setRatio = _setClearPropsRatio;\n pt.e = e;\n pt.pr = -10;\n pt.data = cssp._tween;\n _hasPriority = true;\n return pt;\n }\n });\n\n p = \"bezier,throwProps,physicsProps,physics2D\".split(\",\");\n i = p.length;\n\n while (i--) {\n _registerPluginProp(p[i]);\n }\n\n p = CSSPlugin.prototype;\n p._firstPT = p._lastParsedTransform = p._transform = null; //gets called when the tween renders for the first time. This kicks everything off, recording start/end values, etc.\n\n p._onInitTween = function (target, vars, tween, index) {\n if (!target.nodeType) {\n //css is only for dom elements\n return false;\n }\n\n this._target = _target = target;\n this._tween = tween;\n this._vars = vars;\n _index = index;\n _autoRound = vars.autoRound;\n _hasPriority = false;\n _suffixMap = vars.suffixMap || CSSPlugin.suffixMap;\n _cs = _getComputedStyle(target, \"\");\n _overwriteProps = this._overwriteProps;\n var style = target.style,\n v,\n pt,\n pt2,\n first,\n last,\n next,\n zIndex,\n tpt,\n threeD;\n if (_reqSafariFix) if (style.zIndex === \"\") {\n v = _getStyle(target, \"zIndex\", _cs);\n\n if (v === \"auto\" || v === \"\") {\n //corrects a bug in [non-Android] Safari that prevents it from repainting elements in their new positions if they don't have a zIndex set. We also can't just apply this inside _parseTransform() because anything that's moved in any way (like using \"left\" or \"top\" instead of transforms like \"x\" and \"y\") can be affected, so it is best to ensure that anything that's tweening has a z-index. Setting \"WebkitPerspective\" to a non-zero value worked too except that on iOS Safari things would flicker randomly. Plus zIndex is less memory-intensive.\n this._addLazySet(style, \"zIndex\", 0);\n }\n }\n\n if (typeof vars === \"string\") {\n first = style.cssText;\n v = _getAllStyles(target, _cs);\n style.cssText = first + \";\" + vars;\n v = _cssDif(target, v, _getAllStyles(target)).difs;\n\n if (!_supportsOpacity && _opacityValExp.test(vars)) {\n v.opacity = parseFloat(RegExp.$1);\n }\n\n vars = v;\n style.cssText = first;\n }\n\n if (vars.className) {\n //className tweens will combine any differences they find in the css with the vars that are passed in, so {className:\"myClass\", scale:0.5, left:20} would work.\n this._firstPT = pt = _specialProps.className.parse(target, vars.className, \"className\", this, null, null, vars);\n } else {\n this._firstPT = pt = this.parse(target, vars, null);\n }\n\n if (this._transformType) {\n threeD = this._transformType === 3;\n\n if (!_transformProp) {\n style.zoom = 1; //helps correct an IE issue.\n } else if (_isSafari) {\n _reqSafariFix = true; //if zIndex isn't set, iOS Safari doesn't repaint things correctly sometimes (seemingly at random).\n\n if (style.zIndex === \"\") {\n zIndex = _getStyle(target, \"zIndex\", _cs);\n\n if (zIndex === \"auto\" || zIndex === \"\") {\n this._addLazySet(style, \"zIndex\", 0);\n }\n } //Setting WebkitBackfaceVisibility corrects 3 bugs:\n // 1) [non-Android] Safari skips rendering changes to \"top\" and \"left\" that are made on the same frame/render as a transform update.\n // 2) iOS Safari sometimes neglects to repaint elements in their new positions. Setting \"WebkitPerspective\" to a non-zero value worked too except that on iOS Safari things would flicker randomly.\n // 3) Safari sometimes displayed odd artifacts when tweening the transform (or WebkitTransform) property, like ghosts of the edges of the element remained. Definitely a browser bug.\n //Note: we allow the user to override the auto-setting by defining WebkitBackfaceVisibility in the vars of the tween.\n\n\n if (_isSafariLT6) {\n this._addLazySet(style, \"WebkitBackfaceVisibility\", this._vars.WebkitBackfaceVisibility || (threeD ? \"visible\" : \"hidden\"));\n }\n }\n\n pt2 = pt;\n\n while (pt2 && pt2._next) {\n pt2 = pt2._next;\n }\n\n tpt = new CSSPropTween(target, \"transform\", 0, 0, null, 2);\n\n this._linkCSSP(tpt, null, pt2);\n\n tpt.setRatio = _transformProp ? _setTransformRatio : _setIETransformRatio;\n tpt.data = this._transform || _getTransform(target, _cs, true);\n tpt.tween = tween;\n tpt.pr = -1; //ensures that the transforms get applied after the components are updated.\n\n _overwriteProps.pop(); //we don't want to force the overwrite of all \"transform\" tweens of the target - we only care about individual transform properties like scaleX, rotation, etc. The CSSPropTween constructor automatically adds the property to _overwriteProps which is why we need to pop() here.\n\n }\n\n if (_hasPriority) {\n //reorders the linked list in order of pr (priority)\n while (pt) {\n next = pt._next;\n pt2 = first;\n\n while (pt2 && pt2.pr > pt.pr) {\n pt2 = pt2._next;\n }\n\n if (pt._prev = pt2 ? pt2._prev : last) {\n pt._prev._next = pt;\n } else {\n first = pt;\n }\n\n if (pt._next = pt2) {\n pt2._prev = pt;\n } else {\n last = pt;\n }\n\n pt = next;\n }\n\n this._firstPT = first;\n }\n\n return true;\n };\n\n p.parse = function (target, vars, pt, plugin) {\n var style = target.style,\n p,\n sp,\n bn,\n en,\n bs,\n es,\n bsfx,\n esfx,\n isStr,\n rel;\n\n for (p in vars) {\n es = vars[p]; //ending value string\n\n sp = _specialProps[p]; //SpecialProp lookup.\n\n if (typeof es === \"function\" && !(sp && sp.allowFunc)) {\n es = es(_index, _target);\n }\n\n if (sp) {\n pt = sp.parse(target, es, p, this, pt, plugin, vars);\n } else if (p.substr(0, 2) === \"--\") {\n //for tweening CSS variables (which always start with \"--\"). To maximize performance and simplicity, we bypass CSSPlugin altogether and just add a normal property tween to the tween instance itself.\n this._tween._propLookup[p] = this._addTween.call(this._tween, target.style, \"setProperty\", _getComputedStyle(target).getPropertyValue(p) + \"\", es + \"\", p, false, p);\n continue;\n } else {\n bs = _getStyle(target, p, _cs) + \"\";\n isStr = typeof es === \"string\";\n\n if (p === \"color\" || p === \"fill\" || p === \"stroke\" || p.indexOf(\"Color\") !== -1 || isStr && _rgbhslExp.test(es)) {\n //Opera uses background: to define color sometimes in addition to backgroundColor:\n if (!isStr) {\n es = _parseColor(es);\n es = (es.length > 3 ? \"rgba(\" : \"rgb(\") + es.join(\",\") + \")\";\n }\n\n pt = _parseComplex(style, p, bs, es, true, \"transparent\", pt, 0, plugin);\n } else if (isStr && _complexExp.test(es)) {\n pt = _parseComplex(style, p, bs, es, true, null, pt, 0, plugin);\n } else {\n bn = parseFloat(bs);\n bsfx = bn || bn === 0 ? bs.substr((bn + \"\").length) : \"\"; //remember, bs could be non-numeric like \"normal\" for fontWeight, so we should default to a blank suffix in that case.\n\n if (bs === \"\" || bs === \"auto\") {\n if (p === \"width\" || p === \"height\") {\n bn = _getDimension(target, p, _cs);\n bsfx = \"px\";\n } else if (p === \"left\" || p === \"top\") {\n bn = _calculateOffset(target, p, _cs);\n bsfx = \"px\";\n } else {\n bn = p !== \"opacity\" ? 0 : 1;\n bsfx = \"\";\n }\n }\n\n rel = isStr && es.charAt(1) === \"=\";\n\n if (rel) {\n en = parseInt(es.charAt(0) + \"1\", 10);\n es = es.substr(2);\n en *= parseFloat(es);\n esfx = es.replace(_suffixExp, \"\");\n } else {\n en = parseFloat(es);\n esfx = isStr ? es.replace(_suffixExp, \"\") : \"\";\n }\n\n if (esfx === \"\") {\n esfx = p in _suffixMap ? _suffixMap[p] : bsfx; //populate the end suffix, prioritizing the map, then if none is found, use the beginning suffix.\n }\n\n es = en || en === 0 ? (rel ? en + bn : en) + esfx : vars[p]; //ensures that any += or -= prefixes are taken care of. Record the end value before normalizing the suffix because we always want to end the tween on exactly what they intended even if it doesn't match the beginning value's suffix.\n //if the beginning/ending suffixes don't match, normalize them...\n\n if (bsfx !== esfx) if (esfx !== \"\" || p === \"lineHeight\") if (en || en === 0) if (bn) {\n //note: if the beginning value (bn) is 0, we don't need to convert units!\n bn = _convertToPixels(target, p, bn, bsfx);\n\n if (esfx === \"%\") {\n bn /= _convertToPixels(target, p, 100, \"%\") / 100;\n\n if (vars.strictUnits !== true) {\n //some browsers report only \"px\" values instead of allowing \"%\" with getComputedStyle(), so we assume that if we're tweening to a %, we should start there too unless strictUnits:true is defined. This approach is particularly useful for responsive designs that use from() tweens.\n bs = bn + \"%\";\n }\n } else if (esfx === \"em\" || esfx === \"rem\" || esfx === \"vw\" || esfx === \"vh\") {\n bn /= _convertToPixels(target, p, 1, esfx); //otherwise convert to pixels.\n } else if (esfx !== \"px\") {\n en = _convertToPixels(target, p, en, esfx);\n esfx = \"px\"; //we don't use bsfx after this, so we don't need to set it to px too.\n }\n\n if (rel) if (en || en === 0) {\n es = en + bn + esfx; //the changes we made affect relative calculations, so adjust the end value here.\n }\n }\n\n if (rel) {\n en += bn;\n }\n\n if ((bn || bn === 0) && (en || en === 0)) {\n //faster than isNaN(). Also, previously we required en !== bn but that doesn't really gain much performance and it prevents _parseToProxy() from working properly if beginning and ending values match but need to get tweened by an external plugin anyway. For example, a bezier tween where the target starts at left:0 and has these points: [{left:50},{left:0}] wouldn't work properly because when parsing the last point, it'd match the first (current) one and a non-tweening CSSPropTween would be recorded when we actually need a normal tween (type:0) so that things get updated during the tween properly.\n pt = new CSSPropTween(style, p, bn, en - bn, pt, 0, p, _autoRound !== false && (esfx === \"px\" || p === \"zIndex\"), 0, bs, es);\n pt.xs0 = esfx; //DEBUG: _log(\"tween \"+p+\" from \"+pt.b+\" (\"+bn+esfx+\") to \"+pt.e+\" with suffix: \"+pt.xs0);\n } else if (style[p] === undefined || !es && (es + \"\" === \"NaN\" || es == null)) {\n _log(\"invalid \" + p + \" tween value: \" + vars[p]);\n } else {\n pt = new CSSPropTween(style, p, en || bn || 0, 0, pt, -1, p, false, 0, bs, es);\n pt.xs0 = es === \"none\" && (p === \"display\" || p.indexOf(\"Style\") !== -1) ? bs : es; //intermediate value should typically be set immediately (end value) except for \"display\" or things like borderTopStyle, borderBottomStyle, etc. which should use the beginning value during the tween.\n //DEBUG: _log(\"non-tweening value \"+p+\": \"+pt.xs0);\n }\n }\n }\n\n if (plugin) if (pt && !pt.plugin) {\n pt.plugin = plugin;\n }\n }\n\n return pt;\n }; //gets called every time the tween updates, passing the new ratio (typically a value between 0 and 1, but not always (for example, if an Elastic.easeOut is used, the value can jump above 1 mid-tween). It will always start and 0 and end at 1.\n\n\n p.setRatio = function (v) {\n var pt = this._firstPT,\n min = 0.000001,\n val,\n str,\n i; //at the end of the tween, we set the values to exactly what we received in order to make sure non-tweening values (like \"position\" or \"float\" or whatever) are set and so that if the beginning/ending suffixes (units) didn't match and we normalized to px, the value that the user passed in is used here. We check to see if the tween is at its beginning in case it's a from() tween in which case the ratio will actually go from 1 to 0 over the course of the tween (backwards).\n\n if (v === 1 && (this._tween._time === this._tween._duration || this._tween._time === 0)) {\n while (pt) {\n if (pt.type !== 2) {\n if (pt.r && pt.type !== -1) {\n val = pt.r(pt.s + pt.c);\n\n if (!pt.type) {\n pt.t[pt.p] = val + pt.xs0;\n } else if (pt.type === 1) {\n //complex value (one that typically has multiple numbers inside a string, like \"rect(5px,10px,20px,25px)\"\n i = pt.l;\n str = pt.xs0 + val + pt.xs1;\n\n for (i = 1; i < pt.l; i++) {\n str += pt[\"xn\" + i] + pt[\"xs\" + (i + 1)];\n }\n\n pt.t[pt.p] = str;\n }\n } else {\n pt.t[pt.p] = pt.e;\n }\n } else {\n pt.setRatio(v);\n }\n\n pt = pt._next;\n }\n } else if (v || !(this._tween._time === this._tween._duration || this._tween._time === 0) || this._tween._rawPrevTime === -0.000001) {\n while (pt) {\n val = pt.c * v + pt.s;\n\n if (pt.r) {\n val = pt.r(val);\n } else if (val < min) if (val > -min) {\n val = 0;\n }\n\n if (!pt.type) {\n pt.t[pt.p] = val + pt.xs0;\n } else if (pt.type === 1) {\n //complex value (one that typically has multiple numbers inside a string, like \"rect(5px,10px,20px,25px)\"\n i = pt.l;\n\n if (i === 2) {\n pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2;\n } else if (i === 3) {\n pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2 + pt.xn2 + pt.xs3;\n } else if (i === 4) {\n pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2 + pt.xn2 + pt.xs3 + pt.xn3 + pt.xs4;\n } else if (i === 5) {\n pt.t[pt.p] = pt.xs0 + val + pt.xs1 + pt.xn1 + pt.xs2 + pt.xn2 + pt.xs3 + pt.xn3 + pt.xs4 + pt.xn4 + pt.xs5;\n } else {\n str = pt.xs0 + val + pt.xs1;\n\n for (i = 1; i < pt.l; i++) {\n str += pt[\"xn\" + i] + pt[\"xs\" + (i + 1)];\n }\n\n pt.t[pt.p] = str;\n }\n } else if (pt.type === -1) {\n //non-tweening value\n pt.t[pt.p] = pt.xs0;\n } else if (pt.setRatio) {\n //custom setRatio() for things like SpecialProps, external plugins, etc.\n pt.setRatio(v);\n }\n\n pt = pt._next;\n } //if the tween is reversed all the way back to the beginning, we need to restore the original values which may have different units (like % instead of px or em or whatever).\n\n } else {\n while (pt) {\n if (pt.type !== 2) {\n pt.t[pt.p] = pt.b;\n } else {\n pt.setRatio(v);\n }\n\n pt = pt._next;\n }\n }\n };\n /**\n * @private\n * Forces rendering of the target's transforms (rotation, scale, etc.) whenever the CSSPlugin's setRatio() is called.\n * Basically, this tells the CSSPlugin to create a CSSPropTween (type 2) after instantiation that runs last in the linked\n * list and calls the appropriate (3D or 2D) rendering function. We separate this into its own method so that we can call\n * it from other plugins like BezierPlugin if, for example, it needs to apply an autoRotation and this CSSPlugin\n * doesn't have any transform-related properties of its own. You can call this method as many times as you\n * want and it won't create duplicate CSSPropTweens.\n *\n * @param {boolean} threeD if true, it should apply 3D tweens (otherwise, just 2D ones are fine and typically faster)\n */\n\n\n p._enableTransforms = function (threeD) {\n this._transform = this._transform || _getTransform(this._target, _cs, true); //ensures that the element has a _gsTransform property with the appropriate values.\n\n this._transformType = !(this._transform.svg && _useSVGTransformAttr) && (threeD || this._transformType === 3) ? 3 : 2;\n };\n\n var lazySet = function lazySet(v) {\n this.t[this.p] = this.e;\n\n this.data._linkCSSP(this, this._next, null, true); //we purposefully keep this._next even though it'd make sense to null it, but this is a performance optimization, as this happens during the while (pt) {} loop in setRatio() at the bottom of which it sets pt = pt._next, so if we null it, the linked list will be broken in that loop.\n\n };\n /** @private Gives us a way to set a value on the first render (and only the first render). **/\n\n\n p._addLazySet = function (t, p, v) {\n var pt = this._firstPT = new CSSPropTween(t, p, 0, 0, this._firstPT, 2);\n pt.e = v;\n pt.setRatio = lazySet;\n pt.data = this;\n };\n /** @private **/\n\n\n p._linkCSSP = function (pt, next, prev, remove) {\n if (pt) {\n if (next) {\n next._prev = pt;\n }\n\n if (pt._next) {\n pt._next._prev = pt._prev;\n }\n\n if (pt._prev) {\n pt._prev._next = pt._next;\n } else if (this._firstPT === pt) {\n this._firstPT = pt._next;\n remove = true; //just to prevent resetting this._firstPT 5 lines down in case pt._next is null. (optimized for speed)\n }\n\n if (prev) {\n prev._next = pt;\n } else if (!remove && this._firstPT === null) {\n this._firstPT = pt;\n }\n\n pt._next = next;\n pt._prev = prev;\n }\n\n return pt;\n };\n\n p._mod = function (lookup) {\n var pt = this._firstPT;\n\n while (pt) {\n if (typeof lookup[pt.p] === \"function\") {\n //only gets called by RoundPropsPlugin (ModifyPlugin manages all the rendering internally for CSSPlugin properties that need modification). Remember, we handle rounding a bit differently in this plugin for performance reasons, leveraging \"r\" as an indicator that the value should be rounded internally.\n pt.r = lookup[pt.p];\n }\n\n pt = pt._next;\n }\n }; //we need to make sure that if alpha or autoAlpha is killed, opacity is too. And autoAlpha affects the \"visibility\" property.\n\n\n p._kill = function (lookup) {\n var copy = lookup,\n pt,\n p,\n xfirst;\n\n if (lookup.autoAlpha || lookup.alpha) {\n copy = {};\n\n for (p in lookup) {\n //copy the lookup so that we're not changing the original which may be passed elsewhere.\n copy[p] = lookup[p];\n }\n\n copy.opacity = 1;\n\n if (copy.autoAlpha) {\n copy.visibility = 1;\n }\n }\n\n if (lookup.className && (pt = this._classNamePT)) {\n //for className tweens, we need to kill any associated CSSPropTweens too; a linked list starts at the className's \"xfirst\".\n xfirst = pt.xfirst;\n\n if (xfirst && xfirst._prev) {\n this._linkCSSP(xfirst._prev, pt._next, xfirst._prev._prev); //break off the prev\n\n } else if (xfirst === this._firstPT) {\n this._firstPT = pt._next;\n }\n\n if (pt._next) {\n this._linkCSSP(pt._next, pt._next._next, xfirst._prev);\n }\n\n this._classNamePT = null;\n }\n\n pt = this._firstPT;\n\n while (pt) {\n if (pt.plugin && pt.plugin !== p && pt.plugin._kill) {\n //for plugins that are registered with CSSPlugin, we should notify them of the kill.\n pt.plugin._kill(lookup);\n\n p = pt.plugin;\n }\n\n pt = pt._next;\n }\n\n return TweenPlugin.prototype._kill.call(this, copy);\n }; //used by cascadeTo() for gathering all the style properties of each child element into an array for comparison.\n\n\n var _getChildStyles = function _getChildStyles(e, props, targets) {\n var children, i, child, type;\n\n if (e.slice) {\n i = e.length;\n\n while (--i > -1) {\n _getChildStyles(e[i], props, targets);\n }\n\n return;\n }\n\n children = e.childNodes;\n i = children.length;\n\n while (--i > -1) {\n child = children[i];\n type = child.type;\n\n if (child.style) {\n props.push(_getAllStyles(child));\n\n if (targets) {\n targets.push(child);\n }\n }\n\n if ((type === 1 || type === 9 || type === 11) && child.childNodes.length) {\n _getChildStyles(child, props, targets);\n }\n }\n };\n /**\n * Typically only useful for className tweens that may affect child elements, this method creates a TweenLite\n * and then compares the style properties of all the target's child elements at the tween's start and end, and\n * if any are different, it also creates tweens for those and returns an array containing ALL of the resulting\n * tweens (so that you can easily add() them to a TimelineLite, for example). The reason this functionality is\n * wrapped into a separate static method of CSSPlugin instead of being integrated into all regular className tweens\n * is because it creates entirely new tweens that may have completely different targets than the original tween,\n * so if they were all lumped into the original tween instance, it would be inconsistent with the rest of the API\n * and it would create other problems. For example:\n * - If I create a tween of elementA, that tween instance may suddenly change its target to include 50 other elements (unintuitive if I specifically defined the target I wanted)\n * - We can't just create new independent tweens because otherwise, what happens if the original/parent tween is reversed or pause or dropped into a TimelineLite for tight control? You'd expect that tween's behavior to affect all the others.\n * - Analyzing every style property of every child before and after the tween is an expensive operation when there are many children, so this behavior shouldn't be imposed on all className tweens by default, especially since it's probably rare that this extra functionality is needed.\n *\n * @param {Object} target object to be tweened\n * @param {number} Duration in seconds (or frames for frames-based tweens)\n * @param {Object} Object containing the end values, like {className:\"newClass\", ease:Linear.easeNone}\n * @return {Array} An array of TweenLite instances\n */\n\n\n CSSPlugin.cascadeTo = function (target, duration, vars) {\n var tween = TweenLite.to(target, duration, vars),\n results = [tween],\n b = [],\n e = [],\n targets = [],\n _reservedProps = TweenLite._internals.reservedProps,\n i,\n difs,\n p,\n from;\n target = tween._targets || tween.target;\n\n _getChildStyles(target, b, targets);\n\n tween.render(duration, true, true);\n\n _getChildStyles(target, e);\n\n tween.render(0, true, true);\n\n tween._enabled(true);\n\n i = targets.length;\n\n while (--i > -1) {\n difs = _cssDif(targets[i], b[i], e[i]);\n\n if (difs.firstMPT) {\n difs = difs.difs;\n\n for (p in vars) {\n if (_reservedProps[p]) {\n difs[p] = vars[p];\n }\n }\n\n from = {};\n\n for (p in difs) {\n from[p] = b[i][p];\n }\n\n results.push(TweenLite.fromTo(targets[i], duration, from, difs));\n }\n }\n\n return results;\n };\n\n TweenPlugin.activate([CSSPlugin]);\n return CSSPlugin;\n}, true);\n\nexport var CSSPlugin = globals.CSSPlugin;\nexport { CSSPlugin as default };","/*!\n * VERSION: 0.6.1\n * DATE: 2018-08-27\n * UPDATES AND DOCS AT: http://greensock.com\n *\n * @license Copyright (c) 2008-2019, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n * \n * @author: Jack Doyle, jack@greensock.com\n */\n\n/* eslint-disable */\nimport { _gsScope } from \"./TweenLite.js\";\nexport var AttrPlugin = _gsScope._gsDefine.plugin({\n propName: \"attr\",\n API: 2,\n version: \"0.6.1\",\n //called when the tween renders for the first time. This is where initial values should be recorded and any setup routines should run.\n init: function init(target, value, tween, index) {\n var p, end;\n\n if (typeof target.setAttribute !== \"function\") {\n return false;\n }\n\n for (p in value) {\n end = value[p];\n\n if (typeof end === \"function\") {\n end = end(index, target);\n }\n\n this._addTween(target, \"setAttribute\", target.getAttribute(p) + \"\", end + \"\", p, false, p);\n\n this._overwriteProps.push(p);\n }\n\n return true;\n }\n});\nexport { AttrPlugin as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * VERSION: 1.6.0\n * DATE: 2018-08-27\n * UPDATES AND DOCS AT: http://greensock.com\n *\n * @license Copyright (c) 2008-2019, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n * \n * @author: Jack Doyle, jack@greensock.com\n **/\n\n/* eslint-disable */\nimport { _gsScope } from \"./TweenLite.js\";\nexport var RoundPropsPlugin = _gsScope._gsDefine.plugin({\n propName: \"roundProps\",\n version: \"1.7.0\",\n priority: -1,\n API: 2,\n //called when the tween renders for the first time. This is where initial values should be recorded and any setup routines should run.\n init: function init(target, value, tween) {\n this._tween = tween;\n return true;\n }\n}),\n _getRoundFunc = function _getRoundFunc(v) {\n //pass in 0.1 get a function that'll round to the nearest tenth, or 5 to round to the closest 5, or 0.001 to the closest 1000th, etc.\n var p = v < 1 ? Math.pow(10, (v + \"\").length - 2) : 1; //to avoid floating point math errors (like 24 * 0.1 == 2.4000000000000004), we chop off at a specific number of decimal places (much faster than toFixed()\n\n return function (n) {\n return (Math.round(n / v) * v * p | 0) / p;\n };\n},\n _roundLinkedList = function _roundLinkedList(node, mod) {\n while (node) {\n if (!node.f && !node.blob) {\n node.m = mod || Math.round;\n }\n\n node = node._next;\n }\n},\n p = RoundPropsPlugin.prototype;\n\np._onInitAllProps = function () {\n var tween = this._tween,\n rp = tween.vars.roundProps,\n lookup = {},\n rpt = tween._propLookup.roundProps,\n pt,\n next,\n i,\n p;\n\n if (_typeof(rp) === \"object\" && !rp.push) {\n for (p in rp) {\n lookup[p] = _getRoundFunc(rp[p]);\n }\n } else {\n if (typeof rp === \"string\") {\n rp = rp.split(\",\");\n }\n\n i = rp.length;\n\n while (--i > -1) {\n lookup[rp[i]] = Math.round;\n }\n }\n\n for (p in lookup) {\n pt = tween._firstPT;\n\n while (pt) {\n next = pt._next; //record here, because it may get removed\n\n if (pt.pg) {\n pt.t._mod(lookup);\n } else if (pt.n === p) {\n if (pt.f === 2 && pt.t) {\n //a blob (text containing multiple numeric values)\n _roundLinkedList(pt.t._firstPT, lookup[p]);\n } else {\n this._add(pt.t, p, pt.s, pt.c, lookup[p]); //remove from linked list\n\n\n if (next) {\n next._prev = pt._prev;\n }\n\n if (pt._prev) {\n pt._prev._next = next;\n } else if (tween._firstPT === pt) {\n tween._firstPT = next;\n }\n\n pt._next = pt._prev = null;\n tween._propLookup[p] = rpt;\n }\n }\n\n pt = next;\n }\n }\n\n return false;\n};\n\np._add = function (target, p, s, c, mod) {\n this._addTween(target, p, s, s + c, p, mod || Math.round);\n\n this._overwriteProps.push(p);\n};\n\nexport { RoundPropsPlugin as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * VERSION: 0.3.1\n * DATE: 2018-08-27\n * UPDATES AND DOCS AT: http://greensock.com\n *\n * @license Copyright (c) 2008-2019, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n * \n * @author: Jack Doyle, jack@greensock.com\n **/\n\n/* eslint-disable */\nimport { _gsScope } from \"./TweenLite.js\";\nexport var DirectionalRotationPlugin = _gsScope._gsDefine.plugin({\n propName: \"directionalRotation\",\n version: \"0.3.1\",\n API: 2,\n //called when the tween renders for the first time. This is where initial values should be recorded and any setup routines should run.\n init: function init(target, value, tween, index) {\n if (_typeof(value) !== \"object\") {\n value = {\n rotation: value\n };\n }\n\n this.finals = {};\n var cap = value.useRadians === true ? Math.PI * 2 : 360,\n min = 0.000001,\n p,\n v,\n start,\n end,\n dif,\n split;\n\n for (p in value) {\n if (p !== \"useRadians\") {\n end = value[p];\n\n if (typeof end === \"function\") {\n end = end(index, target);\n }\n\n split = (end + \"\").split(\"_\");\n v = split[0];\n start = parseFloat(typeof target[p] !== \"function\" ? target[p] : target[p.indexOf(\"set\") || typeof target[\"get\" + p.substr(3)] !== \"function\" ? p : \"get\" + p.substr(3)]());\n end = this.finals[p] = typeof v === \"string\" && v.charAt(1) === \"=\" ? start + parseInt(v.charAt(0) + \"1\", 10) * Number(v.substr(2)) : Number(v) || 0;\n dif = end - start;\n\n if (split.length) {\n v = split.join(\"_\");\n\n if (v.indexOf(\"short\") !== -1) {\n dif = dif % cap;\n\n if (dif !== dif % (cap / 2)) {\n dif = dif < 0 ? dif + cap : dif - cap;\n }\n }\n\n if (v.indexOf(\"_cw\") !== -1 && dif < 0) {\n dif = (dif + cap * 9999999999) % cap - (dif / cap | 0) * cap;\n } else if (v.indexOf(\"ccw\") !== -1 && dif > 0) {\n dif = (dif - cap * 9999999999) % cap - (dif / cap | 0) * cap;\n }\n }\n\n if (dif > min || dif < -min) {\n this._addTween(target, p, start, start + dif, p);\n\n this._overwriteProps.push(p);\n }\n }\n }\n\n return true;\n },\n //called each time the values should be updated, and the ratio gets passed as the only parameter (typically it's a value between 0 and 1, but it can exceed those when using an ease like Elastic.easeOut or Back.easeOut, etc.)\n set: function set(ratio) {\n var pt;\n\n if (ratio !== 1) {\n this._super.setRatio.call(this, ratio);\n } else {\n pt = this._firstPT;\n\n while (pt) {\n if (pt.f) {\n pt.t[pt.p](this.finals[pt.p]);\n } else {\n pt.t[pt.p] = this.finals[pt.p];\n }\n\n pt = pt._next;\n }\n }\n }\n});\nDirectionalRotationPlugin._autoCSS = true;\nexport { DirectionalRotationPlugin as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * VERSION: 2.1.3\n * DATE: 2019-05-17\n * UPDATES AND DOCS AT: http://greensock.com\n *\n * @license Copyright (c) 2008-2019, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n * \n * @author: Jack Doyle, jack@greensock.com\n */\n\n/* eslint-disable */\nimport TweenLite, { _gsScope, globals, Animation, SimpleTimeline } from \"./TweenLite.js\";\n\n_gsScope._gsDefine(\"TimelineLite\", [\"core.Animation\", \"core.SimpleTimeline\", \"TweenLite\"], function () {\n var TimelineLite = function TimelineLite(vars) {\n SimpleTimeline.call(this, vars);\n var self = this,\n v = self.vars,\n val,\n p;\n self._labels = {};\n self.autoRemoveChildren = !!v.autoRemoveChildren;\n self.smoothChildTiming = !!v.smoothChildTiming;\n self._sortChildren = true;\n self._onUpdate = v.onUpdate;\n\n for (p in v) {\n val = v[p];\n if (_isArray(val)) if (val.join(\"\").indexOf(\"{self}\") !== -1) {\n v[p] = self._swapSelfInParams(val);\n }\n }\n\n if (_isArray(v.tweens)) {\n self.add(v.tweens, 0, v.align, v.stagger);\n }\n },\n _tinyNum = 0.00000001,\n TweenLiteInternals = TweenLite._internals,\n _internals = TimelineLite._internals = {},\n _isSelector = TweenLiteInternals.isSelector,\n _isArray = TweenLiteInternals.isArray,\n _lazyTweens = TweenLiteInternals.lazyTweens,\n _lazyRender = TweenLiteInternals.lazyRender,\n _globals = _gsScope._gsDefine.globals,\n _copy = function _copy(vars) {\n var copy = {},\n p;\n\n for (p in vars) {\n copy[p] = vars[p];\n }\n\n return copy;\n },\n _applyCycle = function _applyCycle(vars, targets, i) {\n var alt = vars.cycle,\n p,\n val;\n\n for (p in alt) {\n val = alt[p];\n vars[p] = typeof val === \"function\" ? val(i, targets[i], targets) : val[i % val.length];\n }\n\n delete vars.cycle;\n },\n _pauseCallback = _internals.pauseCallback = function () {},\n _slice = function _slice(a) {\n //don't use [].slice because that doesn't work in IE8 with a NodeList that's returned by querySelectorAll()\n var b = [],\n l = a.length,\n i;\n\n for (i = 0; i !== l; b.push(a[i++])) {\n ;\n }\n\n return b;\n },\n _defaultImmediateRender = function _defaultImmediateRender(tl, toVars, fromVars, defaultFalse) {\n //default to immediateRender:true unless otherwise set in toVars, fromVars or if defaultFalse is passed in as true\n var ir = \"immediateRender\";\n\n if (!(ir in toVars)) {\n toVars[ir] = !(fromVars && fromVars[ir] === false || defaultFalse);\n }\n\n return toVars;\n },\n //for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following\n _distribute = function _distribute(v) {\n if (typeof v === \"function\") {\n return v;\n }\n\n var vars = _typeof(v) === \"object\" ? v : {\n each: v\n },\n //n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total \"amount\" that's chunked out among them all.\n ease = vars.ease,\n from = vars.from || 0,\n base = vars.base || 0,\n cache = {},\n isFromKeyword = isNaN(from),\n axis = vars.axis,\n ratio = {\n center: 0.5,\n end: 1\n }[from] || 0;\n return function (i, target, a) {\n var l = (a || vars).length,\n distances = cache[l],\n originX,\n originY,\n x,\n y,\n d,\n j,\n max,\n min,\n wrap;\n\n if (!distances) {\n wrap = vars.grid === \"auto\" ? 0 : (vars.grid || [Infinity])[0];\n\n if (!wrap) {\n max = -Infinity;\n\n while (max < (max = a[wrap++].getBoundingClientRect().left) && wrap < l) {}\n\n wrap--;\n }\n\n distances = cache[l] = [];\n originX = isFromKeyword ? Math.min(wrap, l) * ratio - 0.5 : from % wrap;\n originY = isFromKeyword ? l * ratio / wrap - 0.5 : from / wrap | 0;\n max = 0;\n min = Infinity;\n\n for (j = 0; j < l; j++) {\n x = j % wrap - originX;\n y = originY - (j / wrap | 0);\n distances[j] = d = !axis ? Math.sqrt(x * x + y * y) : Math.abs(axis === \"y\" ? y : x);\n\n if (d > max) {\n max = d;\n }\n\n if (d < min) {\n min = d;\n }\n }\n\n distances.max = max - min;\n distances.min = min;\n distances.v = l = vars.amount || vars.each * (wrap > l ? l - 1 : !axis ? Math.max(wrap, l / wrap) : axis === \"y\" ? l / wrap : wrap) || 0;\n distances.b = l < 0 ? base - l : base;\n }\n\n l = (distances[i] - distances.min) / distances.max;\n return distances.b + (ease ? ease.getRatio(l) : l) * distances.v;\n };\n },\n p = TimelineLite.prototype = new SimpleTimeline();\n\n TimelineLite.version = \"2.1.3\";\n TimelineLite.distribute = _distribute;\n p.constructor = TimelineLite;\n p.kill()._gc = p._forcingPlayhead = p._hasPause = false;\n /* might use later...\n //translates a local time inside an animation to the corresponding time on the root/global timeline, factoring in all nesting and timeScales.\n function localToGlobal(time, animation) {\n \twhile (animation) {\n \t\ttime = (time / animation._timeScale) + animation._startTime;\n \t\tanimation = animation.timeline;\n \t}\n \treturn time;\n }\n \t//translates the supplied time on the root/global timeline into the corresponding local time inside a particular animation, factoring in all nesting and timeScales\n function globalToLocal(time, animation) {\n \tvar scale = 1;\n \ttime -= localToGlobal(0, animation);\n \twhile (animation) {\n \t\tscale *= animation._timeScale;\n \t\tanimation = animation.timeline;\n \t}\n \treturn time * scale;\n }\n */\n\n p.to = function (target, duration, vars, position) {\n var Engine = vars.repeat && _globals.TweenMax || TweenLite;\n return duration ? this.add(new Engine(target, duration, vars), position) : this.set(target, vars, position);\n };\n\n p.from = function (target, duration, vars, position) {\n return this.add((vars.repeat && _globals.TweenMax || TweenLite).from(target, duration, _defaultImmediateRender(this, vars)), position);\n };\n\n p.fromTo = function (target, duration, fromVars, toVars, position) {\n var Engine = toVars.repeat && _globals.TweenMax || TweenLite;\n toVars = _defaultImmediateRender(this, toVars, fromVars);\n return duration ? this.add(Engine.fromTo(target, duration, fromVars, toVars), position) : this.set(target, toVars, position);\n };\n\n p.staggerTo = function (targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {\n var tl = new TimelineLite({\n onComplete: onCompleteAll,\n onCompleteParams: onCompleteAllParams,\n callbackScope: onCompleteAllScope,\n smoothChildTiming: this.smoothChildTiming\n }),\n staggerFunc = _distribute(vars.stagger || stagger),\n startAt = vars.startAt,\n cycle = vars.cycle,\n copy,\n i;\n\n if (typeof targets === \"string\") {\n targets = TweenLite.selector(targets) || targets;\n }\n\n targets = targets || [];\n\n if (_isSelector(targets)) {\n //if the targets object is a selector, translate it into an array.\n targets = _slice(targets);\n }\n\n for (i = 0; i < targets.length; i++) {\n copy = _copy(vars);\n\n if (startAt) {\n copy.startAt = _copy(startAt);\n\n if (startAt.cycle) {\n _applyCycle(copy.startAt, targets, i);\n }\n }\n\n if (cycle) {\n _applyCycle(copy, targets, i);\n\n if (copy.duration != null) {\n duration = copy.duration;\n delete copy.duration;\n }\n }\n\n tl.to(targets[i], duration, copy, staggerFunc(i, targets[i], targets));\n }\n\n return this.add(tl, position);\n };\n\n p.staggerFrom = function (targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {\n vars.runBackwards = true;\n return this.staggerTo(targets, duration, _defaultImmediateRender(this, vars), stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope);\n };\n\n p.staggerFromTo = function (targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope) {\n toVars.startAt = fromVars;\n return this.staggerTo(targets, duration, _defaultImmediateRender(this, toVars, fromVars), stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope);\n };\n\n p.call = function (callback, params, scope, position) {\n return this.add(TweenLite.delayedCall(0, callback, params, scope), position);\n };\n\n p.set = function (target, vars, position) {\n return this.add(new TweenLite(target, 0, _defaultImmediateRender(this, vars, null, true)), position);\n };\n\n TimelineLite.exportRoot = function (vars, ignoreDelayedCalls) {\n vars = vars || {};\n\n if (vars.smoothChildTiming == null) {\n vars.smoothChildTiming = true;\n }\n\n var tl = new TimelineLite(vars),\n root = tl._timeline,\n hasNegativeStart,\n time,\n tween,\n next;\n\n if (ignoreDelayedCalls == null) {\n ignoreDelayedCalls = true;\n }\n\n root._remove(tl, true);\n\n tl._startTime = 0;\n tl._rawPrevTime = tl._time = tl._totalTime = root._time;\n tween = root._first;\n\n while (tween) {\n next = tween._next;\n\n if (!ignoreDelayedCalls || !(tween instanceof TweenLite && tween.target === tween.vars.onComplete)) {\n time = tween._startTime - tween._delay;\n\n if (time < 0) {\n hasNegativeStart = 1;\n }\n\n tl.add(tween, time);\n }\n\n tween = next;\n }\n\n root.add(tl, 0);\n\n if (hasNegativeStart) {\n //calling totalDuration() will force the adjustment necessary to shift the children forward so none of them start before zero, and moves the timeline backwards the same amount, so the playhead is still aligned where it should be globally, but the timeline doesn't have illegal children that start before zero.\n tl.totalDuration();\n }\n\n return tl;\n };\n\n p.add = function (value, position, align, stagger) {\n var self = this,\n curTime,\n l,\n i,\n child,\n tl,\n beforeRawTime;\n\n if (typeof position !== \"number\") {\n position = self._parseTimeOrLabel(position, 0, true, value);\n }\n\n if (!(value instanceof Animation)) {\n if (value instanceof Array || value && value.push && _isArray(value)) {\n align = align || \"normal\";\n stagger = stagger || 0;\n curTime = position;\n l = value.length;\n\n for (i = 0; i < l; i++) {\n if (_isArray(child = value[i])) {\n child = new TimelineLite({\n tweens: child\n });\n }\n\n self.add(child, curTime);\n\n if (typeof child !== \"string\" && typeof child !== \"function\") {\n if (align === \"sequence\") {\n curTime = child._startTime + child.totalDuration() / child._timeScale;\n } else if (align === \"start\") {\n child._startTime -= child.delay();\n }\n }\n\n curTime += stagger;\n }\n\n return self._uncache(true);\n } else if (typeof value === \"string\") {\n return self.addLabel(value, position);\n } else if (typeof value === \"function\") {\n value = TweenLite.delayedCall(0, value);\n } else {\n throw \"Cannot add \" + value + \" into the timeline; it is not a tween, timeline, function, or string.\";\n }\n }\n\n SimpleTimeline.prototype.add.call(self, value, position);\n\n if (value._time || !value._duration && value._initted) {\n //in case, for example, the _startTime is moved on a tween that has already rendered. Imagine it's at its end state, then the startTime is moved WAY later (after the end of this timeline), it should render at its beginning.\n curTime = (self.rawTime() - value._startTime) * value._timeScale;\n\n if (!value._duration || Math.abs(Math.max(0, Math.min(value.totalDuration(), curTime))) - value._totalTime > 0.00001) {\n value.render(curTime, false, false);\n }\n } //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.\n\n\n if (self._gc || self._time === self._duration) if (!self._paused) if (self._duration < self.duration()) {\n //in case any of the ancestors had completed but should now be enabled...\n tl = self;\n beforeRawTime = tl.rawTime() > value._startTime; //if the tween is placed on the timeline so that it starts BEFORE the current rawTime, we should align the playhead (move the timeline). This is because sometimes users will create a timeline, let it finish, and much later append a tween and expect it to run instead of jumping to its end state. While technically one could argue that it should jump to its end state, that's not what users intuitively expect.\n\n while (tl._timeline) {\n if (beforeRawTime && tl._timeline.smoothChildTiming) {\n tl.totalTime(tl._totalTime, true); //moves the timeline (shifts its startTime) if necessary, and also enables it.\n } else if (tl._gc) {\n tl._enabled(true, false);\n }\n\n tl = tl._timeline;\n }\n }\n return self;\n };\n\n p.remove = function (value) {\n if (value instanceof Animation) {\n this._remove(value, false);\n\n var tl = value._timeline = value.vars.useFrames ? Animation._rootFramesTimeline : Animation._rootTimeline; //now that it's removed, default it to the root timeline so that if it gets played again, it doesn't jump back into this timeline.\n\n value._startTime = (value._paused ? value._pauseTime : tl._time) - (!value._reversed ? value._totalTime : value.totalDuration() - value._totalTime) / value._timeScale; //ensure that if it gets played again, the timing is correct.\n\n return this;\n } else if (value instanceof Array || value && value.push && _isArray(value)) {\n var i = value.length;\n\n while (--i > -1) {\n this.remove(value[i]);\n }\n\n return this;\n } else if (typeof value === \"string\") {\n return this.removeLabel(value);\n }\n\n return this.kill(null, value);\n };\n\n p._remove = function (tween, skipDisable) {\n SimpleTimeline.prototype._remove.call(this, tween, skipDisable);\n\n var last = this._last;\n\n if (!last) {\n this._time = this._totalTime = this._duration = this._totalDuration = 0;\n } else if (this._time > this.duration()) {\n this._time = this._duration;\n this._totalTime = this._totalDuration;\n }\n\n return this;\n };\n\n p.append = function (value, offsetOrLabel) {\n return this.add(value, this._parseTimeOrLabel(null, offsetOrLabel, true, value));\n };\n\n p.insert = p.insertMultiple = function (value, position, align, stagger) {\n return this.add(value, position || 0, align, stagger);\n };\n\n p.appendMultiple = function (tweens, offsetOrLabel, align, stagger) {\n return this.add(tweens, this._parseTimeOrLabel(null, offsetOrLabel, true, tweens), align, stagger);\n };\n\n p.addLabel = function (label, position) {\n this._labels[label] = this._parseTimeOrLabel(position);\n return this;\n };\n\n p.addPause = function (position, callback, params, scope) {\n var t = TweenLite.delayedCall(0, _pauseCallback, params, scope || this);\n t.vars.onComplete = t.vars.onReverseComplete = callback;\n t.data = \"isPause\";\n this._hasPause = true;\n return this.add(t, position);\n };\n\n p.removeLabel = function (label) {\n delete this._labels[label];\n return this;\n };\n\n p.getLabelTime = function (label) {\n return this._labels[label] != null ? this._labels[label] : -1;\n };\n\n p._parseTimeOrLabel = function (timeOrLabel, offsetOrLabel, appendIfAbsent, ignore) {\n var clippedDuration, i; //if we're about to add a tween/timeline (or an array of them) that's already a child of this timeline, we should remove it first so that it doesn't contaminate the duration().\n\n if (ignore instanceof Animation && ignore.timeline === this) {\n this.remove(ignore);\n } else if (ignore && (ignore instanceof Array || ignore.push && _isArray(ignore))) {\n i = ignore.length;\n\n while (--i > -1) {\n if (ignore[i] instanceof Animation && ignore[i].timeline === this) {\n this.remove(ignore[i]);\n }\n }\n }\n\n clippedDuration = typeof timeOrLabel === \"number\" && !offsetOrLabel ? 0 : this.duration() > 99999999999 ? this.recent().endTime(false) : this._duration; //in case there's a child that infinitely repeats, users almost never intend for the insertion point of a new child to be based on a SUPER long value like that so we clip it and assume the most recently-added child's endTime should be used instead.\n\n if (typeof offsetOrLabel === \"string\") {\n return this._parseTimeOrLabel(offsetOrLabel, appendIfAbsent && typeof timeOrLabel === \"number\" && this._labels[offsetOrLabel] == null ? timeOrLabel - clippedDuration : 0, appendIfAbsent);\n }\n\n offsetOrLabel = offsetOrLabel || 0;\n\n if (typeof timeOrLabel === \"string\" && (isNaN(timeOrLabel) || this._labels[timeOrLabel] != null)) {\n //if the string is a number like \"1\", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).\n i = timeOrLabel.indexOf(\"=\");\n\n if (i === -1) {\n if (this._labels[timeOrLabel] == null) {\n return appendIfAbsent ? this._labels[timeOrLabel] = clippedDuration + offsetOrLabel : offsetOrLabel;\n }\n\n return this._labels[timeOrLabel] + offsetOrLabel;\n }\n\n offsetOrLabel = parseInt(timeOrLabel.charAt(i - 1) + \"1\", 10) * Number(timeOrLabel.substr(i + 1));\n timeOrLabel = i > 1 ? this._parseTimeOrLabel(timeOrLabel.substr(0, i - 1), 0, appendIfAbsent) : clippedDuration;\n } else if (timeOrLabel == null) {\n timeOrLabel = clippedDuration;\n }\n\n return Number(timeOrLabel) + offsetOrLabel;\n };\n\n p.seek = function (position, suppressEvents) {\n return this.totalTime(typeof position === \"number\" ? position : this._parseTimeOrLabel(position), suppressEvents !== false);\n };\n\n p.stop = function () {\n return this.paused(true);\n };\n\n p.gotoAndPlay = function (position, suppressEvents) {\n return this.play(position, suppressEvents);\n };\n\n p.gotoAndStop = function (position, suppressEvents) {\n return this.pause(position, suppressEvents);\n };\n\n p.render = function (time, suppressEvents, force) {\n if (this._gc) {\n this._enabled(true, false);\n }\n\n var self = this,\n prevTime = self._time,\n totalDur = !self._dirty ? self._totalDuration : self.totalDuration(),\n prevStart = self._startTime,\n prevTimeScale = self._timeScale,\n prevPaused = self._paused,\n tween,\n isComplete,\n next,\n callback,\n internalForce,\n pauseTween,\n curTime,\n pauseTime;\n\n if (prevTime !== self._time) {\n //if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).\n time += self._time - prevTime;\n }\n\n if (self._hasPause && !self._forcingPlayhead && !suppressEvents) {\n if (time > prevTime) {\n tween = self._first;\n\n while (tween && tween._startTime <= time && !pauseTween) {\n if (!tween._duration) if (tween.data === \"isPause\" && !tween.ratio && !(tween._startTime === 0 && self._rawPrevTime === 0)) {\n pauseTween = tween;\n }\n tween = tween._next;\n }\n } else {\n tween = self._last;\n\n while (tween && tween._startTime >= time && !pauseTween) {\n if (!tween._duration) if (tween.data === \"isPause\" && tween._rawPrevTime > 0) {\n pauseTween = tween;\n }\n tween = tween._prev;\n }\n }\n\n if (pauseTween) {\n self._time = self._totalTime = time = pauseTween._startTime;\n pauseTime = self._startTime + (self._reversed ? self._duration - time : time) / self._timeScale;\n }\n }\n\n if (time >= totalDur - _tinyNum && time >= 0) {\n //to work around occasional floating point math artifacts.\n self._totalTime = self._time = totalDur;\n if (!self._reversed) if (!self._hasPausedChild()) {\n isComplete = true;\n callback = \"onComplete\";\n internalForce = !!self._timeline.autoRemoveChildren; //otherwise, if the animation is unpaused/activated after it's already finished, it doesn't get removed from the parent timeline.\n\n if (self._duration === 0) if (time <= 0 && time >= -_tinyNum || self._rawPrevTime < 0 || self._rawPrevTime === _tinyNum) if (self._rawPrevTime !== time && self._first) {\n internalForce = true;\n\n if (self._rawPrevTime > _tinyNum) {\n callback = \"onReverseComplete\";\n }\n }\n }\n self._rawPrevTime = self._duration || !suppressEvents || time || self._rawPrevTime === time ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.\n\n time = totalDur + 0.0001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when _time - tween._startTime is performed, floating point errors would return a value that was SLIGHTLY off). Try (999999999999.7 - 999999999999) * 1 = 0.699951171875 instead of 0.7.\n } else if (time < _tinyNum) {\n //to work around occasional floating point math artifacts, round super small values to 0.\n self._totalTime = self._time = 0;\n\n if (time > -_tinyNum) {\n time = 0;\n }\n\n if (prevTime !== 0 || self._duration === 0 && self._rawPrevTime !== _tinyNum && (self._rawPrevTime > 0 || time < 0 && self._rawPrevTime >= 0)) {\n callback = \"onReverseComplete\";\n isComplete = self._reversed;\n }\n\n if (time < 0) {\n self._active = false;\n\n if (self._timeline.autoRemoveChildren && self._reversed) {\n //ensures proper GC if a timeline is resumed after it's finished reversing.\n internalForce = isComplete = true;\n callback = \"onReverseComplete\";\n } else if (self._rawPrevTime >= 0 && self._first) {\n //when going back beyond the start, force a render so that zero-duration tweens that sit at the very beginning render their start values properly. Otherwise, if the parent timeline's playhead lands exactly at this timeline's startTime, and then moves backwards, the zero-duration tweens at the beginning would still be at their end state.\n internalForce = true;\n }\n\n self._rawPrevTime = time;\n } else {\n self._rawPrevTime = self._duration || !suppressEvents || time || self._rawPrevTime === time ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.\n\n if (time === 0 && isComplete) {\n //if there's a zero-duration tween at the very beginning of a timeline and the playhead lands EXACTLY at time 0, that tween will correctly render its end values, but we need to keep the timeline alive for one more render so that the beginning values render properly as the parent's playhead keeps moving beyond the begining. Imagine obj.x starts at 0 and then we do tl.set(obj, {x:100}).to(obj, 1, {x:200}) and then later we tl.reverse()...the goal is to have obj.x revert to 0. If the playhead happens to land on exactly 0, without this chunk of code, it'd complete the timeline and remove it from the rendering queue (not good).\n tween = self._first;\n\n while (tween && tween._startTime === 0) {\n if (!tween._duration) {\n isComplete = false;\n }\n\n tween = tween._next;\n }\n }\n\n time = 0; //to avoid occasional floating point rounding errors (could cause problems especially with zero-duration tweens at the very beginning of the timeline)\n\n if (!self._initted) {\n internalForce = true;\n }\n }\n } else {\n self._totalTime = self._time = self._rawPrevTime = time;\n }\n\n if ((self._time === prevTime || !self._first) && !force && !internalForce && !pauseTween) {\n return;\n } else if (!self._initted) {\n self._initted = true;\n }\n\n if (!self._active) if (!self._paused && self._time !== prevTime && time > 0) {\n self._active = true; //so that if the user renders the timeline (as opposed to the parent timeline rendering it), it is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the timeline already finished but the user manually re-renders it as halfway done, for example.\n }\n if (prevTime === 0) if (self.vars.onStart) if (self._time !== 0 || !self._duration) if (!suppressEvents) {\n self._callback(\"onStart\");\n }\n curTime = self._time;\n\n if (curTime >= prevTime) {\n tween = self._first;\n\n while (tween) {\n next = tween._next; //record it here because the value could change after rendering...\n\n if (curTime !== self._time || self._paused && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n break;\n } else if (tween._active || tween._startTime <= curTime && !tween._paused && !tween._gc) {\n if (pauseTween === tween) {\n self.pause();\n self._pauseTime = pauseTime; //so that when we resume(), it's starting from exactly the right spot (the pause() method uses the rawTime for the parent, but that may be a bit too far ahead)\n }\n\n if (!tween._reversed) {\n tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force);\n } else {\n tween.render((!tween._dirty ? tween._totalDuration : tween.totalDuration()) - (time - tween._startTime) * tween._timeScale, suppressEvents, force);\n }\n }\n\n tween = next;\n }\n } else {\n tween = self._last;\n\n while (tween) {\n next = tween._prev; //record it here because the value could change after rendering...\n\n if (curTime !== self._time || self._paused && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n break;\n } else if (tween._active || tween._startTime <= prevTime && !tween._paused && !tween._gc) {\n if (pauseTween === tween) {\n pauseTween = tween._prev; //the linked list is organized by _startTime, thus it's possible that a tween could start BEFORE the pause and end after it, in which case it would be positioned before the pause tween in the linked list, but we should render it before we pause() the timeline and cease rendering. This is only a concern when going in reverse.\n\n while (pauseTween && pauseTween.endTime() > self._time) {\n pauseTween.render(pauseTween._reversed ? pauseTween.totalDuration() - (time - pauseTween._startTime) * pauseTween._timeScale : (time - pauseTween._startTime) * pauseTween._timeScale, suppressEvents, force);\n pauseTween = pauseTween._prev;\n }\n\n pauseTween = null;\n self.pause();\n self._pauseTime = pauseTime; //so that when we resume(), it's starting from exactly the right spot (the pause() method uses the rawTime for the parent, but that may be a bit too far ahead)\n }\n\n if (!tween._reversed) {\n tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force);\n } else {\n tween.render((!tween._dirty ? tween._totalDuration : tween.totalDuration()) - (time - tween._startTime) * tween._timeScale, suppressEvents, force);\n }\n }\n\n tween = next;\n }\n }\n\n if (self._onUpdate) if (!suppressEvents) {\n if (_lazyTweens.length) {\n //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.\n _lazyRender();\n }\n\n self._callback(\"onUpdate\");\n }\n if (callback) if (!self._gc) if (prevStart === self._startTime || prevTimeScale !== self._timeScale) if (self._time === 0 || totalDur >= self.totalDuration()) {\n //if one of the tweens that was rendered altered this timeline's startTime (like if an onComplete reversed the timeline), it probably isn't complete. If it is, don't worry, because whatever call altered the startTime would complete if it was necessary at the new time. The only exception is the timeScale property. Also check _gc because there's a chance that kill() could be called in an onUpdate\n if (isComplete) {\n if (_lazyTweens.length) {\n //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onComplete on a timeline that reports/checks tweened values.\n _lazyRender();\n }\n\n if (self._timeline.autoRemoveChildren) {\n self._enabled(false, false);\n }\n\n self._active = false;\n }\n\n if (!suppressEvents && self.vars[callback]) {\n self._callback(callback);\n }\n }\n };\n\n p._hasPausedChild = function () {\n var tween = this._first;\n\n while (tween) {\n if (tween._paused || tween instanceof TimelineLite && tween._hasPausedChild()) {\n return true;\n }\n\n tween = tween._next;\n }\n\n return false;\n };\n\n p.getChildren = function (nested, tweens, timelines, ignoreBeforeTime) {\n ignoreBeforeTime = ignoreBeforeTime || -9999999999;\n var a = [],\n tween = this._first,\n cnt = 0;\n\n while (tween) {\n if (tween._startTime < ignoreBeforeTime) {//do nothing\n } else if (tween instanceof TweenLite) {\n if (tweens !== false) {\n a[cnt++] = tween;\n }\n } else {\n if (timelines !== false) {\n a[cnt++] = tween;\n }\n\n if (nested !== false) {\n a = a.concat(tween.getChildren(true, tweens, timelines));\n cnt = a.length;\n }\n }\n\n tween = tween._next;\n }\n\n return a;\n };\n\n p.getTweensOf = function (target, nested) {\n var disabled = this._gc,\n a = [],\n cnt = 0,\n tweens,\n i;\n\n if (disabled) {\n this._enabled(true, true); //getTweensOf() filters out disabled tweens, and we have to mark them as _gc = true when the timeline completes in order to allow clean garbage collection, so temporarily re-enable the timeline here.\n\n }\n\n tweens = TweenLite.getTweensOf(target);\n i = tweens.length;\n\n while (--i > -1) {\n if (tweens[i].timeline === this || nested && this._contains(tweens[i])) {\n a[cnt++] = tweens[i];\n }\n }\n\n if (disabled) {\n this._enabled(false, true);\n }\n\n return a;\n };\n\n p.recent = function () {\n return this._recent;\n };\n\n p._contains = function (tween) {\n var tl = tween.timeline;\n\n while (tl) {\n if (tl === this) {\n return true;\n }\n\n tl = tl.timeline;\n }\n\n return false;\n };\n\n p.shiftChildren = function (amount, adjustLabels, ignoreBeforeTime) {\n ignoreBeforeTime = ignoreBeforeTime || 0;\n var tween = this._first,\n labels = this._labels,\n p;\n\n while (tween) {\n if (tween._startTime >= ignoreBeforeTime) {\n tween._startTime += amount;\n }\n\n tween = tween._next;\n }\n\n if (adjustLabels) {\n for (p in labels) {\n if (labels[p] >= ignoreBeforeTime) {\n labels[p] += amount;\n }\n }\n }\n\n return this._uncache(true);\n };\n\n p._kill = function (vars, target) {\n if (!vars && !target) {\n return this._enabled(false, false);\n }\n\n var tweens = !target ? this.getChildren(true, true, false) : this.getTweensOf(target),\n i = tweens.length,\n changed = false;\n\n while (--i > -1) {\n if (tweens[i]._kill(vars, target)) {\n changed = true;\n }\n }\n\n return changed;\n };\n\n p.clear = function (labels) {\n var tweens = this.getChildren(false, true, true),\n i = tweens.length;\n this._time = this._totalTime = 0;\n\n while (--i > -1) {\n tweens[i]._enabled(false, false);\n }\n\n if (labels !== false) {\n this._labels = {};\n }\n\n return this._uncache(true);\n };\n\n p.invalidate = function () {\n var tween = this._first;\n\n while (tween) {\n tween.invalidate();\n tween = tween._next;\n }\n\n return Animation.prototype.invalidate.call(this);\n ;\n };\n\n p._enabled = function (enabled, ignoreTimeline) {\n if (enabled === this._gc) {\n var tween = this._first;\n\n while (tween) {\n tween._enabled(enabled, true);\n\n tween = tween._next;\n }\n }\n\n return SimpleTimeline.prototype._enabled.call(this, enabled, ignoreTimeline);\n };\n\n p.totalTime = function (time, suppressEvents, uncapped) {\n this._forcingPlayhead = true;\n var val = Animation.prototype.totalTime.apply(this, arguments);\n this._forcingPlayhead = false;\n return val;\n };\n\n p.duration = function (value) {\n if (!arguments.length) {\n if (this._dirty) {\n this.totalDuration(); //just triggers recalculation\n }\n\n return this._duration;\n }\n\n if (this.duration() !== 0 && value !== 0) {\n this.timeScale(this._duration / value);\n }\n\n return this;\n };\n\n p.totalDuration = function (value) {\n if (!arguments.length) {\n if (this._dirty) {\n var max = 0,\n self = this,\n tween = self._last,\n prevStart = 999999999999,\n prev,\n end;\n\n while (tween) {\n prev = tween._prev; //record it here in case the tween changes position in the sequence...\n\n if (tween._dirty) {\n tween.totalDuration(); //could change the tween._startTime, so make sure the tween's cache is clean before analyzing it.\n }\n\n if (tween._startTime > prevStart && self._sortChildren && !tween._paused && !self._calculatingDuration) {\n //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence\n self._calculatingDuration = 1; //prevent endless recursive calls - there are methods that get triggered that check duration/totalDuration when we add(), like _parseTimeOrLabel().\n\n self.add(tween, tween._startTime - tween._delay);\n self._calculatingDuration = 0;\n } else {\n prevStart = tween._startTime;\n }\n\n if (tween._startTime < 0 && !tween._paused) {\n //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.\n max -= tween._startTime;\n\n if (self._timeline.smoothChildTiming) {\n self._startTime += tween._startTime / self._timeScale;\n self._time -= tween._startTime;\n self._totalTime -= tween._startTime;\n self._rawPrevTime -= tween._startTime;\n }\n\n self.shiftChildren(-tween._startTime, false, -9999999999);\n prevStart = 0;\n }\n\n end = tween._startTime + tween._totalDuration / tween._timeScale;\n\n if (end > max) {\n max = end;\n }\n\n tween = prev;\n }\n\n self._duration = self._totalDuration = max;\n self._dirty = false;\n }\n\n return this._totalDuration;\n }\n\n return value && this.totalDuration() ? this.timeScale(this._totalDuration / value) : this;\n };\n\n p.paused = function (value) {\n if (value === false && this._paused) {\n //if there's a pause directly at the spot from where we're unpausing, skip it.\n var tween = this._first;\n\n while (tween) {\n if (tween._startTime === this._time && tween.data === \"isPause\") {\n tween._rawPrevTime = 0; //remember, _rawPrevTime is how zero-duration tweens/callbacks sense directionality and determine whether or not to fire. If _rawPrevTime is the same as _startTime on the next render, it won't fire.\n }\n\n tween = tween._next;\n }\n }\n\n return Animation.prototype.paused.apply(this, arguments);\n };\n\n p.usesFrames = function () {\n var tl = this._timeline;\n\n while (tl._timeline) {\n tl = tl._timeline;\n }\n\n return tl === Animation._rootFramesTimeline;\n };\n\n p.rawTime = function (wrapRepeats) {\n return wrapRepeats && (this._paused || this._repeat && this.time() > 0 && this.totalProgress() < 1) ? this._totalTime % (this._duration + this._repeatDelay) : this._paused ? this._totalTime : (this._timeline.rawTime(wrapRepeats) - this._startTime) * this._timeScale;\n };\n\n return TimelineLite;\n}, true);\n\nexport var TimelineLite = globals.TimelineLite;\nexport { TimelineLite as default };","/*!\n * VERSION: 2.1.3\n * DATE: 2019-05-17\n * UPDATES AND DOCS AT: http://greensock.com\n *\n * @license Copyright (c) 2008-2019, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n * \n * @author: Jack Doyle, jack@greensock.com\n */\n\n/* eslint-disable */\nimport TweenLite, { _gsScope, globals, Ease, Animation } from \"./TweenLite.js\";\nimport TimelineLite from \"./TimelineLite.js\";\n\n_gsScope._gsDefine(\"TimelineMax\", [\"TimelineLite\", \"TweenLite\", \"easing.Ease\"], function () {\n var TimelineMax = function TimelineMax(vars) {\n TimelineLite.call(this, vars);\n this._repeat = this.vars.repeat || 0;\n this._repeatDelay = this.vars.repeatDelay || 0;\n this._cycle = 0;\n this._yoyo = !!this.vars.yoyo;\n this._dirty = true;\n },\n _tinyNum = 0.00000001,\n TweenLiteInternals = TweenLite._internals,\n _lazyTweens = TweenLiteInternals.lazyTweens,\n _lazyRender = TweenLiteInternals.lazyRender,\n _globals = _gsScope._gsDefine.globals,\n _easeNone = new Ease(null, null, 1, 0),\n p = TimelineMax.prototype = new TimelineLite();\n\n p.constructor = TimelineMax;\n p.kill()._gc = false;\n TimelineMax.version = \"2.1.3\";\n\n p.invalidate = function () {\n this._yoyo = !!this.vars.yoyo;\n this._repeat = this.vars.repeat || 0;\n this._repeatDelay = this.vars.repeatDelay || 0;\n\n this._uncache(true);\n\n return TimelineLite.prototype.invalidate.call(this);\n };\n\n p.addCallback = function (callback, position, params, scope) {\n return this.add(TweenLite.delayedCall(0, callback, params, scope), position);\n };\n\n p.removeCallback = function (callback, position) {\n if (callback) {\n if (position == null) {\n this._kill(null, callback);\n } else {\n var a = this.getTweensOf(callback, false),\n i = a.length,\n time = this._parseTimeOrLabel(position);\n\n while (--i > -1) {\n if (a[i]._startTime === time) {\n a[i]._enabled(false, false);\n }\n }\n }\n }\n\n return this;\n };\n\n p.removePause = function (position) {\n return this.removeCallback(TimelineLite._internals.pauseCallback, position);\n };\n\n p.tweenTo = function (position, vars) {\n vars = vars || {};\n var copy = {\n ease: _easeNone,\n useFrames: this.usesFrames(),\n immediateRender: false,\n lazy: false\n },\n Engine = vars.repeat && _globals.TweenMax || TweenLite,\n duration,\n p,\n t;\n\n for (p in vars) {\n copy[p] = vars[p];\n }\n\n copy.time = this._parseTimeOrLabel(position);\n duration = Math.abs(Number(copy.time) - this._time) / this._timeScale || 0.001;\n t = new Engine(this, duration, copy);\n\n copy.onStart = function () {\n t.target.paused(true);\n\n if (t.vars.time !== t.target.time() && duration === t.duration() && !t.isFromTo) {\n //don't make the duration zero - if it's supposed to be zero, don't worry because it's already initting the tween and will complete immediately, effectively making the duration zero anyway. If we make duration zero, the tween won't run at all.\n t.duration(Math.abs(t.vars.time - t.target.time()) / t.target._timeScale).render(t.time(), true, true); //render() right away to ensure that things look right, especially in the case of .tweenTo(0).\n }\n\n if (vars.onStart) {\n //in case the user had an onStart in the vars - we don't want to overwrite it.\n vars.onStart.apply(vars.onStartScope || vars.callbackScope || t, vars.onStartParams || []); //don't use t._callback(\"onStart\") or it'll point to the copy.onStart and we'll get a recursion error.\n }\n };\n\n return t;\n };\n\n p.tweenFromTo = function (fromPosition, toPosition, vars) {\n vars = vars || {};\n fromPosition = this._parseTimeOrLabel(fromPosition);\n vars.startAt = {\n onComplete: this.seek,\n onCompleteParams: [fromPosition],\n callbackScope: this\n };\n vars.immediateRender = vars.immediateRender !== false;\n var t = this.tweenTo(toPosition, vars);\n t.isFromTo = 1; //to ensure we don't mess with the duration in the onStart (we've got the start and end values here, so lock it in)\n\n return t.duration(Math.abs(t.vars.time - fromPosition) / this._timeScale || 0.001);\n };\n\n p.render = function (time, suppressEvents, force) {\n if (this._gc) {\n this._enabled(true, false);\n }\n\n var self = this,\n prevTime = self._time,\n totalDur = !self._dirty ? self._totalDuration : self.totalDuration(),\n dur = self._duration,\n prevTotalTime = self._totalTime,\n prevStart = self._startTime,\n prevTimeScale = self._timeScale,\n prevRawPrevTime = self._rawPrevTime,\n prevPaused = self._paused,\n prevCycle = self._cycle,\n tween,\n isComplete,\n next,\n callback,\n internalForce,\n cycleDuration,\n pauseTween,\n curTime,\n pauseTime;\n\n if (prevTime !== self._time) {\n //if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).\n time += self._time - prevTime;\n }\n\n if (time >= totalDur - _tinyNum && time >= 0) {\n //to work around occasional floating point math artifacts.\n if (!self._locked) {\n self._totalTime = totalDur;\n self._cycle = self._repeat;\n }\n\n if (!self._reversed) if (!self._hasPausedChild()) {\n isComplete = true;\n callback = \"onComplete\";\n internalForce = !!self._timeline.autoRemoveChildren; //otherwise, if the animation is unpaused/activated after it's already finished, it doesn't get removed from the parent timeline.\n\n if (self._duration === 0) if (time <= 0 && time >= -_tinyNum || prevRawPrevTime < 0 || prevRawPrevTime === _tinyNum) if (prevRawPrevTime !== time && self._first) {\n internalForce = true;\n\n if (prevRawPrevTime > _tinyNum) {\n callback = \"onReverseComplete\";\n }\n }\n }\n self._rawPrevTime = self._duration || !suppressEvents || time || self._rawPrevTime === time ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.\n\n if (self._yoyo && self._cycle & 1) {\n self._time = time = 0;\n } else {\n self._time = dur;\n time = dur + 0.0001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when _time - tween._startTime is performed, floating point errors would return a value that was SLIGHTLY off). Try (999999999999.7 - 999999999999) * 1 = 0.699951171875 instead of 0.7. We cannot do less then 0.0001 because the same issue can occur when the duration is extremely large like 999999999999 in which case adding 0.00000001, for example, causes it to act like nothing was added.\n }\n } else if (time < _tinyNum) {\n //to work around occasional floating point math artifacts, round super small values to 0.\n if (!self._locked) {\n self._totalTime = self._cycle = 0;\n }\n\n self._time = 0;\n\n if (time > -_tinyNum) {\n time = 0;\n }\n\n if (prevTime !== 0 || dur === 0 && prevRawPrevTime !== _tinyNum && (prevRawPrevTime > 0 || time < 0 && prevRawPrevTime >= 0) && !self._locked) {\n //edge case for checking time < 0 && prevRawPrevTime >= 0: a zero-duration fromTo() tween inside a zero-duration timeline (yeah, very rare)\n callback = \"onReverseComplete\";\n isComplete = self._reversed;\n }\n\n if (time < 0) {\n self._active = false;\n\n if (self._timeline.autoRemoveChildren && self._reversed) {\n internalForce = isComplete = true;\n callback = \"onReverseComplete\";\n } else if (prevRawPrevTime >= 0 && self._first) {\n //when going back beyond the start, force a render so that zero-duration tweens that sit at the very beginning render their start values properly. Otherwise, if the parent timeline's playhead lands exactly at this timeline's startTime, and then moves backwards, the zero-duration tweens at the beginning would still be at their end state.\n internalForce = true;\n }\n\n self._rawPrevTime = time;\n } else {\n self._rawPrevTime = dur || !suppressEvents || time || self._rawPrevTime === time ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient.\n\n if (time === 0 && isComplete) {\n //if there's a zero-duration tween at the very beginning of a timeline and the playhead lands EXACTLY at time 0, that tween will correctly render its end values, but we need to keep the timeline alive for one more render so that the beginning values render properly as the parent's playhead keeps moving beyond the begining. Imagine obj.x starts at 0 and then we do tl.set(obj, {x:100}).to(obj, 1, {x:200}) and then later we tl.reverse()...the goal is to have obj.x revert to 0. If the playhead happens to land on exactly 0, without this chunk of code, it'd complete the timeline and remove it from the rendering queue (not good).\n tween = self._first;\n\n while (tween && tween._startTime === 0) {\n if (!tween._duration) {\n isComplete = false;\n }\n\n tween = tween._next;\n }\n }\n\n time = 0; //to avoid occasional floating point rounding errors (could cause problems especially with zero-duration tweens at the very beginning of the timeline)\n\n if (!self._initted) {\n internalForce = true;\n }\n }\n } else {\n if (dur === 0 && prevRawPrevTime < 0) {\n //without this, zero-duration repeating timelines (like with a simple callback nested at the very beginning and a repeatDelay) wouldn't render the first time through.\n internalForce = true;\n }\n\n self._time = self._rawPrevTime = time;\n\n if (!self._locked) {\n self._totalTime = time;\n\n if (self._repeat !== 0) {\n cycleDuration = dur + self._repeatDelay;\n self._cycle = self._totalTime / cycleDuration >> 0; //originally _totalTime % cycleDuration but floating point errors caused problems, so I normalized it. (4 % 0.8 should be 0 but it gets reported as 0.79999999!)\n\n if (self._cycle) if (self._cycle === self._totalTime / cycleDuration && prevTotalTime <= time) {\n self._cycle--; //otherwise when rendered exactly at the end time, it will act as though it is repeating (at the beginning)\n }\n self._time = self._totalTime - self._cycle * cycleDuration;\n if (self._yoyo) if (self._cycle & 1) {\n self._time = dur - self._time;\n }\n\n if (self._time > dur) {\n self._time = dur;\n time = dur + 0.0001; //to avoid occasional floating point rounding error\n } else if (self._time < 0) {\n self._time = time = 0;\n } else {\n time = self._time;\n }\n }\n }\n }\n\n if (self._hasPause && !self._forcingPlayhead && !suppressEvents) {\n time = self._time;\n\n if (time > prevTime || self._repeat && prevCycle !== self._cycle) {\n tween = self._first;\n\n while (tween && tween._startTime <= time && !pauseTween) {\n if (!tween._duration) if (tween.data === \"isPause\" && !tween.ratio && !(tween._startTime === 0 && self._rawPrevTime === 0)) {\n pauseTween = tween;\n }\n tween = tween._next;\n }\n } else {\n tween = self._last;\n\n while (tween && tween._startTime >= time && !pauseTween) {\n if (!tween._duration) if (tween.data === \"isPause\" && tween._rawPrevTime > 0) {\n pauseTween = tween;\n }\n tween = tween._prev;\n }\n }\n\n if (pauseTween) {\n pauseTime = self._startTime + (self._reversed ? self._duration - pauseTween._startTime : pauseTween._startTime) / self._timeScale;\n\n if (pauseTween._startTime < dur) {\n self._time = self._rawPrevTime = time = pauseTween._startTime;\n self._totalTime = time + self._cycle * (self._totalDuration + self._repeatDelay);\n }\n }\n }\n\n if (self._cycle !== prevCycle) if (!self._locked) {\n /*\n make sure children at the end/beginning of the timeline are rendered properly. If, for example,\n a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which\n would get translated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there\n could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So\n we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must\n ensure that zero-duration tweens at the very beginning or end of the TimelineMax work.\n */\n var backwards = self._yoyo && (prevCycle & 1) !== 0,\n wrap = backwards === (self._yoyo && (self._cycle & 1) !== 0),\n recTotalTime = self._totalTime,\n recCycle = self._cycle,\n recRawPrevTime = self._rawPrevTime,\n recTime = self._time;\n self._totalTime = prevCycle * dur;\n\n if (self._cycle < prevCycle) {\n backwards = !backwards;\n } else {\n self._totalTime += dur;\n }\n\n self._time = prevTime; //temporarily revert _time so that render() renders the children in the correct order. Without this, tweens won't rewind correctly. We could arhictect things in a \"cleaner\" way by splitting out the rendering queue into a separate method but for performance reasons, we kept it all inside this method.\n\n self._rawPrevTime = dur === 0 ? prevRawPrevTime - 0.0001 : prevRawPrevTime;\n self._cycle = prevCycle;\n self._locked = true; //prevents changes to totalTime and skips repeat/yoyo behavior when we recursively call render()\n\n prevTime = backwards ? 0 : dur;\n self.render(prevTime, suppressEvents, dur === 0);\n if (!suppressEvents) if (!self._gc) {\n if (self.vars.onRepeat) {\n self._cycle = recCycle; //in case the onRepeat alters the playhead or invalidates(), we shouldn't stay locked or use the previous cycle.\n\n self._locked = false;\n\n self._callback(\"onRepeat\");\n }\n }\n\n if (prevTime !== self._time) {\n //in case there's a callback like onComplete in a nested tween/timeline that changes the playhead position, like via seek(), we should just abort.\n return;\n }\n\n if (wrap) {\n self._cycle = prevCycle; //if there's an onRepeat, we reverted this above, so make sure it's set properly again. We also unlocked in that scenario, so reset that too.\n\n self._locked = true;\n prevTime = backwards ? dur + 0.0001 : -0.0001;\n self.render(prevTime, true, false);\n }\n\n self._locked = false;\n\n if (self._paused && !prevPaused) {\n //if the render() triggered callback that paused this timeline, we should abort (very rare, but possible)\n return;\n }\n\n self._time = recTime;\n self._totalTime = recTotalTime;\n self._cycle = recCycle;\n self._rawPrevTime = recRawPrevTime;\n }\n\n if ((self._time === prevTime || !self._first) && !force && !internalForce && !pauseTween) {\n if (prevTotalTime !== self._totalTime) if (self._onUpdate) if (!suppressEvents) {\n //so that onUpdate fires even during the repeatDelay - as long as the totalTime changed, we should trigger onUpdate.\n self._callback(\"onUpdate\");\n }\n return;\n } else if (!self._initted) {\n self._initted = true;\n }\n\n if (!self._active) if (!self._paused && self._totalTime !== prevTotalTime && time > 0) {\n self._active = true; //so that if the user renders the timeline (as opposed to the parent timeline rendering it), it is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the timeline already finished but the user manually re-renders it as halfway done, for example.\n }\n if (prevTotalTime === 0) if (self.vars.onStart) if (self._totalTime !== 0 || !self._totalDuration) if (!suppressEvents) {\n self._callback(\"onStart\");\n }\n curTime = self._time;\n\n if (curTime >= prevTime) {\n tween = self._first;\n\n while (tween) {\n next = tween._next; //record it here because the value could change after rendering...\n\n if (curTime !== self._time || self._paused && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n break;\n } else if (tween._active || tween._startTime <= self._time && !tween._paused && !tween._gc) {\n if (pauseTween === tween) {\n self.pause();\n self._pauseTime = pauseTime; //so that when we resume(), it's starting from exactly the right spot (the pause() method uses the rawTime for the parent, but that may be a bit too far ahead)\n }\n\n if (!tween._reversed) {\n tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force);\n } else {\n tween.render((!tween._dirty ? tween._totalDuration : tween.totalDuration()) - (time - tween._startTime) * tween._timeScale, suppressEvents, force);\n }\n }\n\n tween = next;\n }\n } else {\n tween = self._last;\n\n while (tween) {\n next = tween._prev; //record it here because the value could change after rendering...\n\n if (curTime !== self._time || self._paused && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n break;\n } else if (tween._active || tween._startTime <= prevTime && !tween._paused && !tween._gc) {\n if (pauseTween === tween) {\n pauseTween = tween._prev; //the linked list is organized by _startTime, thus it's possible that a tween could start BEFORE the pause and end after it, in which case it would be positioned before the pause tween in the linked list, but we should render it before we pause() the timeline and cease rendering. This is only a concern when going in reverse.\n\n while (pauseTween && pauseTween.endTime() > self._time) {\n pauseTween.render(pauseTween._reversed ? pauseTween.totalDuration() - (time - pauseTween._startTime) * pauseTween._timeScale : (time - pauseTween._startTime) * pauseTween._timeScale, suppressEvents, force);\n pauseTween = pauseTween._prev;\n }\n\n pauseTween = null;\n self.pause();\n self._pauseTime = pauseTime; //so that when we resume(), it's starting from exactly the right spot (the pause() method uses the rawTime for the parent, but that may be a bit too far ahead)\n }\n\n if (!tween._reversed) {\n tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force);\n } else {\n tween.render((!tween._dirty ? tween._totalDuration : tween.totalDuration()) - (time - tween._startTime) * tween._timeScale, suppressEvents, force);\n }\n }\n\n tween = next;\n }\n }\n\n if (self._onUpdate) if (!suppressEvents) {\n if (_lazyTweens.length) {\n //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.\n _lazyRender();\n }\n\n self._callback(\"onUpdate\");\n }\n if (callback) if (!self._locked) if (!self._gc) if (prevStart === self._startTime || prevTimeScale !== self._timeScale) if (self._time === 0 || totalDur >= self.totalDuration()) {\n //if one of the tweens that was rendered altered this timeline's startTime (like if an onComplete reversed the timeline), it probably isn't complete. If it is, don't worry, because whatever call altered the startTime would complete if it was necessary at the new time. The only exception is the timeScale property. Also check _gc because there's a chance that kill() could be called in an onUpdate\n if (isComplete) {\n if (_lazyTweens.length) {\n //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onComplete on a timeline that reports/checks tweened values.\n _lazyRender();\n }\n\n if (self._timeline.autoRemoveChildren) {\n self._enabled(false, false);\n }\n\n self._active = false;\n }\n\n if (!suppressEvents && self.vars[callback]) {\n self._callback(callback);\n }\n }\n };\n\n p.getActive = function (nested, tweens, timelines) {\n var a = [],\n all = this.getChildren(nested || nested == null, tweens || nested == null, !!timelines),\n cnt = 0,\n l = all.length,\n i,\n tween;\n\n for (i = 0; i < l; i++) {\n tween = all[i];\n\n if (tween.isActive()) {\n a[cnt++] = tween;\n }\n }\n\n return a;\n };\n\n p.getLabelAfter = function (time) {\n if (!time) if (time !== 0) {\n //faster than isNan()\n time = this._time;\n }\n var labels = this.getLabelsArray(),\n l = labels.length,\n i;\n\n for (i = 0; i < l; i++) {\n if (labels[i].time > time) {\n return labels[i].name;\n }\n }\n\n return null;\n };\n\n p.getLabelBefore = function (time) {\n if (time == null) {\n time = this._time;\n }\n\n var labels = this.getLabelsArray(),\n i = labels.length;\n\n while (--i > -1) {\n if (labels[i].time < time) {\n return labels[i].name;\n }\n }\n\n return null;\n };\n\n p.getLabelsArray = function () {\n var a = [],\n cnt = 0,\n p;\n\n for (p in this._labels) {\n a[cnt++] = {\n time: this._labels[p],\n name: p\n };\n }\n\n a.sort(function (a, b) {\n return a.time - b.time;\n });\n return a;\n };\n\n p.invalidate = function () {\n this._locked = false; //unlock and set cycle in case invalidate() is called from inside an onRepeat\n\n return TimelineLite.prototype.invalidate.call(this);\n }; //---- GETTERS / SETTERS -------------------------------------------------------------------------------------------------------\n\n\n p.progress = function (value, suppressEvents) {\n return !arguments.length ? this._time / this.duration() || 0 : this.totalTime(this.duration() * (this._yoyo && (this._cycle & 1) !== 0 ? 1 - value : value) + this._cycle * (this._duration + this._repeatDelay), suppressEvents);\n };\n\n p.totalProgress = function (value, suppressEvents) {\n return !arguments.length ? this._totalTime / this.totalDuration() || 0 : this.totalTime(this.totalDuration() * value, suppressEvents);\n };\n\n p.totalDuration = function (value) {\n if (!arguments.length) {\n if (this._dirty) {\n TimelineLite.prototype.totalDuration.call(this); //just forces refresh\n //Instead of Infinity, we use 999999999999 so that we can accommodate reverses.\n\n this._totalDuration = this._repeat === -1 ? 999999999999 : this._duration * (this._repeat + 1) + this._repeatDelay * this._repeat;\n }\n\n return this._totalDuration;\n }\n\n return this._repeat === -1 || !value ? this : this.timeScale(this.totalDuration() / value);\n };\n\n p.time = function (value, suppressEvents) {\n if (!arguments.length) {\n return this._time;\n }\n\n if (this._dirty) {\n this.totalDuration();\n }\n\n var duration = this._duration,\n cycle = this._cycle,\n cycleDur = cycle * (duration + this._repeatDelay);\n\n if (value > duration) {\n value = duration;\n }\n\n return this.totalTime(this._yoyo && cycle & 1 ? duration - value + cycleDur : this._repeat ? value + cycleDur : value, suppressEvents);\n };\n\n p.repeat = function (value) {\n if (!arguments.length) {\n return this._repeat;\n }\n\n this._repeat = value;\n return this._uncache(true);\n };\n\n p.repeatDelay = function (value) {\n if (!arguments.length) {\n return this._repeatDelay;\n }\n\n this._repeatDelay = value;\n return this._uncache(true);\n };\n\n p.yoyo = function (value) {\n if (!arguments.length) {\n return this._yoyo;\n }\n\n this._yoyo = value;\n return this;\n };\n\n p.currentLabel = function (value) {\n if (!arguments.length) {\n return this.getLabelBefore(this._time + _tinyNum);\n }\n\n return this.seek(value, true);\n };\n\n return TimelineMax;\n}, true);\n\nexport var TimelineMax = globals.TimelineMax;\nexport { TimelineLite, TimelineMax as default };","/*!\n * VERSION: 1.3.9\n * DATE: 2019-05-17\n * UPDATES AND DOCS AT: http://greensock.com\n *\n * @license Copyright (c) 2008-2019, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n * \n * @author: Jack Doyle, jack@greensock.com\n **/\n\n/* eslint-disable */\nimport { _gsScope } from \"./TweenLite.js\";\n\nvar _RAD2DEG = 180 / Math.PI,\n _r1 = [],\n _r2 = [],\n _r3 = [],\n _corProps = {},\n _globals = _gsScope._gsDefine.globals,\n Segment = function Segment(a, b, c, d) {\n if (c === d) {\n //if c and d match, the final autoRotate value could lock at -90 degrees, so differentiate them slightly.\n c = d - (d - b) / 1000000;\n }\n\n if (a === b) {\n //if a and b match, the starting autoRotate value could lock at -90 degrees, so differentiate them slightly.\n b = a + (c - a) / 1000000;\n }\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.da = d - a;\n this.ca = c - a;\n this.ba = b - a;\n},\n _correlate = \",x,y,z,left,top,right,bottom,marginTop,marginLeft,marginRight,marginBottom,paddingLeft,paddingTop,paddingRight,paddingBottom,backgroundPosition,backgroundPosition_y,\",\n cubicToQuadratic = function cubicToQuadratic(a, b, c, d) {\n var q1 = {\n a: a\n },\n q2 = {},\n q3 = {},\n q4 = {\n c: d\n },\n mab = (a + b) / 2,\n mbc = (b + c) / 2,\n mcd = (c + d) / 2,\n mabc = (mab + mbc) / 2,\n mbcd = (mbc + mcd) / 2,\n m8 = (mbcd - mabc) / 8;\n q1.b = mab + (a - mab) / 4;\n q2.b = mabc + m8;\n q1.c = q2.a = (q1.b + q2.b) / 2;\n q2.c = q3.a = (mabc + mbcd) / 2;\n q3.b = mbcd - m8;\n q4.b = mcd + (d - mcd) / 4;\n q3.c = q4.a = (q3.b + q4.b) / 2;\n return [q1, q2, q3, q4];\n},\n _calculateControlPoints = function _calculateControlPoints(a, curviness, quad, basic, correlate) {\n var l = a.length - 1,\n ii = 0,\n cp1 = a[0].a,\n i,\n p1,\n p2,\n p3,\n seg,\n m1,\n m2,\n mm,\n cp2,\n qb,\n r1,\n r2,\n tl;\n\n for (i = 0; i < l; i++) {\n seg = a[ii];\n p1 = seg.a;\n p2 = seg.d;\n p3 = a[ii + 1].d;\n\n if (correlate) {\n r1 = _r1[i];\n r2 = _r2[i];\n tl = (r2 + r1) * curviness * 0.25 / (basic ? 0.5 : _r3[i] || 0.5);\n m1 = p2 - (p2 - p1) * (basic ? curviness * 0.5 : r1 !== 0 ? tl / r1 : 0);\n m2 = p2 + (p3 - p2) * (basic ? curviness * 0.5 : r2 !== 0 ? tl / r2 : 0);\n mm = p2 - (m1 + ((m2 - m1) * (r1 * 3 / (r1 + r2) + 0.5) / 4 || 0));\n } else {\n m1 = p2 - (p2 - p1) * curviness * 0.5;\n m2 = p2 + (p3 - p2) * curviness * 0.5;\n mm = p2 - (m1 + m2) / 2;\n }\n\n m1 += mm;\n m2 += mm;\n seg.c = cp2 = m1;\n\n if (i !== 0) {\n seg.b = cp1;\n } else {\n seg.b = cp1 = seg.a + (seg.c - seg.a) * 0.6; //instead of placing b on a exactly, we move it inline with c so that if the user specifies an ease like Back.easeIn or Elastic.easeIn which goes BEYOND the beginning, it will do so smoothly.\n }\n\n seg.da = p2 - p1;\n seg.ca = cp2 - p1;\n seg.ba = cp1 - p1;\n\n if (quad) {\n qb = cubicToQuadratic(p1, cp1, cp2, p2);\n a.splice(ii, 1, qb[0], qb[1], qb[2], qb[3]);\n ii += 4;\n } else {\n ii++;\n }\n\n cp1 = m2;\n }\n\n seg = a[ii];\n seg.b = cp1;\n seg.c = cp1 + (seg.d - cp1) * 0.4; //instead of placing c on d exactly, we move it inline with b so that if the user specifies an ease like Back.easeOut or Elastic.easeOut which goes BEYOND the end, it will do so smoothly.\n\n seg.da = seg.d - seg.a;\n seg.ca = seg.c - seg.a;\n seg.ba = cp1 - seg.a;\n\n if (quad) {\n qb = cubicToQuadratic(seg.a, cp1, seg.c, seg.d);\n a.splice(ii, 1, qb[0], qb[1], qb[2], qb[3]);\n }\n},\n _parseAnchors = function _parseAnchors(values, p, correlate, prepend) {\n var a = [],\n l,\n i,\n p1,\n p2,\n p3,\n tmp;\n\n if (prepend) {\n values = [prepend].concat(values);\n i = values.length;\n\n while (--i > -1) {\n if (typeof (tmp = values[i][p]) === \"string\") if (tmp.charAt(1) === \"=\") {\n values[i][p] = prepend[p] + Number(tmp.charAt(0) + tmp.substr(2)); //accommodate relative values. Do it inline instead of breaking it out into a function for speed reasons\n }\n }\n }\n\n l = values.length - 2;\n\n if (l < 0) {\n a[0] = new Segment(values[0][p], 0, 0, values[0][p]);\n return a;\n }\n\n for (i = 0; i < l; i++) {\n p1 = values[i][p];\n p2 = values[i + 1][p];\n a[i] = new Segment(p1, 0, 0, p2);\n\n if (correlate) {\n p3 = values[i + 2][p];\n _r1[i] = (_r1[i] || 0) + (p2 - p1) * (p2 - p1);\n _r2[i] = (_r2[i] || 0) + (p3 - p2) * (p3 - p2);\n }\n }\n\n a[i] = new Segment(values[i][p], 0, 0, values[i + 1][p]);\n return a;\n},\n bezierThrough = function bezierThrough(values, curviness, quadratic, basic, correlate, prepend) {\n var obj = {},\n props = [],\n first = prepend || values[0],\n i,\n p,\n a,\n j,\n r,\n l,\n seamless,\n last;\n correlate = typeof correlate === \"string\" ? \",\" + correlate + \",\" : _correlate;\n\n if (curviness == null) {\n curviness = 1;\n }\n\n for (p in values[0]) {\n props.push(p);\n } //check to see if the last and first values are identical (well, within 0.05). If so, make seamless by appending the second element to the very end of the values array and the 2nd-to-last element to the very beginning (we'll remove those segments later)\n\n\n if (values.length > 1) {\n last = values[values.length - 1];\n seamless = true;\n i = props.length;\n\n while (--i > -1) {\n p = props[i];\n\n if (Math.abs(first[p] - last[p]) > 0.05) {\n //build in a tolerance of +/-0.05 to accommodate rounding errors.\n seamless = false;\n break;\n }\n }\n\n if (seamless) {\n values = values.concat(); //duplicate the array to avoid contaminating the original which the user may be reusing for other tweens\n\n if (prepend) {\n values.unshift(prepend);\n }\n\n values.push(values[1]);\n prepend = values[values.length - 3];\n }\n }\n\n _r1.length = _r2.length = _r3.length = 0;\n i = props.length;\n\n while (--i > -1) {\n p = props[i];\n _corProps[p] = correlate.indexOf(\",\" + p + \",\") !== -1;\n obj[p] = _parseAnchors(values, p, _corProps[p], prepend);\n }\n\n i = _r1.length;\n\n while (--i > -1) {\n _r1[i] = Math.sqrt(_r1[i]);\n _r2[i] = Math.sqrt(_r2[i]);\n }\n\n if (!basic) {\n i = props.length;\n\n while (--i > -1) {\n if (_corProps[p]) {\n a = obj[props[i]];\n l = a.length - 1;\n\n for (j = 0; j < l; j++) {\n r = a[j + 1].da / _r2[j] + a[j].da / _r1[j] || 0;\n _r3[j] = (_r3[j] || 0) + r * r;\n }\n }\n }\n\n i = _r3.length;\n\n while (--i > -1) {\n _r3[i] = Math.sqrt(_r3[i]);\n }\n }\n\n i = props.length;\n j = quadratic ? 4 : 1;\n\n while (--i > -1) {\n p = props[i];\n a = obj[p];\n\n _calculateControlPoints(a, curviness, quadratic, basic, _corProps[p]); //this method requires that _parseAnchors() and _setSegmentRatios() ran first so that _r1, _r2, and _r3 values are populated for all properties\n\n\n if (seamless) {\n a.splice(0, j);\n a.splice(a.length - j, j);\n }\n }\n\n return obj;\n},\n _parseBezierData = function _parseBezierData(values, type, prepend) {\n type = type || \"soft\";\n var obj = {},\n inc = type === \"cubic\" ? 3 : 2,\n soft = type === \"soft\",\n props = [],\n a,\n b,\n c,\n d,\n cur,\n i,\n j,\n l,\n p,\n cnt,\n tmp;\n\n if (soft && prepend) {\n values = [prepend].concat(values);\n }\n\n if (values == null || values.length < inc + 1) {\n throw \"invalid Bezier data\";\n }\n\n for (p in values[0]) {\n props.push(p);\n }\n\n i = props.length;\n\n while (--i > -1) {\n p = props[i];\n obj[p] = cur = [];\n cnt = 0;\n l = values.length;\n\n for (j = 0; j < l; j++) {\n a = prepend == null ? values[j][p] : typeof (tmp = values[j][p]) === \"string\" && tmp.charAt(1) === \"=\" ? prepend[p] + Number(tmp.charAt(0) + tmp.substr(2)) : Number(tmp);\n if (soft) if (j > 1) if (j < l - 1) {\n cur[cnt++] = (a + cur[cnt - 2]) / 2;\n }\n cur[cnt++] = a;\n }\n\n l = cnt - inc + 1;\n cnt = 0;\n\n for (j = 0; j < l; j += inc) {\n a = cur[j];\n b = cur[j + 1];\n c = cur[j + 2];\n d = inc === 2 ? 0 : cur[j + 3];\n cur[cnt++] = tmp = inc === 3 ? new Segment(a, b, c, d) : new Segment(a, (2 * b + a) / 3, (2 * b + c) / 3, c);\n }\n\n cur.length = cnt;\n }\n\n return obj;\n},\n _addCubicLengths = function _addCubicLengths(a, steps, resolution) {\n var inc = 1 / resolution,\n j = a.length,\n d,\n d1,\n s,\n da,\n ca,\n ba,\n p,\n i,\n inv,\n bez,\n index;\n\n while (--j > -1) {\n bez = a[j];\n s = bez.a;\n da = bez.d - s;\n ca = bez.c - s;\n ba = bez.b - s;\n d = d1 = 0;\n\n for (i = 1; i <= resolution; i++) {\n p = inc * i;\n inv = 1 - p;\n d = d1 - (d1 = (p * p * da + 3 * inv * (p * ca + inv * ba)) * p);\n index = j * resolution + i - 1;\n steps[index] = (steps[index] || 0) + d * d;\n }\n }\n},\n _parseLengthData = function _parseLengthData(obj, resolution) {\n resolution = resolution >> 0 || 6;\n var a = [],\n lengths = [],\n d = 0,\n total = 0,\n threshold = resolution - 1,\n segments = [],\n curLS = [],\n //current length segments array\n p,\n i,\n l,\n index;\n\n for (p in obj) {\n _addCubicLengths(obj[p], a, resolution);\n }\n\n l = a.length;\n\n for (i = 0; i < l; i++) {\n d += Math.sqrt(a[i]);\n index = i % resolution;\n curLS[index] = d;\n\n if (index === threshold) {\n total += d;\n index = i / resolution >> 0;\n segments[index] = curLS;\n lengths[index] = total;\n d = 0;\n curLS = [];\n }\n }\n\n return {\n length: total,\n lengths: lengths,\n segments: segments\n };\n},\n BezierPlugin = _gsScope._gsDefine.plugin({\n propName: \"bezier\",\n priority: -1,\n version: \"1.3.9\",\n API: 2,\n global: true,\n //gets called when the tween renders for the first time. This is where initial values should be recorded and any setup routines should run.\n init: function init(target, vars, tween) {\n this._target = target;\n\n if (vars instanceof Array) {\n vars = {\n values: vars\n };\n }\n\n this._func = {};\n this._mod = {};\n this._props = [];\n this._timeRes = vars.timeResolution == null ? 6 : parseInt(vars.timeResolution, 10);\n var values = vars.values || [],\n first = {},\n second = values[0],\n autoRotate = vars.autoRotate || tween.vars.orientToBezier,\n p,\n isFunc,\n i,\n j,\n prepend;\n this._autoRotate = autoRotate ? autoRotate instanceof Array ? autoRotate : [[\"x\", \"y\", \"rotation\", autoRotate === true ? 0 : Number(autoRotate) || 0]] : null;\n\n for (p in second) {\n this._props.push(p);\n }\n\n i = this._props.length;\n\n while (--i > -1) {\n p = this._props[i];\n\n this._overwriteProps.push(p);\n\n isFunc = this._func[p] = typeof target[p] === \"function\";\n first[p] = !isFunc ? parseFloat(target[p]) : target[p.indexOf(\"set\") || typeof target[\"get\" + p.substr(3)] !== \"function\" ? p : \"get\" + p.substr(3)]();\n if (!prepend) if (first[p] !== values[0][p]) {\n prepend = first;\n }\n }\n\n this._beziers = vars.type !== \"cubic\" && vars.type !== \"quadratic\" && vars.type !== \"soft\" ? bezierThrough(values, isNaN(vars.curviness) ? 1 : vars.curviness, false, vars.type === \"thruBasic\", vars.correlate, prepend) : _parseBezierData(values, vars.type, first);\n this._segCount = this._beziers[p].length;\n\n if (this._timeRes) {\n var ld = _parseLengthData(this._beziers, this._timeRes);\n\n this._length = ld.length;\n this._lengths = ld.lengths;\n this._segments = ld.segments;\n this._l1 = this._li = this._s1 = this._si = 0;\n this._l2 = this._lengths[0];\n this._curSeg = this._segments[0];\n this._s2 = this._curSeg[0];\n this._prec = 1 / this._curSeg.length;\n }\n\n if (autoRotate = this._autoRotate) {\n this._initialRotations = [];\n\n if (!(autoRotate[0] instanceof Array)) {\n this._autoRotate = autoRotate = [autoRotate];\n }\n\n i = autoRotate.length;\n\n while (--i > -1) {\n for (j = 0; j < 3; j++) {\n p = autoRotate[i][j];\n this._func[p] = typeof target[p] === \"function\" ? target[p.indexOf(\"set\") || typeof target[\"get\" + p.substr(3)] !== \"function\" ? p : \"get\" + p.substr(3)] : false;\n }\n\n p = autoRotate[i][2];\n this._initialRotations[i] = (this._func[p] ? this._func[p].call(this._target) : this._target[p]) || 0;\n\n this._overwriteProps.push(p);\n }\n }\n\n this._startRatio = tween.vars.runBackwards ? 1 : 0; //we determine the starting ratio when the tween inits which is always 0 unless the tween has runBackwards:true (indicating it's a from() tween) in which case it's 1.\n\n return true;\n },\n //called each time the values should be updated, and the ratio gets passed as the only parameter (typically it's a value between 0 and 1, but it can exceed those when using an ease like Elastic.easeOut or Back.easeOut, etc.)\n set: function set(v) {\n var segments = this._segCount,\n func = this._func,\n target = this._target,\n notStart = v !== this._startRatio,\n curIndex,\n inv,\n i,\n p,\n b,\n t,\n val,\n l,\n lengths,\n curSeg,\n v1;\n\n if (!this._timeRes) {\n curIndex = v < 0 ? 0 : v >= 1 ? segments - 1 : segments * v >> 0;\n t = (v - curIndex * (1 / segments)) * segments;\n } else {\n lengths = this._lengths;\n curSeg = this._curSeg;\n v1 = v * this._length;\n i = this._li; //find the appropriate segment (if the currently cached one isn't correct)\n\n if (v1 > this._l2 && i < segments - 1) {\n l = segments - 1;\n\n while (i < l && (this._l2 = lengths[++i]) <= v1) {}\n\n this._l1 = lengths[i - 1];\n this._li = i;\n this._curSeg = curSeg = this._segments[i];\n this._s2 = curSeg[this._s1 = this._si = 0];\n } else if (v1 < this._l1 && i > 0) {\n while (i > 0 && (this._l1 = lengths[--i]) >= v1) {}\n\n if (i === 0 && v1 < this._l1) {\n this._l1 = 0;\n } else {\n i++;\n }\n\n this._l2 = lengths[i];\n this._li = i;\n this._curSeg = curSeg = this._segments[i];\n this._s1 = curSeg[(this._si = curSeg.length - 1) - 1] || 0;\n this._s2 = curSeg[this._si];\n }\n\n curIndex = i; //now find the appropriate sub-segment (we split it into the number of pieces that was defined by \"precision\" and measured each one)\n\n v1 -= this._l1;\n i = this._si;\n\n if (v1 > this._s2 && i < curSeg.length - 1) {\n l = curSeg.length - 1;\n\n while (i < l && (this._s2 = curSeg[++i]) <= v1) {}\n\n this._s1 = curSeg[i - 1];\n this._si = i;\n } else if (v1 < this._s1 && i > 0) {\n while (i > 0 && (this._s1 = curSeg[--i]) >= v1) {}\n\n if (i === 0 && v1 < this._s1) {\n this._s1 = 0;\n } else {\n i++;\n }\n\n this._s2 = curSeg[i];\n this._si = i;\n }\n\n t = v === 1 ? 1 : (i + (v1 - this._s1) / (this._s2 - this._s1)) * this._prec || 0;\n }\n\n inv = 1 - t;\n i = this._props.length;\n\n while (--i > -1) {\n p = this._props[i];\n b = this._beziers[p][curIndex];\n val = (t * t * b.da + 3 * inv * (t * b.ca + inv * b.ba)) * t + b.a;\n\n if (this._mod[p]) {\n val = this._mod[p](val, target);\n }\n\n if (func[p]) {\n target[p](val);\n } else {\n target[p] = val;\n }\n }\n\n if (this._autoRotate) {\n var ar = this._autoRotate,\n b2,\n x1,\n y1,\n x2,\n y2,\n add,\n conv;\n i = ar.length;\n\n while (--i > -1) {\n p = ar[i][2];\n add = ar[i][3] || 0;\n conv = ar[i][4] === true ? 1 : _RAD2DEG;\n b = this._beziers[ar[i][0]];\n b2 = this._beziers[ar[i][1]];\n\n if (b && b2) {\n //in case one of the properties got overwritten.\n b = b[curIndex];\n b2 = b2[curIndex];\n x1 = b.a + (b.b - b.a) * t;\n x2 = b.b + (b.c - b.b) * t;\n x1 += (x2 - x1) * t;\n x2 += (b.c + (b.d - b.c) * t - x2) * t;\n y1 = b2.a + (b2.b - b2.a) * t;\n y2 = b2.b + (b2.c - b2.b) * t;\n y1 += (y2 - y1) * t;\n y2 += (b2.c + (b2.d - b2.c) * t - y2) * t;\n val = notStart ? Math.atan2(y2 - y1, x2 - x1) * conv + add : this._initialRotations[i];\n\n if (this._mod[p]) {\n val = this._mod[p](val, target); //for modProps\n }\n\n if (func[p]) {\n target[p](val);\n } else {\n target[p] = val;\n }\n }\n }\n }\n }\n}),\n p = BezierPlugin.prototype;\n\nBezierPlugin.bezierThrough = bezierThrough;\nBezierPlugin.cubicToQuadratic = cubicToQuadratic;\nBezierPlugin._autoCSS = true; //indicates that this plugin can be inserted into the \"css\" object using the autoCSS feature of TweenLite\n\nBezierPlugin.quadraticToCubic = function (a, b, c) {\n return new Segment(a, (2 * b + a) / 3, (2 * b + c) / 3, c);\n};\n\nBezierPlugin._cssRegister = function () {\n var CSSPlugin = _globals.CSSPlugin;\n\n if (!CSSPlugin) {\n return;\n }\n\n var _internals = CSSPlugin._internals,\n _parseToProxy = _internals._parseToProxy,\n _setPluginRatio = _internals._setPluginRatio,\n CSSPropTween = _internals.CSSPropTween;\n\n _internals._registerComplexSpecialProp(\"bezier\", {\n parser: function parser(t, e, prop, cssp, pt, plugin) {\n if (e instanceof Array) {\n e = {\n values: e\n };\n }\n\n plugin = new BezierPlugin();\n var values = e.values,\n l = values.length - 1,\n pluginValues = [],\n v = {},\n i,\n p,\n data;\n\n if (l < 0) {\n return pt;\n }\n\n for (i = 0; i <= l; i++) {\n data = _parseToProxy(t, values[i], cssp, pt, plugin, l !== i);\n pluginValues[i] = data.end;\n }\n\n for (p in e) {\n v[p] = e[p]; //duplicate the vars object because we need to alter some things which would cause problems if the user plans to reuse the same vars object for another tween.\n }\n\n v.values = pluginValues;\n pt = new CSSPropTween(t, \"bezier\", 0, 0, data.pt, 2);\n pt.data = data;\n pt.plugin = plugin;\n pt.setRatio = _setPluginRatio;\n\n if (v.autoRotate === 0) {\n v.autoRotate = true;\n }\n\n if (v.autoRotate && !(v.autoRotate instanceof Array)) {\n i = v.autoRotate === true ? 0 : Number(v.autoRotate);\n v.autoRotate = data.end.left != null ? [[\"left\", \"top\", \"rotation\", i, false]] : data.end.x != null ? [[\"x\", \"y\", \"rotation\", i, false]] : false;\n }\n\n if (v.autoRotate) {\n if (!cssp._transform) {\n cssp._enableTransforms(false);\n }\n\n data.autoRotate = cssp._target._gsTransform;\n data.proxy.rotation = data.autoRotate.rotation || 0;\n\n cssp._overwriteProps.push(\"rotation\");\n }\n\n plugin._onInitTween(data.proxy, v, cssp._tween);\n\n return pt;\n }\n });\n};\n\np._mod = function (lookup) {\n var op = this._overwriteProps,\n i = op.length,\n val;\n\n while (--i > -1) {\n val = lookup[op[i]];\n\n if (val && typeof val === \"function\") {\n this._mod[op[i]] = val;\n }\n }\n};\n\np._kill = function (lookup) {\n var a = this._props,\n p,\n i;\n\n for (p in this._beziers) {\n if (p in lookup) {\n delete this._beziers[p];\n delete this._func[p];\n i = a.length;\n\n while (--i > -1) {\n if (a[i] === p) {\n a.splice(i, 1);\n }\n }\n }\n }\n\n a = this._autoRotate;\n\n if (a) {\n i = a.length;\n\n while (--i > -1) {\n if (lookup[a[i][2]]) {\n a.splice(i, 1);\n }\n }\n }\n\n return this._super._kill.call(this, lookup);\n};\n\nexport { BezierPlugin, BezierPlugin as default };","/*!\n * VERSION: 1.16.1\n * DATE: 2018-08-27\n * UPDATES AND DOCS AT: http://greensock.com\n *\n * @license Copyright (c) 2008-2019, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n * \n * @author: Jack Doyle, jack@greensock.com\n **/\n\n/* eslint-disable */\nimport { _gsScope, globals, Ease, Linear, Power0, Power1, Power2, Power3, Power4 } from \"./TweenLite.js\";\n\n_gsScope._gsDefine(\"easing.Back\", [\"easing.Ease\"], function () {\n var w = _gsScope.GreenSockGlobals || _gsScope,\n gs = w.com.greensock,\n _2PI = Math.PI * 2,\n _HALF_PI = Math.PI / 2,\n _class = gs._class,\n _create = function _create(n, f) {\n var C = _class(\"easing.\" + n, function () {}, true),\n p = C.prototype = new Ease();\n\n p.constructor = C;\n p.getRatio = f;\n return C;\n },\n _easeReg = Ease.register || function () {},\n //put an empty function in place just as a safety measure in case someone loads an OLD version of TweenLite.js where Ease.register doesn't exist.\n _wrap = function _wrap(name, EaseOut, EaseIn, EaseInOut, aliases) {\n var C = _class(\"easing.\" + name, {\n easeOut: new EaseOut(),\n easeIn: new EaseIn(),\n easeInOut: new EaseInOut()\n }, true);\n\n _easeReg(C, name);\n\n return C;\n },\n EasePoint = function EasePoint(time, value, next) {\n this.t = time;\n this.v = value;\n\n if (next) {\n this.next = next;\n next.prev = this;\n this.c = next.v - value;\n this.gap = next.t - time;\n }\n },\n //Back\n _createBack = function _createBack(n, f) {\n var C = _class(\"easing.\" + n, function (overshoot) {\n this._p1 = overshoot || overshoot === 0 ? overshoot : 1.70158;\n this._p2 = this._p1 * 1.525;\n }, true),\n p = C.prototype = new Ease();\n\n p.constructor = C;\n p.getRatio = f;\n\n p.config = function (overshoot) {\n return new C(overshoot);\n };\n\n return C;\n },\n Back = _wrap(\"Back\", _createBack(\"BackOut\", function (p) {\n return (p = p - 1) * p * ((this._p1 + 1) * p + this._p1) + 1;\n }), _createBack(\"BackIn\", function (p) {\n return p * p * ((this._p1 + 1) * p - this._p1);\n }), _createBack(\"BackInOut\", function (p) {\n return (p *= 2) < 1 ? 0.5 * p * p * ((this._p2 + 1) * p - this._p2) : 0.5 * ((p -= 2) * p * ((this._p2 + 1) * p + this._p2) + 2);\n })),\n //SlowMo\n SlowMo = _class(\"easing.SlowMo\", function (linearRatio, power, yoyoMode) {\n power = power || power === 0 ? power : 0.7;\n\n if (linearRatio == null) {\n linearRatio = 0.7;\n } else if (linearRatio > 1) {\n linearRatio = 1;\n }\n\n this._p = linearRatio !== 1 ? power : 0;\n this._p1 = (1 - linearRatio) / 2;\n this._p2 = linearRatio;\n this._p3 = this._p1 + this._p2;\n this._calcEnd = yoyoMode === true;\n }, true),\n p = SlowMo.prototype = new Ease(),\n SteppedEase,\n ExpoScaleEase,\n RoughEase,\n _createElastic;\n\n p.constructor = SlowMo;\n\n p.getRatio = function (p) {\n var r = p + (0.5 - p) * this._p;\n\n if (p < this._p1) {\n return this._calcEnd ? 1 - (p = 1 - p / this._p1) * p : r - (p = 1 - p / this._p1) * p * p * p * r;\n } else if (p > this._p3) {\n return this._calcEnd ? p === 1 ? 0 : 1 - (p = (p - this._p3) / this._p1) * p : r + (p - r) * (p = (p - this._p3) / this._p1) * p * p * p; //added p === 1 ? 0 to avoid floating point rounding errors from affecting the final value, like 1 - 0.7 = 0.30000000000000004 instead of 0.3\n }\n\n return this._calcEnd ? 1 : r;\n };\n\n SlowMo.ease = new SlowMo(0.7, 0.7);\n\n p.config = SlowMo.config = function (linearRatio, power, yoyoMode) {\n return new SlowMo(linearRatio, power, yoyoMode);\n }; //SteppedEase\n\n\n SteppedEase = _class(\"easing.SteppedEase\", function (steps, immediateStart) {\n steps = steps || 1;\n this._p1 = 1 / steps;\n this._p2 = steps + (immediateStart ? 0 : 1);\n this._p3 = immediateStart ? 1 : 0;\n }, true);\n p = SteppedEase.prototype = new Ease();\n p.constructor = SteppedEase;\n\n p.getRatio = function (p) {\n if (p < 0) {\n p = 0;\n } else if (p >= 1) {\n p = 0.999999999;\n }\n\n return ((this._p2 * p | 0) + this._p3) * this._p1;\n };\n\n p.config = SteppedEase.config = function (steps, immediateStart) {\n return new SteppedEase(steps, immediateStart);\n }; //ExpoScaleEase\n\n\n ExpoScaleEase = _class(\"easing.ExpoScaleEase\", function (start, end, ease) {\n this._p1 = Math.log(end / start);\n this._p2 = end - start;\n this._p3 = start;\n this._ease = ease;\n }, true);\n p = ExpoScaleEase.prototype = new Ease();\n p.constructor = ExpoScaleEase;\n\n p.getRatio = function (p) {\n if (this._ease) {\n p = this._ease.getRatio(p);\n }\n\n return (this._p3 * Math.exp(this._p1 * p) - this._p3) / this._p2;\n };\n\n p.config = ExpoScaleEase.config = function (start, end, ease) {\n return new ExpoScaleEase(start, end, ease);\n }; //RoughEase\n\n\n RoughEase = _class(\"easing.RoughEase\", function (vars) {\n vars = vars || {};\n var taper = vars.taper || \"none\",\n a = [],\n cnt = 0,\n points = (vars.points || 20) | 0,\n i = points,\n randomize = vars.randomize !== false,\n clamp = vars.clamp === true,\n template = vars.template instanceof Ease ? vars.template : null,\n strength = typeof vars.strength === \"number\" ? vars.strength * 0.4 : 0.4,\n x,\n y,\n bump,\n invX,\n obj,\n pnt;\n\n while (--i > -1) {\n x = randomize ? Math.random() : 1 / points * i;\n y = template ? template.getRatio(x) : x;\n\n if (taper === \"none\") {\n bump = strength;\n } else if (taper === \"out\") {\n invX = 1 - x;\n bump = invX * invX * strength;\n } else if (taper === \"in\") {\n bump = x * x * strength;\n } else if (x < 0.5) {\n //\"both\" (start)\n invX = x * 2;\n bump = invX * invX * 0.5 * strength;\n } else {\n //\"both\" (end)\n invX = (1 - x) * 2;\n bump = invX * invX * 0.5 * strength;\n }\n\n if (randomize) {\n y += Math.random() * bump - bump * 0.5;\n } else if (i % 2) {\n y += bump * 0.5;\n } else {\n y -= bump * 0.5;\n }\n\n if (clamp) {\n if (y > 1) {\n y = 1;\n } else if (y < 0) {\n y = 0;\n }\n }\n\n a[cnt++] = {\n x: x,\n y: y\n };\n }\n\n a.sort(function (a, b) {\n return a.x - b.x;\n });\n pnt = new EasePoint(1, 1, null);\n i = points;\n\n while (--i > -1) {\n obj = a[i];\n pnt = new EasePoint(obj.x, obj.y, pnt);\n }\n\n this._prev = new EasePoint(0, 0, pnt.t !== 0 ? pnt : pnt.next);\n }, true);\n p = RoughEase.prototype = new Ease();\n p.constructor = RoughEase;\n\n p.getRatio = function (p) {\n var pnt = this._prev;\n\n if (p > pnt.t) {\n while (pnt.next && p >= pnt.t) {\n pnt = pnt.next;\n }\n\n pnt = pnt.prev;\n } else {\n while (pnt.prev && p <= pnt.t) {\n pnt = pnt.prev;\n }\n }\n\n this._prev = pnt;\n return pnt.v + (p - pnt.t) / pnt.gap * pnt.c;\n };\n\n p.config = function (vars) {\n return new RoughEase(vars);\n };\n\n RoughEase.ease = new RoughEase(); //Bounce\n\n _wrap(\"Bounce\", _create(\"BounceOut\", function (p) {\n if (p < 1 / 2.75) {\n return 7.5625 * p * p;\n } else if (p < 2 / 2.75) {\n return 7.5625 * (p -= 1.5 / 2.75) * p + 0.75;\n } else if (p < 2.5 / 2.75) {\n return 7.5625 * (p -= 2.25 / 2.75) * p + 0.9375;\n }\n\n return 7.5625 * (p -= 2.625 / 2.75) * p + 0.984375;\n }), _create(\"BounceIn\", function (p) {\n if ((p = 1 - p) < 1 / 2.75) {\n return 1 - 7.5625 * p * p;\n } else if (p < 2 / 2.75) {\n return 1 - (7.5625 * (p -= 1.5 / 2.75) * p + 0.75);\n } else if (p < 2.5 / 2.75) {\n return 1 - (7.5625 * (p -= 2.25 / 2.75) * p + 0.9375);\n }\n\n return 1 - (7.5625 * (p -= 2.625 / 2.75) * p + 0.984375);\n }), _create(\"BounceInOut\", function (p) {\n var invert = p < 0.5;\n\n if (invert) {\n p = 1 - p * 2;\n } else {\n p = p * 2 - 1;\n }\n\n if (p < 1 / 2.75) {\n p = 7.5625 * p * p;\n } else if (p < 2 / 2.75) {\n p = 7.5625 * (p -= 1.5 / 2.75) * p + 0.75;\n } else if (p < 2.5 / 2.75) {\n p = 7.5625 * (p -= 2.25 / 2.75) * p + 0.9375;\n } else {\n p = 7.5625 * (p -= 2.625 / 2.75) * p + 0.984375;\n }\n\n return invert ? (1 - p) * 0.5 : p * 0.5 + 0.5;\n })); //CIRC\n\n\n _wrap(\"Circ\", _create(\"CircOut\", function (p) {\n return Math.sqrt(1 - (p = p - 1) * p);\n }), _create(\"CircIn\", function (p) {\n return -(Math.sqrt(1 - p * p) - 1);\n }), _create(\"CircInOut\", function (p) {\n return (p *= 2) < 1 ? -0.5 * (Math.sqrt(1 - p * p) - 1) : 0.5 * (Math.sqrt(1 - (p -= 2) * p) + 1);\n })); //Elastic\n\n\n _createElastic = function _createElastic(n, f, def) {\n var C = _class(\"easing.\" + n, function (amplitude, period) {\n this._p1 = amplitude >= 1 ? amplitude : 1; //note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1.\n\n this._p2 = (period || def) / (amplitude < 1 ? amplitude : 1);\n this._p3 = this._p2 / _2PI * (Math.asin(1 / this._p1) || 0);\n this._p2 = _2PI / this._p2; //precalculate to optimize\n }, true),\n p = C.prototype = new Ease();\n\n p.constructor = C;\n p.getRatio = f;\n\n p.config = function (amplitude, period) {\n return new C(amplitude, period);\n };\n\n return C;\n };\n\n _wrap(\"Elastic\", _createElastic(\"ElasticOut\", function (p) {\n return this._p1 * Math.pow(2, -10 * p) * Math.sin((p - this._p3) * this._p2) + 1;\n }, 0.3), _createElastic(\"ElasticIn\", function (p) {\n return -(this._p1 * Math.pow(2, 10 * (p -= 1)) * Math.sin((p - this._p3) * this._p2));\n }, 0.3), _createElastic(\"ElasticInOut\", function (p) {\n return (p *= 2) < 1 ? -0.5 * (this._p1 * Math.pow(2, 10 * (p -= 1)) * Math.sin((p - this._p3) * this._p2)) : this._p1 * Math.pow(2, -10 * (p -= 1)) * Math.sin((p - this._p3) * this._p2) * 0.5 + 1;\n }, 0.45)); //Expo\n\n\n _wrap(\"Expo\", _create(\"ExpoOut\", function (p) {\n return 1 - Math.pow(2, -10 * p);\n }), _create(\"ExpoIn\", function (p) {\n return Math.pow(2, 10 * (p - 1)) - 0.001;\n }), _create(\"ExpoInOut\", function (p) {\n return (p *= 2) < 1 ? 0.5 * Math.pow(2, 10 * (p - 1)) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n })); //Sine\n\n\n _wrap(\"Sine\", _create(\"SineOut\", function (p) {\n return Math.sin(p * _HALF_PI);\n }), _create(\"SineIn\", function (p) {\n return -Math.cos(p * _HALF_PI) + 1;\n }), _create(\"SineInOut\", function (p) {\n return -0.5 * (Math.cos(Math.PI * p) - 1);\n }));\n\n _class(\"easing.EaseLookup\", {\n find: function find(s) {\n return Ease.map[s];\n }\n }, true); //register the non-standard eases\n\n\n _easeReg(w.SlowMo, \"SlowMo\", \"ease,\");\n\n _easeReg(RoughEase, \"RoughEase\", \"ease,\");\n\n _easeReg(SteppedEase, \"SteppedEase\", \"ease,\");\n\n return Back;\n}, true);\n\nexport var Back = globals.Back;\nexport var Elastic = globals.Elastic;\nexport var Bounce = globals.Bounce;\nexport var RoughEase = globals.RoughEase;\nexport var SlowMo = globals.SlowMo;\nexport var SteppedEase = globals.SteppedEase;\nexport var Circ = globals.Circ;\nexport var Expo = globals.Expo;\nexport var Sine = globals.Sine;\nexport var ExpoScaleEase = globals.ExpoScaleEase;\nexport { Linear, Power0, Power1, Power2, Power3, Power4 };","/*!\n * VERSION: 2.1.3\n * DATE: 2019-05-17\n * UPDATES AND DOCS AT: http://greensock.com\n *\n * @license Copyright (c) 2008-2019, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n * \n * @author: Jack Doyle, jack@greensock.com\n **/\n\n/* eslint-disable */\nimport TweenLite, { TweenPlugin, Ease, Power0, Power1, Power2, Power3, Power4, Linear } from \"./TweenLite.js\";\nimport TweenMaxBase from \"./TweenMaxBase.js\";\nimport CSSPlugin from \"./CSSPlugin.js\";\nimport AttrPlugin from \"./AttrPlugin.js\";\nimport RoundPropsPlugin from \"./RoundPropsPlugin.js\";\nimport DirectionalRotationPlugin from \"./DirectionalRotationPlugin.js\";\nimport TimelineLite from \"./TimelineLite.js\";\nimport TimelineMax from \"./TimelineMax.js\";\nimport BezierPlugin from \"./BezierPlugin.js\";\nimport { Back, Elastic, Bounce, RoughEase, SlowMo, SteppedEase, Circ, Expo, Sine, ExpoScaleEase } from \"./EasePack.js\"; //the following two lines are designed to prevent tree shaking of the classes that were historically included with TweenMax (otherwise, folks would have to reference CSSPlugin, for example, to ensure their CSS-related animations worked)\n\nexport var TweenMax = TweenMaxBase;\nTweenMax._autoActivated = [TimelineLite, TimelineMax, CSSPlugin, AttrPlugin, BezierPlugin, RoundPropsPlugin, DirectionalRotationPlugin, Back, Elastic, Bounce, RoughEase, SlowMo, SteppedEase, Circ, Expo, Sine, ExpoScaleEase];\nexport { TweenMax as default };\nexport { TweenLite, TimelineLite, TimelineMax, CSSPlugin, AttrPlugin, BezierPlugin, DirectionalRotationPlugin, RoundPropsPlugin, TweenPlugin, Ease, Power0, Power1, Power2, Power3, Power4, Linear, Back, Elastic, Bounce, RoughEase, SlowMo, SteppedEase, Circ, Expo, Sine, ExpoScaleEase };","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\nimport \"@stimulus/polyfills\"\nimport { Application } from \"stimulus\"\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\"\nimport { TweenLite, TimelineLite, CSSPlugin } from \"gsap/TweenMax\"\nimport { animatedScrollTo } from 'es6-scroll-to'\n\n// Mixpanel\nwindow.mixpanel = require('mixpanel-browser')\nmixpanel.init(\"31df5e0f31a551945fe04df8cc433e7e\")\n\nconst application = Application.start()\nconst context = require.context(\"./controllers\", true, /\\.js$/)\napplication.load(definitionsFromContext(context))\n\n// Tailwind\nimport \"css/application\""],"sourceRoot":""}