{"version":3,"sources":["hammer.js","webfontloader.js","wheellistener.min.js"],"names":["window","document","exportName","undefined","setTimeoutContext","fn","timeout","context","setTimeout","bindFn","invokeArrayArg","arg","Array","isArray","each","obj","iterator","i","forEach","length","call","hasOwnProperty","deprecate","method","name","message","deprecationMessage","e","Error","stack","replace","log","console","warn","apply","this","arguments","inherit","child","base","properties","childP","baseP","prototype","Object","create","constructor","_super","assign","boolOrFn","val","args","TYPE_FUNCTION","ifUndefined","val1","val2","addEventListeners","target","types","handler","splitStr","type","addEventListener","removeEventListeners","removeEventListener","hasParent","node","parent","parentNode","inStr","str","find","indexOf","trim","split","inArray","src","findByKey","toArray","slice","uniqueArray","key","sort","results","values","push","a","b","prefixed","property","prefix","prop","camelProp","toUpperCase","VENDOR_PREFIXES","uniqueId","_uniqueId","getWindowForElement","element","doc","ownerDocument","defaultView","parentWindow","Input","manager","callback","self","options","inputTarget","domHandler","ev","enable","init","createInputInstance","inputClass","SUPPORT_POINTER_EVENTS","PointerEventInput","SUPPORT_ONLY_TOUCH","TouchInput","SUPPORT_TOUCH","TouchMouseInput","MouseInput","inputHandler","eventType","input","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","INPUT_START","isFinal","INPUT_END","INPUT_CANCEL","session","computeInputData","emit","recognize","prevInput","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","timeStamp","now","deltaTime","angle","getAngle","distance","getDistance","computeDeltaXY","offsetDirection","getDirection","deltaX","deltaY","overallVelocity","getVelocity","overallVelocityX","x","overallVelocityY","y","abs","scale","getScale","rotation","getRotation","maxPointers","computeIntervalInputData","srcEvent","offset","offsetDelta","prevDelta","velocity","velocityX","velocityY","direction","last","lastInterval","COMPUTE_INTERVAL","v","clientX","round","clientY","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","p1","p2","props","PROPS_XY","Math","sqrt","atan2","PI","start","end","PROPS_CLIENT_XY","evEl","MOUSE_ELEMENT_EVENTS","evWin","MOUSE_WINDOW_EVENTS","pressed","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","store","pointerEvents","SingleTouchInput","evTarget","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","started","normalizeSingleTouches","all","touches","changed","changedTouches","concat","TOUCH_TARGET_EVENTS","targetIds","getTouches","allTouches","INPUT_MOVE","identifier","targetTouches","changedTargetTouches","filter","touch","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","removeLastTouch","splice","DEDUP_TIMEOUT","isSyntheticEvent","t","dx","dy","DEDUP_DISTANCE","TouchAction","value","set","cleanTouchActions","actions","TOUCH_ACTION_NONE","hasPanX","TOUCH_ACTION_PAN_X","hasPanY","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_AUTO","Recognizer","defaults","id","state","STATE_POSSIBLE","simultaneous","requireFail","stateStr","STATE_CANCELLED","STATE_ENDED","STATE_CHANGED","STATE_BEGAN","directionStr","getRecognizerByNameIfManager","otherRecognizer","recognizer","get","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","count","Hammer","recognizers","preset","Manager","handlers","oldCssProps","touchAction","toggleCssProps","item","add","recognizeWith","requireFailure","style","cssProps","triggerDomEvent","event","data","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","TEST_ELEMENT","createElement","Date","TypeError","output","index","source","nextKey","extend","dest","merge","keys","MOBILE_REGEX","test","navigator","userAgent","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","destroy","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","button","which","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","2","3","4","5","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","toLowerCase","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","TOUCH_INPUT_MAP","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","compute","update","getTouchAction","join","preventDefaults","prevented","preventDefault","hasNone","isTapPointer","isTapMovement","isTapTouchTime","preventSrc","STATE_RECOGNIZED","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","reset","process","attrTest","optionPointers","isRecognized","isValid","threshold","directionTest","hasMoved","inOut","time","validPointers","validMovement","validTime","clearTimeout","taps","interval","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","stop","force","stopped","curRecognizer","existing","remove","on","events","off","STATE_FAILED","Tap","Pan","Swipe","Pinch","Rotate","Press","define","amd","module","exports","aa","c","bind","ba","d","unshift","p","Function","toString","ca","o","cssText","setAttribute","appendChild","createTextNode","u","getElementsByTagName","documentElement","insertBefore","lastChild","removeChild","w","className","f","g","ea","location","hostname","z","m","rel","href","media","da","onload","onerror","A","onreadystatechange","readyState","tagName","B","C","D","E","F","G","match","parseInt","fa","H","I","J","ga","substr","ha","h","j","classes","ia","K","L","ja","ka","M","aria-hidden","N","O","P","Q","s","T","S","exec","la","R","U","offsetWidth","serif","q","V","ma","W","na","oa","qa","l","k","n","r","X","FontFace","xa","vendor","pa","load","ra","sa","ta","ua","va","pop","wa","encodeURIComponent","ya","Da","Ca","Ba","Aa","isNaN","za","Ea","Ga","Ha","Promise","fonts","then","race","fontfamily","fontStyle","fontWeight","projectId","version","api","urls","families","testStrings","latin","latin-ext","cyrillic","greek","khmer","Hanuman","thin","extralight","extra-light","ultralight","ultra-light","light","regular","book","medium","semi-bold","semibold","demi-bold","demibold","bold","extra-bold","extrabold","ultra-bold","ultrabold","black","heavy","italic","normal","Fa","Arimo","Cousine","Tinos","text","Typekit","config","async","__webfontfontdeckmodule__","weight","Y","custom","fontdeck","monotype","typekit","google","Z","WebFont","WebFontConfig","wheellistener","uniqueNumber","implementation","hasFeature","eventListener","eventToBind","shim","originalEvent","detail","wheelDelta","wheelDeltaX","axis","deltaZ","deltaMode","nodeType","parentElement","triggering","currentTarget","eventPhase","srcElement","view","getTime","pageX","scrollLeft","pageY","scrollTop","metaKey","cancelBubble","reverse","detachEvent","attachEvent","Alt","Control","Meta","Shift","altKey","buttons","ctrlKey","offsetX","offsetY","relatedTarget","screenX","screenY","shiftKey","bubbles","cancelable","defaultPrevented","getModifierState","returnValue","stopPropagation","stopImmediatePropagation","WheelEventShim"],"mappings":"CAKA,SAAAA,EAAAC,EAAAC,EAAAC,GACA,YAkBA,SAAAC,GAAAC,EAAAC,EAAAC,GACA,MAAAC,YAAAC,EAAAJ,EAAAE,GAAAD,GAYA,QAAAI,GAAAC,EAAAN,EAAAE,GACA,QAAAK,MAAAC,QAAAF,KACAG,EAAAH,EAAAJ,EAAAF,GAAAE,IACA,GAWA,QAAAO,GAAAC,EAAAC,EAAAT,GACA,GAAAU,EAEA,IAAAF,EAIA,GAAAA,EAAAG,QACAH,EAAAG,QAAAF,EAAAT,OACA,IAAAQ,EAAAI,SAAAhB,EAEA,IADAc,EAAA,EACAA,EAAAF,EAAAI,QACAH,EAAAI,KAAAb,EAAAQ,EAAAE,GAAAA,EAAAF,GACAE,QAGA,KAAAA,IAAAF,GACAA,EAAAM,eAAAJ,IAAAD,EAAAI,KAAAb,EAAAQ,EAAAE,GAAAA,EAAAF,GAYA,QAAAO,GAAAC,EAAAC,EAAAC,GACA,GAAAC,GAAA,sBAAAF,EAAA,KAAAC,EAAA,QACA,OAAA,YACA,GAAAE,GAAA,GAAAC,OAAA,mBACAC,EAAAF,GAAAA,EAAAE,MAAAF,EAAAE,MAAAC,QAAA,kBAAA,IACAA,QAAA,cAAA,IACAA,QAAA,6BAAA,kBAAA,sBAEAC,EAAA/B,EAAAgC,UAAAhC,EAAAgC,QAAAC,MAAAjC,EAAAgC,QAAAD,IAIA,OAHAA,IACAA,EAAAX,KAAApB,EAAAgC,QAAAN,EAAAG,GAEAN,EAAAW,MAAAC,KAAAC,YAwEA,QAAAC,GAAAC,EAAAC,EAAAC,GACA,GACAC,GADAC,EAAAH,EAAAI,SAGAF,GAAAH,EAAAK,UAAAC,OAAAC,OAAAH,GACAD,EAAAK,YAAAR,EACAG,EAAAM,OAAAL,EAEAF,GACAQ,GAAAP,EAAAD,GAUA,QAAA/B,GAAAJ,EAAAE,GACA,MAAA,YACA,MAAAF,GAAA6B,MAAA3B,EAAA6B,YAWA,QAAAa,GAAAC,EAAAC,GACA,aAAAD,IAAAE,GACAF,EAAAhB,MAAAiB,EAAAA,EAAA,IAAAhD,EAAAA,EAAAgD,GAEAD,EASA,QAAAG,GAAAC,EAAAC,GACA,MAAAD,KAAAnD,EAAAoD,EAAAD,EASA,QAAAE,GAAAC,EAAAC,EAAAC,GACA7C,EAAA8C,EAAAF,GAAA,SAAAG,GACAJ,EAAAK,iBAAAD,EAAAF,GAAA,KAUA,QAAAI,GAAAN,EAAAC,EAAAC,GACA7C,EAAA8C,EAAAF,GAAA,SAAAG,GACAJ,EAAAO,oBAAAH,EAAAF,GAAA,KAWA,QAAAM,GAAAC,EAAAC,GACA,KAAAD,GAAA,CACA,GAAAA,GAAAC,EACA,OAAA,CAEAD,GAAAA,EAAAE,WAEA,OAAA,EASA,QAAAC,GAAAC,EAAAC,GACA,MAAAD,GAAAE,QAAAD,IAAA,EAQA,QAAAX,GAAAU,GACA,MAAAA,GAAAG,OAAAC,MAAA,QAUA,QAAAC,GAAAC,EAAAL,EAAAM,GACA,GAAAD,EAAAJ,UAAAK,EACA,MAAAD,GAAAJ,QAAAD,EAGA,KADA,GAAAtD,GAAA,EACAA,EAAA2D,EAAAzD,QAAA,CACA,GAAA0D,GAAAD,EAAA3D,GAAA4D,IAAAN,IAAAM,GAAAD,EAAA3D,KAAAsD,EACA,MAAAtD,EAEAA,KAEA,OAAA,EASA,QAAA6D,GAAA/D,GACA,MAAAH,OAAA+B,UAAAoC,MAAA3D,KAAAL,EAAA,GAUA,QAAAiE,GAAAJ,EAAAK,EAAAC,GAKA,IAJA,GAAAC,MACAC,KACAnE,EAAA,EAEAA,EAAA2D,EAAAzD,QAAA,CACA,GAAA+B,GAAA+B,EAAAL,EAAA3D,GAAAgE,GAAAL,EAAA3D,EACA0D,GAAAS,EAAAlC,GAAA,GACAiC,EAAAE,KAAAT,EAAA3D,IAEAmE,EAAAnE,GAAAiC,EACAjC,IAaA,MAVAiE,KAIAC,EAHAF,EAGAE,EAAAD,KAAA,SAAAI,EAAAC,GACA,MAAAD,GAAAL,GAAAM,EAAAN,KAHAE,EAAAD,QAQAC,EASA,QAAAK,GAAAzE,EAAA0E,GAKA,IAJA,GAAAC,GAAAC,EACAC,EAAAH,EAAA,GAAAI,cAAAJ,EAAAV,MAAA,GAEA9D,EAAA,EACAA,EAAA6E,GAAA3E,QAAA,CAIA,GAHAuE,EAAAI,GAAA7E,IACA0E,EAAA,EAAAD,EAAAE,EAAAH,IAEA1E,GACA,MAAA4E,EAEA1E,KAEA,MAAAd,GAQA,QAAA4F,KACA,MAAAC,MAQA,QAAAC,GAAAC,GACA,GAAAC,GAAAD,EAAAE,eAAAF,CACA,OAAAC,GAAAE,aAAAF,EAAAG,cAAAtG,EAyCA,QAAAuG,GAAAC,EAAAC,GACA,GAAAC,GAAAvE,IACAA,MAAAqE,QAAAA,EACArE,KAAAsE,SAAAA,EACAtE,KAAA+D,QAAAM,EAAAN,QACA/D,KAAAsB,OAAA+C,EAAAG,QAAAC,YAIAzE,KAAA0E,WAAA,SAAAC,GACA7D,EAAAuD,EAAAG,QAAAI,QAAAP,KACAE,EAAA/C,QAAAmD,IAIA3E,KAAA6E,OAoCA,QAAAC,GAAAT,GACA,GACAU,GAAAV,EAAAG,QAAAO,UAaA,OAAA,KAXAA,IAEAC,GACAC,EACAC,GACAC,EACAC,GAGAC,EAFAC,IAIAjB,EAAAkB,GASA,QAAAA,GAAAlB,EAAAmB,EAAAC,GACA,GAAAC,GAAAD,EAAAE,SAAA3G,OACA4G,EAAAH,EAAAI,gBAAA7G,OACA8G,EAAAN,EAAAO,IAAAL,EAAAE,GAAA,EACAI,EAAAR,GAAAS,GAAAC,KAAAR,EAAAE,GAAA,CAEAH,GAAAK,UAAAA,EACAL,EAAAO,UAAAA,EAEAF,IACAzB,EAAA8B,YAKAV,EAAAD,UAAAA,EAGAY,EAAA/B,EAAAoB,GAGApB,EAAAgC,KAAA,eAAAZ,GAEApB,EAAAiC,UAAAb,GACApB,EAAA8B,QAAAI,UAAAd,EAQA,QAAAW,GAAA/B,EAAAoB,GACA,GAAAU,GAAA9B,EAAA8B,QACAR,EAAAF,EAAAE,SACAa,EAAAb,EAAA3G,MAGAmH,GAAAM,aACAN,EAAAM,WAAAC,EAAAjB,IAIAe,EAAA,IAAAL,EAAAQ,cACAR,EAAAQ,cAAAD,EAAAjB,GACA,IAAAe,IACAL,EAAAQ,eAAA,EAGA,IAAAF,GAAAN,EAAAM,WACAE,EAAAR,EAAAQ,cACAC,EAAAD,EAAAA,EAAAE,OAAAJ,EAAAI,OAEAA,EAAApB,EAAAoB,OAAAC,EAAAnB,EACAF,GAAAsB,UAAAC,KACAvB,EAAAwB,UAAAxB,EAAAsB,UAAAN,EAAAM,UAEAtB,EAAAyB,MAAAC,EAAAP,EAAAC,GACApB,EAAA2B,SAAAC,EAAAT,EAAAC,GAEAS,EAAAnB,EAAAV,GACAA,EAAA8B,gBAAAC,EAAA/B,EAAAgC,OAAAhC,EAAAiC,OAEA,IAAAC,GAAAC,EAAAnC,EAAAwB,UAAAxB,EAAAgC,OAAAhC,EAAAiC,OACAjC,GAAAoC,iBAAAF,EAAAG,EACArC,EAAAsC,iBAAAJ,EAAAK,EACAvC,EAAAkC,gBAAAM,GAAAN,EAAAG,GAAAG,GAAAN,EAAAK,GAAAL,EAAAG,EAAAH,EAAAK,EAEAvC,EAAAyC,MAAAvB,EAAAwB,EAAAxB,EAAAhB,SAAAA,GAAA,EACAF,EAAA2C,SAAAzB,EAAA0B,EAAA1B,EAAAhB,SAAAA,GAAA,EAEAF,EAAA6C,YAAAnC,EAAAI,UAAAd,EAAAE,SAAA3G,OACAmH,EAAAI,UAAA+B,YAAA7C,EAAAE,SAAA3G,OAAAmH,EAAAI,UAAA+B,YADA7C,EAAAE,SAAA3G,OAGAuJ,EAAApC,EAAAV,EAGA,IAAAnE,GAAA+C,EAAAN,OACAjC,GAAA2D,EAAA+C,SAAAlH,OAAAA,KACAA,EAAAmE,EAAA+C,SAAAlH,QAEAmE,EAAAnE,OAAAA,EAGA,QAAAgG,GAAAnB,EAAAV,GACA,GAAAoB,GAAApB,EAAAoB,OACA4B,EAAAtC,EAAAuC,gBACAC,EAAAxC,EAAAwC,cACApC,EAAAJ,EAAAI,aAEAd,GAAAD,YAAAO,IAAAQ,EAAAf,YAAAS,KACA0C,EAAAxC,EAAAwC,WACAb,EAAAvB,EAAAkB,QAAA,EACAO,EAAAzB,EAAAmB,QAAA,GAGAe,EAAAtC,EAAAuC,aACAZ,EAAAjB,EAAAiB,EACAE,EAAAnB,EAAAmB,IAIAvC,EAAAgC,OAAAkB,EAAAb,GAAAjB,EAAAiB,EAAAW,EAAAX,GACArC,EAAAiC,OAAAiB,EAAAX,GAAAnB,EAAAmB,EAAAS,EAAAT,GAQA,QAAAO,GAAApC,EAAAV,GACA,GAEAmD,GAAAC,EAAAC,EAAAC,EAFAC,EAAA7C,EAAA8C,cAAAxD,EACAwB,EAAAxB,EAAAsB,UAAAiC,EAAAjC,SAGA,IAAAtB,EAAAD,WAAAU,KAAAe,EAAAiC,IAAAF,EAAAJ,WAAA5K,GAAA,CACA,GAAAyJ,GAAAhC,EAAAgC,OAAAuB,EAAAvB,OACAC,EAAAjC,EAAAiC,OAAAsB,EAAAtB,OAEAyB,EAAAvB,EAAAX,EAAAQ,EAAAC,EACAmB,GAAAM,EAAArB,EACAgB,EAAAK,EAAAnB,EACAY,EAAAX,GAAAkB,EAAArB,GAAAG,GAAAkB,EAAAnB,GAAAmB,EAAArB,EAAAqB,EAAAnB,EACAe,EAAAvB,EAAAC,EAAAC,GAEAvB,EAAA8C,aAAAxD,MAGAmD,GAAAI,EAAAJ,SACAC,EAAAG,EAAAH,UACAC,EAAAE,EAAAF,UACAC,EAAAC,EAAAD,SAGAtD,GAAAmD,SAAAA,EACAnD,EAAAoD,UAAAA,EACApD,EAAAqD,UAAAA,EACArD,EAAAsD,UAAAA,EAQA,QAAArC,GAAAjB,GAKA,IAFA,GAAAE,MACA7G,EAAA,EACAA,EAAA2G,EAAAE,SAAA3G,QACA2G,EAAA7G,IACAsK,QAAAC,GAAA5D,EAAAE,SAAA7G,GAAAsK,SACAE,QAAAD,GAAA5D,EAAAE,SAAA7G,GAAAwK,UAEAxK,GAGA,QACAiI,UAAAC,KACArB,SAAAA,EACAkB,OAAAC,EAAAnB,GACA8B,OAAAhC,EAAAgC,OACAC,OAAAjC,EAAAiC,QASA,QAAAZ,GAAAnB,GACA,GAAAa,GAAAb,EAAA3G,MAGA,IAAA,IAAAwH,EACA,OACAsB,EAAAuB,GAAA1D,EAAA,GAAAyD,SACApB,EAAAqB,GAAA1D,EAAA,GAAA2D,SAKA,KADA,GAAAxB,GAAA,EAAAE,EAAA,EAAAlJ,EAAA,EACAA,EAAA0H,GACAsB,GAAAnC,EAAA7G,GAAAsK,QACApB,GAAArC,EAAA7G,GAAAwK,QACAxK,GAGA,QACAgJ,EAAAuB,GAAAvB,EAAAtB,GACAwB,EAAAqB,GAAArB,EAAAxB,IAWA,QAAAoB,GAAAX,EAAAa,EAAAE,GACA,OACAF,EAAAA,EAAAb,GAAA,EACAe,EAAAA,EAAAf,GAAA,GAUA,QAAAO,GAAAM,EAAAE,GACA,MAAAF,KAAAE,EACAuB,GAGAtB,GAAAH,IAAAG,GAAAD,GACAF,EAAA,EAAA0B,GAAAC,GAEAzB,EAAA,EAAA0B,GAAAC,GAUA,QAAAtC,GAAAuC,EAAAC,EAAAC,GACAA,IACAA,EAAAC,GAEA,IAAAjC,GAAA+B,EAAAC,EAAA,IAAAF,EAAAE,EAAA,IACA9B,EAAA6B,EAAAC,EAAA,IAAAF,EAAAE,EAAA,GAEA,OAAAE,MAAAC,KAAAnC,EAAAA,EAAAE,EAAAA,GAUA,QAAAb,GAAAyC,EAAAC,EAAAC,GACAA,IACAA,EAAAC,GAEA,IAAAjC,GAAA+B,EAAAC,EAAA,IAAAF,EAAAE,EAAA,IACA9B,EAAA6B,EAAAC,EAAA,IAAAF,EAAAE,EAAA,GACA,OAAA,KAAAE,KAAAE,MAAAlC,EAAAF,GAAAkC,KAAAG,GASA,QAAA9B,GAAA+B,EAAAC,GACA,MAAAlD,GAAAkD,EAAA,GAAAA,EAAA,GAAAC,IAAAnD,EAAAiD,EAAA,GAAAA,EAAA,GAAAE,IAUA,QAAAnC,GAAAiC,EAAAC,GACA,MAAAhD,GAAAgD,EAAA,GAAAA,EAAA,GAAAC,IAAAjD,EAAA+C,EAAA,GAAAA,EAAA,GAAAE,IAiBA,QAAAhF,KACAtF,KAAAuK,KAAAC,GACAxK,KAAAyK,MAAAC,GAEA1K,KAAA2K,SAAA,EAEAvG,EAAArE,MAAAC,KAAAC,WAoEA,QAAAgF,KACAjF,KAAAuK,KAAAK,GACA5K,KAAAyK,MAAAI,GAEAzG,EAAArE,MAAAC,KAAAC,WAEAD,KAAA8K,MAAA9K,KAAAqE,QAAA8B,QAAA4E,iBAoEA,QAAAC,KACAhL,KAAAiL,SAAAC,GACAlL,KAAAyK,MAAAU,GACAnL,KAAAoL,SAAA,EAEAhH,EAAArE,MAAAC,KAAAC,WAsCA,QAAAoL,GAAA1G,EAAAjD,GACA,GAAA4J,GAAA3I,EAAAgC,EAAA4G,SACAC,EAAA7I,EAAAgC,EAAA8G,eAMA,OAJA/J,IAAAuE,GAAAC,MACAoF,EAAAzI,EAAAyI,EAAAI,OAAAF,GAAA,cAAA,KAGAF,EAAAE,GAiBA,QAAArG,KACAnF,KAAAiL,SAAAU,GACA3L,KAAA4L,aAEAxH,EAAArE,MAAAC,KAAAC,WA0BA,QAAA4L,GAAAlH,EAAAjD,GACA,GAAAoK,GAAAnJ,EAAAgC,EAAA4G,SACAK,EAAA5L,KAAA4L,SAGA,IAAAlK,GAAAqE,GAAAgG,KAAA,IAAAD,EAAA9M,OAEA,MADA4M,GAAAE,EAAA,GAAAE,aAAA,GACAF,EAAAA,EAGA,IAAAhN,GACAmN,EACAR,EAAA9I,EAAAgC,EAAA8G,gBACAS,KACA5K,EAAAtB,KAAAsB,MAQA,IALA2K,EAAAH,EAAAK,OAAA,SAAAC,GACA,MAAAtK,GAAAsK,EAAA9K,OAAAA,KAIAI,IAAAqE,GAEA,IADAjH,EAAA,EACAA,EAAAmN,EAAAjN,QACA4M,EAAAK,EAAAnN,GAAAkN,aAAA,EACAlN,GAMA,KADAA,EAAA,EACAA,EAAA2M,EAAAzM,QACA4M,EAAAH,EAAA3M,GAAAkN,aACAE,EAAAhJ,KAAAuI,EAAA3M,IAIA4C,GAAAuE,GAAAC,WACA0F,GAAAH,EAAA3M,GAAAkN,YAEAlN,GAGA,OAAAoN,GAAAlN,QAMA6D,EAAAoJ,EAAAP,OAAAQ,GAAA,cAAA,GACAA,OAPA,GAwBA,QAAA7G,KACAjB,EAAArE,MAAAC,KAAAC,UAEA,IAAAuB,GAAAlD,EAAA0B,KAAAwB,QAAAxB,KACAA,MAAAoM,MAAA,GAAAjH,GAAAnF,KAAAqE,QAAA7C,GACAxB,KAAAqM,MAAA,GAAA/G,GAAAtF,KAAAqE,QAAA7C,GAEAxB,KAAAsM,aAAA,KACAtM,KAAAuM,eAqCA,QAAAC,GAAAhH,EAAAiH,GACAjH,EAAAO,IACA/F,KAAAsM,aAAAG,EAAA5G,gBAAA,GAAAmG,WACAU,EAAAzN,KAAAe,KAAAyM,IACAjH,GAAAS,GAAAC,KACAwG,EAAAzN,KAAAe,KAAAyM,GAIA,QAAAC,GAAAD,GACA,GAAAL,GAAAK,EAAA5G,gBAAA,EAEA,IAAAuG,EAAAJ,aAAAhM,KAAAsM,aAAA,CACA,GAAAK,IAAA7E,EAAAsE,EAAAhD,QAAApB,EAAAoE,EAAA9C,QACAtJ,MAAAuM,YAAArJ,KAAAyJ,EACA,IAAAC,GAAA5M,KAAAuM,YACAM,EAAA,WACA,GAAA/N,GAAA8N,EAAAvK,QAAAsK,EACA7N,IAAA,GACA8N,EAAAE,OAAAhO,EAAA,GAGAT,YAAAwO,EAAAE,KAIA,QAAAC,GAAAP,GAEA,IAAA,GADA3E,GAAA2E,EAAAjE,SAAAY,QAAApB,EAAAyE,EAAAjE,SAAAc,QACAxK,EAAA,EAAAA,EAAAkB,KAAAuM,YAAAvN,OAAAF,IAAA,CACA,GAAAmO,GAAAjN,KAAAuM,YAAAzN,GACAoO,EAAAlD,KAAA/B,IAAAH,EAAAmF,EAAAnF,GAAAqF,EAAAnD,KAAA/B,IAAAD,EAAAiF,EAAAjF,EACA,IAAAkF,GAAAE,IAAAD,GAAAC,GACA,OAAA,EAGA,OAAA,EAsBA,QAAAC,GAAAhJ,EAAAiJ,GACAtN,KAAAqE,QAAAA,EACArE,KAAAuN,IAAAD,GAmGA,QAAAE,GAAAC,GAEA,GAAAvL,EAAAuL,EAAAC,IACA,MAAAA,GAGA,IAAAC,GAAAzL,EAAAuL,EAAAG,IACAC,EAAA3L,EAAAuL,EAAAK,GAMA,OAAAH,IAAAE,EACAH,GAIAC,GAAAE,EACAF,EAAAC,GAAAE,GAIA5L,EAAAuL,EAAAM,IACAA,GAGAC,GA2DA,QAAAC,GAAAzJ,GACAxE,KAAAwE,QAAA3D,MAAAb,KAAAkO,SAAA1J,OAEAxE,KAAAmO,GAAAvK,IAEA5D,KAAAqE,QAAA,KAGArE,KAAAwE,QAAAI,OAAA1D,EAAAlB,KAAAwE,QAAAI,QAAA,GAEA5E,KAAAoO,MAAAC,GAEArO,KAAAsO,gBACAtO,KAAAuO,eAqOA,QAAAC,GAAAJ,GACA,MAAAA,GAAAK,GACA,SACAL,EAAAM,GACA,MACAN,EAAAO,GACA,OACAP,EAAAQ,GACA,QAEA,GAQA,QAAAC,GAAA9F,GACA,MAAAA,IAAAY,GACA,OACAZ,GAAAW,GACA,KACAX,GAAAS,GACA,OACAT,GAAAU,GACA,QAEA,GASA,QAAAqF,GAAAC,EAAAC,GACA,GAAA3K,GAAA2K,EAAA3K,OACA,OAAAA,GACAA,EAAA4K,IAAAF,GAEAA,EAQA,QAAAG,KACAjB,EAAAlO,MAAAC,KAAAC,WA6DA,QAAAkP,MACAD,EAAAnP,MAAAC,KAAAC,WAEAD,KAAAoP,GAAA,KACApP,KAAAqP,GAAA,KA4EA,QAAAC,MACAJ,EAAAnP,MAAAC,KAAAC,WAsCA,QAAAsP,MACAtB,EAAAlO,MAAAC,KAAAC,WAEAD,KAAAwP,OAAA,KACAxP,KAAAyP,OAAA,KAmEA,QAAAC,MACAR,EAAAnP,MAAAC,KAAAC,WA8BA,QAAA0P,MACAT,EAAAnP,MAAAC,KAAAC,WA2DA,QAAA2P,MACA3B,EAAAlO,MAAAC,KAAAC,WAIAD,KAAA6P,OAAA,EACA7P,KAAA8P,SAAA,EAEA9P,KAAAwP,OAAA,KACAxP,KAAAyP,OAAA,KACAzP,KAAA+P,MAAA,EAqGA,QAAAC,IAAAjM,EAAAS,GAGA,MAFAA,GAAAA,MACAA,EAAAyL,YAAA/O,EAAAsD,EAAAyL,YAAAD,GAAA9B,SAAAgC,QACA,GAAAC,IAAApM,EAAAS,GAiIA,QAAA2L,IAAApM,EAAAS,GACAxE,KAAAwE,QAAA3D,MAAAmP,GAAA9B,SAAA1J,OAEAxE,KAAAwE,QAAAC,YAAAzE,KAAAwE,QAAAC,aAAAV,EAEA/D,KAAAoQ,YACApQ,KAAAmG,WACAnG,KAAAiQ,eACAjQ,KAAAqQ,eAEArQ,KAAA+D,QAAAA,EACA/D,KAAAyF,MAAAX,EAAA9E,MACAA,KAAAsQ,YAAA,GAAAjD,GAAArN,KAAAA,KAAAwE,QAAA8L,aAEAC,GAAAvQ,MAAA,GAEArB,EAAAqB,KAAAwE,QAAAyL,YAAA,SAAAO,GACA,GAAAxB,GAAAhP,KAAAyQ,IAAA,GAAAD,GAAA,GAAAA,EAAA,IACAA,GAAA,IAAAxB,EAAA0B,cAAAF,EAAA,IACAA,EAAA,IAAAxB,EAAA2B,eAAAH,EAAA,KACAxQ,MA4PA,QAAAuQ,IAAAlM,EAAAoM,GACA,GAAA1M,GAAAM,EAAAN,OACA,IAAAA,EAAA6M,MAAA,CAGA,GAAApN,EACA7E,GAAA0F,EAAAG,QAAAqM,SAAA,SAAAvD,EAAAjO,GACAmE,EAAAH,EAAAU,EAAA6M,MAAAvR,GACAoR,GACApM,EAAAgM,YAAA7M,GAAAO,EAAA6M,MAAApN,GACAO,EAAA6M,MAAApN,GAAA8J,GAEAvJ,EAAA6M,MAAApN,GAAAa,EAAAgM,YAAA7M,IAAA,KAGAiN,IACApM,EAAAgM,iBASA,QAAAS,IAAAC,EAAAC,GACA,GAAAC,GAAAnT,EAAAoT,YAAA,QACAD,GAAAE,UAAAJ,GAAA,GAAA,GACAE,EAAAG,QAAAJ,EACAA,EAAA1P,OAAA+P,cAAAJ,GAngFA,GA+FApQ,IA/FA8C,IAAA,GAAA,SAAA,MAAA,KAAA,KAAA,KACA2N,GAAAxT,EAAAyT,cAAA,OAEAtQ,GAAA,WAEAoI,GAAAW,KAAAX,MACApB,GAAA+B,KAAA/B,IACAjB,GAAAwK,KAAAxK,GA0FAnG,IADA,kBAAAJ,QAAAI,OACA,SAAAS,GACA,GAAAA,IAAAtD,GAAA,OAAAsD,EACA,KAAA,IAAAmQ,WAAA,6CAIA,KAAA,GADAC,GAAAjR,OAAAa,GACAqQ,EAAA,EAAAA,EAAA1R,UAAAjB,OAAA2S,IAAA,CACA,GAAAC,GAAA3R,UAAA0R,EACA,IAAAC,IAAA5T,GAAA,OAAA4T,EACA,IAAA,GAAAC,KAAAD,GACAA,EAAA1S,eAAA2S,KACAH,EAAAG,GAAAD,EAAAC,IAKA,MAAAH,IAGAjR,OAAAI,MAWA,IAAAiR,IAAA3S,EAAA,SAAA4S,EAAAtP,EAAAuP,GAGA,IAFA,GAAAC,GAAAxR,OAAAwR,KAAAxP,GACA3D,EAAA,EACAA,EAAAmT,EAAAjT,UACAgT,GAAAA,GAAAD,EAAAE,EAAAnT,MAAAd,KACA+T,EAAAE,EAAAnT,IAAA2D,EAAAwP,EAAAnT,KAEAA,GAEA,OAAAiT,IACA,SAAA,iBASAC,GAAA7S,EAAA,SAAA4S,EAAAtP,GACA,MAAAqP,IAAAC,EAAAtP,GAAA,IACA,QAAA,iBAiNAoB,GAAA,EAeAqO,GAAA,wCAEA9M,GAAA,gBAAAvH,GACAmH,GAAA3B,EAAAxF,EAAA,kBAAAG,EACAkH,GAAAE,IAAA8M,GAAAC,KAAAC,UAAAC,WAOAnJ,GAAA,GAEAnD,GAAA,EACAgG,GAAA,EACA9F,GAAA,EACAC,GAAA,EAEAqD,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,GAEA2I,GAAA9I,GAAAC,GACA8I,GAAA7I,GAAAC,GACA6I,GAAAF,GAAAC,GAEAxI,IAAA,IAAA,KACAO,IAAA,UAAA,UA4BAlG,GAAA5D,WAKAgB,QAAA,aAKAqD,KAAA,WACA7E,KAAAuK,MAAAlJ,EAAArB,KAAA+D,QAAA/D,KAAAuK,KAAAvK,KAAA0E,YACA1E,KAAAiL,UAAA5J,EAAArB,KAAAsB,OAAAtB,KAAAiL,SAAAjL,KAAA0E,YACA1E,KAAAyK,OAAApJ,EAAAyC,EAAA9D,KAAA+D,SAAA/D,KAAAyK,MAAAzK,KAAA0E,aAMA+N,QAAA,WACAzS,KAAAuK,MAAA3I,EAAA5B,KAAA+D,QAAA/D,KAAAuK,KAAAvK,KAAA0E,YACA1E,KAAAiL,UAAArJ,EAAA5B,KAAAsB,OAAAtB,KAAAiL,SAAAjL,KAAA0E,YACA1E,KAAAyK,OAAA7I,EAAAkC,EAAA9D,KAAA+D,SAAA/D,KAAAyK,MAAAzK,KAAA0E,aA4TA,IAAAgO,KACAC,UAAA5M,GACA6M,UAAA7G,GACA8G,QAAA5M,IAGAuE,GAAA,YACAE,GAAA,mBAgBAxK,GAAAoF,EAAAlB,GAKA5C,QAAA,SAAAmD,GACA,GAAAa,GAAAkN,GAAA/N,EAAAjD,KAGA8D,GAAAO,IAAA,IAAApB,EAAAmO,SACA9S,KAAA2K,SAAA,GAGAnF,EAAAuG,IAAA,IAAApH,EAAAoO,QACAvN,EAAAS,IAIAjG,KAAA2K,UAIAnF,EAAAS,KACAjG,KAAA2K,SAAA,GAGA3K,KAAAsE,SAAAtE,KAAAqE,QAAAmB,GACAG,UAAAhB,GACAkB,iBAAAlB,GACAqO,YAvbA,QAwbAxK,SAAA7D,OAKA,IAAAsO,KACAC,YAAAnN,GACAoN,YAAApH,GACAqH,UAAAnN,GACAoN,cAAAnN,GACAoN,WAAApN,IAIAqN,IACAC,EAzcA,QA0cAC,EAzcA,MA0cAC,EAzcA,QA0cAC,EAzcA,UA4cA/I,GAAA,cACAC,GAAA,qCAGAhN,GAAA+V,iBAAA/V,EAAAgW,eACAjJ,GAAA,gBACAC,GAAA,6CAiBA3K,EAAA+E,EAAAb,GAKA5C,QAAA,SAAAmD,GACA,GAAAmG,GAAA9K,KAAA8K,MACAgJ,GAAA,EAEAC,EAAApP,EAAAjD,KAAAsS,cAAArU,QAAA,KAAA,IACA6F,EAAAyN,GAAAc,GACAf,EAAAO,GAAA5O,EAAAqO,cAAArO,EAAAqO,YAEAiB,EAnfA,SAmfAjB,EAGAkB,EAAA1R,EAAAsI,EAAAnG,EAAAwP,UAAA,YAGA3O,GAAAO,KAAA,IAAApB,EAAAmO,QAAAmB,GACAC,EAAA,IACApJ,EAAA5H,KAAAyB,GACAuP,EAAApJ,EAAA9L,OAAA,GAEAwG,GAAAS,GAAAC,MACA4N,GAAA,GAIAI,EAAA,IAKApJ,EAAAoJ,GAAAvP,EAEA3E,KAAAsE,SAAAtE,KAAAqE,QAAAmB,GACAG,SAAAmF,EACAjF,iBAAAlB,GACAqO,YAAAA,EACAxK,SAAA7D,IAGAmP,GAEAhJ,EAAAgC,OAAAoH,EAAA,MAKA,IAAAE,KACAC,WAAAtO,GACAuO,UAAAvI,GACAwI,SAAAtO,GACAuO,YAAAtO,IAGAgF,GAAA,aACAC,GAAA,2CAeAjL,GAAA8K,EAAA5G,GACA5C,QAAA,SAAAmD,GACA,GAAAjD,GAAA0S,GAAAzP,EAAAjD,KAOA,IAJAA,IAAAqE,KACA/F,KAAAoL,SAAA,GAGApL,KAAAoL,QAAA,CAIA,GAAAG,GAAAF,EAAApM,KAAAe,KAAA2E,EAAAjD,EAGAA,IAAAuE,GAAAC,KAAAqF,EAAA,GAAAvM,OAAAuM,EAAA,GAAAvM,QAAA,IACAgB,KAAAoL,SAAA,GAGApL,KAAAsE,SAAAtE,KAAAqE,QAAA3C,GACAiE,SAAA4F,EAAA,GACA1F,gBAAA0F,EAAA,GACAyH,YAtkBA,QAukBAxK,SAAA7D,OAsBA,IAAA8P,KACAJ,WAAAtO,GACAuO,UAAAvI,GACAwI,SAAAtO,GACAuO,YAAAtO,IAGAyF,GAAA,2CAcAzL,GAAAiF,EAAAf,GACA5C,QAAA,SAAAmD,GACA,GAAAjD,GAAA+S,GAAA9P,EAAAjD,MACA6J,EAAAM,EAAA5M,KAAAe,KAAA2E,EAAAjD,EACA6J,IAIAvL,KAAAsE,SAAAtE,KAAAqE,QAAA3C,GACAiE,SAAA4F,EAAA,GACA1F,gBAAA0F,EAAA,GACAyH,YA7nBA,QA8nBAxK,SAAA7D,MA4EA,IAAAoI,IAAA,KACAK,GAAA,EAaAlN,GAAAmF,EAAAjB,GAOA5C,QAAA,SAAA6C,EAAAqQ,EAAAC,GACA,GAAAV,GAhuBA,SAguBAU,EAAA3B,YACA4B,EA/tBA,SA+tBAD,EAAA3B,WAEA,MAAA4B,GAAAD,EAAAE,oBAAAF,EAAAE,mBAAAC,kBAAA,CAKA,GAAAb,EACAzH,EAAAvN,KAAAe,KAAA0U,EAAAC,OACA,IAAAC,GAAA5H,EAAA/N,KAAAe,KAAA2U,GACA,MAGA3U,MAAAsE,SAAAD,EAAAqQ,EAAAC,KAMAlC,QAAA,WACAzS,KAAAoM,MAAAqG,UACAzS,KAAAqM,MAAAoG,YA0CA,IAAAsC,IAAA1R,EAAAiO,GAAAV,MAAA,eACAoE,GAAAD,KAAA/W,EAIAgQ,GAAA,OACAD,GAAA,eACAL,GAAA,OACAE,GAAA,QACAE,GAAA,QACAmH,GA4IA,WACA,IAAAD,GACA,OAAA,CAEA,IAAAE,MACAC,EAAAtX,EAAAuX,KAAAvX,EAAAuX,IAAAC,QAOA,QANA,OAAA,eAAA,QAAA,QAAA,cAAA,QAAAtW,QAAA,SAAAgC,GAIAmU,EAAAnU,IAAAoU,GAAAtX,EAAAuX,IAAAC,SAAA,eAAAtU,KAEAmU,IA1IA7H,GAAA7M,WAKA+M,IAAA,SAAAD,GAzBA,WA2BAA,IACAA,EAAAtN,KAAAsV,WAGAN,IAAAhV,KAAAqE,QAAAN,QAAA6M,OAAAqE,GAAA3H,KACAtN,KAAAqE,QAAAN,QAAA6M,MAAAmE,IAAAzH,GAEAtN,KAAAyN,QAAAH,EAAA0G,cAAA1R,QAMAiT,OAAA,WACAvV,KAAAuN,IAAAvN,KAAAqE,QAAAG,QAAA8L,cAOAgF,QAAA,WACA,GAAA7H,KAMA,OALA9O,GAAAqB,KAAAqE,QAAA4L,YAAA,SAAAjB,GACAlO,EAAAkO,EAAAxK,QAAAI,QAAAoK,MACAvB,EAAAA,EAAA/B,OAAAsD,EAAAwG,qBAGAhI,EAAAC,EAAAgI,KAAA,OAOAC,gBAAA,SAAAjQ,GACA,GAAA+C,GAAA/C,EAAA+C,SACAO,EAAAtD,EAAA8B,eAGA,IAAAvH,KAAAqE,QAAA8B,QAAAwP,UAEA,WADAnN,GAAAoN,gBAIA,IAAAnI,GAAAzN,KAAAyN,QACAoI,EAAA3T,EAAAuL,EAAAC,MAAAuH,GAAAvH,IACAG,EAAA3L,EAAAuL,EAAAK,MAAAmH,GAAAnH,IACAH,EAAAzL,EAAAuL,EAAAG,MAAAqH,GAAArH,GAEA,IAAAiI,EAAA,CAGA,GAAAC,GAAA,IAAArQ,EAAAE,SAAA3G,OACA+W,EAAAtQ,EAAA2B,SAAA,EACA4O,EAAAvQ,EAAAwB,UAAA,GAEA,IAAA6O,GAAAC,GAAAC,EACA,OAIA,MAAArI,IAAAE,MAAA,GAKAgI,GACAhI,GAAA9E,EAAAuJ,IACA3E,GAAA5E,EAAAwJ,GACAvS,KAAAiW,WAAAzN,OAHA,IAWAyN,WAAA,SAAAzN,GACAxI,KAAAqE,QAAA8B,QAAAwP,WAAA,EACAnN,EAAAoN,kBAiFA,IAAAvH,IAAA,EACAO,GAAA,EACAD,GAAA,EACAD,GAAA,EACAwH,GAAAxH,GACAD,GAAA,EAyBAR,GAAAzN,WAKA0N,YAOAX,IAAA,SAAA/I,GAKA,MAJA3D,IAAAb,KAAAwE,QAAAA,GAGAxE,KAAAqE,SAAArE,KAAAqE,QAAAiM,YAAAiF,SACAvV,MAQA0Q,cAAA,SAAA3B,GACA,GAAAxQ,EAAAwQ,EAAA,gBAAA/O,MACA,MAAAA,KAGA,IAAAsO,GAAAtO,KAAAsO,YAMA,OALAS,GAAAD,EAAAC,EAAA/O,MACAsO,EAAAS,EAAAZ,MACAG,EAAAS,EAAAZ,IAAAY,EACAA,EAAA2B,cAAA1Q,OAEAA,MAQAmW,kBAAA,SAAApH,GACA,MAAAxQ,GAAAwQ,EAAA,oBAAA/O,MACAA,MAGA+O,EAAAD,EAAAC,EAAA/O,YACAA,MAAAsO,aAAAS,EAAAZ,IACAnO,OAQA2Q,eAAA,SAAA5B,GACA,GAAAxQ,EAAAwQ,EAAA,iBAAA/O,MACA,MAAAA,KAGA,IAAAuO,GAAAvO,KAAAuO,WAMA,OALAQ,GAAAD,EAAAC,EAAA/O,OACA,IAAAwC,EAAA+L,EAAAQ,KACAR,EAAArL,KAAA6L,GACAA,EAAA4B,eAAA3Q,OAEAA,MAQAoW,mBAAA,SAAArH,GACA,GAAAxQ,EAAAwQ,EAAA,qBAAA/O,MACA,MAAAA,KAGA+O,GAAAD,EAAAC,EAAA/O,KACA,IAAA2R,GAAAnP,EAAAxC,KAAAuO,YAAAQ,EAIA,OAHA4C,IAAA,GACA3R,KAAAuO,YAAAzB,OAAA6E,EAAA,GAEA3R,MAOAqW,mBAAA,WACA,MAAArW,MAAAuO,YAAAvP,OAAA,GAQAsX,iBAAA,SAAAvH,GACA,QAAA/O,KAAAsO,aAAAS,EAAAZ,KAQA9H,KAAA,SAAAZ,GAIA,QAAAY,GAAA0K,GACAxM,EAAAF,QAAAgC,KAAA0K,EAAAtL,GAJA,GAAAlB,GAAAvE,KACAoO,EAAApO,KAAAoO,KAOAA,GAAAM,IACArI,EAAA9B,EAAAC,QAAAuM,MAAAvC,EAAAJ,IAGA/H,EAAA9B,EAAAC,QAAAuM,OAEAtL,EAAA8Q,iBACAlQ,EAAAZ,EAAA8Q,iBAIAnI,GAAAM,IACArI,EAAA9B,EAAAC,QAAAuM,MAAAvC,EAAAJ,KAUAoI,QAAA,SAAA/Q,GACA,GAAAzF,KAAAyW,UACA,MAAAzW,MAAAqG,KAAAZ,EAGAzF,MAAAoO,MA7KA,IAoLAqI,QAAA,WAEA,IADA,GAAA3X,GAAA,EACAA,EAAAkB,KAAAuO,YAAAvP,QAAA,CACA,KAAAgB,KAAAuO,YAAAzP,GAAAsP,OAvLA,GAuLAC,KACA,OAAA,CAEAvP,KAEA,OAAA,GAOAwH,UAAA,SAAAqO,GAGA,GAAA+B,GAAA7V,MAAA8T,EAGA,KAAA7T,EAAAd,KAAAwE,QAAAI,QAAA5E,KAAA0W,IAGA,MAFA1W,MAAA2W,aACA3W,KAAAoO,MA3MA,GAgNApO,MAAAoO,OAAA8H,GAAAzH,GAhNA,MAiNAzO,KAAAoO,MAAAC,IAGArO,KAAAoO,MAAApO,KAAA4W,QAAAF,GAIA1W,KAAAoO,OAAAQ,GAAAD,GAAAD,GAAAD,KACAzO,KAAAwW,QAAAE,IAWAE,QAAA,SAAAjC,KAOAa,eAAA,aAOAmB,MAAA,cA8DAzW,EAAAgP,EAAAjB,GAKAC,UAKAvI,SAAA,GASAkR,SAAA,SAAApR,GACA,GAAAqR,GAAA9W,KAAAwE,QAAAmB,QACA,OAAA,KAAAmR,GAAArR,EAAAE,SAAA3G,SAAA8X,GASAF,QAAA,SAAAnR,GACA,GAAA2I,GAAApO,KAAAoO,MACA5I,EAAAC,EAAAD,UAEAuR,EAAA3I,GAAAQ,GAAAD,IACAqI,EAAAhX,KAAA6W,SAAApR,EAGA,OAAAsR,KAAAvR,EAAAU,KAAA8Q,GACA5I,EAAAK,GACAsI,GAAAC,EACAxR,EAAAS,GACAmI,EAAAM,GACAN,EAAAQ,GAGAR,EAAAO,GAFAC,GA5VA,MAiXA1O,EAAAiP,GAAAD,GAKAhB,UACA6C,MAAA,MACAkG,UAAA,GACAtR,SAAA,EACAoD,UAAAyJ,IAGAgD,eAAA,WACA,GAAAzM,GAAA/I,KAAAwE,QAAAuE,UACA0E,IAOA,OANA1E,GAAAuJ,IACA7E,EAAAvK,KAAA4K,IAEA/E,EAAAwJ,IACA9E,EAAAvK,KAAA0K,IAEAH,GAGAyJ,cAAA,SAAAzR,GACA,GAAAjB,GAAAxE,KAAAwE,QACA2S,GAAA,EACA/P,EAAA3B,EAAA2B,SACA2B,EAAAtD,EAAAsD,UACAjB,EAAArC,EAAAgC,OACAO,EAAAvC,EAAAiC,MAeA,OAZAqB,GAAAvE,EAAAuE,YACAvE,EAAAuE,UAAAuJ,IACAvJ,EAAA,IAAAjB,EAAAyB,GAAAzB,EAAA,EAAA0B,GAAAC,GACA0N,EAAArP,GAAA9H,KAAAoP,GACAhI,EAAA4C,KAAA/B,IAAAxC,EAAAgC,UAEAsB,EAAA,IAAAf,EAAAuB,GAAAvB,EAAA,EAAA0B,GAAAC,GACAwN,EAAAnP,GAAAhI,KAAAqP,GACAjI,EAAA4C,KAAA/B,IAAAxC,EAAAiC,UAGAjC,EAAAsD,UAAAA,EACAoO,GAAA/P,EAAA5C,EAAAyS,WAAAlO,EAAAvE,EAAAuE,WAGA8N,SAAA,SAAApR,GACA,MAAAyJ,GAAA1O,UAAAqW,SAAA5X,KAAAe,KAAAyF,KACAzF,KAAAoO,MAAAQ,MAAA5O,KAAAoO,MAAAQ,KAAA5O,KAAAkX,cAAAzR,KAGAY,KAAA,SAAAZ,GAEAzF,KAAAoP,GAAA3J,EAAAgC,OACAzH,KAAAqP,GAAA5J,EAAAiC,MAEA,IAAAqB,GAAA8F,EAAApJ,EAAAsD,UAEAA,KACAtD,EAAA8Q,gBAAAvW,KAAAwE,QAAAuM,MAAAhI,GAEA/I,KAAAY,OAAAyF,KAAApH,KAAAe,KAAAyF,MAcAvF,EAAAoP,GAAAJ,GAKAhB,UACA6C,MAAA,QACAkG,UAAA,EACAtR,SAAA,GAGA6P,eAAA,WACA,OAAA9H,KAGAmJ,SAAA,SAAApR,GACA,MAAAzF,MAAAY,OAAAiW,SAAA5X,KAAAe,KAAAyF,KACAuE,KAAA/B,IAAAxC,EAAAyC,MAAA,GAAAlI,KAAAwE,QAAAyS,WAAAjX,KAAAoO,MAAAQ,KAGAvI,KAAA,SAAAZ,GACA,GAAA,IAAAA,EAAAyC,MAAA,CACA,GAAAkP,GAAA3R,EAAAyC,MAAA,EAAA,KAAA,KACAzC,GAAA8Q,gBAAAvW,KAAAwE,QAAAuM,MAAAqG,EAEApX,KAAAY,OAAAyF,KAAApH,KAAAe,KAAAyF,MAiBAvF,EAAAqP,GAAAtB,GAKAC,UACA6C,MAAA,QACApL,SAAA,EACA0R,KAAA,IACAJ,UAAA,GAGAzB,eAAA,WACA,OAAAxH,KAGA4I,QAAA,SAAAnR,GACA,GAAAjB,GAAAxE,KAAAwE,QACA8S,EAAA7R,EAAAE,SAAA3G,SAAAwF,EAAAmB,SACA4R,EAAA9R,EAAA2B,SAAA5C,EAAAyS,UACAO,EAAA/R,EAAAwB,UAAAzC,EAAA6S,IAMA,IAJArX,KAAAyP,OAAAhK,GAIA8R,IAAAD,GAAA7R,EAAAD,WAAAS,GAAAC,MAAAsR,EACAxX,KAAA2W,YACA,IAAAlR,EAAAD,UAAAO,GACA/F,KAAA2W,QACA3W,KAAAwP,OAAAvR,EAAA,WACA+B,KAAAoO,MAAA8H,GACAlW,KAAAwW,WACAhS,EAAA6S,KAAArX,UACA,IAAAyF,EAAAD,UAAAS,GACA,MAAAiQ,GAEA,OA7gBA,KAghBAS,MAAA,WACAc,aAAAzX,KAAAwP,SAGAnJ,KAAA,SAAAZ,GACAzF,KAAAoO,QAAA8H,KAIAzQ,GAAAA,EAAAD,UAAAS,GACAjG,KAAAqE,QAAAgC,KAAArG,KAAAwE,QAAAuM,MAAA,KAAAtL,IAEAzF,KAAAyP,OAAA1I,UAAAC,KACAhH,KAAAqE,QAAAgC,KAAArG,KAAAwE,QAAAuM,MAAA/Q,KAAAyP,aAeAvP,EAAAwP,GAAAR,GAKAhB,UACA6C,MAAA,SACAkG,UAAA,EACAtR,SAAA,GAGA6P,eAAA,WACA,OAAA9H,KAGAmJ,SAAA,SAAApR,GACA,MAAAzF,MAAAY,OAAAiW,SAAA5X,KAAAe,KAAAyF,KACAuE,KAAA/B,IAAAxC,EAAA2C,UAAApI,KAAAwE,QAAAyS,WAAAjX,KAAAoO,MAAAQ,OAcA1O,EAAAyP,GAAAT,GAKAhB,UACA6C,MAAA,QACAkG,UAAA,GACArO,SAAA,GACAG,UAAAuJ,GAAAC,GACA5M,SAAA,GAGA6P,eAAA,WACA,MAAArG,IAAA3O,UAAAgV,eAAAvW,KAAAe,OAGA6W,SAAA,SAAApR,GACA,GACAmD,GADAG,EAAA/I,KAAAwE,QAAAuE,SAWA,OARAA,IAAAuJ,GAAAC,IACA3J,EAAAnD,EAAAkC,gBACAoB,EAAAuJ,GACA1J,EAAAnD,EAAAoC,iBACAkB,EAAAwJ,KACA3J,EAAAnD,EAAAsC,kBAGA/H,KAAAY,OAAAiW,SAAA5X,KAAAe,KAAAyF,IACAsD,EAAAtD,EAAA8B,iBACA9B,EAAA2B,SAAApH,KAAAwE,QAAAyS,WACAxR,EAAA6C,aAAAtI,KAAAwE,QAAAmB,UACAsC,GAAAW,GAAA5I,KAAAwE,QAAAoE,UAAAnD,EAAAD,UAAAS,IAGAI,KAAA,SAAAZ,GACA,GAAAsD,GAAA8F,EAAApJ,EAAA8B,gBACAwB,IACA/I,KAAAqE,QAAAgC,KAAArG,KAAAwE,QAAAuM,MAAAhI,EAAAtD,GAGAzF,KAAAqE,QAAAgC,KAAArG,KAAAwE,QAAAuM,MAAAtL,MA2BAvF,EAAA0P,GAAA3B,GAKAC,UACA6C,MAAA,MACApL,SAAA,EACA+R,KAAA,EACAC,SAAA,IACAN,KAAA,IACAJ,UAAA,EACAW,aAAA,IAGApC,eAAA,WACA,OAAAzH,KAGA6I,QAAA,SAAAnR,GACA,GAAAjB,GAAAxE,KAAAwE,QAEA8S,EAAA7R,EAAAE,SAAA3G,SAAAwF,EAAAmB,SACA4R,EAAA9R,EAAA2B,SAAA5C,EAAAyS,UACAY,EAAApS,EAAAwB,UAAAzC,EAAA6S,IAIA,IAFArX,KAAA2W,QAEAlR,EAAAD,UAAAO,IAAA,IAAA/F,KAAA+P,MACA,MAAA/P,MAAA8X,aAKA,IAAAP,GAAAM,GAAAP,EAAA,CACA,GAAA7R,EAAAD,WAAAS,GACA,MAAAjG,MAAA8X,aAGA,IAAAC,IAAA/X,KAAA6P,OAAApK,EAAAsB,UAAA/G,KAAA6P,MAAArL,EAAAmT,SACAK,GAAAhY,KAAA8P,SAAAzI,EAAArH,KAAA8P,QAAArK,EAAAoB,QAAArC,EAAAoT,YAEA5X,MAAA6P,MAAApK,EAAAsB,UACA/G,KAAA8P,QAAArK,EAAAoB,OAEAmR,GAAAD,EAGA/X,KAAA+P,OAAA,EAFA/P,KAAA+P,MAAA,EAKA/P,KAAAyP,OAAAhK,CAKA,IAAA,IADAzF,KAAA+P,MAAAvL,EAAAkT,KAIA,MAAA1X,MAAAqW,sBAGArW,KAAAwP,OAAAvR,EAAA,WACA+B,KAAAoO,MAAA8H,GACAlW,KAAAwW,WACAhS,EAAAmT,SAAA3X,MACA4O,IANAsH,GAUA,MAttBA,KAytBA4B,YAAA,WAIA,MAHA9X,MAAAwP,OAAAvR,EAAA,WACA+B,KAAAoO,MA3tBA,IA4tBApO,KAAAwE,QAAAmT,SAAA3X,MA5tBA,IAguBA2W,MAAA,WACAc,aAAAzX,KAAAwP,SAGAnJ,KAAA,WACArG,KAAAoO,OAAA8H,KACAlW,KAAAyP,OAAAwI,SAAAjY,KAAA+P,MACA/P,KAAAqE,QAAAgC,KAAArG,KAAAwE,QAAAuM,MAAA/Q,KAAAyP,YAoBAO,GAAAkI,QAAA,QAMAlI,GAAA9B,UAOAiK,WAAA,EAQA7H,YAl9BA,UAw9BA1L,QAAA,EASAH,YAAA,KAOAM,WAAA,KAOAmL,SAEAR,IAAA9K,QAAA,KACA0K,IAAA1K,QAAA,IAAA,YACA+K,IAAA5G,UAAAuJ,MACAnD,IAAApG,UAAAuJ,KAAA,WACA1C,KACAA,IAAAmB,MAAA,YAAA2G,KAAA,IAAA,SACAnI,KAQAsB,UAMAuH,WAAA,OAOAC,YAAA,OASAC,aAAA,OAOAC,eAAA,OAOAC,SAAA,OAQAC,kBAAA,iBAoCAtI,IAAA3P,WAMA+M,IAAA,SAAA/I,GAaA,MAZA3D,IAAAb,KAAAwE,QAAAA,GAGAA,EAAA8L,aACAtQ,KAAAsQ,YAAAiF,SAEA/Q,EAAAC,cAEAzE,KAAAyF,MAAAgN,UACAzS,KAAAyF,MAAAnE,OAAAkD,EAAAC,YACAzE,KAAAyF,MAAAZ,QAEA7E,MASA0Y,KAAA,SAAAC,GACA3Y,KAAAmG,QAAAyS,QAAAD,EA5DA,EADA,GAsEArS,UAAA,SAAAqO,GACA,GAAAxO,GAAAnG,KAAAmG,OACA,KAAAA,EAAAyS,QAAA,CAKA5Y,KAAAsQ,YAAAoF,gBAAAf,EAEA,IAAA3F,GACAiB,EAAAjQ,KAAAiQ,YAKA4I,EAAA1S,EAAA0S,gBAIAA,GAAAA,GAAAA,EAAAzK,MAAA8H,MACA2C,EAAA1S,EAAA0S,cAAA,KAIA,KADA,GAAA/Z,GAAA,EACAA,EAAAmR,EAAAjR,QACAgQ,EAAAiB,EAAAnR,GA9FA,IAsGAqH,EAAAyS,SACAC,GAAA7J,GAAA6J,IACA7J,EAAAsH,iBAAAuC,GAGA7J,EAAA2H,QAFA3H,EAAA1I,UAAAqO,IAOAkE,GAAA7J,EAAAZ,OAAAQ,GAAAD,GAAAD,MACAmK,EAAA1S,EAAA0S,cAAA7J,GAEAlQ,MASAmQ,IAAA,SAAAD,GACA,GAAAA,YAAAf,GACA,MAAAe,EAIA,KAAA,GADAiB,GAAAjQ,KAAAiQ,YACAnR,EAAA,EAAAA,EAAAmR,EAAAjR,OAAAF,IACA,GAAAmR,EAAAnR,GAAA0F,QAAAuM,OAAA/B,EACA,MAAAiB,GAAAnR,EAGA,OAAA,OASA2R,IAAA,SAAAzB,GACA,GAAAzQ,EAAAyQ,EAAA,MAAAhP,MACA,MAAAA,KAIA,IAAA8Y,GAAA9Y,KAAAiP,IAAAD,EAAAxK,QAAAuM,MASA,OARA+H,IACA9Y,KAAA+Y,OAAAD,GAGA9Y,KAAAiQ,YAAA/M,KAAA8L,GACAA,EAAA3K,QAAArE,KAEAA,KAAAsQ,YAAAiF,SACAvG,GAQA+J,OAAA,SAAA/J,GACA,GAAAzQ,EAAAyQ,EAAA,SAAAhP,MACA,MAAAA,KAMA,IAHAgP,EAAAhP,KAAAiP,IAAAD,GAGA,CACA,GAAAiB,GAAAjQ,KAAAiQ,YACA0B,EAAAnP,EAAAyN,EAAAjB,IAEA,IAAA2C,IACA1B,EAAAnD,OAAA6E,EAAA,GACA3R,KAAAsQ,YAAAiF,UAIA,MAAAvV,OASAgZ,GAAA,SAAAC,EAAAzX,GACA,GAAAyX,IAAAjb,GAGAwD,IAAAxD,EAAA,CAIA,GAAAoS,GAAApQ,KAAAoQ,QAKA,OAJAzR,GAAA8C,EAAAwX,GAAA,SAAAlI,GACAX,EAAAW,GAAAX,EAAAW,OACAX,EAAAW,GAAA7N,KAAA1B,KAEAxB,OASAkZ,IAAA,SAAAD,EAAAzX,GACA,GAAAyX,IAAAjb,EAAA,CAIA,GAAAoS,GAAApQ,KAAAoQ,QAQA,OAPAzR,GAAA8C,EAAAwX,GAAA,SAAAlI,GACAvP,EAGA4O,EAAAW,IAAAX,EAAAW,GAAAjE,OAAAtK,EAAA4N,EAAAW,GAAAvP,GAAA,SAFA4O,GAAAW,KAKA/Q,OAQAqG,KAAA,SAAA0K,EAAAC,GAEAhR,KAAAwE,QAAA2T,WACArH,GAAAC,EAAAC,EAIA,IAAAZ,GAAApQ,KAAAoQ,SAAAW,IAAA/Q,KAAAoQ,SAAAW,GAAAnO,OACA,IAAAwN,GAAAA,EAAApR,OAAA,CAIAgS,EAAAtP,KAAAqP,EACAC,EAAA4E,eAAA,WACA5E,EAAAxI,SAAAoN,iBAIA,KADA,GAAA9W,GAAA,EACAA,EAAAsR,EAAApR,QACAoR,EAAAtR,GAAAkS,GACAlS,MAQA2T,QAAA,WACAzS,KAAA+D,SAAAwM,GAAAvQ,MAAA,GAEAA,KAAAoQ,YACApQ,KAAAmG,WACAnG,KAAAyF,MAAAgN,UACAzS,KAAA+D,QAAA,OAyCAlD,GAAAmP,IACAjK,YAAAA,GACAgG,WAAAA,GACA9F,UAAAA,GACAC,aAAAA,GAEAmI,eAAAA,GACAO,YAAAA,GACAD,cAAAA,GACAD,YAAAA,GACAwH,iBAAAA,GACAzH,gBAAAA,GACA0K,aAlrCA,GAorCA5P,eAAAA,GACAC,eAAAA,GACAC,gBAAAA,GACAC,aAAAA,GACAC,eAAAA,GACA2I,qBAAAA,GACAC,mBAAAA,GACAC,cAAAA,GAEArC,QAAAA,GACA/L,MAAAA,EACAiJ,YAAAA,EAEAlI,WAAAA,EACAG,WAAAA,EACAL,kBAAAA,EACAI,gBAAAA,EACA2F,iBAAAA,EAEAiD,WAAAA,EACAiB,eAAAA,EACAkK,IAAAxJ,GACAyJ,IAAAlK,GACAmK,MAAA3J,GACA4J,MAAAjK,GACAkK,OAAA9J,GACA+J,MAAAlK,GAEAyJ,GAAA3X,EACA6X,IAAAtX,EACAjD,KAAAA,EACAqT,MAAAA,GACAF,OAAAA,GACAjR,OAAAA,GACAX,QAAAA,EACA5B,OAAAA,EACA+E,SAAAA,SAKA,KAAAxF,EAAAA,EAAA,mBAAA0G,MAAAA,SACAyL,OAAAA,GAEA,kBAAA0J,SAAAA,OAAAC,IACAD,OAAA,WACA,MAAA1J,MAEA,mBAAA4J,SAAAA,OAAAC,QACAD,OAAAC,QAAA7J,GAEAnS,EAAA,OAAAmS,IAGAnS,OAAAC,UCllFA,WAAA,QAAAgc,GAAA3W,EAAAC,EAAA2W,GAAA,MAAA5W,GAAAlE,KAAAc,MAAAoD,EAAA6W,KAAA/Z,WAAA,QAAAga,GAAA9W,EAAAC,EAAA2W,GAAA,IAAA5W,EAAA,KAAA1D,QAAA,IAAA,EAAAQ,UAAAjB,OAAA,CAAA,GAAAkb,GAAAzb,MAAA+B,UAAAoC,MAAA3D,KAAAgB,UAAA,EAAA,OAAA,YAAA,GAAA8Z,GAAAtb,MAAA+B,UAAAoC,MAAA3D,KAAAgB,UAAA,OAAAxB,OAAA+B,UAAA2Z,QAAApa,MAAAga,EAAAG,GAAA/W,EAAApD,MAAAqD,EAAA2W,IAAA,MAAA,YAAA,MAAA5W,GAAApD,MAAAqD,EAAAnD,YAAA,QAAAma,GAAAjX,EAAAC,EAAA2W,GAAA,MAAAK,GAAAC,SAAA7Z,UAAAwZ,OAAA,GAAAK,SAAA7Z,UAAAwZ,KAAAM,WAAAjY,QAAA,eAAAyX,EAAAG,EAAAG,EAAAra,MAAA,KAAAE,WAAA,QAAAsa,GAAApX,EAAAC,GAAApD,KAAAmD,EAAAA,EAAAnD,KAAAwa,EAAApX,GAAAD,EAAAnD,KAAA+Z,EAAA/Z,KAAAwa,EAAA1c,SAAA,QAAAmP,GAAA9J,EAAAC,EAAA2W,EAAAG,GAAA,GAAA9W,EAAAD,EAAA4W,EAAAxI,cAAAnO,GAAA2W,EAAA,IAAA,GAAAva,KAAAua,GAAAA,EAAA7a,eAAAM,KAAA,SAAAA,EAAA4D,EAAAwN,MAAA6J,QAAAV,EAAAva,GAAA4D,EAAAsX,aAAAlb,EAAAua,EAAAva,IAAA,OAAA0a,IAAA9W,EAAAuX,YAAAxX,EAAA4W,EAAAa,eAAAV,IAAA9W,EAAA,QAAAyX,GAAA1X,EAAAC,EAAA2W,GAAA5W,EAAAA,EAAA4W,EAAAe,qBAAA1X,GAAA,GAAAD,IAAAA,EAAArF,SAAAid,iBAAA5X,EAAA6X,aAAAjB,EAAA5W,EAAA8X,WAAA,QAAA9R,GAAAhG,GAAAA,EAAAlB,YAAAkB,EAAAlB,WAAAiZ,YAAA/X,GACA,QAAAgY,GAAAhY,EAAAC,EAAA2W,GAAA3W,EAAAA,MAAA2W,EAAAA,KAAA,KAAA,GAAAG,GAAA/W,EAAAiY,UAAA7Y,MAAA,OAAA/C,EAAA,EAAAA,EAAA4D,EAAApE,OAAAQ,GAAA,EAAA,CAAA,IAAA,GAAA6b,IAAA,EAAAC,EAAA,EAAAA,EAAApB,EAAAlb,OAAAsc,GAAA,EAAA,GAAAlY,EAAA5D,KAAA0a,EAAAoB,GAAA,CAAAD,GAAA,CAAA,OAAAA,GAAAnB,EAAAhX,KAAAE,EAAA5D,IAAA,IAAA4D,KAAA5D,EAAA,EAAAA,EAAA0a,EAAAlb,OAAAQ,GAAA,EAAA,CAAA,IAAA6b,GAAA,EAAAC,EAAA,EAAAA,EAAAvB,EAAA/a,OAAAsc,GAAA,EAAA,GAAApB,EAAA1a,KAAAua,EAAAuB,GAAA,CAAAD,GAAA,CAAA,OAAAA,GAAAjY,EAAAF,KAAAgX,EAAA1a,IAAA2D,EAAAiY,UAAAhY,EAAAqS,KAAA,KAAA9V,QAAA,OAAA,KAAAA,QAAA,YAAA,IAAA,QAAAqI,GAAA7E,EAAAC,GAAA,IAAA,GAAA2W,GAAA5W,EAAAiY,UAAA7Y,MAAA,OAAA2X,EAAA,EAAA1a,EAAAua,EAAA/a,OAAAkb,EAAA1a,EAAA0a,IAAA,GAAAH,EAAAG,IAAA9W,EAAA,OAAA,CAAA,QAAA,EACA,QAAAmY,GAAApY,GAAA,MAAAA,GAAAqX,EAAAgB,SAAAC,UAAAtY,EAAAA,EAAAqY,SAAAC,SAAA,QAAAC,GAAAvY,EAAAC,EAAA2W,GAAA,QAAAG,KAAAyB,GAAAnc,GAAA6b,IAAAM,EAAAL,GAAAK,EAAA,MAAAvY,EAAA6J,EAAA9J,EAAA,QAAAyY,IAAA,aAAAC,KAAAzY,EAAA0Y,MAAA,OAAA,IAAAtc,IAAA,EAAA6b,GAAA,EAAAC,EAAA,KAAAK,EAAA5B,GAAA,IAAAgC,KAAA3Y,EAAA4Y,OAAA,WAAAxc,GAAA,EAAA0a,KAAA9W,EAAA6Y,QAAA,WAAAzc,GAAA,EAAA8b,EAAA7b,MAAA,6BAAAya,MAAA7b,WAAA,WAAAmB,GAAA,EAAA0a,KAAA,GAAAW,EAAA1X,EAAA,OAAAC,GACA,QAAA8Y,GAAA/Y,EAAAC,EAAA2W,EAAAG,GAAA,GAAA1a,GAAA2D,EAAA4W,EAAAe,qBAAA,QAAA,EAAA,IAAAtb,EAAA,CAAA,GAAA6b,GAAApO,EAAA9J,EAAA,UAAAV,IAAAW,IAAAkY,GAAA,CAAA,OAAAD,GAAAW,OAAAX,EAAAc,mBAAA,WAAAb,GAAAtb,KAAAoc,YAAA,UAAApc,KAAAoc,YAAA,YAAApc,KAAAoc,aAAAd,GAAA,EAAAvB,GAAAA,EAAA,MAAAsB,EAAAW,OAAAX,EAAAc,mBAAA,KAAA,QAAAd,EAAApZ,WAAAoa,SAAA7c,EAAA0b,YAAAG,KAAA7b,EAAAmb,YAAAU,GAAAhd,WAAA,WAAAid,IAAAA,GAAA,EAAAvB,GAAAA,EAAAta,MAAA,0BAAAya,GAAA,KAAAmB,EAAA,MAAA,MAAA,QAAAiB,KAAAtc,KAAAmD,EAAA,EAAAnD,KAAA+Z,EAAA,KAAA,QAAAwC,GAAApZ,GAAA,MAAAA,GAAAA,IAAA,WAAAA,EAAAA,IAAAqZ,EAAArZ,IAAA,QAAAsZ,GAAAtZ,EAAAC,GAAAD,EAAA4W,EAAA3W,EAAAoZ,EAAArZ,GAAA,QAAAqZ,GAAArZ,GAAA,GAAAA,EAAAA,GAAAA,EAAA4W,IAAA5W,EAAA4W,IAAA5W,EAAA4W,EAAA,MAAA,QAAA2C,GAAAvZ,GAAAnD,KAAAmD,EAAAA,GAAA,IAAA,QAAAwZ,GAAAxZ,EAAAC,GAAApD,KAAA+Z,EAAA5W,EAAAnD,KAAAqb,EAAA,EAAArb,KAAAmD,EAAA,GAAA,IAAA4W,IAAA3W,GAAA,MAAAwZ,MAAA,oBAAA7C,KAAA/Z,KAAAmD,EAAA4W,EAAA,GAAA/Z,KAAAqb,EAAAwB,SAAA9C,EAAA,GAAA,KAAA,QAAA+C,GAAA3Z,GAAA,MAAA4Z,GAAA5Z,GAAA,IAAAA,EAAAkY,EAAA,YAAA2B,EAAA7Z,EAAA4W,GAAA,QAAAiD,GAAA7Z,GAAA,GAAAC,KAAAD,GAAAA,EAAAZ,MAAA,OAAA,KAAA,GAAAwX,GAAA,EAAAA,EAAA5W,EAAAnE,OAAA+a,IAAA,CAAA,GAAAG,GAAA/W,EAAA4W,GAAApa,QAAA,QAAA,KAAA,GAAAua,EAAA7X,QAAA,MAAA,MAAA8P,KAAA+H,GAAA9W,EAAAF,KAAA,IAAAgX,EAAA,KAAA9W,EAAAF,KAAAgX,GAAA,MAAA9W,GAAAqS,KAAA,KAAA,QAAAwH,GAAA9Z,GAAA,MAAAA,GAAAA,EAAAA,EAAAkY,EAAA,QAAA0B,GAAA5Z,GAAA,GAAAC,GAAA,QAAA,OAAA,MAAAD,EAAAA,EAAAC,EAAA,UAAA,MAAAD,EAAAA,IAAAC,EAAA,UAAAA,EACA,QAAA8Z,GAAA/Z,GAAA,GAAAC,GAAA,EAAA2W,EAAA,IAAAG,EAAA,IAAA,OAAA/W,MAAA+W,EAAA/W,EAAAyZ,MAAA,8BAAA1C,EAAA,KAAAH,EAAAG,EAAA,GAAAiD,OAAA,EAAA,GAAAnJ,gBAAAkG,EAAA/W,EAAAyZ,MAAA,4BAAA1C,EAAA,KAAA,QAAA/H,KAAA+H,EAAA,IAAA9W,EAAA,EAAA,UAAA+O,KAAA+H,EAAA,MAAA9W,EAAAyZ,SAAA3C,EAAA,GAAAiD,OAAA,EAAA,GAAA,OAAApD,EAAA3W,EAAA,QAAAga,GAAAja,EAAAC,GAAApD,KAAA+Z,EAAA5W,EAAAnD,KAAAqb,EAAAlY,EAAAqX,EAAA1c,SAAAid,gBAAA/a,KAAAqd,EAAAja,EAAApD,KAAAmD,EAAA,GAAAuZ,GAAA,KAAA1c,KAAAsd,GAAA,IAAAla,EAAA6V,OAAAjZ,KAAAsb,GAAA,IAAAlY,EAAAma,QAAA,QAAAC,GAAAra,GAAAA,EAAAmY,GAAAH,EAAAhY,EAAAkY,GAAAlY,EAAAA,EAAA4W,EAAA,KAAA,aAAA0D,EAAAta,EAAA,WAAA,QAAAua,GAAAva,GAAA,GAAAA,EAAAmY,EAAA,CAAA,GAAAlY,GAAA4E,EAAA7E,EAAAkY,EAAAlY,EAAAA,EAAA4W,EAAA,KAAA,WAAAA,KAAAG,GAAA/W,EAAAA,EAAA4W,EAAA,KAAA,WAAA3W,IAAA2W,EAAA7W,KAAAC,EAAAA,EAAA4W,EAAA,KAAA,aAAAoB,EAAAhY,EAAAkY,EAAAtB,EAAAG,GAAAuD,EAAAta,EAAA,YAAA,QAAAsa,GAAAta,EAAAC,EAAA2W,GAAA5W,EAAAma,GAAAna,EAAAka,EAAAja,KAAA2W,EAAA5W,EAAAka,EAAAja,GAAA2W,EAAAA,EAAAkD,EAAAlD,IAAA5W,EAAAka,EAAAja,MAAA,QAAAua,KAAA3d,KAAA+Z,KAAA,QAAA6D,GAAAza,EAAAC,EAAA2W,GAAA,GAAAva,GAAA0a,IAAA,KAAA1a,IAAA4D,GAAA,GAAAA,EAAAlE,eAAAM,GAAA,CAAA,GAAA6b,GAAAlY,EAAA4W,EAAAva,EAAA6b,IAAAnB,EAAAhX,KAAAmY,EAAAjY,EAAA5D,GAAAua,IAAA,MAAAG,GAAA,QAAA2D,GAAA1a,EAAAC,GAAApD,KAAA+Z,EAAA5W,EAAAnD,KAAAqb,EAAAjY,EAAApD,KAAAmD,EAAA8J,EAAAjN,KAAA+Z,EAAA,QAAA+D,cAAA,QAAA9d,KAAAqb,GAAA,QAAA0C,GAAA5a,GAAA0X,EAAA1X,EAAA4W,EAAA,OAAA5W,EAAAA,GAAA,QAAA6a,GAAA7a,GAAA,MAAA,4LAAA6Z,EAAA7Z,EAAA4W,GAAA,eAAAgD,EAAA5Z,GAAA,gBAAAA,EAAAkY,EAAA,MAAA,QAAA4C,GAAA9a,EAAAC,EAAA2W,EAAAG,EAAA1a,EAAA6b,GAAArb,KAAAsb,EAAAnY,EAAAnD,KAAAsd,EAAAla,EAAApD,KAAAmD,EAAA+W,EAAAla,KAAA+Z,EAAAA,EAAA/Z,KAAAqb,EAAA7b,GAAA,IAAAQ,KAAAqd,EAAAhC,OAAA,GAAA,QAAA6C,GAAA/a,EAAAC,EAAA2W,EAAAG,EAAA1a,EAAA6b,EAAAC,GAAAtb,KAAAmJ,EAAAhG,EAAAnD,KAAAsc,EAAAlZ,EAAApD,KAAA+Z,EAAAA,EAAA/Z,KAAAmD,EAAA+W,EAAAla,KAAAme,EAAA7C,GAAA,UAAAtb,KAAAqb,KAAArb,KAAAmb,EAAA3b,GAAA,IAAAQ,KAAA6a,EAAAQ,GAAA,KAAArb,KAAA2b,EAAA3b,KAAAsd,EAAAtd,KAAAqd,EAAArd,KAAAsb,EAAA,KAAAtb,KAAAsb,EAAA,GAAAuC,GAAA7d,KAAA+Z,EAAA/Z,KAAAme,GAAAne,KAAAqd,EAAA,GAAAQ,GAAA7d,KAAA+Z,EAAA/Z,KAAAme,GAAAne,KAAAsd,EAAA,GAAAO,GAAA7d,KAAA+Z,EAAA/Z,KAAAme,GAAAne,KAAA2b,EAAA,GAAAkC,GAAA7d,KAAA+Z,EAAA/Z,KAAAme,GAAAhb,EAAA,GAAAwZ,GAAA3c,KAAAmD,EAAA4W,EAAA,SAAAkD,EAAAjd,KAAAmD,IAAAA,EAAA6a,EAAA7a,GAAAnD,KAAAsb,EAAAnY,EAAAyN,MAAA6J,QAAAtX,EAAAA,EAAA,GAAAwZ,GAAA3c,KAAAmD,EAAA4W,EAAA,cAAAkD,EAAAjd,KAAAmD,IAAAA,EAAA6a,EAAA7a,GAAAnD,KAAAqd,EAAAla,EAAAyN,MAAA6J,QAAAtX,EAAAA,EAAA,GAAAwZ,GAAA,QAAAM,EAAAjd,KAAAmD,IAAAA,EAAA6a,EAAA7a,GAAAnD,KAAAsd,EAAAna,EAAAyN,MAAA6J,QAAAtX,EAAAA,EAAA,GAAAwZ,GAAA,aAAAM,EAAAjd,KAAAmD,IAAAA,EACA6a,EAAA7a,GAAAnD,KAAA2b,EAAAxY,EAAAyN,MAAA6J,QAAAtX,EAAA4a,EAAA/d,KAAAsb,GAAAyC,EAAA/d,KAAAqd,GAAAU,EAAA/d,KAAAsd,GAAAS,EAAA/d,KAAA2b,GAAA,QAAAyC,KAAA,GAAA,OAAAC,GAAA,CAAA,GAAAlb,GAAA,sCAAAmb,KAAAzgB,OAAAuU,UAAAC,UAAAgM,MAAAlb,IAAA,IAAA0Z,SAAA1Z,EAAA,GAAA,KAAA,MAAA0Z,SAAA1Z,EAAA,GAAA,KAAA,IAAA0Z,SAAA1Z,EAAA,GAAA,KAAA,MAAAkb,IACA,QAAAE,GAAApb,EAAAC,EAAA2W,GAAA,IAAA,GAAAG,KAAAsE,IAAA,GAAAA,GAAAtf,eAAAgb,IAAA9W,IAAAD,EAAAkY,EAAAmD,GAAAtE,KAAAH,IAAA5W,EAAAkY,EAAAmD,GAAAtE,IAAA,OAAA,CAAA,QAAA,EAAA,QAAAuE,GAAAtb,GAAA,GAAA+W,GAAA9W,EAAAD,EAAAmY,EAAAnY,EAAAub,YAAA3E,EAAA5W,EAAAka,EAAAla,EAAAub,aAAAxE,EAAA9W,IAAAD,EAAAkY,EAAAsD,OAAA5E,IAAA5W,EAAAkY,EAAA,iBAAAnB,EAAAkE,KAAAG,EAAApb,EAAAC,EAAA2W,IAAAG,EAAA0E,KAAAzb,EAAA+Y,GAAA/Y,EAAAgY,EAAAiD,KAAAG,EAAApb,EAAAC,EAAA2W,KAAA,OAAA5W,EAAA0X,GAAA1X,EAAA0X,EAAA3b,eAAAiE,EAAAA,EAAA4W,IAAA8E,EAAA1b,EAAAA,EAAAgG,GAAA0V,EAAA1b,EAAAA,EAAAmZ,GAAAwC,EAAA3b,GAAA0b,EAAA1b,EAAAA,EAAAgG,GAAA,QAAA2V,GAAA3b,GAAA9E,WAAA+b,EAAA,WAAAqE,EAAAze,OAAAmD,GAAA,IAAA,QAAA0b,GAAA1b,EAAAC,GAAA/E,WAAA+b,EAAA,WAAAjR,EAAAnJ,KAAAsb,EAAAnY,GAAAgG,EAAAnJ,KAAAqd,EAAAla,GAAAgG,EAAAnJ,KAAAsd,EAAAna,GAAAgG,EAAAnJ,KAAA2b,EAAAxY,GAAAC,EAAApD,KAAAmD,IAAAA,GAAA,GAAA,QAAA4b,GAAA5b,EAAAC,EAAA2W,GAAA/Z,KAAA+Z,EAAA5W,EAAAnD,KAAAmD,EAAAC,EAAApD,KAAAqb,EAAA,EAAArb,KAAA2b,EAAA3b,KAAAsd,GAAA,EAAAtd,KAAAme,EAAApE,EACA,QAAAiF,GAAA7b,GAAA,KAAAA,EAAAkY,GAAAlY,EAAAma,IAAAna,EAAAwY,GAAAxY,EAAAA,EAAAA,EAAAA,EAAAmY,GAAAH,EAAAhY,EAAAkY,GAAAlY,EAAAA,EAAA4W,EAAA,KAAA,YAAA5W,EAAAA,EAAA4W,EAAA,KAAA,WAAA5W,EAAAA,EAAA4W,EAAA,KAAA,cAAA0D,EAAAta,EAAA,WAAAua,EAAAva,EAAAA,IAAA,QAAA8b,GAAA9b,GAAAnD,KAAAsd,EAAAna,EAAAnD,KAAAmD,EAAA,GAAAwa,GAAA3d,KAAAqd,EAAA,EAAArd,KAAAqb,EAAArb,KAAAsb,GAAA,EACA,QAAA4D,GAAA/b,EAAAC,EAAA2W,EAAAG,EAAA1a,GAAA,GAAA6b,GAAA,KAAAlY,EAAAka,GAAAla,EAAAkY,GAAAlY,EAAAmY,IAAAjd,WAAA,WAAA,GAAA8E,GAAA3D,GAAA,KAAAmc,EAAAzB,GAAA,QAAA,IAAA,IAAAH,EAAA/a,QAAAqc,EAAAqC,EAAAta,EAAAD,OAAA,CAAAC,EAAAiY,GAAAtB,EAAA/a,OAAAqc,IAAAjY,EAAAka,EAAAjC,EAAA,IAAAgC,GAAA8B,IAAA,KAAA9B,EAAA,EAAAA,EAAAtD,EAAA/a,OAAAqe,IAAA,CAAA,GAAA+B,GAAArF,EAAAsD,GAAAgC,EAAA1D,EAAAyD,EAAArF,GAAAuF,EAAAlc,EAAAD,EAAA2E,EAAAsX,CAAA,IAAAE,EAAAhE,GAAAH,EAAAmE,EAAAjE,GAAAiE,EAAAnc,EAAA4W,EAAA,KAAAjS,EAAAiS,EAAAkD,EAAAnV,GAAAwS,WAAA,aAAAmD,EAAA6B,EAAA,cAAAxX,GAAAwX,EAAA,KAAA,OAAAC,GAAA,GAAA1hB,OAAA2hB,SAAA,CAAA,GAAA1X,GAAA,wBAAAwW,KAAAzgB,OAAAuU,UAAAC,WAAAoN,EAAA,8BAAAnB,KAAAzgB,OAAAuU,UAAAC,YAAA,QAAAiM,KAAAzgB,OAAAuU,UAAAsN,OACAH,IAAAzX,EAAA,GAAA+U,SAAA/U,EAAA,GAAA,KAAA2X,MAAAF,KAAA,CAAAD,GAAAC,GAAA,GAAAtB,GAAA7D,EAAAhX,EAAAkY,EAAAlY,GAAAgX,EAAAhX,EAAAia,EAAAja,GAAAA,EAAA2W,EAAAqF,EAAAhc,EAAA+a,EAAAkB,GAAA,GAAAnB,GAAA9D,EAAAhX,EAAAkY,EAAAlY,GAAAgX,EAAAhX,EAAAia,EAAAja,GAAAA,EAAA2W,EAAAqF,EAAAhc,EAAA+a,EAAAhb,EAAAkc,GAAAF,EAAAjc,KAAAoc,GAAA,IAAAjC,EAAA,EAAAA,EAAA8B,EAAAngB,OAAAqe,IAAA8B,EAAA9B,GAAAjT,UAAA,GAAA,QAAAuV,GAAAxc,EAAAC,EAAA2W,GAAA,GAAAG,MAAA1a,EAAAua,EAAA5b,OAAAqf,GAAApa,EAAA,IAAA8W,GAAA0D,EAAAza,EAAAA,EAAA4W,EAAA5W,EAAA4W,GAAAsB,EAAA,GAAA0D,GAAA5b,EAAA4W,EAAA3W,EAAA5D,EAAA,KAAA2D,EAAAka,EAAAnD,EAAAlb,OAAAoE,EAAA,EAAA2W,EAAAG,EAAAlb,OAAAoE,EAAA2W,EAAA3W,IAAA8W,EAAA9W,GAAAwc,KAAA,SAAAxc,EAAA8W,EAAAH,GAAAmF,EAAA/b,EAAAkY,EAAAjY,EAAA8W,EAAAH,KAAA,QAAA8F,GAAA1c,EAAAC,GAAApD,KAAA+Z,EAAA5W,EAAAnD,KAAAmD,EAAAC,EAEA,QAAA0c,GAAA3c,EAAAC,GAAApD,KAAA+Z,EAAA5W,EAAAnD,KAAAmD,EAAAC,EAAA,QAAA2c,GAAA5c,EAAAC,GAAApD,KAAA+Z,EAAA5W,GAAA6c,GAAAhgB,KAAAmD,KAAAnD,KAAAqb,KAAArb,KAAAsb,EAAAlY,GAAA,GAAA,QAAA6c,GAAA9c,EAAAC,GAAA,IAAA,GAAA2W,GAAA3W,EAAApE,OAAAkb,EAAA,EAAAA,EAAAH,EAAAG,IAAA,CAAA,GAAA1a,GAAA4D,EAAA8W,GAAA3X,MAAA,IAAA,IAAA/C,EAAAR,QAAAmE,EAAAkY,EAAAnY,KAAA1D,EAAA0gB,MAAA,IAAA7E,GAAA,EAAA,IAAA7b,EAAAR,QAAA,IAAAQ,EAAA,KAAA6b,EAAA,KAAAlY,EAAAA,EAAAD,KAAA1D,EAAAiW,KAAA4F,KACA,QAAA8E,GAAAhd,GAAA,GAAA,GAAAA,EAAAA,EAAAnE,OAAA,KAAAS,OAAA,oBAAA,KAAA,GAAA0D,EAAA4W,EAAA1X,QAAA,QAAA,MAAAc,GAAA4W,CAAA,KAAA,GAAA3W,GAAAD,EAAAA,EAAAnE,OAAA+a,KAAAG,EAAA,EAAAA,EAAA9W,EAAA8W,IAAAH,EAAA7W,KAAAC,EAAAA,EAAA+W,GAAAva,QAAA,KAAA,KAAA,OAAAyD,GAAAD,EAAA4W,EAAA,WAAAA,EAAAtE,KAAA,OAAA,EAAAtS,EAAAkY,EAAArc,SAAAoE,GAAA,WAAAD,EAAAkY,EAAA5F,KAAA,MAAA,EAAAtS,EAAAmY,EAAAtc,SAAAoE,GAAA,SAAAgd,mBAAAjd,EAAAmY,IAAAlY,EAAA,QAAAid,GAAAld,GAAAnD,KAAAqb,EAAAlY,EAAAnD,KAAAmD,KAAAnD,KAAA+Z,KAGA,QAAAuG,GAAAnd,GAAA,IAAA,GAAAC,GAAAD,EAAAkY,EAAArc,OAAA+a,EAAA,EAAAA,EAAA3W,EAAA2W,IAAA,CAAA,GAAAG,GAAA/W,EAAAkY,EAAAtB,GAAAxX,MAAA,KAAA/C,EAAA0a,EAAA,GAAAva,QAAA,MAAA,KAAA0b,GAAA,KAAA,IAAA,GAAAnB,EAAAlb,OAAA,CAAA,GAAAsc,GAAAK,EAAAzB,EAAA,EAAA,IAAAoB,KAAAK,EAAA,IAAA,GAAAA,GAAAA,EAAApZ,MAAA,KAAA8a,EAAA1B,EAAA3c,OAAAmgB,EAAA,EAAAA,EAAA9B,EAAA8B,IAAA,CAAA,GAAAC,EAAA,IAAAA,EAAAzD,EAAAwD,GAAAC,EAAAxC,MAAA,YAAA,CAAA,GAAAyC,GAAAkB,GAAAjC,KAAAc,EAAApL,cAAA,IAAA,MAAAqL,EAAAD,EAAA,OAAA,CAAA,GAAAA,EAAAC,EAAA,GAAAD,EAAA,MAAAA,GAAA,IAAAA,EAAA,IAAAoB,GAAApB,GAAA,OAAAC,EAAAA,EAAA,KAAA,IAAAA,EAAAA,EAAA,QAAA,IAAAC,GAAAmB,GAAApB,GAAAA,EAAAC,IAAAoB,MAAArB,GAAA,IAAAA,EAAAlC,OAAA,EAAA,GAAAiC,IAAAA,EAAAC,GAAA5J,KAAA,SAAA2J,GAAA,EAAAA,IAAA9D,EAAApY,KAAAkc,GAAA,EAAA9D,EAAAtc,SAAAqc,EAAAC,GAAA,GAAApB,EAAAlb,SAAAkb,EAAAA,EAAA,GAAAoB,KAAApB,EAAAA,EAAAA,EAAA3X,MAAA,KACA+Y,EAAA,EAAApB,EAAAlb,SAAAkb,EAAAyG,GAAAzG,EAAA,OAAA/W,EAAA4W,EAAAva,GAAA0a,IAAA,IAAA/W,EAAA4W,EAAAva,KAAA0a,EAAAyG,GAAAnhB,MAAA2D,EAAA4W,EAAAva,GAAA0a,GAAAA,EAAA,EAAAA,EAAAmB,EAAArc,OAAAkb,GAAA,EAAA/W,EAAAA,EAAAD,KAAA,GAAAyZ,GAAAnd,EAAA6b,EAAAnB,MAAA,QAAA0G,GAAAzd,EAAAC,GAAApD,KAAA+Z,EAAA5W,EAAAnD,KAAAmD,EAAAC,EAAA,QAAAyd,GAAA1d,EAAAC,GAAApD,KAAA+Z,EAAA5W,EAAAnD,KAAAmD,EAAAC,EAAA,QAAA0d,GAAA3d,EAAAC,GAAApD,KAAA+Z,EAAA5W,EAAAnD,KAAAqb,EAAAjY,EAAApD,KAAAmD,KAhBA,GAAAyb,IAAApN,KAAAxK,KAAA,WAAA,OAAA,GAAAwK,OAAAuK,KAAAle,OAAA2hB,QAGA9C,GAAAlc,UAAAuZ,EAAA,SAAA5W,GAAA,IAAA,GAAAC,MAAA2W,EAAA,EAAAA,EAAA9Z,UAAAjB,OAAA+a,IAAA3W,EAAAF,KAAAjD,UAAA8Z,GAAApa,QAAA,UAAA,IAAAqU,cAAA,OAAA5Q,GAAAqS,KAAAzV,KAAAmD,IACA8a,EAAAzd,UAAA4J,MAAA,WAAA,GAAAjH,GAAAnD,KAAA+Z,EAAAS,EAAA1c,SAAAsF,EAAApD,KAAA+Z,EAAA6E,KAAA1E,EAAA,GAAA6G,SAAA,SAAA7G,EAAA1a,GAAA,QAAA6b,KAAAuD,KAAA7E,GAAA3W,EAAAiY,EAAA7b,IAAA2D,EAAA6d,MAAApB,KAAA9C,EAAA1Z,EAAAD,GAAAC,EAAAia,GAAA4D,KAAA,SAAA9d,GAAA,GAAAA,EAAAnE,OAAAkb,IAAA7b,WAAAgd,EAAA,KAAA,WAAA7b,MAAA6b,MAAA7b,EAAA,KAAA6b,EAAA,GAAA0F,SAAA,SAAA5d,EAAA+W,GAAA1a,EAAAnB,WAAA6b,EAAA9W,EAAAiY,IAAA0F,SAAAG,MAAA7F,EAAAnB,IAAA+G,KAAA,WAAAzhB,IAAAiY,aAAAjY,GAAAA,EAAA,MAAA4D,EAAAkY,EAAAlY,EAAAD,IAAA,WAAAC,EAAAka,EAAAla,EAAAD,KACA,IAAAqb,KAAAhC,EAAA,QAAAD,EAAA,cAAA8B,GAAA,IAAAH,GAAA1d,UAAA4J,MAAA,WAAApK,KAAAqb,EAAAsD,MAAA3e,KAAAsd,EAAAna,EAAAub,YAAA1e,KAAAqb,EAAA,cAAArb,KAAA2b,EAAAxY,EAAAub,YAAA1e,KAAAkc,EAAA0C,KAAAH,EAAAze,MACA,IAAAuf,IAAA,IAAAR,GAAAve,UAAA8a,EAAA,SAAAnY,GAAA,GAAAC,GAAApD,KAAAmD,CAAAC,GAAAkY,GAAAH,EAAA/X,EAAAiY,GAAAjY,EAAAD,EAAA4W,EAAA,KAAA5W,EAAA4W,EAAAkD,EAAA9Z,GAAAmX,WAAA,YAAAlX,EAAAD,EAAA4W,EAAA,KAAA5W,EAAA4W,EAAAkD,EAAA9Z,GAAAmX,WAAA,WAAAlX,EAAAD,EAAA4W,EAAA,KAAA5W,EAAA4W,EAAAkD,EAAA9Z,GAAAmX,WAAA,cAAAmD,EAAAra,EAAA,aAAAD,GAAAnD,KAAA2b,GAAA,EAAAqD,EAAAhf,OACA+e,EAAAve,UAAA6c,EAAA,SAAAla,GAAA,GAAAC,GAAApD,KAAAmD,CAAA,IAAAC,EAAAkY,EAAA,CAAA,GAAAvB,GAAA/R,EAAA5E,EAAAiY,EAAAjY,EAAAD,EAAA4W,EAAA,KAAA5W,EAAA4W,EAAAkD,EAAA9Z,GAAAmX,WAAA,WAAAJ,KAAA1a,GAAA4D,EAAAD,EAAA4W,EAAA,KAAA5W,EAAA4W,EAAAkD,EAAA9Z,GAAAmX,WAAA,WAAAP,IAAAG,EAAAhX,KAAAE,EAAAD,EAAA4W,EAAA,KAAA5W,EAAA4W,EAAAkD,EAAA9Z,GAAAmX,WAAA,aAAAa,EAAA/X,EAAAiY,EAAAnB,EAAA1a,GAAAie,EAAAra,EAAA,eAAAD,GAAA6b,EAAAhf,OAAAif,EAAAze,UAAAof,KAAA,SAAAzc,GAAAnD,KAAA+Z,EAAA,GAAAQ,GAAAva,KAAAsd,EAAAna,EAAA/E,SAAA4B,KAAAsd,GAAAtd,KAAAsb,GAAA,IAAAnY,EAAA8V,OAAAjZ,KAAAqb,GAAA,IAAAlY,EAAAoa,QAAAoC,EAAA3f,KAAA,GAAAod,GAAApd,KAAA+Z,EAAA5W,GAAAA,IAGA0c,EAAArf,UAAAof,KAAA,SAAAzc,GAAA,QAAAC,KAAA,GAAAiY,EAAA,eAAAnB,GAAA,CAAA,GAAAmD,GAAAtD,EAAAsB,EAAA,eAAAnB,KAAA1a,IAAA,IAAAua,EAAA,IAAA,GAAAoF,GAAA,EAAAA,EAAApF,EAAA/a,OAAAmgB,IAAA,CAAA,GAAAC,GAAArF,EAAAoF,GAAAgC,eAAA,IAAApH,EAAAoF,GAAAiC,eAAA,IAAArH,EAAAoF,GAAAkC,YAAAhE,EAAAtD,EAAAoF,GAAAiC,UAAArH,EAAAoF,GAAAkC,WAAA7hB,EAAA0D,KAAA,GAAAyZ,GAAAyC,EAAA/B,KAAA7d,EAAA0D,KAAA,GAAAyZ,GAAAyC,IAAAjc,EAAA3D,OAAAnB,YAAA,WAAA+E,KAAA,IAAA,GAAA2W,GAAA/Z,KAAAka,EAAAH,EAAA5W,EAAAme,UAAA9hB,EAAAua,EAAA5W,EAAAoe,OAAA,IAAArH,EAAA,CAAA,GAAAmB,GAAAtB,EAAAA,EAAAS,CAAA0B,GAAAlc,KAAA+Z,GAAAA,EAAA5W,EAAAqe,KAAA,gCAAA,IAAAtH,EAAA,OAAA1a,EAAA,MAAAA,EAAA,IAAA,SAAAA,GAAAA,EAAA2D,OAAAkY,EAAA,4BACAnB,GAAA,WAAA,MAAAH,GAAA5W,GAAAC,OAAA+K,GAAA,wBAAA+L,MAAA/W,QAAA2c,EAAAtf,UAAAof,KAAA,SAAAzc,GAAA,GAAAC,GAAA2W,EAAAG,EAAAla,KAAAmD,EAAAse,SAAAjiB,EAAAQ,KAAAmD,EAAAue,aAAArG,EAAArb,KAAAmD,EAAAwe,gBAAArG,EAAA,GAAAgB,EAAA,KAAAlZ,EAAA,EAAA2W,EAAAG,EAAAlb,OAAAoE,EAAA2W,EAAA3W,IAAAsY,EAAA1b,KAAA+Z,EAAAG,EAAA9W,GAAAmZ,EAAAjB,GAAA,IAAAK,KAAA,KAAAvY,EAAA,EAAA2W,EAAAva,EAAAR,OAAAoE,EAAA2W,EAAA3W,IAAA,GAAA8W,EAAA1a,EAAA4D,GAAAb,MAAA,KAAA2X,EAAA,GAAA,IAAA,GAAAmD,GAAAnD,EAAA,GAAA3X,MAAA,KAAA4c,EAAA,EAAAA,EAAA9B,EAAAre,OAAAmgB,GAAA,EAAAxD,EAAAzY,KAAA,GAAAyZ,GAAAzC,EAAA,GAAAmD,EAAA8B,SAAAxD,GAAAzY,KAAA,GAAAyZ,GAAAzC,EAAA,IAAAuC,GAAAnB,EAAA,WAAAnY,EAAAwY,EAAAN,KAAA,IAAA2E,IAAA,mCAEAW,IAAAiB,MAAA,UAAAC,YAAA,QAAAC,SAAA,MAAAC,MAAA,MAAAC,MAAA,MAAAC,QAAA,OAAAxB,IAAAyB,KAAA,IAAAC,WAAA,IAAAC,cAAA,IAAAC,WAAA,IAAAC,cAAA,IAAAC,MAAA,IAAAC,QAAA,IAAAC,KAAA,IAAAC,OAAA,IAAAC,YAAA,IAAAC,SAAA,IAAAC,YAAA,IAAAC,SAAA,IAAAC,KAAA,IAAAC,aAAA,IAAAC,UAAA,IAAAC,aAAA,IAAAC,UAAA,IAAAC,MAAA,IAAAC,MAAA,IAAAlE,EAAA,IAAAG,EAAA,IAAAlc,EAAA,KAAAod,IAAA1hB,EAAA,IAAAwkB,OAAA,IAAAjE,EAAA,IAAAkE,OAAA,KACAhD,GAAA,+IAEAiD,IAAAC,OAAA,EAAAC,SAAA,EAAAC,OAAA,EAAA/C,GAAApgB,UAAAof,KAAA,SAAAzc,GAAA,GAAAC,GAAA,GAAAkZ,GAAAvC,EAAA/Z,KAAA+Z,EAAAG,EAAA,GAAA6F,GAAA/f,KAAAmD,EAAAqe,IAAAxhB,KAAAmD,EAAAygB,MAAApkB,EAAAQ,KAAAmD,EAAAue,QAAAzB,GAAA/F,EAAA1a,EAAA,IAAA6b,GAAA,GAAAgF,GAAA7gB,EAAA8gB,GAAAjF,GAAAK,EAAA3B,EAAAoG,EAAAjG,GAAAqC,EAAAnZ,IAAAqZ,EAAArZ,EAAA,WAAAD,EAAAkY,EAAAlY,EAAAkY,EAAAtB,EAAAyJ,OAAA3C,EAAArgB,UAAAof,KAAA,SAAAzc,GAAA,GAAAC,GAAApD,KAAAmD,EAAAgL,GAAA4L,EAAA/Z,KAAA+Z,EAAAS,CAAApX,GAAA8Y,EAAAlc,KAAA+Z,GAAA/Z,KAAAmD,EAAAqe,KAAA,2BAAA,IAAApe,EAAA,MAAA,SAAAA,GAAA,GAAAA,EAAAD,UAAA,IAAA4W,EAAA8J,SAAA9J,EAAA8J,QAAAC,QAAA/J,EAAA8J,QAAAC,OAAA5lB,GAAA,CAAAkF,EAAA2W,EAAA8J,QAAAC,OAAA5lB,EAAA,KAAA,GAAAsB,MAAA6b,EAAA,EAAAA,EAAAjY,EAAApE,OAAAqc,GAAA,EAAA,IAAA,GAAAC,GAAAlY,EAAAiY,GAAAM,EAAAvY,EAAAiY,EAAA,GAAAgC,EAAA,EAAAA,EAAA1B,EAAA3c,OAAAqe,IAAA7d,EAAA0D,KAAA,GAAAyZ,GAAArB,EAAAK,EAAA0B,IAAA,KAAAtD,EAAA8J,QAAAjE,MAAA3G,QAAA,EAAAsE,SAAA,EAAAwG,OAAA,IAAA,MAAA5E,IAAAhc,EAAA3D,KAAA,KAAA2D,OAAA2d,EAAAtgB,UAAAof,KAAA,SAAAzc,GAAA,GAAAC,GAAApD,KAAAqb,EAAAlN,GAAA4L,EAAA/Z,KAAA+Z,EAAAS,EAAAN,EAAAla,IAAAoD,IAAA2W,EAAAiK,4BAAAjK,EAAAiK,8BAAAjK,EAAAiK,0BAAA5gB,GAAA,SAAAA,EAAA2W,GAAA,IAAA,GAAAuB,GAAA,EAAAK,EAAA5B,EAAAiH,MAAAhiB,OAAAsc,EAAAK,IAAAL,EAAA;sCAAA,GAAA+B,GAAAtD,EAAAiH,MAAA1F,EAAApB,GAAA/W,EAAAD,KAAA,GAAAyZ,GAAAU,EAAAhe,KAAA6d,EAAA,eAAAG,EAAA4G,OAAA,eAAA5G,EAAAzM,SAAAzN,EAAA+W,EAAA/W,IAAA+Y,EAAAlc,KAAA+Z,GAAA/Z,KAAAqb,EAAAmG,KAAA,oCAAAjG,EAAAvb,KAAA+Z,GAAA,IAAA3W,EAAA,MAAA,SAAAA,GAAAA,GAAAD,SAAAA,MAAA,IAAA+gB,IAAA,GAAAjF,GAAAphB,OAAAqmB,IAAA/gB,EAAA4W,EAAAoK,OAAA,SAAAhhB,EAAAC,GAAA,MAAA,IAAA0c,GAAA1c,EAAAD,IAAA+gB,GAAA/gB,EAAA4W,EAAAqK,SAAA,SAAAjhB,EAAAC,GAAA,MAAA,IAAA0d,GAAA1d,EAAAD,IAAA+gB,GAAA/gB,EAAA4W,EAAAsK,SAAA,SAAAlhB,EAAAC,GAAA,MAAA,IAAAyc,GAAAzc,EAAAD,IAAA+gB,GAAA/gB,EAAA4W,EAAAuK,QAAA,SAAAnhB,EAAAC,GAAA,MAAA,IAAAyd,GAAAzd,EAAAD,IAAA+gB,GAAA/gB,EAAA4W,EAAAwK,OAAA,SAAAphB,EAAAC,GAAA,MAAA,IAAAwd,GAAAxd,EAAAD,GAAA,IAAAqhB,KAAA5E,KAAAxF,EAAA8J,GAAAtE,KAAAsE,IAAA,mBAAAxK,SAAAA,OAAAC,IAAAD,OAAA,WAAA,MAAA8K,MAAA,mBAAA5K,SAAAA,OAAAC,QAAAD,OAAAC,QAAA2K,IAAA3mB,OAAA4mB,QAAAD,GAAA3mB,OAAA6mB,eAAAR,GAAAtE,KAAA/hB,OAAA6mB,mBCTA,SAAAllB,EAAAyN,GAAA,YAAA,mBAAAyM,SAAAA,OAAAC,IAAAD,OAAAzM,GAAA,gBAAA4M,SAAAD,OAAAC,QAAA5M,IAAAzN,EAAAmlB,cAAA1X,KAAA,mBAAApP,QAAAA,OAAAmC,KAAA,WAAA,YAAA,SAAAR,GAAAA,GAAA,MAAAA,GAAAolB,cAAA,GAAAplB,EAAA,QAAAyN,GAAAzN,GAAA,GAAAyN,GAAAzN,EAAAyE,eAAAzE,CAAA,OAAAyN,GAAA/I,aAAA+I,EAAA9I,eAAA8I,EAAAnP,SAAAmP,EAAA,MAAA,QAAAoS,GAAA7f,GAAA,IAAA4a,EAAA,CAAA,GAAAnN,GAAAzN,EAAA1B,SAAAuhB,EAAApS,EAAAsE,cAAA,KAAA4N,EAAA,WAAAE,GAAA,QAAA,gBAAAA,GAAA,aAAA,iBAAAC,EAAArS,EAAA4X,cAAAvF,IAAA,UAAAH,GAAAG,EAAAwF,YAAAxF,EAAAwF,WAAA,eAAA,SAAAxF,EAAAwF,WAAA,UAAA3J,EAAA,SAAAgE,EAAA,SAAA/E,GAAA2K,gBAAAvlB,EAAAmC,iBAAAqjB,YAAA7F,EAAA8F,KAAA,UAAA9F,GAAA,MAAA/E,GAAA,QAAA+E,GAAA3f,EAAAyN,EAAAoS,GAAA,GAAA7f,EAAA6C,QAAA,MAAA7C,GAAA6C,QAAA4K,EAAAoS,GAAA,EAAA,KAAA,GAAAF,GAAAE,GAAA,EAAAC,EAAA9f,EAAAR,OAAAsgB,EAAAH,IAAAA,EAAA,GAAA3f,EAAA2f,KAAAlS,EAAA,MAAAkS,EAAA,QAAA,EAAA,QAAAG,GAAA9f,GAAAQ,KAAAklB,cAAA1lB,CAAA,KAAA,GAAAyN,GAAAuP,EAAAvP,KAAA,CAAA,GAAAoS,GAAAhB,EAAApR,EAAAjN,MAAAqf,GAAAA,IAAA7f,GAAAA,EAAA6f,GAAAjB,EAAAiB,GAAArf,KAAA0B,KAAA,QAAA1B,KAAA8S,OAAA,EAAA9S,KAAAmlB,OAAA,EAAAnlB,KAAA+S,MAAA,CAAA,IAAAoM,EAAA,gBAAA3f,EAAAkC,MAAA1B,KAAA0H,QAAA,KAAAlI,EAAA4lB,WAAA,eAAA5lB,KAAAQ,KAAAyH,QAAA,KAAAjI,EAAA6lB,cAAA7lB,EAAA8lB,OAAAnG,GAAA,EAAA,IAAA,IAAA,KAAA3f,EAAA8lB,QAAAtlB,KAAAyH,OAAAzH,KAAA0H,OAAA1H,KAAAulB,OAAA,EAAAvlB,KAAA,QAAAmf,GAAA3f,EAAA2lB,QAAAnlB,KAAA0H,OAAAlI,EAAA2lB,OAAA,wBAAA3lB,EAAAkC,OAAA1B,KAAAwlB,UAAA,EAAA,IAAAlG,GAAA9f,EAAA8B,MAAA,IAAAge,GAAA,IAAAA,EAAAmG,SAAA,KAAAnG,EAAAA,EAAArd,YAAAqd,EAAAoG,eAAA,GAAA,IAAApG,EAAAmG,SAAA,CAAAzlB,KAAAsB,OAAAge,CAAA,QAAA,QAAAxgB,GAAAU,EAAAyN,EAAAoS,GAAApS,EAAA0Y,YAAA,CAAA,KAAA,GAAArG,GAAAxgB,GAAA,EAAAqE,EAAA8J,EAAAjO,SAAAF,EAAAqE,GAAA,GAAA,QAAAmc,EAAArS,EAAAnO,IAAA,CAAA,GAAAugB,EAAArX,GAAA,OAAAqX,GAAArX,EAAA,OAAAsX,EAAArgB,KAAAO,EAAA6f,GAAA,IAAAA,EAAArX,UAAAqX,GAAArX,GAAAiF,EAAA0Y,YAAA,EAAA7mB,EAAA,GAAAA,EAAAqgB,EAAAlS,EAAA,KAAAnO,KAAA,GAAAmO,EAAAH,OAAAhO,EAAA,GAAA,QAAAqE,GAAA3D,EAAAyN,EAAAoS,GAAA,GAAAF,EAAAlS,KAAAqO,GAAA6D,EAAAxD,EAAAwD,EAAAyG,cAAAzG,EAAA+F,cAAAU,cAAAzG,EAAA0G,WAAA1G,EAAA+F,cAAAW,aAAAvK,EAAArO,EAAAkS,EAAAxD,EAAA,GAAA2D,GAAArS,IAAAzN,IAAA2f,EAAA7d,SAAA6d,EAAA0G,WAAA,EAAA,IAAA1iB,GAAA3D,EAAA2b,GAAA,KAAAkE,EAAA,EAAA,GAAA7E,EAAAyD,EAAA9a,EAAArE,GAAAU,EAAAgb,EAAA2E,GAAAA,EAAAyG,cAAA,KAAAzG,EAAA0G,WAAA,EAAArL,EAAAxb,QAAAmK,EAAA3J,EAAA6f,GAAA,QAAA7E,GAAAhb,GAAA2D,EAAAnD,KAAAR,GAAA,GAAA,QAAAqb,GAAArb,GAAA2D,EAAAnD,KAAAR,GAAA,GAAA,QAAA2e,KAAA,GAAAlR,GAAAjN,KAAAqf,EAAApS,EAAA8D,KAAA,KAAAsO,EAAA,CAAA,IAAA,GAAAF,GAAAtB,EAAA7e,OAAAmgB,MAAAlS,EAAA4Q,EAAAsB,KAAAE,EAAApS,EAAA8D,UAAA,IAAAsO,EAAA,OAAA,GAAAlc,GAAA8J,EAAAnP,SAAA0c,EAAArX,EAAA4X,gBAAAF,EAAA5N,EAAAkO,GAAAgD,EAAAkB,EAAAyG,WAAA3c,EAAA,GAAAmW,GAAAD,EAAAlW,GAAA7H,OAAA6c,EAAAhV,EAAA4c,KAAA9Y,EAAA9D,EAAApC,WAAA,GAAAyK,OAAAwU,UAAA7c,EAAA8c,MAAA5G,EAAAjW,QAAAoR,EAAA0L,WAAA/c,EAAAgd,MAAA9G,EAAA/V,QAAAkR,EAAA4L,UAAAjd,EAAAkd,UAAAhH,EAAAgH,OAAA,IAAAnM,GAAAiE,EAAApE,IAAA,IAAAA,EAAA7W,KAAAgX,SAAAA,EAAAA,EAAAwL,cAAA3L,GAAA7W,KAAAC,EAAA8J,EAAA,KAAA,GAAAoO,GAAAtB,EAAA/a,OAAAob,GAAA,IAAAA,EAAA,IAAAiF,EAAAiH,cAAA,CAAA,GAAAhL,GAAA,IAAAlB,EAAA,EAAA,CAAAL,GAAAwM,SAAA,KAAA,GAAA5K,IAAA,IAAAA,EAAAN,IAAAgE,EAAAiH,cAAA,CAAApM,EAAAH,EAAA4B,EAAA,IAAA3T,GAAAyU,EAAA5B,EAAA,IAAArb,EAAA0a,GAAA,KAAAE,EAAA,EAAA,IAAApS,EAAAiW,EAAAxB,MAAAtT,EAAAyc,cAAA1L,EAAA/Q,EAAA0c,WAAA3L,IAAAiE,EAAA,EAAA7C,EAAAxc,EAAAob,EAAAlS,EAAAmB,GAAAA,EAAAyc,cAAA,KAAAzc,EAAA0c,WAAA,EAAA7d,EAAAhJ,QAAAqe,EAAAnD,GAAAE,MAAA,QAAAiD,GAAAiC,EAAAxgB,GAAA,GAAAqE,GAAA8J,EAAAqS,GAAA9E,EAAArX,EAAAgY,GAAAN,EAAAwE,EAAAlc,GAAA6hB,YAAA3H,EAAA7C,EAAA,IAAAhb,EAAA8f,GAAA,KAAAxgB,EAAA,EAAA,EAAA,UAAAmf,GAAAZ,IAAAY,EAAAzD,GAAA,CAAA,IAAA,GAAArR,GAAA,GAAAA,EAAAgW,EAAAtB,EAAA1a,EAAAgG,KAAA,GAAA0U,EAAA/Q,OAAA3D,EAAA,EAAAhG,GAAArF,SAAA0oB,YAAA,KAAA3L,EAAAsD,SAAAF,GAAAzD,GAAArX,EAAAgY,GAAAE,GAAA,QAAAlS,GAAA3J,EAAA2f,GAAA,GAAAG,GAAArS,EAAAzN,GAAAV,EAAAugB,EAAAC,GAAA0F,kBAAA/G,GAAAze,EAAA2b,GAAA,KAAAgE,EAAA,EAAA,IAAA3f,EAAAqC,oBAAA/C,EAAAqgB,EAAAtE,EAAAL,EAAA2E,GAAA,mBAAArgB,GAAAU,EAAAqC,oBAAA,sBAAAsd,EAAAtE,EAAAL,EAAA2E,GAAAlB,EAAAze,EAAA2b,GAAA,KAAAgE,EAAA,EAAA,WAAA3f,GAAA2b,GAAA,QAAAjB,GAAAoF,EAAAxgB,EAAAqE,GAAA,GAAAka,GAAAlU,EAAA+Q,EAAAjN,EAAAqS,GAAAvF,EAAAsF,EAAAnF,GAAAmB,EAAAtB,EAAAiL,WAAA,IAAA7hB,IAAAA,EAAA4W,EAAAgL,cAAAhL,EAAAkL,MAAA9b,GAAAmW,EAAAnE,KAAAmE,EAAAnE,KAAAsB,IAAA,KAAAtZ,EAAA,EAAA,IAAAka,EAAAY,EAAA9U,MAAAkU,EAAAY,EAAA9U,MAAAmW,EAAA3d,iBAAA0Z,EAAAlY,EAAA0X,EAAAL,EAAArX,GAAA,mBAAAkY,GAAAiE,EAAA3d,iBAAA,sBAAAwB,EAAA0X,EAAAL,EAAArX,IAAAgc,EAAA9B,EAAAve,GAAA,GAAAue,EAAAna,KAAApE,IAAAwgB,EAAA3d,iBAAA0Z,EAAAvc,EAAAqE,OAAA,CAAA,GAAAiX,IAAAA,EAAAF,EAAAiB,MAAAf,EAAAF,EAAAiB,KAAAsB,EAAAoB,EAAA3a,KAAAgX,GAAAA,EAAApc,SAAA2oB,YAAA,KAAApL,EAAA8C,IAAAhV,EAAAiR,EAAA,IAAA5a,EAAA8f,GAAA,KAAAnc,EAAA,EAAA,GAAAka,EAAAY,EAAA9U,KAAA8U,EAAA9U,OAAAgW,EAAA9B,EAAAve,GAAA,IAAAue,EAAAna,KAAApE,GAAAmf,EAAA7D,IAAA6D,EAAA7D,IAAA,GAAA,IAAA,QAAAL,GAAAuF,EAAAxgB,EAAAqE,GAAA,GAAAqX,GAAAK,EAAAsD,EAAAjE,EAAAjN,EAAAqS,GAAAvF,EAAAsF,EAAAnF,GAAAmB,EAAAtB,EAAAiL,WAAA,IAAA7hB,IAAAA,EAAA4W,EAAAgL,cAAAhL,EAAAkL,MAAApK,EAAAyE,EAAAnE,MAAAN,GAAA,KAAA1X,EAAA,EAAA,IAAAqX,EAAAyD,EAAApD,MAAAsD,EAAAgB,EAAA3E,EAAA1b,KAAA,IAAA0b,EAAAmL,WAAAnL,EAAA2D,GAAA,MAAA3D,EAAA1N,OAAAqR,EAAA,GAAA3D,EAAAxb,QAAAmK,EAAAmW,EAAAnc,MAAAmc,EAAAzd,oBAAAwZ,EAAAvc,EAAAqE,OAAA,CAAA,GAAAiX,IAAAA,EAAAF,EAAAiB,MAAAN,EAAAT,EAAA,IAAA5a,EAAA8f,GAAA,KAAAnc,EAAA,EAAA,IAAAqX,EAAAyD,EAAApD,MAAAsD,EAAAgB,EAAA3E,EAAA1b,KAAA,MAAAmf,EAAA7D,GAAAI,EAAAmL,WAAAnL,EAAA2D,GAAA,MAAA3D,EAAA1N,OAAAqR,EAAA,GAAA3D,EAAAxb,QAAAqe,EAAAiC,EAAAnc,OAAA,GAAAkY,GAAAjB,EAAAkB,EAAAK,EAAAR,EAAA,uBAAAnT,EAAAmT,EAAA,2BAAAsB,EAAA,EAAAwB,KAAAJ,KAAAza,GAAAsjB,IAAA,SAAAC,QAAA,UAAAC,KAAA,UAAAC,MAAA,YAAAzI,GAAAoH,UAAA,EAAA/d,OAAA,KAAAC,OAAA,KAAA6d,OAAA,KAAAuB,OAAA,KAAAhU,OAAA,EAAAiU,QAAA,KAAA3d,QAAA,KAAAE,QAAA,KAAA0d,QAAA,KAAAX,QAAA,KAAAY,QAAA,KAAAC,QAAA,KAAAC,cAAA,KAAAC,QAAA,KAAAC,QAAA,KAAAC,SAAA,KAAAvU,MAAA,EAAAoS,OAAA,EAAAc,MAAA,KAAAE,MAAA,KAAAJ,KAAA,KAAAwB,SAAA,EAAAC,YAAA,EAAA5B,cAAA,KAAA6B,kBAAA,EAAA5B,WAAA,KAAAvkB,OAAA,KAAAyF,UAAA,KAAArF,KAAA,SAAA2c,IAAA,KAAA,GAAAkB,KAAAnB,GAAAA,EAAAlf,eAAAqgB,IAAAlB,EAAAnb,KAAAqc,EAAA,IAAA/C,GAAA6B,EAAArf,MAAAsgB,GAAA9e,UAAAknB,iBAAA,SAAAloB,GAAA,GAAAyN,GAAAjN,KAAAklB,aAAA,IAAAjY,EAAAya,iBAAA,MAAAza,GAAAya,iBAAA3nB,MAAAkN,EAAAhN,UAAA,IAAAof,GAAAjc,EAAA5D,EAAA,SAAA6f,KAAApS,EAAAoS,IAAAC,EAAA9e,UAAAoV,eAAA,WAAA,GAAApW,GAAAQ,KAAAklB,aAAA1lB,GAAAoW,eAAApW,EAAAoW,iBAAApW,EAAAmoB,aAAA,EAAA3nB,KAAAynB,kBAAA,GAAAnI,EAAA9e,UAAAonB,gBAAA,WAAA,GAAApoB,GAAAQ,KAAAklB,aAAA1lB,GAAAooB,gBAAApoB,EAAAooB,kBAAApoB,EAAA8mB,cAAA,GAAAhH,EAAA9e,UAAAqnB,yBAAA,WAAA,GAAAroB,GAAAQ,KAAAklB,aAAA1lB,GAAAqoB,yBAAAroB,EAAAqoB,2BAAA7nB,KAAA4nB,kBAAA5nB,KAAAgI,IAAA,EAAA,KAAA,GAAA0V,GAAAlB,EAAAkB,KAAA4B,EAAA9e,UAAA6d,EAAAX,IAAA,IAAA,QAAAoK,eAAAxI,EAAA7O,IAAAyJ,EAAAnB,OAAAgB","file":"lib.js","sourcesContent":["/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","/* Web Font Loader v1.6.28 - (c) Adobe Systems, Google. License: Apache 2.0 */(function(){function aa(a,b,c){return a.call.apply(a.bind,arguments)}function ba(a,b,c){if(!a)throw Error();if(2=b.f?e():a.fonts.load(fa(b.a),b.h).then(function(a){1<=a.length?d():setTimeout(f,25)},function(){e()})}f()}),e=null,f=new Promise(function(a,d){e=setTimeout(d,b.f)});Promise.race([f,d]).then(function(){e&&(clearTimeout(e),e=null);b.g(b.a)},function(){b.j(b.a)})};function Q(a,b,c,d,e,f,g){this.v=a;this.B=b;this.c=c;this.a=d;this.s=g||\"BESbswy\";this.f={};this.w=e||3E3;this.u=f||null;this.m=this.j=this.h=this.g=null;this.g=new M(this.c,this.s);this.h=new M(this.c,this.s);this.j=new M(this.c,this.s);this.m=new M(this.c,this.s);a=new G(this.a.c+\",serif\",J(this.a));a=O(a);this.g.a.style.cssText=a;a=new G(this.a.c+\",sans-serif\",J(this.a));a=O(a);this.h.a.style.cssText=a;a=new G(\"serif\",J(this.a));a=O(a);this.j.a.style.cssText=a;a=new G(\"sans-serif\",J(this.a));a=\nO(a);this.m.a.style.cssText=a;N(this.g);N(this.h);N(this.j);N(this.m)}var R={D:\"serif\",C:\"sans-serif\"},S=null;function T(){if(null===S){var a=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent);S=!!a&&(536>parseInt(a[1],10)||536===parseInt(a[1],10)&&11>=parseInt(a[2],10))}return S}Q.prototype.start=function(){this.f.serif=this.j.a.offsetWidth;this.f[\"sans-serif\"]=this.m.a.offsetWidth;this.A=q();U(this)};\nfunction la(a,b,c){for(var d in R)if(R.hasOwnProperty(d)&&b===a.f[R[d]]&&c===a.f[R[d]])return!0;return!1}function U(a){var b=a.g.a.offsetWidth,c=a.h.a.offsetWidth,d;(d=b===a.f.serif&&c===a.f[\"sans-serif\"])||(d=T()&&la(a,b,c));d?q()-a.A>=a.w?T()&&la(a,b,c)&&(null===a.u||a.u.hasOwnProperty(a.a.c))?V(a,a.v):V(a,a.B):ma(a):V(a,a.v)}function ma(a){setTimeout(p(function(){U(this)},a),50)}function V(a,b){setTimeout(p(function(){v(this.g.a);v(this.h.a);v(this.j.a);v(this.m.a);b(this.a)},a),0)};function W(a,b,c){this.c=a;this.a=b;this.f=0;this.m=this.j=!1;this.s=c}var X=null;W.prototype.g=function(a){var b=this.a;b.g&&w(b.f,[b.a.c(\"wf\",a.c,J(a).toString(),\"active\")],[b.a.c(\"wf\",a.c,J(a).toString(),\"loading\"),b.a.c(\"wf\",a.c,J(a).toString(),\"inactive\")]);K(b,\"fontactive\",a);this.m=!0;na(this)};\nW.prototype.h=function(a){var b=this.a;if(b.g){var c=y(b.f,b.a.c(\"wf\",a.c,J(a).toString(),\"active\")),d=[],e=[b.a.c(\"wf\",a.c,J(a).toString(),\"loading\")];c||d.push(b.a.c(\"wf\",a.c,J(a).toString(),\"inactive\"));w(b.f,d,e)}K(b,\"fontinactive\",a);na(this)};function na(a){0==--a.f&&a.j&&(a.m?(a=a.a,a.g&&w(a.f,[a.a.c(\"wf\",\"active\")],[a.a.c(\"wf\",\"loading\"),a.a.c(\"wf\",\"inactive\")]),K(a,\"active\")):L(a.a))};function oa(a){this.j=a;this.a=new ja;this.h=0;this.f=this.g=!0}oa.prototype.load=function(a){this.c=new ca(this.j,a.context||this.j);this.g=!1!==a.events;this.f=!1!==a.classes;pa(this,new ha(this.c,a),a)};\nfunction qa(a,b,c,d,e){var f=0==--a.h;(a.f||a.g)&&setTimeout(function(){var a=e||null,m=d||null||{};if(0===c.length&&f)L(b.a);else{b.f+=c.length;f&&(b.j=f);var h,l=[];for(h=0;h\n */\n!function(e,t){\"use strict\";\"function\"==typeof define&&define.amd?define(t):\"object\"==typeof exports?module.exports=t():e.wheellistener=t()}(\"undefined\"!=typeof window?window:this,function(){\"use strict\";function e(e){return e.uniqueNumber||\"\"+e}function t(e){var t=e.ownerDocument||e;return t.defaultView||t.parentWindow||(t.document?t:null)}function n(e){if(!p){var t=e.document,n=t.createElement(\"p\"),l=\"onwheel\"in n?\"wheel\":\"onmousewheel\"in n?\"mousewheel\":\"DOMMouseScroll\",r=t.implementation;r&&\"wheel\"!==l&&r.hasFeature&&r.hasFeature(\"Events.wheel\",\"3.0\")&&!r.hasFeature(\"Events.\"+w,\"3.0\")&&(l=\"wheel\"),p={eventListener:!!e.addEventListener,eventToBind:l,shim:\"wheel\"!==l}}return p}function l(e,t,n){if(e.indexOf)return e.indexOf(t,n||0);for(var l=n||0,r=e.length;r>l;++l)if(e[l]===t)return l;return-1}function r(e){this.originalEvent=e;for(var t=D;t--;){var n=S[t];this[n]=n in e?e[n]:T[n]}this.type=\"wheel\",this.button=0,this.detail=0,this.which=1;var l;\"mousewheel\"===e.type?(this.deltaY=-1/40*e.wheelDelta,\"wheelDeltaX\"in e&&(this.deltaX=-1/40*e.wheelDeltaX)):e.axis&&(l=[0,\"X\",\"Y\",\"Z\"][e.axis])?(this.deltaX=this.deltaY=this.deltaZ=0,this[\"delta\"+l]=e.detail):this.deltaY=e.detail,\"MozMousePixelScroll\"===e.type&&(this.deltaMode=0);var r=e.target;if(r&&3===r.nodeType)for(;r=r.parentNode||r.parentElement;)if(3!==r.nodeType){this.target=r;break}}function i(e,t,n){t.triggering=!0;for(var r,i=-1,a=t.length;++i-1;)t.splice(i,1)}function a(e,t,n){var l;t===g?(l=m,l.currentTarget=l.originalEvent.currentTarget,l.eventPhase=l.originalEvent.eventPhase):(g=t,l=m=new r(t)),e===l.target&&(l.eventPhase=2);var a=e[w]+\"-\"+(n?1:0),o=P[a];i(e,o,l),l.currentTarget=null,l.eventPhase=0,o.length||v(e,n)}function o(e){a(this,e,!1)}function u(e){a(this,e,!0)}function s(){var t=this,n=t.event;if(!n){for(var l=M.length;l--&&(t=M[l],!(n=t.event)););if(!n)return}var a=t.document,o=a.documentElement,u=t[w],s=n.srcElement,v=new r(n);v.target=s,v.view=t,v.timeStamp=(new Date).getTime(),v.pageX=n.clientX+o.scrollLeft,v.pageY=n.clientY+o.scrollTop,v.metaKey=!!n.metaKey;var d=s,c=[];do c.push(d);while(d=d.parentElement);c.push(a,t);for(var f=c.length,p=-1;++p<2&&!n.cancelBubble;){var g=0===p?1:3;c.reverse();for(var m=-1;++m-1;)M.splice(v,1);a.document.detachEvent(\"on\"+u,s),delete P[o],a[w]=f}}function v(e,l){var r=t(e),i=n(r).eventToBind;delete P[e[w]+\"-\"+(l?1:0)],e.removeEventListener(i,l?u:o,l),\"DOMMouseScroll\"===i&&e.removeEventListener(\"MozMousePixelScroll\",l?u:o,l),P[e[w]+\"-\"+(l?0:1)]||delete e[w]}function d(r,i,a){var h,v,d=t(r),c=n(d),f=c.eventToBind;if(a=!!a,c.eventListener)c.shim?(v=(r[w]||(r[w]=++E))+\"-\"+(a?1:0),(h=P[v])||(h=P[v]=[],r.addEventListener(f,a?u:o,a),\"DOMMouseScroll\"===f&&r.addEventListener(\"MozMousePixelScroll\",a?u:o,a)),l(h,i)<0&&h.push(i)):r.addEventListener(f,i,a);else{var p;(p=d[w])||(p=d[w]=++E,M.push(d),d.document.attachEvent(\"on\"+f,s)),v=p+\"-\"+e(r)+\"-\"+(a?1:0),h=P[v]||(P[v]=[]),l(h,i)<0&&(h.push(i),P[p]=(P[p]||0)+1)}}function c(r,i,a){var o,u,s,d=t(r),c=n(d),f=c.eventToBind;if(a=!!a,c.eventListener)c.shim?(u=r[w])&&(u+=\"-\"+(a?1:0),(o=P[u])&&(s=l(o,i))>-1&&(o.triggering?o[s]=null:(o.splice(s,1),o.length||v(r,a)))):r.removeEventListener(f,i,a);else{var p;(p=d[w])&&(u=p+\"-\"+e(r)+\"-\"+(a?1:0),(o=P[u])&&(s=l(o,i))>-1&&(--P[p],o.triggering?o[s]=null:(o.splice(s,1),o.length||h(r,a))))}}var f,p,g,m,w=\"___wheeleventshim___\",y=w+\"stopImmediatePropagation\",E=0,P={},M=[],b={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"},T={deltaMode:1,deltaX:null,deltaY:null,deltaZ:null,altKey:null,button:0,buttons:null,clientX:null,clientY:null,ctrlKey:null,metaKey:null,offsetX:null,offsetY:null,relatedTarget:null,screenX:null,screenY:null,shiftKey:null,which:1,detail:0,pageX:null,pageY:null,view:null,bubbles:!0,cancelable:!0,currentTarget:null,defaultPrevented:!1,eventPhase:null,target:null,timeStamp:null,type:\"wheel\"},S=[];for(var X in T)T.hasOwnProperty(X)&&S.push(X);var D=S.length;r.prototype.getModifierState=function(e){var t=this.originalEvent;if(t.getModifierState)return t.getModifierState.apply(t,arguments);var n=b[e];return n?!!t[n]:!1},r.prototype.preventDefault=function(){var e=this.originalEvent;e.preventDefault?e.preventDefault():e.returnValue=!1,this.defaultPrevented=!0},r.prototype.stopPropagation=function(){var e=this.originalEvent;e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},r.prototype.stopImmediatePropagation=function(){var e=this.originalEvent;e.stopImmediatePropagation?e.stopImmediatePropagation():this.stopPropagation(),this[y]=!0};for(var L=D;L--;)r.prototype[S[L]]=null;return{WheelEventShim:r,add:d,remove:c}});"]}