1
vendor: 68,253 bytes, lines 2-14
2// ================================================== 3// fancyBox v3.5.7 4// 5// Licensed GPLv3 for open source use 6// or fancyBox Commercial License for commercial use 7// 8// http://fancyapps.com/fancybox/ 9// Copyright 2019 fancyApps 10// 11// ================================================== 12!function(t,e,n,o){"use strict";function i(t,e){var o,i,a,s=[],r=0;t&&t.isDefaultPrevented()||(t.preventDefault(),e=e||{},t&&t.data&&(e=h(t.data.options,e)),o=e.$target||n(t.currentTarget).trigger("blur"),(a=n.fancybox.getInstance())&&a.$trigger&&a.$trigger.is(o)||(e.selector?s=n(e.selector):(i=o.attr("data-fancybox")||"",i?(s=t.data?t.data.items:[],s=s.length?s.filter('[data-fancybox="'+i+'"]'):n('[data-fancybox="'+i+'"]')):s=[o]),r=n(s).index(o),r<0&&(r=0),a=n.fancybox.open(s,e,r),a.$trigger=o))}if(t.console=t.console||{info:function(t){}},n){if(n.fn.fancybox)return void console.info("fancyBox already initialized");var a={closeExisting:!1,loop:!1,gutter:50,keyboard:!0,preventCaptionOverlap:!0,arrows:!0,infobar:!0,smallBtn:"auto",toolbar:"auto",buttons:["zoom","slideShow","thumbs","close"],idleTime:3,protect:!1,modal:!1,image:{preload:!1},ajax:{settings:{data:{fancybox:!0}}},iframe:{tpl:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" allowfullscreen="allowfullscreen" allow="autoplay; fullscreen" src=""></iframe>',preload:!0,css:{},attr:{scrolling:"auto"}},video:{tpl:'<video class="fancybox-video" controls controlsList="nodownload" poster="{{poster}}"><source src="{{src}}" type="{{format}}" />Sorry, your browser doesn\'t support embedded videos, <a href="{{src}}">download</a> and watch with your favorite video player!</video>',format:"",autoStart:!0},defaultType:"image",animationEffect:"zoom",animationDuration:366,zoomOpacity:"auto",transitionEffect:"fade",transitionDuration:366,slideClass:"",baseClass:"",baseTpl:'<div class="fancybox-container" role="dialog" tabindex="-1"><div class="fancybox-bg"></div><div class="fancybox-inner"><div class="fancybox-infobar"><span data-fancybox-index></span> / <span data-fancybox-count></span></div><div class="fancybox-toolbar">{{buttons}}</div><div class="fancybox-navigation">{{arrows}}</div><div class="fancybox-stage"></div><div class="fancybox-caption"><div class="fancybox-caption__body"></div></div></div></div>',spinnerTpl:'<div class="fancybox-loading"></div>',errorTpl:'<div class="fancybox-error"><p>{{ERROR}}</p></div>',btnTpl:{download:'<a download data-fancybox-download class="fancybox-button fancybox-button--download" title="{{DOWNLOAD}}" href="javascript:;"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.62 17.09V19H5.38v-1.91zm-2.97-6.96L17 11.45l-5 4.87-5-4.87 1.36-1.32 2.68 2.64V5h1.92v7.77z"/></svg></a>',zoom:'<button data-fancybox-zoom class="fancybox-button fancybox-button--zoom" title="{{ZOOM}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.7 17.3l-3-3a5.9 5.9 0 0 0-.6-7.6 5.9 5.9 0 0 0-8.4 0 5.9 5.9 0 0 0 0 8.4 5.9 5.9 0 0 0 7.7.7l3 3a1 1 0 0 0 1.3 0c.4-.5.4-1 0-1.5zM8.1 13.8a4 4 0 0 1 0-5.7 4 4 0 0 1 5.7 0 4 4 0 0 1 0 5.7 4 4 0 0 1-5.7 0z"/></svg></button>',close:'<button data-fancybox-close class="fancybox-button fancybox-button--close" title="{{CLOSE}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 10.6L6.6 5.2 5.2 6.6l5.4 5.4-5.4 5.4 1.4 1.4 5.4-5.4 5.4 5.4 1.4-1.4-5.4-5.4 5.4-5.4-1.4-1.4-5.4 5.4z"/></svg></button>',arrowLeft:'<button data-fancybox-prev class="fancybox-button fancybox-button--arrow_left" title="{{PREV}}"><div><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11.28 15.7l-1.34 1.37L5 12l4.94-5.07 1.34 1.38-2.68 2.72H19v1.94H8.6z"/></svg></div></button>',arrowRight:'<button data-fancybox-next class="fancybox-button fancybox-button--arrow_right" title="{{NEXT}}"><div><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.4 12.97l-2.68 2.72 1.34 1.38L19 12l-4.94-5.07-1.34 1.38 2.68 2.72H5v1.94z"/></svg></div></button>',smallBtn:'<button type="button" data-fancybox-close class="fancybox-button fancybox-close-small" title="{{CLOSE}}"><svg xmlns="http://www.w3.org/2000/svg" version="1" viewBox="0 0 24 24"><path d="M13 12l5-5-1-1-5 5-5-5-1 1 5 5-5 5 1 1 5-5 5 5 1-1z"/></svg></button>'},parentEl:"body",hideScrollbar:!0,autoFocus:!0,backFocus:!0,trapFocus:!0,fullScreen:{autoStart:!1},touch:{vertical:!0,momentum:!0},hash:null,media:{},slideShow:{autoStart:!1,speed:3e3},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"},wheel:"auto",onInit:n.noop,beforeLoad:n.noop,afterLoad:n.noop,beforeShow:n.noop,afterShow:n.noop,beforeClose:n.noop,afterClose:n.noop,onActivate:n.noop,onDeactivate:n.noop,clickContent:function(t,e){return"image"===t.type&&"zoom"},clickSlide:"close",clickOutside:"close",dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1,mobile:{preventCaptionOverlap:!1,idleTime:!1,clickContent:function(t,e){return"image"===t.type&&"toggleControls"},clickSlide:function(t,e){return"image"===t.type?"toggleControls":"close"},dblclickContent:function(t,e){return"image"===t.type&&"zoom"},dblclickSlide:function(t,e){return"image"===t.type&&"zoom"}},lang:"en",i18n:{en:{CLOSE:"Close",NEXT:"Next",PREV:"Previous",ERROR:"The requested content cannot be loaded. <br/> Please try again later.",PLAY_START:"Start slideshow",PLAY_STOP:"Pause slideshow",FULL_SCREEN:"Full screen",THUMBS:"Thumbnails",DOWNLOAD:"Download",SHARE:"Share",ZOOM:"Zoom"},de:{CLOSE:"Schließen",NEXT:"Weiter",PREV:"Zurück",ERROR:"Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es später nochmal.",PLAY_START:"Diaschau starten",PLAY_STOP:"Diaschau beenden",FULL_SCREEN:"Vollbild",THUMBS:"Vorschaubilder",DOWNLOAD:"Herunterladen",SHARE:"Teilen",ZOOM:"Vergrößern"}}},s=n(t),r=n(e),c=0,l=function(t){return t&&t.hasOwnProperty&&t instanceof n},d=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),u=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),f=function(){var t,n=e.createElement("fakeelement"),o={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(t in o)if(void 0!==n.style[t])return o[t];return"transitionend"}(),p=function(t){return t&&t.length&&t[0].offsetHeight},h=function(t,e){var o=n.extend(!0,{},t,e);return n.each(e,function(t,e){n.isArray(e)&&(o[t]=e)}),o},g=function(t){var o,i;return!(!t||t.ownerDocument!==e)&&(n(".fancybox-container").css("pointer-events","none"),o={x:t.getBoundingClientRect().left+t.offsetWidth/2,y:t.getBoundingClientRect().top+t.offsetHeight/2},i=e.elementFromPoint(o.x,o.y)===t,n(".fancybox-container").css("pointer-events",""),i)},b=function(t,e,o){var i=this;i.opts=h({index:o},n.fancybox.defaults),n.isPlainObject(e)&&(i.opts=h(i.opts,e)),n.fancybox.isMobile&&(i.opts=h(i.opts,i.opts.mobile)),i.id=i.opts.id||++c,i.currIndex=parseInt(i.opts.index,10)||0,i.prevIndex=null,i.prevPos=null,i.currPos=0,i.firstRun=!0,i.group=[],i.slides={},i.addContent(t),i.group.length&&i.init()};n.extend(b.prototype,{init:function(){var o,i,a=this,s=a.group[a.currIndex],r=s.opts;r.closeExisting&&n.fancybox.close(!0),n("body").addClass("fancybox-active"),!n.fancybox.getInstance()&&!1!==r.hideScrollbar&&!n.fancybox.isMobile&&e.body.scrollHeight>t.innerHeight&&(n("head").append('<style id="fancybox-style-noscroll" type="text/css">.compensate-for-scrollbar{margin-right:'+(t.innerWidth-e.documentElement.clientWidth)+"px;}</style>"),n("body").addClass("compensate-for-scrollbar")),i="",n.each(r.buttons,function(t,e){i+=r.btnTpl[e]||""}),o=n(a.translate(a,r.baseTpl.replace("{{buttons}}",i).replace("{{arrows}}",r.btnTpl.arrowLeft+r.btnTpl.arrowRight))).attr("id","fancybox-container-"+a.id).addClass(r.baseClass).data("FancyBox",a).appendTo(r.parentEl),a.$refs={container:o},["bg","inner","infobar","toolbar","stage","caption","navigation"].forEach(function(t){a.$refs[t]=o.find(".fancybox-"+t)}),a.trigger("onInit"),a.activate(),a.jumpTo(a.currIndex)},translate:function(t,e){var n=t.opts.i18n[t.opts.lang]||t.opts.i18n.en;return e.replace(/\{\{(\w+)\}\}/g,function(t,e){return void 0===n[e]?t:n[e]})},addContent:function(t){var e,o=this,i=n.makeArray(t);n.each(i,function(t,e){var i,a,s,r,c,l={},d={};n.isPlainObject(e)?(l=e,d=e.opts||e):"object"===n.type(e)&&n(e).length?(i=n(e),d=i.data()||{},d=n.extend(!0,{},d,d.options),d.$orig=i,l.src=o.opts.src||d.src||i.attr("href"),l.type||l.src||(l.type="inline",l.src=e)):l={type:"html",src:e+""},l.opts=n.extend(!0,{},o.opts,d),n.isArray(d.buttons)&&(l.opts.buttons=d.buttons),n.fancybox.isMobile&&l.opts.mobile&&(l.opts=h(l.opts,l.opts.mobile)),a=l.type||l.opts.type,r=l.src||"",!a&&r&&((s=r.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i))?(a="video",l.opts.video.format||(l.opts.video.format="video/"+("ogv"===s[1]?"ogg":s[1]))):r.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)?a="image":r.match(/\.(pdf)((\?|#).*)?$/i)?(a="iframe",l=n.extend(!0,l,{contentType:"pdf",opts:{iframe:{preload:!1}}})):"#"===r.charAt(0)&&(a="inline")),a?l.type=a:o.trigger("objectNeedsType",l),l.contentType||(l.contentType=n.inArray(l.type,["html","inline","ajax"])>-1?"html":l.type),l.index=o.group.length,"auto"==l.opts.smallBtn&&(l.opts.smallBtn=n.inArray(l.type,["html","inline","ajax"])>-1),"auto"===l.opts.toolbar&&(l.opts.toolbar=!l.opts.smallBtn),l.$thumb=l.opts.$thumb||null,l.opts.$trigger&&l.index===o.opts.index&&(l.$thumb=l.opts.$trigger.find("img:first"),l.$thumb.length&&(l.opts.$orig=l.opts.$trigger)),l.$thumb&&l.$thumb.length||!l.opts.$orig||(l.$thumb=l.opts.$orig.find("img:first")),l.$thumb&&!l.$thumb.length&&(l.$thumb=null),l.thumb=l.opts.thumb||(l.$thumb?l.$thumb[0].src:null),"function"===n.type(l.opts.caption)&&(l.opts.caption=l.opts.caption.apply(e,[o,l])),"function"===n.type(o.opts.caption)&&(l.opts.caption=o.opts.caption.apply(e,[o,l])),l.opts.caption instanceof n||(l.opts.caption=void 0===l.opts.caption?"":l.opts.caption+""),"ajax"===l.type&&(c=r.split(/\s+/,2),c.length>1&&(l.src=c.shift(),l.opts.filter=c.shift())),l.opts.modal&&(l.opts=n.extend(!0,l.opts,{trapFocus:!0,infobar:0,toolbar:0,smallBtn:0,keyboard:0,slideShow:0,fullScreen:0,thumbs:0,touch:0,clickContent:!1,clickSlide:!1,clickOutside:!1,dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1})),o.group.push(l)}),Object.keys(o.slides).length&&(o.updateControls(),(e=o.Thumbs)&&e.isActive&&(e.create(),e.focus()))},addEvents:function(){var e=this;e.removeEvents(),e.$refs.container.on("click.fb-close","[data-fancybox-close]",function(t){t.stopPropagation(),t.preventDefault(),e.close(t)}).on("touchstart.fb-prev click.fb-prev","[data-fancybox-prev]",function(t){t.stopPropagation(),t.preventDefault(),e.previous()}).on("touchstart.fb-next click.fb-next","[data-fancybox-next]",function(t){t.stopPropagation(),t.preventDefault(),e.next()}).on("click.fb","[data-fancybox-zoom]",function(t){e[e.isScaledDown()?"scaleToActual":"scaleToFit"]()}),s.on("orientationchange.fb resize.fb",function(t){t&&t.originalEvent&&"resize"===t.originalEvent.type?(e.requestId&&u(e.requestId),e.requestId=d(function(){e.update(t)})):(e.current&&"iframe"===e.current.type&&e.$refs.stage.hide(),setTimeout(function(){e.$refs.stage.show(),e.update(t)},n.fancybox.isMobile?600:250))}),r.on("keydown.fb",function(t){var o=n.fancybox?n.fancybox.getInstance():null,i=o.current,a=t.keyCode||t.which;if(9==a)return void(i.opts.trapFocus&&e.focus(t));if(!(!i.opts.keyboard||t.ctrlKey||t.altKey||t.shiftKey||n(t.target).is("input,textarea,video,audio,select")))return 8===a||27===a?(t.preventDefault(),void e.close(t)):37===a||38===a?(t.preventDefault(),void e.previous()):39===a||40===a?(t.preventDefault(),void e.next()):void e.trigger("afterKeydown",t,a)}),e.group[e.currIndex].opts.idleTime&&(e.idleSecondsCounter=0,r.on("mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle",function(t){e.idleSecondsCounter=0,e.isIdle&&e.showControls(),e.isIdle=!1}),e.idleInterval=t.setInterval(function(){++e.idleSecondsCounter>=e.group[e.currIndex].opts.idleTime&&!e.isDragging&&(e.isIdle=!0,e.idleSecondsCounter=0,e.hideControls())},1e3))},removeEvents:function(){var e=this;s.off("orientationchange.fb resize.fb"),r.off("keydown.fb .fb-idle"),this.$refs.container.off(".fb-close .fb-prev .fb-next"),e.idleInterval&&(t.clearInterval(e.idleInterval),e.idleInterval=null)},previous:function(t){return this.jumpTo(this.currPos-1,t)},next:function(t){return this.jumpTo(this.currPos+1,t)},jumpTo:function(t,e){var o,i,a,s,r,c,l,d,u,f=this,h=f.group.length;if(!(f.isDragging||f.isClosing||f.isAnimating&&f.firstRun)){if(t=parseInt(t,10),!(a=f.current?f.current.opts.loop:f.opts.loop)&&(t<0||t>=h))return!1;if(o=f.firstRun=!Object.keys(f.slides).length,r=f.current,f.prevIndex=f.currIndex,f.prevPos=f.currPos,s=f.createSlide(t),h>1&&((a||s.index<h-1)&&f.createSlide(t+1),(a||s.index>0)&&f.createSlide(t-1)),f.current=s,f.currIndex=s.index,f.currPos=s.pos,f.trigger("beforeShow",o),f.updateControls(),s.forcedDuration=void 0,n.isNumeric(e)?s.forcedDuration=e:e=s.opts[o?"animationDuration":"transitionDuration"],e=parseInt(e,10),i=f.isMoved(s),s.$slide.addClass("fancybox-slide--current"),o)return s.opts.animationEffect&&e&&f.$refs.container.css("transition-duration",e+"ms"),f.$refs.container.addClass("fancybox-is-open").trigger("focus"),f.loadSlide(s),void f.preload("image");c=n.fancybox.getTranslate(r.$slide),l=n.fancybox.getTranslate(f.$refs.stage),n.each(f.slides,function(t,e){n.fancybox.stop(e.$slide,!0)}),r.pos!==s.pos&&(r.isComplete=!1),r.$slide.removeClass("fancybox-slide--complete fancybox-slide--current"),i?(u=c.left-(r.pos*c.width+r.pos*r.opts.gutter),n.each(f.slides,function(t,o){o.$slide.removeClass("fancybox-animated").removeClass(function(t,e){return(e.match(/(^|\s)fancybox-fx-\S+/g)||[]).join(" ")});var i=o.pos*c.width+o.pos*o.opts.gutter;n.fancybox.setTranslate(o.$slide,{top:0,left:i-l.left+u}),o.pos!==s.pos&&o.$slide.addClass("fancybox-slide--"+(o.pos>s.pos?"next":"previous")),p(o.$slide),n.fancybox.animate(o.$slide,{top:0,left:(o.pos-s.pos)*c.width+(o.pos-s.pos)*o.opts.gutter},e,function(){o.$slide.css({transform:"",opacity:""}).removeClass("fancybox-slide--next fancybox-slide--previous"),o.pos===f.currPos&&f.complete()})})):e&&s.opts.transitionEffect&&(d="fancybox-animated fancybox-fx-"+s.opts.transitionEffect,r.$slide.addClass("fancybox-slide--"+(r.pos>s.pos?"next":"previous")),n.fancybox.animate(r.$slide,d,e,function(){r.$slide.removeClass(d).removeClass("fancybox-slide--next fancybox-slide--previous")},!1)),s.isLoaded?f.revealContent(s):f.loadSlide(s),f.preload("image")}},createSlide:function(t){var e,o,i=this;return o=t%i.group.length,o=o<0?i.group.length+o:o,!i.slides[t]&&i.group[o]&&(e=n('<div class="fancybox-slide"></div>').appendTo(i.$refs.stage),i.slides[t]=n.extend(!0,{},i.group[o],{pos:t,$slide:e,isLoaded:!1}),i.updateSlide(i.slides[t])),i.slides[t]},scaleToActual:function(t,e,o){var i,a,s,r,c,l=this,d=l.current,u=d.$content,f=n.fancybox.getTranslate(d.$slide).width,p=n.fancybox.getTranslate(d.$slide).height,h=d.width,g=d.height;l.isAnimating||l.isMoved()||!u||"image"!=d.type||!d.isLoaded||d.hasError||(l.isAnimating=!0,n.fancybox.stop(u),t=void 0===t?.5*f:t,e=void 0===e?.5*p:e,i=n.fancybox.getTranslate(u),i.top-=n.fancybox.getTranslate(d.$slide).top,i.left-=n.fancybox.getTranslate(d.$slide).left,r=h/i.width,c=g/i.height,a=.5*f-.5*h,s=.5*p-.5*g,h>f&&(a=i.left*r-(t*r-t),a>0&&(a=0),a<f-h&&(a=f-h)),g>p&&(s=i.top*c-(e*c-e),s>0&&(s=0),s<p-g&&(s=p-g)),l.updateCursor(h,g),n.fancybox.animate(u,{top:s,left:a,scaleX:r,scaleY:c},o||366,function(){l.isAnimating=!1}),l.SlideShow&&l.SlideShow.isActive&&l.SlideShow.stop())},scaleToFit:function(t){var e,o=this,i=o.current,a=i.$content;o.isAnimating||o.isMoved()||!a||"image"!=i.type||!i.isLoaded||i.hasError||(o.isAnimating=!0,n.fancybox.stop(a),e=o.getFitPos(i),o.updateCursor(e.width,e.height),n.fancybox.animate(a,{top:e.top,left:e.left,scaleX:e.width/a.width(),scaleY:e.height/a.height()},t||366,function(){o.isAnimating=!1}))},getFitPos:function(t){var e,o,i,a,s=this,r=t.$content,c=t.$slide,l=t.width||t.opts.width,d=t.height||t.opts.height,u={};return!!(t.isLoaded&&r&&r.length)&&(e=n.fancybox.getTranslate(s.$refs.stage).width,o=n.fancybox.getTranslate(s.$refs.stage).height,e-=parseFloat(c.css("paddingLeft"))+parseFloat(c.css("paddingRight"))+parseFloat(r.css("marginLeft"))+parseFloat(r.css("marginRight")),o-=parseFloat(c.css("paddingTop"))+parseFloat(c.css("paddingBottom"))+parseFloat(r.css("marginTop"))+parseFloat(r.css("marginBottom")),l&&d||(l=e,d=o),i=Math.min(1,e/l,o/d),l*=i,d*=i,l>e-.5&&(l=e),d>o-.5&&(d=o),"image"===t.type?(u.top=Math.floor(.5*(o-d))+parseFloat(c.css("paddingTop")),u.left=Math.floor(.5*(e-l))+parseFloat(c.css("paddingLeft"))):"video"===t.contentType&&(a=t.opts.width&&t.opts.height?l/d:t.opts.ratio||16/9,d>l/a?d=l/a:l>d*a&&(l=d*a)),u.width=l,u.height=d,u)},update:function(t){var e=this;n.each(e.slides,function(n,o){e.updateSlide(o,t)})},updateSlide:function(t,e){var o=this,i=t&&t.$content,a=t.width||t.opts.width,s=t.height||t.opts.height,r=t.$slide;o.adjustCaption(t),i&&(a||s||"video"===t.contentType)&&!t.hasError&&(n.fancybox.stop(i),n.fancybox.setTranslate(i,o.getFitPos(t)),t.pos===o.currPos&&(o.isAnimating=!1,o.updateCursor())),o.adjustLayout(t),r.length&&(r.trigger("refresh"),t.pos===o.currPos&&o.$refs.toolbar.add(o.$refs.navigation.find(".fancybox-button--arrow_right")).toggleClass("compensate-for-scrollbar",r.get(0).scrollHeight>r.get(0).clientHeight)),o.trigger("onUpdate",t,e)},centerSlide:function(t){var e=this,o=e.current,i=o.$slide;!e.isClosing&&o&&(i.siblings().css({transform:"",opacity:""}),i.parent().children().removeClass("fancybox-slide--previous fancybox-slide--next"),n.fancybox.animate(i,{top:0,left:0,opacity:1},void 0===t?0:t,function(){i.css({transform:"",opacity:""}),o.isComplete||e.complete()},!1))},isMoved:function(t){var e,o,i=t||this.current;return!!i&&(o=n.fancybox.getTranslate(this.$refs.stage),e=n.fancybox.getTranslate(i.$slide),!i.$slide.hasClass("fancybox-animated")&&(Math.abs(e.top-o.top)>.5||Math.abs(e.left-o.left)>.5))},updateCursor:function(t,e){var o,i,a=this,s=a.current,r=a.$refs.container;s&&!a.isClosing&&a.Guestures&&(r.removeClass("fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan"),o=a.canPan(t,e),i=!!o||a.isZoomable(),r.toggleClass("fancybox-is-zoomable",i),n("[data-fancybox-zoom]").prop("disabled",!i),o?r.addClass("fancybox-can-pan"):i&&("zoom"===s.opts.clickContent||n.isFunction(s.opts.clickContent)&&"zoom"==s.opts.clickContent(s))?r.addClass("fancybox-can-zoomIn"):s.opts.touch&&(s.opts.touch.vertical||a.group.length>1)&&"video"!==s.contentType&&r.addClass("fancybox-can-swipe"))},isZoomable:function(){var t,e=this,n=e.current;if(n&&!e.isClosing&&"image"===n.type&&!n.hasError){if(!n.isLoaded)return!0;if((t=e.getFitPos(n))&&(n.width>t.width||n.height>t.height))return!0}return!1},isScaledDown:function(t,e){var o=this,i=!1,a=o.current,s=a.$content;return void 0!==t&&void 0!==e?i=t<a.width&&e<a.height:s&&(i=n.fancybox.getTranslate(s),i=i.width<a.width&&i.height<a.height),i},canPan:function(t,e){var o=this,i=o.current,a=null,s=!1;return"image"===i.type&&(i.isComplete||t&&e)&&!i.hasError&&(s=o.getFitPos(i),void 0!==t&&void 0!==e?a={width:t,height:e}:i.isComplete&&(a=n.fancybox.getTranslate(i.$content)),a&&s&&(s=Math.abs(a.width-s.width)>1.5||Math.abs(a.height-s.height)>1.5)),s},loadSlide:function(t){var e,o,i,a=this;if(!t.isLoading&&!t.isLoaded){if(t.isLoading=!0,!1===a.trigger("beforeLoad",t))return t.isLoading=!1,!1;switch(e=t.type,o=t.$slide,o.off("refresh").trigger("onReset").addClass(t.opts.slideClass),e){case"image":a.setImage(t);break;case"iframe":a.setIframe(t);break;case"html":a.setContent(t,t.src||t.content);break;case"video":a.setContent(t,t.opts.video.tpl.replace(/\{\{src\}\}/gi,t.src).replace("{{format}}",t.opts.videoFormat||t.opts.video.format||"").replace("{{poster}}",t.thumb||""));break;case"inline":n(t.src).length?a.setContent(t,n(t.src)):a.setError(t);break;case"ajax":a.showLoading(t),i=n.ajax(n.extend({},t.opts.ajax.settings,{url:t.src,success:function(e,n){"success"===n&&a.setContent(t,e)},error:function(e,n){e&&"abort"!==n&&a.setError(t)}})),o.one("onReset",function(){i.abort()});break;default:a.setError(t)}return!0}},setImage:function(t){var o,i=this;setTimeout(function(){var e=t.$image;i.isClosing||!t.isLoading||e&&e.length&&e[0].complete||t.hasError||i.showLoading(t)},50),i.checkSrcset(t),t.$content=n('<div class="fancybox-content"></div>').addClass("fancybox-is-hidden").appendTo(t.$slide.addClass("fancybox-slide--image")),!1!==t.opts.preload&&t.opts.width&&t.opts.height&&t.thumb&&(t.width=t.opts.width,t.height=t.opts.height,o=e.createElement("img"),o.onerror=function(){n(this).remove(),t.$ghost=null},o.onload=function(){i.afterLoad(t)},t.$ghost=n(o).addClass("fancybox-image").appendTo(t.$content).attr("src",t.thumb)),i.setBigImage(t)},checkSrcset:function(e){var n,o,i,a,s=e.opts.srcset||e.opts.image.srcset;if(s){i=t.devicePixelRatio||1,a=t.innerWidth*i,o=s.split(",").map(function(t){var e={};return t.trim().split(/\s+/).forEach(function(t,n){var o=parseInt(t.substring(0,t.length-1),10);if(0===n)return e.url=t;o&&(e.value=o,e.postfix=t[t.length-1])}),e}),o.sort(function(t,e){return t.value-e.value});for(var r=0;r<o.length;r++){var c=o[r];if("w"===c.postfix&&c.value>=a||"x"===c.postfix&&c.value>=i){n=c;break}}!n&&o.length&&(n=o[o.length-1]),n&&(e.src=n.url,e.width&&e.height&&"w"==n.postfix&&(e.height=e.width/e.height*n.value,e.width=n.value),e.opts.srcset=s)}},setBigImage:function(t){var o=this,i=e.createElement("img"),a=n(i);t.$image=a.one("error",function(){o.setError(t)}).one("load",function(){var e;t.$ghost||(o.resolveImageSlideSize(t,this.naturalWidth,this.naturalHeight),o.afterLoad(t)),o.isClosing||(t.opts.srcset&&(e=t.opts.sizes,e&&"auto"!==e||(e=(t.width/t.height>1&&s.width()/s.height()>1?"100":Math.round(t.width/t.height*100))+"vw"),a.attr("sizes",e).attr("srcset",t.opts.srcset)),t.$ghost&&setTimeout(function(){t.$ghost&&!o.isClosing&&t.$ghost.hide()},Math.min(300,Math.max(1e3,t.height/1600))),o.hideLoading(t))}).addClass("fancybox-image").attr("src",t.src).appendTo(t.$content),(i.complete||"complete"==i.readyState)&&a.naturalWidth&&a.naturalHeight?a.trigger("load"):i.error&&a.trigger("error")},resolveImageSlideSize:function(t,e,n){var o=parseInt(t.opts.width,10),i=parseInt(t.opts.height,10);t.width=e,t.height=n,o>0&&(t.width=o,t.height=Math.floor(o*n/e)),i>0&&(t.width=Math.floor(i*e/n),t.height=i)},setIframe:function(t){var e,o=this,i=t.opts.iframe,a=t.$slide;t.$content=n('<div class="fancybox-content'+(i.preload?" fancybox-is-hidden":"")+'"></div>').css(i.css).appendTo(a),a.addClass("fancybox-slide--"+t.contentType),t.$iframe=e=n(i.tpl.replace(/\{rnd\}/g,(new Date).getTime())).attr(i.attr).appendTo(t.$content),i.preload?(o.showLoading(t),e.on("load.fb error.fb",function(e){this.isReady=1,t.$slide.trigger("refresh"),o.afterLoad(t)}),a.on("refresh.fb",function(){var n,o,s=t.$content,r=i.css.width,c=i.css.height;if(1===e[0].isReady){try{n=e.contents(),o=n.find("body")}catch(t){}o&&o.length&&o.children().length&&(a.css("overflow","visible"),s.css({width:"100%","max-width":"100%",height:"9999px"}),void 0===r&&(r=Math.ceil(Math.max(o[0].clientWidth,o.outerWidth(!0)))),s.css("width",r||"").css("max-width",""),void 0===c&&(c=Math.ceil(Math.max(o[0].clientHeight,o.outerHeight(!0)))),s.css("height",c||""),a.css("overflow","auto")),s.removeClass("fancybox-is-hidden")}})):o.afterLoad(t),e.attr("src",t.src),a.one("onReset",function(){try{n(this).find("iframe").hide().unbind().attr("src","//about:blank")}catch(t){}n(this).off("refresh.fb").empty(),t.isLoaded=!1,t.isRevealed=!1})},setContent:function(t,e){var o=this;o.isClosing||(o.hideLoading(t),t.$content&&n.fancybox.stop(t.$content),t.$slide.empty(),l(e)&&e.parent().length?((e.hasClass("fancybox-content")||e.parent().hasClass("fancybox-content"))&&e.parents(".fancybox-slide").trigger("onReset"),t.$placeholder=n("<div>").hide().insertAfter(e),e.css("display","inline-block")):t.hasError||("string"===n.type(e)&&(e=n("<div>").append(n.trim(e)).contents()),t.opts.filter&&(e=n("<div>").html(e).find(t.opts.filter))),t.$slide.one("onReset",function(){n(this).find("video,audio").trigger("pause"),t.$placeholder&&(t.$placeholder.after(e.removeClass("fancybox-content").hide()).remove(),t.$placeholder=null),t.$smallBtn&&(t.$smallBtn.remove(),t.$smallBtn=null),t.hasError||(n(this).empty(),t.isLoaded=!1,t.isRevealed=!1)}),n(e).appendTo(t.$slide),n(e).is("video,audio")&&(n(e).addClass("fancybox-video"),n(e).wrap("<div></div>"),t.contentType="video",t.opts.width=t.opts.width||n(e).attr("width"),t.opts.height=t.opts.height||n(e).attr("height")),t.$content=t.$slide.children().filter("div,form,main,video,audio,article,.fancybox-content").first(),t.$content.siblings().hide(),t.$content.length||(t.$content=t.$slide.wrapInner("<div></div>").children().first()),t.$content.addClass("fancybox-content"),t.$slide.addClass("fancybox-slide--"+t.contentType),o.afterLoad(t))},setError:function(t){t.hasError=!0,t.$slide.trigger("onReset").removeClass("fancybox-slide--"+t.contentType).addClass("fancybox-slide--error"),t.contentType="html",this.setContent(t,this.translate(t,t.opts.errorTpl)),t.pos===this.currPos&&(this.isAnimating=!1)},showLoading:function(t){var e=this;(t=t||e.current)&&!t.$spinner&&(t.$spinner=n(e.translate(e,e.opts.spinnerTpl)).appendTo(t.$slide).hide().fadeIn("fast"))},hideLoading:function(t){var e=this;(t=t||e.current)&&t.$spinner&&(t.$spinner.stop().remove(),delete t.$spinner)},afterLoad:function(t){var e=this;e.isClosing||(t.isLoading=!1,t.isLoaded=!0,e.trigger("afterLoad",t),e.hideLoading(t),!t.opts.smallBtn||t.$smallBtn&&t.$smallBtn.length||(t.$smallBtn=n(e.translate(t,t.opts.btnTpl.smallBtn)).appendTo(t.$content)),t.opts.protect&&t.$content&&!t.hasError&&(t.$content.on("contextmenu.fb",function(t){return 2==t.button&&t.preventDefault(),!0}),"image"===t.type&&n('<div class="fancybox-spaceball"></div>').appendTo(t.$content)),e.adjustCaption(t),e.adjustLayout(t),t.pos===e.currPos&&e.updateCursor(),e.revealContent(t))},adjustCaption:function(t){var e,n=this,o=t||n.current,i=o.opts.caption,a=o.opts.preventCaptionOverlap,s=n.$refs.caption,r=!1;s.toggleClass("fancybox-caption--separate",a),a&&i&&i.length&&(o.pos!==n.currPos?(e=s.clone().appendTo(s.parent()),e.children().eq(0).empty().html(i),r=e.outerHeight(!0),e.empty().remove()):n.$caption&&(r=n.$caption.outerHeight(!0)),o.$slide.css("padding-bottom",r||""))},adjustLayout:function(t){var e,n,o,i,a=this,s=t||a.current;s.isLoaded&&!0!==s.opts.disableLayoutFix&&(s.$content.css("margin-bottom",""),s.$content.outerHeight()>s.$slide.height()+.5&&(o=s.$slide[0].style["padding-bottom"],i=s.$slide.css("padding-bottom"),parseFloat(i)>0&&(e=s.$slide[0].scrollHeight,s.$slide.css("padding-bottom",0),Math.abs(e-s.$slide[0].scrollHeight)<1&&(n=i),s.$slide.css("padding-bottom",o))),s.$content.css("margin-bottom",n))},revealContent:function(t){var e,o,i,a,s=this,r=t.$slide,c=!1,l=!1,d=s.isMoved(t),u=t.isRevealed;return t.isRevealed=!0,e=t.opts[s.firstRun?"animationEffect":"transitionEffect"],i=t.opts[s.firstRun?"animationDuration":"transitionDuration"],i=parseInt(void 0===t.forcedDuration?i:t.forcedDuration,10),!d&&t.pos===s.currPos&&i||(e=!1),"zoom"===e&&(t.pos===s.currPos&&i&&"image"===t.type&&!t.hasError&&(l=s.getThumbPos(t))?c=s.getFitPos(t):e="fade"),"zoom"===e?(s.isAnimating=!0,c.scaleX=c.width/l.width,c.scaleY=c.height/l.height,a=t.opts.zoomOpacity,"auto"==a&&(a=Math.abs(t.width/t.height-l.width/l.height)>.1),a&&(l.opacity=.1,c.opacity=1),n.fancybox.setTranslate(t.$content.removeClass("fancybox-is-hidden"),l),p(t.$content),void n.fancybox.animate(t.$content,c,i,function(){s.isAnimating=!1,s.complete()})):(s.updateSlide(t),e?(n.fancybox.stop(r),o="fancybox-slide--"+(t.pos>=s.prevPos?"next":"previous")+" fancybox-animated fancybox-fx-"+e,r.addClass(o).removeClass("fancybox-slide--current"),t.$content.removeClass("fancybox-is-hidden"),p(r),"image"!==t.type&&t.$content.hide().show(0),void n.fancybox.animate(r,"fancybox-slide--current",i,function(){r.removeClass(o).css({transform:"",opacity:""}),t.pos===s.currPos&&s.complete()},!0)):(t.$content.removeClass("fancybox-is-hidden"),u||!d||"image"!==t.type||t.hasError||t.$content.hide().fadeIn("fast"),void(t.pos===s.currPos&&s.complete())))},getThumbPos:function(t){var e,o,i,a,s,r=!1,c=t.$thumb;return!(!c||!g(c[0]))&&(e=n.fancybox.getTranslate(c),o=parseFloat(c.css("border-top-width")||0),i=parseFloat(c.css("border-right-width")||0),a=parseFloat(c.css("border-bottom-width")||0),s=parseFloat(c.css("border-left-width")||0),r={top:e.top+o,left:e.left+s,width:e.width-i-s,height:e.height-o-a,scaleX:1,scaleY:1},e.width>0&&e.height>0&&r)},complete:function(){var t,e=this,o=e.current,i={};!e.isMoved()&&o.isLoaded&&(o.isComplete||(o.isComplete=!0,o.$slide.siblings().trigger("onReset"),e.preload("inline"),p(o.$slide),o.$slide.addClass("fancybox-slide--complete"),n.each(e.slides,function(t,o){o.pos>=e.currPos-1&&o.pos<=e.currPos+1?i[o.pos]=o:o&&(n.fancybox.stop(o.$slide),o.$slide.off().remove())}),e.slides=i),e.isAnimating=!1,e.updateCursor(),e.trigger("afterShow"),o.opts.video.autoStart&&o.$slide.find("video,audio").filter(":visible:first").trigger("play").one("ended",function(){Document.exitFullscreen?Document.exitFullscreen():this.webkitExitFullscreen&&this.webkitExitFullscreen(),e.next()}),o.opts.autoFocus&&"html"===o.contentType&&(t=o.$content.find("input[autofocus]:enabled:visible:first"),t.length?t.trigger("focus"):e.focus(null,!0)),o.$slide.scrollTop(0).scrollLeft(0))},preload:function(t){var e,n,o=this;o.group.length<2||(n=o.slides[o.currPos+1],e=o.slides[o.currPos-1],e&&e.type===t&&o.loadSlide(e),n&&n.type===t&&o.loadSlide(n))},focus:function(t,o){var i,a,s=this,r=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])","button:not([disabled]):not([aria-hidden])","iframe","object","embed","video","audio","[contenteditable]",'[tabindex]:not([tabindex^="-"])'].join(",");s.isClosing||(i=!t&&s.current&&s.current.isComplete?s.current.$slide.find("*:visible"+(o?":not(.fancybox-close-small)":"")):s.$refs.container.find("*:visible"),i=i.filter(r).filter(function(){return"hidden"!==n(this).css("visibility")&&!n(this).hasClass("disabled")}),i.length?(a=i.index(e.activeElement),t&&t.shiftKey?(a<0||0==a)&&(t.preventDefault(),i.eq(i.length-1).trigger("focus")):(a<0||a==i.length-1)&&(t&&t.preventDefault(),i.eq(0).trigger("focus"))):s.$refs.container.trigger("focus"))},activate:function(){var t=this;n(".fancybox-container").each(function(){var e=n(this).data("FancyBox");e&&e.id!==t.id&&!e.isClosing&&(e.trigger("onDeactivate"),e.removeEvents(),e.isVisible=!1)}),t.isVisible=!0,(t.current||t.isIdle)&&(t.update(),t.updateControls()),t.trigger("onActivate"),t.addEvents()},close:function(t,e){var o,i,a,s,r,c,l,u=this,f=u.current,h=function(){u.cleanUp(t)};return!u.isClosing&&(u.isClosing=!0,!1===u.trigger("beforeClose",t)?(u.isClosing=!1,d(function(){u.update()}),!1):(u.removeEvents(),a=f.$content,o=f.opts.animationEffect,i=n.isNumeric(e)?e:o?f.opts.animationDuration:0,f.$slide.removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"),!0!==t?n.fancybox.stop(f.$slide):o=!1,f.$slide.siblings().trigger("onReset").remove(),i&&u.$refs.container.removeClass("fancybox-is-open").addClass("fancybox-is-closing").css("transition-duration",i+"ms"),u.hideLoading(f),u.hideControls(!0),u.updateCursor(),"zoom"!==o||a&&i&&"image"===f.type&&!u.isMoved()&&!f.hasError&&(l=u.getThumbPos(f))||(o="fade"),"zoom"===o?(n.fancybox.stop(a),s=n.fancybox.getTranslate(a),c={top:s.top,left:s.left,scaleX:s.width/l.width,scaleY:s.height/l.height,width:l.width,height:l.height},r=f.opts.zoomOpacity, 13"auto"==r&&(r=Math.abs(f.width/f.height-l.width/l.height)>.1),r&&(l.opacity=0),n.fancybox.setTranslate(a,c),p(a),n.fancybox.animate(a,l,i,h),!0):(o&&i?n.fancybox.animate(f.$slide.addClass("fancybox-slide--previous").removeClass("fancybox-slide--current"),"fancybox-animated fancybox-fx-"+o,i,h):!0===t?setTimeout(h,i):h(),!0)))},cleanUp:function(e){var o,i,a,s=this,r=s.current.opts.$orig;s.current.$slide.trigger("onReset"),s.$refs.container.empty().remove(),s.trigger("afterClose",e),s.current.opts.backFocus&&(r&&r.length&&r.is(":visible")||(r=s.$trigger),r&&r.length&&(i=t.scrollX,a=t.scrollY,r.trigger("focus"),n("html, body").scrollTop(a).scrollLeft(i))),s.current=null,o=n.fancybox.getInstance(),o?o.activate():(n("body").removeClass("fancybox-active compensate-for-scrollbar"),n("#fancybox-style-noscroll").remove())},trigger:function(t,e){var o,i=Array.prototype.slice.call(arguments,1),a=this,s=e&&e.opts?e:a.current;if(s?i.unshift(s):s=a,i.unshift(a),n.isFunction(s.opts[t])&&(o=s.opts[t].apply(s,i)),!1===o)return o;"afterClose"!==t&&a.$refs?a.$refs.container.trigger(t+".fb",i):r.trigger(t+".fb",i)},updateControls:function(){var t=this,o=t.current,i=o.index,a=t.$refs.container,s=t.$refs.caption,r=o.opts.caption;o.$slide.trigger("refresh"),r&&r.length?(t.$caption=s,s.children().eq(0).html(r)):t.$caption=null,t.hasHiddenControls||t.isIdle||t.showControls(),a.find("[data-fancybox-count]").html(t.group.length),a.find("[data-fancybox-index]").html(i+1),a.find("[data-fancybox-prev]").prop("disabled",!o.opts.loop&&i<=0),a.find("[data-fancybox-next]").prop("disabled",!o.opts.loop&&i>=t.group.length-1),"image"===o.type?a.find("[data-fancybox-zoom]").show().end().find("[data-fancybox-download]").attr("href",o.opts.image.src||o.src).show():o.opts.toolbar&&a.find("[data-fancybox-download],[data-fancybox-zoom]").hide(),n(e.activeElement).is(":hidden,[disabled]")&&t.$refs.container.trigger("focus")},hideControls:function(t){var e=this,n=["infobar","toolbar","nav"];!t&&e.current.opts.preventCaptionOverlap||n.push("caption"),this.$refs.container.removeClass(n.map(function(t){return"fancybox-show-"+t}).join(" ")),this.hasHiddenControls=!0},showControls:function(){var t=this,e=t.current?t.current.opts:t.opts,n=t.$refs.container;t.hasHiddenControls=!1,t.idleSecondsCounter=0,n.toggleClass("fancybox-show-toolbar",!(!e.toolbar||!e.buttons)).toggleClass("fancybox-show-infobar",!!(e.infobar&&t.group.length>1)).toggleClass("fancybox-show-caption",!!t.$caption).toggleClass("fancybox-show-nav",!!(e.arrows&&t.group.length>1)).toggleClass("fancybox-is-modal",!!e.modal)},toggleControls:function(){this.hasHiddenControls?this.showControls():this.hideControls()}}),n.fancybox={version:"3.5.7",defaults:a,getInstance:function(t){var e=n('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox"),o=Array.prototype.slice.call(arguments,1);return e instanceof b&&("string"===n.type(t)?e[t].apply(e,o):"function"===n.type(t)&&t.apply(e,o),e)},open:function(t,e,n){return new b(t,e,n)},close:function(t){var e=this.getInstance();e&&(e.close(),!0===t&&this.close(t))},destroy:function(){this.close(!0),r.add("body").off("click.fb-start","**")},isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),use3d:function(){var n=e.createElement("div");return t.getComputedStyle&&t.getComputedStyle(n)&&t.getComputedStyle(n).getPropertyValue("transform")&&!(e.documentMode&&e.documentMode<11)}(),getTranslate:function(t){var e;return!(!t||!t.length)&&(e=t[0].getBoundingClientRect(),{top:e.top||0,left:e.left||0,width:e.width,height:e.height,opacity:parseFloat(t.css("opacity"))})},setTranslate:function(t,e){var n="",o={};if(t&&e)return void 0===e.left&&void 0===e.top||(n=(void 0===e.left?t.position().left:e.left)+"px, "+(void 0===e.top?t.position().top:e.top)+"px",n=this.use3d?"translate3d("+n+", 0px)":"translate("+n+")"),void 0!==e.scaleX&&void 0!==e.scaleY?n+=" scale("+e.scaleX+", "+e.scaleY+")":void 0!==e.scaleX&&(n+=" scaleX("+e.scaleX+")"),n.length&&(o.transform=n),void 0!==e.opacity&&(o.opacity=e.opacity),void 0!==e.width&&(o.width=e.width),void 0!==e.height&&(o.height=e.height),t.css(o)},animate:function(t,e,o,i,a){var s,r=this;n.isFunction(o)&&(i=o,o=null),r.stop(t),s=r.getTranslate(t),t.on(f,function(c){(!c||!c.originalEvent||t.is(c.originalEvent.target)&&"z-index"!=c.originalEvent.propertyName)&&(r.stop(t),n.isNumeric(o)&&t.css("transition-duration",""),n.isPlainObject(e)?void 0!==e.scaleX&&void 0!==e.scaleY&&r.setTranslate(t,{top:e.top,left:e.left,width:s.width*e.scaleX,height:s.height*e.scaleY,scaleX:1,scaleY:1}):!0!==a&&t.removeClass(e),n.isFunction(i)&&i(c))}),n.isNumeric(o)&&t.css("transition-duration",o+"ms"),n.isPlainObject(e)?(void 0!==e.scaleX&&void 0!==e.scaleY&&(delete e.width,delete e.height,t.parent().hasClass("fancybox-slide--image")&&t.parent().addClass("fancybox-is-scaling")),n.fancybox.setTranslate(t,e)):t.addClass(e),t.data("timer",setTimeout(function(){t.trigger(f)},o+33))},stop:function(t,e){t&&t.length&&(clearTimeout(t.data("timer")),e&&t.trigger(f),t.off(f).css("transition-duration",""),t.parent().removeClass("fancybox-is-scaling"))}},n.fn.fancybox=function(t){var e;return t=t||{},e=t.selector||!1,e?n("body").off("click.fb-start",e).on("click.fb-start",e,{options:t},i):this.off("click.fb-start").on("click.fb-start",{items:this,options:t},i),this},r.on("click.fb-start","[data-fancybox]",i),r.on("click.fb-start","[data-fancybox-trigger]",function(t){n('[data-fancybox="'+n(this).attr("data-fancybox-trigger")+'"]').eq(n(this).attr("data-fancybox-index")||0).trigger("click.fb-start",{$trigger:n(this)})}),function(){var t=null;r.on("mousedown mouseup focus blur",".fancybox-button",function(e){switch(e.type){case"mousedown":t=n(this);break;case"mouseup":t=null;break;case"focusin":n(".fancybox-button").removeClass("fancybox-focus"),n(this).is(t)||n(this).is("[disabled]")||n(this).addClass("fancybox-focus");break;case"focusout":n(".fancybox-button").removeClass("fancybox-focus")}})}()}}(window,document,jQuery),function(t){"use strict";var e={youtube:{matcher:/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i,params:{autoplay:1,autohide:1,fs:1,rel:0,hd:1,wmode:"transparent",enablejsapi:1,html5:1},paramPlace:8,type:"iframe",url:"https://www.youtube-nocookie.com/embed/$4",thumb:"https://img.youtube.com/vi/$4/hqdefault.jpg"},vimeo:{matcher:/^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/,params:{autoplay:1,hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1},paramPlace:3,type:"iframe",url:"//player.vimeo.com/video/$2"},instagram:{matcher:/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,type:"image",url:"//$1/p/$2/media/?size=l"},gmap_place:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/?ll="+(t[9]?t[9]+"&z="+Math.floor(t[10])+(t[12]?t[12].replace(/^\//,"&"):""):t[12]+"").replace(/\?/,"&")+"&output="+(t[12]&&t[12].indexOf("layer=c")>0?"svembed":"embed")}},gmap_search:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/maps?q="+t[5].replace("query=","q=").replace("api=1","")+"&output=embed"}}},n=function(e,n,o){if(e)return o=o||"","object"===t.type(o)&&(o=t.param(o,!0)),t.each(n,function(t,n){e=e.replace("$"+t,n||"")}),o.length&&(e+=(e.indexOf("?")>0?"&":"?")+o),e};t(document).on("objectNeedsType.fb",function(o,i,a){var s,r,c,l,d,u,f,p=a.src||"",h=!1;s=t.extend(!0,{},e,a.opts.media),t.each(s,function(e,o){if(c=p.match(o.matcher)){if(h=o.type,f=e,u={},o.paramPlace&&c[o.paramPlace]){d=c[o.paramPlace],"?"==d[0]&&(d=d.substring(1)),d=d.split("&");for(var i=0;i<d.length;++i){var s=d[i].split("=",2);2==s.length&&(u[s[0]]=decodeURIComponent(s[1].replace(/\+/g," ")))}}return l=t.extend(!0,{},o.params,a.opts[e],u),p="function"===t.type(o.url)?o.url.call(this,c,l,a):n(o.url,c,l),r="function"===t.type(o.thumb)?o.thumb.call(this,c,l,a):n(o.thumb,c),"youtube"===e?p=p.replace(/&t=((\d+)m)?(\d+)s/,function(t,e,n,o){return"&start="+((n?60*parseInt(n,10):0)+parseInt(o,10))}):"vimeo"===e&&(p=p.replace("&%23","#")),!1}}),h?(a.opts.thumb||a.opts.$thumb&&a.opts.$thumb.length||(a.opts.thumb=r),"iframe"===h&&(a.opts=t.extend(!0,a.opts,{iframe:{preload:!1,attr:{scrolling:"no"}}})),t.extend(a,{type:h,src:p,origSrc:a.src,contentSource:f,contentType:"image"===h?"image":"gmap_place"==f||"gmap_search"==f?"map":"video"})):p&&(a.type=a.opts.defaultType)});var o={youtube:{src:"https://www.youtube.com/iframe_api",class:"YT",loading:!1,loaded:!1},vimeo:{src:"https://player.vimeo.com/api/player.js",class:"Vimeo",loading:!1,loaded:!1},load:function(t){var e,n=this;if(this[t].loaded)return void setTimeout(function(){n.done(t)});this[t].loading||(this[t].loading=!0,e=document.createElement("script"),e.type="text/javascript",e.src=this[t].src,"youtube"===t?window.onYouTubeIframeAPIReady=function(){n[t].loaded=!0,n.done(t)}:e.onload=function(){n[t].loaded=!0,n.done(t)},document.body.appendChild(e))},done:function(e){var n,o,i;"youtube"===e&&delete window.onYouTubeIframeAPIReady,(n=t.fancybox.getInstance())&&(o=n.current.$content.find("iframe"),"youtube"===e&&void 0!==YT&&YT?i=new YT.Player(o.attr("id"),{events:{onStateChange:function(t){0==t.data&&n.next()}}}):"vimeo"===e&&void 0!==Vimeo&&Vimeo&&(i=new Vimeo.Player(o),i.on("ended",function(){n.next()})))}};t(document).on({"afterShow.fb":function(t,e,n){e.group.length>1&&("youtube"===n.contentSource||"vimeo"===n.contentSource)&&o.load(n.contentSource)}})}(jQuery),function(t,e,n){"use strict";var o=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),i=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),a=function(e){var n=[];e=e.originalEvent||e||t.e,e=e.touches&&e.touches.length?e.touches:e.changedTouches&&e.changedTouches.length?e.changedTouches:[e];for(var o in e)e[o].pageX?n.push({x:e[o].pageX,y:e[o].pageY}):e[o].clientX&&n.push({x:e[o].clientX,y:e[o].clientY});return n},s=function(t,e,n){return e&&t?"x"===n?t.x-e.x:"y"===n?t.y-e.y:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)):0},r=function(t){if(t.is('a,area,button,[role="button"],input,label,select,summary,textarea,video,audio,iframe')||n.isFunction(t.get(0).onclick)||t.data("selectable"))return!0;for(var e=0,o=t[0].attributes,i=o.length;e<i;e++)if("data-fancybox-"===o[e].nodeName.substr(0,14))return!0;return!1},c=function(e){var n=t.getComputedStyle(e)["overflow-y"],o=t.getComputedStyle(e)["overflow-x"],i=("scroll"===n||"auto"===n)&&e.scrollHeight>e.clientHeight,a=("scroll"===o||"auto"===o)&&e.scrollWidth>e.clientWidth;return i||a},l=function(t){for(var e=!1;;){if(e=c(t.get(0)))break;if(t=t.parent(),!t.length||t.hasClass("fancybox-stage")||t.is("body"))break}return e},d=function(t){var e=this;e.instance=t,e.$bg=t.$refs.bg,e.$stage=t.$refs.stage,e.$container=t.$refs.container,e.destroy(),e.$container.on("touchstart.fb.touch mousedown.fb.touch",n.proxy(e,"ontouchstart"))};d.prototype.destroy=function(){var t=this;t.$container.off(".fb.touch"),n(e).off(".fb.touch"),t.requestId&&(i(t.requestId),t.requestId=null),t.tapped&&(clearTimeout(t.tapped),t.tapped=null)},d.prototype.ontouchstart=function(o){var i=this,c=n(o.target),d=i.instance,u=d.current,f=u.$slide,p=u.$content,h="touchstart"==o.type;if(h&&i.$container.off("mousedown.fb.touch"),(!o.originalEvent||2!=o.originalEvent.button)&&f.length&&c.length&&!r(c)&&!r(c.parent())&&(c.is("img")||!(o.originalEvent.clientX>c[0].clientWidth+c.offset().left))){if(!u||d.isAnimating||u.$slide.hasClass("fancybox-animated"))return o.stopPropagation(),void o.preventDefault();i.realPoints=i.startPoints=a(o),i.startPoints.length&&(u.touch&&o.stopPropagation(),i.startEvent=o,i.canTap=!0,i.$target=c,i.$content=p,i.opts=u.opts.touch,i.isPanning=!1,i.isSwiping=!1,i.isZooming=!1,i.isScrolling=!1,i.canPan=d.canPan(),i.startTime=(new Date).getTime(),i.distanceX=i.distanceY=i.distance=0,i.canvasWidth=Math.round(f[0].clientWidth),i.canvasHeight=Math.round(f[0].clientHeight),i.contentLastPos=null,i.contentStartPos=n.fancybox.getTranslate(i.$content)||{top:0,left:0},i.sliderStartPos=n.fancybox.getTranslate(f),i.stagePos=n.fancybox.getTranslate(d.$refs.stage),i.sliderStartPos.top-=i.stagePos.top,i.sliderStartPos.left-=i.stagePos.left,i.contentStartPos.top-=i.stagePos.top,i.contentStartPos.left-=i.stagePos.left,n(e).off(".fb.touch").on(h?"touchend.fb.touch touchcancel.fb.touch":"mouseup.fb.touch mouseleave.fb.touch",n.proxy(i,"ontouchend")).on(h?"touchmove.fb.touch":"mousemove.fb.touch",n.proxy(i,"ontouchmove")),n.fancybox.isMobile&&e.addEventListener("scroll",i.onscroll,!0),((i.opts||i.canPan)&&(c.is(i.$stage)||i.$stage.find(c).length)||(c.is(".fancybox-image")&&o.preventDefault(),n.fancybox.isMobile&&c.parents(".fancybox-caption").length))&&(i.isScrollable=l(c)||l(c.parent()),n.fancybox.isMobile&&i.isScrollable||o.preventDefault(),(1===i.startPoints.length||u.hasError)&&(i.canPan?(n.fancybox.stop(i.$content),i.isPanning=!0):i.isSwiping=!0,i.$container.addClass("fancybox-is-grabbing")),2===i.startPoints.length&&"image"===u.type&&(u.isLoaded||u.$ghost)&&(i.canTap=!1,i.isSwiping=!1,i.isPanning=!1,i.isZooming=!0,n.fancybox.stop(i.$content),i.centerPointStartX=.5*(i.startPoints[0].x+i.startPoints[1].x)-n(t).scrollLeft(),i.centerPointStartY=.5*(i.startPoints[0].y+i.startPoints[1].y)-n(t).scrollTop(),i.percentageOfImageAtPinchPointX=(i.centerPointStartX-i.contentStartPos.left)/i.contentStartPos.width,i.percentageOfImageAtPinchPointY=(i.centerPointStartY-i.contentStartPos.top)/i.contentStartPos.height,i.startDistanceBetweenFingers=s(i.startPoints[0],i.startPoints[1]))))}},d.prototype.onscroll=function(t){var n=this;n.isScrolling=!0,e.removeEventListener("scroll",n.onscroll,!0)},d.prototype.ontouchmove=function(t){var e=this;return void 0!==t.originalEvent.buttons&&0===t.originalEvent.buttons?void e.ontouchend(t):e.isScrolling?void(e.canTap=!1):(e.newPoints=a(t),void((e.opts||e.canPan)&&e.newPoints.length&&e.newPoints.length&&(e.isSwiping&&!0===e.isSwiping||t.preventDefault(),e.distanceX=s(e.newPoints[0],e.startPoints[0],"x"),e.distanceY=s(e.newPoints[0],e.startPoints[0],"y"),e.distance=s(e.newPoints[0],e.startPoints[0]),e.distance>0&&(e.isSwiping?e.onSwipe(t):e.isPanning?e.onPan():e.isZooming&&e.onZoom()))))},d.prototype.onSwipe=function(e){var a,s=this,r=s.instance,c=s.isSwiping,l=s.sliderStartPos.left||0;if(!0!==c)"x"==c&&(s.distanceX>0&&(s.instance.group.length<2||0===s.instance.current.index&&!s.instance.current.opts.loop)?l+=Math.pow(s.distanceX,.8):s.distanceX<0&&(s.instance.group.length<2||s.instance.current.index===s.instance.group.length-1&&!s.instance.current.opts.loop)?l-=Math.pow(-s.distanceX,.8):l+=s.distanceX),s.sliderLastPos={top:"x"==c?0:s.sliderStartPos.top+s.distanceY,left:l},s.requestId&&(i(s.requestId),s.requestId=null),s.requestId=o(function(){s.sliderLastPos&&(n.each(s.instance.slides,function(t,e){var o=e.pos-s.instance.currPos;n.fancybox.setTranslate(e.$slide,{top:s.sliderLastPos.top,left:s.sliderLastPos.left+o*s.canvasWidth+o*e.opts.gutter})}),s.$container.addClass("fancybox-is-sliding"))});else if(Math.abs(s.distance)>10){if(s.canTap=!1,r.group.length<2&&s.opts.vertical?s.isSwiping="y":r.isDragging||!1===s.opts.vertical||"auto"===s.opts.vertical&&n(t).width()>800?s.isSwiping="x":(a=Math.abs(180*Math.atan2(s.distanceY,s.distanceX)/Math.PI),s.isSwiping=a>45&&a<135?"y":"x"),"y"===s.isSwiping&&n.fancybox.isMobile&&s.isScrollable)return void(s.isScrolling=!0);r.isDragging=s.isSwiping,s.startPoints=s.newPoints,n.each(r.slides,function(t,e){var o,i;n.fancybox.stop(e.$slide),o=n.fancybox.getTranslate(e.$slide),i=n.fancybox.getTranslate(r.$refs.stage),e.$slide.css({transform:"",opacity:"","transition-duration":""}).removeClass("fancybox-animated").removeClass(function(t,e){return(e.match(/(^|\s)fancybox-fx-\S+/g)||[]).join(" ")}),e.pos===r.current.pos&&(s.sliderStartPos.top=o.top-i.top,s.sliderStartPos.left=o.left-i.left),n.fancybox.setTranslate(e.$slide,{top:o.top-i.top,left:o.left-i.left})}),r.SlideShow&&r.SlideShow.isActive&&r.SlideShow.stop()}},d.prototype.onPan=function(){var t=this;if(s(t.newPoints[0],t.realPoints[0])<(n.fancybox.isMobile?10:5))return void(t.startPoints=t.newPoints);t.canTap=!1,t.contentLastPos=t.limitMovement(),t.requestId&&i(t.requestId),t.requestId=o(function(){n.fancybox.setTranslate(t.$content,t.contentLastPos)})},d.prototype.limitMovement=function(){var t,e,n,o,i,a,s=this,r=s.canvasWidth,c=s.canvasHeight,l=s.distanceX,d=s.distanceY,u=s.contentStartPos,f=u.left,p=u.top,h=u.width,g=u.height;return i=h>r?f+l:f,a=p+d,t=Math.max(0,.5*r-.5*h),e=Math.max(0,.5*c-.5*g),n=Math.min(r-h,.5*r-.5*h),o=Math.min(c-g,.5*c-.5*g),l>0&&i>t&&(i=t-1+Math.pow(-t+f+l,.8)||0),l<0&&i<n&&(i=n+1-Math.pow(n-f-l,.8)||0),d>0&&a>e&&(a=e-1+Math.pow(-e+p+d,.8)||0),d<0&&a<o&&(a=o+1-Math.pow(o-p-d,.8)||0),{top:a,left:i}},d.prototype.limitPosition=function(t,e,n,o){var i=this,a=i.canvasWidth,s=i.canvasHeight;return n>a?(t=t>0?0:t,t=t<a-n?a-n:t):t=Math.max(0,a/2-n/2),o>s?(e=e>0?0:e,e=e<s-o?s-o:e):e=Math.max(0,s/2-o/2),{top:e,left:t}},d.prototype.onZoom=function(){var e=this,a=e.contentStartPos,r=a.width,c=a.height,l=a.left,d=a.top,u=s(e.newPoints[0],e.newPoints[1]),f=u/e.startDistanceBetweenFingers,p=Math.floor(r*f),h=Math.floor(c*f),g=(r-p)*e.percentageOfImageAtPinchPointX,b=(c-h)*e.percentageOfImageAtPinchPointY,m=(e.newPoints[0].x+e.newPoints[1].x)/2-n(t).scrollLeft(),v=(e.newPoints[0].y+e.newPoints[1].y)/2-n(t).scrollTop(),y=m-e.centerPointStartX,x=v-e.centerPointStartY,w=l+(g+y),$=d+(b+x),S={top:$,left:w,scaleX:f,scaleY:f};e.canTap=!1,e.newWidth=p,e.newHeight=h,e.contentLastPos=S,e.requestId&&i(e.requestId),e.requestId=o(function(){n.fancybox.setTranslate(e.$content,e.contentLastPos)})},d.prototype.ontouchend=function(t){var o=this,s=o.isSwiping,r=o.isPanning,c=o.isZooming,l=o.isScrolling;if(o.endPoints=a(t),o.dMs=Math.max((new Date).getTime()-o.startTime,1),o.$container.removeClass("fancybox-is-grabbing"),n(e).off(".fb.touch"),e.removeEventListener("scroll",o.onscroll,!0),o.requestId&&(i(o.requestId),o.requestId=null),o.isSwiping=!1,o.isPanning=!1,o.isZooming=!1,o.isScrolling=!1,o.instance.isDragging=!1,o.canTap)return o.onTap(t);o.speed=100,o.velocityX=o.distanceX/o.dMs*.5,o.velocityY=o.distanceY/o.dMs*.5,r?o.endPanning():c?o.endZooming():o.endSwiping(s,l)},d.prototype.endSwiping=function(t,e){var o=this,i=!1,a=o.instance.group.length,s=Math.abs(o.distanceX),r="x"==t&&a>1&&(o.dMs>130&&s>10||s>50);o.sliderLastPos=null,"y"==t&&!e&&Math.abs(o.distanceY)>50?(n.fancybox.animate(o.instance.current.$slide,{top:o.sliderStartPos.top+o.distanceY+150*o.velocityY,opacity:0},200),i=o.instance.close(!0,250)):r&&o.distanceX>0?i=o.instance.previous(300):r&&o.distanceX<0&&(i=o.instance.next(300)),!1!==i||"x"!=t&&"y"!=t||o.instance.centerSlide(200),o.$container.removeClass("fancybox-is-sliding")},d.prototype.endPanning=function(){var t,e,o,i=this;i.contentLastPos&&(!1===i.opts.momentum||i.dMs>350?(t=i.contentLastPos.left,e=i.contentLastPos.top):(t=i.contentLastPos.left+500*i.velocityX,e=i.contentLastPos.top+500*i.velocityY),o=i.limitPosition(t,e,i.contentStartPos.width,i.contentStartPos.height),o.width=i.contentStartPos.width,o.height=i.contentStartPos.height,n.fancybox.animate(i.$content,o,366))},d.prototype.endZooming=function(){var t,e,o,i,a=this,s=a.instance.current,r=a.newWidth,c=a.newHeight;a.contentLastPos&&(t=a.contentLastPos.left,e=a.contentLastPos.top,i={top:e,left:t,width:r,height:c,scaleX:1,scaleY:1},n.fancybox.setTranslate(a.$content,i),r<a.canvasWidth&&c<a.canvasHeight?a.instance.scaleToFit(150):r>s.width||c>s.height?a.instance.scaleToActual(a.centerPointStartX,a.centerPointStartY,150):(o=a.limitPosition(t,e,r,c),n.fancybox.animate(a.$content,o,150)))},d.prototype.onTap=function(e){var o,i=this,s=n(e.target),r=i.instance,c=r.current,l=e&&a(e)||i.startPoints,d=l[0]?l[0].x-n(t).scrollLeft()-i.stagePos.left:0,u=l[0]?l[0].y-n(t).scrollTop()-i.stagePos.top:0,f=function(t){var o=c.opts[t];if(n.isFunction(o)&&(o=o.apply(r,[c,e])),o)switch(o){case"close":r.close(i.startEvent);break;case"toggleControls":r.toggleControls();break;case"next":r.next();break;case"nextOrClose":r.group.length>1?r.next():r.close(i.startEvent);break;case"zoom":"image"==c.type&&(c.isLoaded||c.$ghost)&&(r.canPan()?r.scaleToFit():r.isScaledDown()?r.scaleToActual(d,u):r.group.length<2&&r.close(i.startEvent))}};if((!e.originalEvent||2!=e.originalEvent.button)&&(s.is("img")||!(d>s[0].clientWidth+s.offset().left))){if(s.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container"))o="Outside";else if(s.is(".fancybox-slide"))o="Slide";else{if(!r.current.$content||!r.current.$content.find(s).addBack().filter(s).length)return;o="Content"}if(i.tapped){if(clearTimeout(i.tapped),i.tapped=null,Math.abs(d-i.tapX)>50||Math.abs(u-i.tapY)>50)return this;f("dblclick"+o)}else i.tapX=d,i.tapY=u,c.opts["dblclick"+o]&&c.opts["dblclick"+o]!==c.opts["click"+o]?i.tapped=setTimeout(function(){i.tapped=null,r.isAnimating||f("click"+o)},500):f("click"+o);return this}},n(e).on("onActivate.fb",function(t,e){e&&!e.Guestures&&(e.Guestures=new d(e))}).on("beforeClose.fb",function(t,e){e&&e.Guestures&&e.Guestures.destroy()})}(window,document,jQuery),function(t,e){"use strict";e.extend(!0,e.fancybox.defaults,{btnTpl:{slideShow:'<button data-fancybox-play class="fancybox-button fancybox-button--play" title="{{PLAY_START}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6.5 5.4v13.2l11-6.6z"/></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.33 5.75h2.2v12.5h-2.2V5.75zm5.15 0h2.2v12.5h-2.2V5.75z"/></svg></button>'},slideShow:{autoStart:!1,speed:3e3,progress:!0}});var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{timer:null,isActive:!1,$button:null,init:function(){var t=this,n=t.instance,o=n.group[n.currIndex].opts.slideShow;t.$button=n.$refs.toolbar.find("[data-fancybox-play]").on("click",function(){t.toggle()}),n.group.length<2||!o?t.$button.hide():o.progress&&(t.$progress=e('<div class="fancybox-progress"></div>').appendTo(n.$refs.inner))},set:function(t){var n=this,o=n.instance,i=o.current;i&&(!0===t||i.opts.loop||o.currIndex<o.group.length-1)?n.isActive&&"video"!==i.contentType&&(n.$progress&&e.fancybox.animate(n.$progress.show(),{scaleX:1},i.opts.slideShow.speed),n.timer=setTimeout(function(){o.current.opts.loop||o.current.index!=o.group.length-1?o.next():o.jumpTo(0)},i.opts.slideShow.speed)):(n.stop(),o.idleSecondsCounter=0,o.showControls())},clear:function(){var t=this;clearTimeout(t.timer),t.timer=null,t.$progress&&t.$progress.removeAttr("style").hide()},start:function(){var t=this,e=t.instance.current;e&&(t.$button.attr("title",(e.opts.i18n[e.opts.lang]||e.opts.i18n.en).PLAY_STOP).removeClass("fancybox-button--play").addClass("fancybox-button--pause"),t.isActive=!0,e.isComplete&&t.set(!0),t.instance.trigger("onSlideShowChange",!0))},stop:function(){var t=this,e=t.instance.current;t.clear(),t.$button.attr("title",(e.opts.i18n[e.opts.lang]||e.opts.i18n.en).PLAY_START).removeClass("fancybox-button--pause").addClass("fancybox-button--play"),t.isActive=!1,t.instance.trigger("onSlideShowChange",!1),t.$progress&&t.$progress.removeAttr("style").hide()},toggle:function(){var t=this;t.isActive?t.stop():t.start()}}),e(t).on({"onInit.fb":function(t,e){e&&!e.SlideShow&&(e.SlideShow=new n(e))},"beforeShow.fb":function(t,e,n,o){var i=e&&e.SlideShow;o?i&&n.opts.slideShow.autoStart&&i.start():i&&i.isActive&&i.clear()},"afterShow.fb":function(t,e,n){var o=e&&e.SlideShow;o&&o.isActive&&o.set()},"afterKeydown.fb":function(n,o,i,a,s){var r=o&&o.SlideShow;!r||!i.opts.slideShow||80!==s&&32!==s||e(t.activeElement).is("button,a,input")||(a.preventDefault(),r.toggle())},"beforeClose.fb onDeactivate.fb":function(t,e){var n=e&&e.SlideShow;n&&n.stop()}}),e(t).on("visibilitychange",function(){var n=e.fancybox.getInstance(),o=n&&n.SlideShow;o&&o.isActive&&(t.hidden?o.clear():o.set())})}(document,jQuery),function(t,e){"use strict";var n=function(){for(var e=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],n={},o=0;o<e.length;o++){var i=e[o];if(i&&i[1]in t){for(var a=0;a<i.length;a++)n[e[0][a]]=i[a];return n}}return!1}();if(n){var o={request:function(e){e=e||t.documentElement,e[n.requestFullscreen](e.ALLOW_KEYBOARD_INPUT)},exit:function(){t[n.exitFullscreen]()},toggle:function(e){e=e||t.documentElement,this.isFullscreen()?this.exit():this.request(e)},isFullscreen:function(){return Boolean(t[n.fullscreenElement])},enabled:function(){return Boolean(t[n.fullscreenEnabled])}};e.extend(!0,e.fancybox.defaults,{btnTpl:{fullScreen:'<button data-fancybox-fullscreen class="fancybox-button fancybox-button--fsenter" title="{{FULL_SCREEN}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"/></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5 16h3v3h2v-5H5zm3-8H5v2h5V5H8zm6 11h2v-3h3v-2h-5zm2-11V5h-2v5h5V8z"/></svg></button>'},fullScreen:{autoStart:!1}}),e(t).on(n.fullscreenchange,function(){var t=o.isFullscreen(),n=e.fancybox.getInstance();n&&(n.current&&"image"===n.current.type&&n.isAnimating&&(n.isAnimating=!1,n.update(!0,!0,0),n.isComplete||n.complete()),n.trigger("onFullscreenChange",t),n.$refs.container.toggleClass("fancybox-is-fullscreen",t),n.$refs.toolbar.find("[data-fancybox-fullscreen]").toggleClass("fancybox-button--fsenter",!t).toggleClass("fancybox-button--fsexit",t))})}e(t).on({"onInit.fb":function(t,e){var i;if(!n)return void e.$refs.toolbar.find("[data-fancybox-fullscreen]").remove();e&&e.group[e.currIndex].opts.fullScreen?(i=e.$refs.container,i.on("click.fb-fullscreen","[data-fancybox-fullscreen]",function(t){t.stopPropagation(),t.preventDefault(),o.toggle()}),e.opts.fullScreen&&!0===e.opts.fullScreen.autoStart&&o.request(),e.FullScreen=o):e&&e.$refs.toolbar.find("[data-fancybox-fullscreen]").hide()},"afterKeydown.fb":function(t,e,n,o,i){e&&e.FullScreen&&70===i&&(o.preventDefault(),e.FullScreen.toggle())},"beforeClose.fb":function(t,e){e&&e.FullScreen&&e.$refs.container.hasClass("fancybox-is-fullscreen")&&o.exit()}})}(document,jQuery),function(t,e){"use strict";var n="fancybox-thumbs";e.fancybox.defaults=e.extend(!0,{btnTpl:{thumbs:'<button data-fancybox-thumbs class="fancybox-button fancybox-button--thumbs" title="{{THUMBS}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14.59 14.59h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76H5.65V5.65z"/></svg></button>'},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"}},e.fancybox.defaults);var o=function(t){this.init(t)};e.extend(o.prototype,{$button:null,$grid:null,$list:null,isVisible:!1,isActive:!1,init:function(t){var e=this,n=t.group,o=0;e.instance=t,e.opts=n[t.currIndex].opts.thumbs,t.Thumbs=e,e.$button=t.$refs.toolbar.find("[data-fancybox-thumbs]");for(var i=0,a=n.length;i<a&&(n[i].thumb&&o++,!(o>1));i++);o>1&&e.opts?(e.$button.removeAttr("style").on("click",function(){e.toggle()}),e.isActive=!0):e.$button.hide()},create:function(){var t,o=this,i=o.instance,a=o.opts.parentEl,s=[];o.$grid||(o.$grid=e('<div class="'+n+" "+n+"-"+o.opts.axis+'"></div>').appendTo(i.$refs.container.find(a).addBack().filter(a)),o.$grid.on("click","a",function(){i.jumpTo(e(this).attr("data-index"))})),o.$list||(o.$list=e('<div class="'+n+'__list">').appendTo(o.$grid)),e.each(i.group,function(e,n){t=n.thumb,t||"image"!==n.type||(t=n.src),s.push('<a href="javascript:;" tabindex="0" data-index="'+e+'"'+(t&&t.length?' style="background-image:url('+t+')"':'class="fancybox-thumbs-missing"')+"></a>")}),o.$list[0].innerHTML=s.join(""),"x"===o.opts.axis&&o.$list.width(parseInt(o.$grid.css("padding-right"),10)+i.group.length*o.$list.children().eq(0).outerWidth(!0))},focus:function(t){var e,n,o=this,i=o.$list,a=o.$grid;o.instance.current&&(e=i.children().removeClass("fancybox-thumbs-active").filter('[data-index="'+o.instance.current.index+'"]').addClass("fancybox-thumbs-active"),n=e.position(),"y"===o.opts.axis&&(n.top<0||n.top>i.height()-e.outerHeight())?i.stop().animate({scrollTop:i.scrollTop()+n.top},t):"x"===o.opts.axis&&(n.left<a.scrollLeft()||n.left>a.scrollLeft()+(a.width()-e.outerWidth()))&&i.parent().stop().animate({scrollLeft:n.left},t))},update:function(){var t=this;t.instance.$refs.container.toggleClass("fancybox-show-thumbs",this.isVisible),t.isVisible?(t.$grid||t.create(),t.instance.trigger("onThumbsShow"),t.focus(0)):t.$grid&&t.instance.trigger("onThumbsHide"),t.instance.update()},hide:function(){this.isVisible=!1,this.update()},show:function(){this.isVisible=!0,this.update()},toggle:function(){this.isVisible=!this.isVisible,this.update()}}),e(t).on({"onInit.fb":function(t,e){var n;e&&!e.Thumbs&&(n=new o(e),n.isActive&&!0===n.opts.autoStart&&n.show())},"beforeShow.fb":function(t,e,n,o){var i=e&&e.Thumbs;i&&i.isVisible&&i.focus(o?0:250)},"afterKeydown.fb":function(t,e,n,o,i){var a=e&&e.Thumbs;a&&a.isActive&&71===i&&(o.preventDefault(),a.toggle())},"beforeClose.fb":function(t,e){var n=e&&e.Thumbs;n&&n.isVisible&&!1!==n.opts.hideOnClose&&n.$grid.hide()}})}(document,jQuery),function(t,e){"use strict";function n(t){var e={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})}e.extend(!0,e.fancybox.defaults,{btnTpl:{share:'<button data-fancybox-share class="fancybox-button fancybox-button--share" title="{{SHARE}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M2.55 19c1.4-8.4 9.1-9.8 11.9-9.8V5l7 7-7 6.3v-3.5c-2.8 0-10.5 2.1-11.9 4.2z"/></svg></button>'},share:{url:function(t,e){return!t.currentHash&&"inline"!==e.type&&"html"!==e.type&&(e.origSrc||e.src)||window.location}, 14tpl:'<div class="fancybox-share"><h1>{{SHARE}}</h1><p><a class="fancybox-share__button fancybox-share__button--fb" href="https://www.facebook.com/sharer/sharer.php?u={{url}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m287 456v-299c0-21 6-35 35-35h38v-63c-7-1-29-3-55-3-54 0-91 33-91 94v306m143-254h-205v72h196" /></svg><span>Facebook</span></a><a class="fancybox-share__button fancybox-share__button--tw" href="https://twitter.com/intent/tweet?url={{url}}&text={{descr}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m456 133c-14 7-31 11-47 13 17-10 30-27 37-46-15 10-34 16-52 20-61-62-157-7-141 75-68-3-129-35-169-85-22 37-11 86 26 109-13 0-26-4-37-9 0 39 28 72 65 80-12 3-25 4-37 2 10 33 41 57 77 57-42 30-77 38-122 34 170 111 378-32 359-208 16-11 30-25 41-42z" /></svg><span>Twitter</span></a><a class="fancybox-share__button fancybox-share__button--pt" href="https://www.pinterest.com/pin/create/button/?url={{url}}&description={{descr}}&media={{media}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m265 56c-109 0-164 78-164 144 0 39 15 74 47 87 5 2 10 0 12-5l4-19c2-6 1-8-3-13-9-11-15-25-15-45 0-58 43-110 113-110 62 0 96 38 96 88 0 67-30 122-73 122-24 0-42-19-36-44 6-29 20-60 20-81 0-19-10-35-31-35-25 0-44 26-44 60 0 21 7 36 7 36l-30 125c-8 37-1 83 0 87 0 3 4 4 5 2 2-3 32-39 42-75l16-64c8 16 31 29 56 29 74 0 124-67 124-157 0-69-58-132-146-132z" fill="#fff"/></svg><span>Pinterest</span></a></p><p><input class="fancybox-share__input" type="text" value="{{url_raw}}" onclick="select()" /></p></div>'}}),e(t).on("click","[data-fancybox-share]",function(){var t,o,i=e.fancybox.getInstance(),a=i.current||null;a&&("function"===e.type(a.opts.share.url)&&(t=a.opts.share.url.apply(a,[i,a])),o=a.opts.share.tpl.replace(/\{\{media\}\}/g,"image"===a.type?encodeURIComponent(a.src):"").replace(/\{\{url\}\}/g,encodeURIComponent(t)).replace(/\{\{url_raw\}\}/g,n(t)).replace(/\{\{descr\}\}/g,i.$caption?encodeURIComponent(i.$caption.text()):""),e.fancybox.open({src:i.translate(i,o),type:"html",opts:{touch:!1,animationEffect:!1,afterLoad:function(t,e){i.$refs.container.one("beforeClose.fb",function(){t.close(null,0)}),e.$content.find(".fancybox-share__button").click(function(){return window.open(this.href,"Share","width=550, height=450"),!1})},mobile:{autoFocus:!1}}}))})}(document,jQuery),function(t,e,n){"use strict";function o(){var e=t.location.hash.substr(1),n=e.split("-"),o=n.length>1&&/^\+?\d+$/.test(n[n.length-1])?parseInt(n.pop(-1),10)||1:1,i=n.join("-");return{hash:e,index:o<1?1:o,gallery:i}}function i(t){""!==t.gallery&&n("[data-fancybox='"+n.escapeSelector(t.gallery)+"']").eq(t.index-1).focus().trigger("click.fb-start")}function a(t){var e,n;return!!t&&(e=t.current?t.current.opts:t.opts,""!==(n=e.hash||(e.$orig?e.$orig.data("fancybox")||e.$orig.data("fancybox-trigger"):""))&&n)}n.escapeSelector||(n.escapeSelector=function(t){return(t+"").replace(/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t})}),n(function(){!1!==n.fancybox.defaults.hash&&(n(e).on({"onInit.fb":function(t,e){var n,i;!1!==e.group[e.currIndex].opts.hash&&(n=o(),(i=a(e))&&n.gallery&&i==n.gallery&&(e.currIndex=n.index-1))},"beforeShow.fb":function(n,o,i,s){var r;i&&!1!==i.opts.hash&&(r=a(o))&&(o.currentHash=r+(o.group.length>1?"-"+(i.index+1):""),t.location.hash!=="#"+o.currentHash&&(s&&!o.origHash&&(o.origHash=t.location.hash),o.hashTimer&&clearTimeout(o.hashTimer),o.hashTimer=setTimeout(function(){"replaceState"in t.history?(t.history[s?"pushState":"replaceState"]({},e.title,t.location.pathname+t.location.search+"#"+o.currentHash),s&&(o.hasCreatedHistory=!0)):t.location.hash=o.currentHash,o.hashTimer=null},300)))},"beforeClose.fb":function(n,o,i){i&&!1!==i.opts.hash&&(clearTimeout(o.hashTimer),o.currentHash&&o.hasCreatedHistory?t.history.back():o.currentHash&&("replaceState"in t.history?t.history.replaceState({},e.title,t.location.pathname+t.location.search+(o.origHash||"")):t.location.hash=o.origHash),o.currentHash=null)}}),n(t).on("hashchange.fb",function(){var t=o(),e=null;n.each(n(".fancybox-container").get().reverse(),function(t,o){var i=n(o).data("FancyBox");if(i&&i.currentHash)return e=i,!1}),e?e.currentHash===t.gallery+"-"+t.index||1===t.index&&e.currentHash==t.gallery||(e.currentHash=null,e.close()):""!==t.gallery&&i(t)}),setTimeout(function(){n.fancybox.getInstance()||i(o())},50))})}(window,document,jQuery),function(t,e){"use strict";var n=(new Date).getTime();e(t).on({"onInit.fb":function(t,e,o){e.$refs.stage.on("mousewheel DOMMouseScroll wheel MozMousePixelScroll",function(t){var o=e.current,i=(new Date).getTime();e.group.length<2||!1===o.opts.wheel||"auto"===o.opts.wheel&&"image"!==o.type||(t.preventDefault(),t.stopPropagation(),o.$slide.hasClass("fancybox-animated")||(t=t.originalEvent||t,i-n<250||(n=i,e[(-t.deltaY||-t.deltaX||t.wheelDelta||-t.detail)<0?"next":"previous"]())))})}})}(document,jQuery);
vendor: 15,447 bytes, lines 14-22
14 15/*! 16 * justifiedGallery - v3.7.0 17 * http://miromannino.github.io/Justified-Gallery/ 18 * Copyright (c) 2018 Miro Mannino 19 * Licensed under the MIT license. 20 */ 21 22!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&module.exports?module.exports=function(t,i){return void 0===i&&(i="undefined"!=typeof window?require("jquery"):require("jquery")(t)),e(i),i}:e(jQuery)}(function(g){var r=function(t,i){this.settings=i,this.checkSettings(),this.imgAnalyzerTimeout=null,this.entries=null,this.buildingRow={entriesBuff:[],width:0,height:0,aspectRatio:0},this.lastFetchedEntry=null,this.lastAnalyzedIndex=-1,this.yield={every:2,flushed:0},this.border=0<=i.border?i.border:i.margins,this.maxRowHeight=this.retrieveMaxRowHeight(),this.suffixRanges=this.retrieveSuffixRanges(),this.offY=this.border,this.rows=0,this.spinner={phase:0,timeSlot:150,$el:g('<div class="spinner"><span></span><span></span><span></span></div>'),intervalId:null},this.scrollBarOn=!1,this.checkWidthIntervalId=null,this.galleryWidth=t.width(),this.$gallery=t};r.prototype.getSuffix=function(t,i){var e,s;for(e=i<t?t:i,s=0;s<this.suffixRanges.length;s++)if(e<=this.suffixRanges[s])return this.settings.sizeRangeSuffixes[this.suffixRanges[s]];return this.settings.sizeRangeSuffixes[this.suffixRanges[s-1]]},r.prototype.removeSuffix=function(t,i){return t.substring(0,t.length-i.length)},r.prototype.endsWith=function(t,i){return-1!==t.indexOf(i,t.length-i.length)},r.prototype.getUsedSuffix=function(t){for(var i in this.settings.sizeRangeSuffixes)if(this.settings.sizeRangeSuffixes.hasOwnProperty(i)){if(0===this.settings.sizeRangeSuffixes[i].length)continue;if(this.endsWith(t,this.settings.sizeRangeSuffixes[i]))return this.settings.sizeRangeSuffixes[i]}return""},r.prototype.newSrc=function(t,i,e,s){var n;if(this.settings.thumbnailPath)n=this.settings.thumbnailPath(t,i,e,s);else{var r=t.match(this.settings.extension),o=null!==r?r[0]:"";n=t.replace(this.settings.extension,""),n=this.removeSuffix(n,this.getUsedSuffix(n)),n+=this.getSuffix(i,e)+o}return n},r.prototype.showImg=function(t,i){this.settings.cssAnimation?(t.addClass("entry-visible"),i&&i()):(t.stop().fadeTo(this.settings.imagesAnimationDuration,1,i),t.find(this.settings.imgSelector).stop().fadeTo(this.settings.imagesAnimationDuration,1,i))},r.prototype.extractImgSrcFromImage=function(t){var i=void 0!==t.data("safe-src")?t.data("safe-src"):t.attr("src");return t.data("jg.originalSrc",i),i},r.prototype.imgFromEntry=function(t){var i=t.find(this.settings.imgSelector);return 0===i.length?null:i},r.prototype.captionFromEntry=function(t){var i=t.find("> .caption");return 0===i.length?null:i},r.prototype.displayEntry=function(t,i,e,s,n,r){t.width(s),t.height(r),t.css("top",e),t.css("left",i);var o=this.imgFromEntry(t);if(null!==o){o.css("width",s),o.css("height",n),o.css("margin-left",-s/2),o.css("margin-top",-n/2);var a=o.attr("src"),h=this.newSrc(a,s,n,o[0]);o.one("error",function(){o.attr("src",o.data("jg.originalSrc"))});var l=function(){a!==h&&o.attr("src",h)};"skipped"===t.data("jg.loaded")?this.onImageEvent(a,g.proxy(function(){this.showImg(t,l),t.data("jg.loaded",!0)},this)):this.showImg(t,l)}else this.showImg(t);this.displayEntryCaption(t)},r.prototype.displayEntryCaption=function(t){var i=this.imgFromEntry(t);if(null!==i&&this.settings.captions){var e=this.captionFromEntry(t);if(null===e){var s=i.attr("alt");this.isValidCaption(s)||(s=t.attr("title")),this.isValidCaption(s)&&(e=g('<div class="caption">'+s+"</div>"),t.append(e),t.data("jg.createdCaption",!0))}null!==e&&(this.settings.cssAnimation||e.stop().fadeTo(0,this.settings.captionSettings.nonVisibleOpacity),this.addCaptionEventsHandlers(t))}else this.removeCaptionEventsHandlers(t)},r.prototype.isValidCaption=function(t){return void 0!==t&&0<t.length},r.prototype.onEntryMouseEnterForCaption=function(t){var i=this.captionFromEntry(g(t.currentTarget));this.settings.cssAnimation?i.addClass("caption-visible").removeClass("caption-hidden"):i.stop().fadeTo(this.settings.captionSettings.animationDuration,this.settings.captionSettings.visibleOpacity)},r.prototype.onEntryMouseLeaveForCaption=function(t){var i=this.captionFromEntry(g(t.currentTarget));this.settings.cssAnimation?i.removeClass("caption-visible").removeClass("caption-hidden"):i.stop().fadeTo(this.settings.captionSettings.animationDuration,this.settings.captionSettings.nonVisibleOpacity)},r.prototype.addCaptionEventsHandlers=function(t){var i=t.data("jg.captionMouseEvents");void 0===i&&(i={mouseenter:g.proxy(this.onEntryMouseEnterForCaption,this),mouseleave:g.proxy(this.onEntryMouseLeaveForCaption,this)},t.on("mouseenter",void 0,void 0,i.mouseenter),t.on("mouseleave",void 0,void 0,i.mouseleave),t.data("jg.captionMouseEvents",i))},r.prototype.removeCaptionEventsHandlers=function(t){var i=t.data("jg.captionMouseEvents");void 0!==i&&(t.off("mouseenter",void 0,i.mouseenter),t.off("mouseleave",void 0,i.mouseleave),t.removeData("jg.captionMouseEvents"))},r.prototype.clearBuildingRow=function(){this.buildingRow.entriesBuff=[],this.buildingRow.aspectRatio=0,this.buildingRow.width=0},r.prototype.prepareBuildingRow=function(t){var i,e,s,n,r,o=!0,a=0,h=this.galleryWidth-2*this.border-(this.buildingRow.entriesBuff.length-1)*this.settings.margins,l=h/this.buildingRow.aspectRatio,g=this.settings.rowHeight,u=this.buildingRow.width/h>this.settings.justifyThreshold;if(t&&"hide"===this.settings.lastRow&&!u){for(i=0;i<this.buildingRow.entriesBuff.length;i++)e=this.buildingRow.entriesBuff[i],this.settings.cssAnimation?e.removeClass("entry-visible"):(e.stop().fadeTo(0,.1),e.find("> img, > a > img").fadeTo(0,0));return-1}for(t&&!u&&"justify"!==this.settings.lastRow&&"hide"!==this.settings.lastRow&&(o=!1,0<this.rows&&(o=(g=(this.offY-this.border-this.settings.margins*this.rows)/this.rows)*this.buildingRow.aspectRatio/h>this.settings.justifyThreshold)),i=0;i<this.buildingRow.entriesBuff.length;i++)s=(e=this.buildingRow.entriesBuff[i]).data("jg.width")/e.data("jg.height"),o?(n=i===this.buildingRow.entriesBuff.length-1?h:l*s,r=l):(n=g*s,r=g),h-=Math.round(n),e.data("jg.jwidth",Math.round(n)),e.data("jg.jheight",Math.ceil(r)),(0===i||r<a)&&(a=r);return this.buildingRow.height=a,o},r.prototype.flushRow=function(t){var i,e,s,n=this.settings,r=this.border;if(e=this.prepareBuildingRow(t),t&&"hide"===n.lastRow&&-1===e)this.clearBuildingRow();else{if(this.maxRowHeight&&this.maxRowHeight<this.buildingRow.height&&(this.buildingRow.height=this.maxRowHeight),t&&("center"===n.lastRow||"right"===n.lastRow)){var o=this.galleryWidth-2*this.border-(this.buildingRow.entriesBuff.length-1)*n.margins;for(s=0;s<this.buildingRow.entriesBuff.length;s++)o-=(i=this.buildingRow.entriesBuff[s]).data("jg.jwidth");"center"===n.lastRow?r+=o/2:"right"===n.lastRow&&(r+=o)}var a=this.buildingRow.entriesBuff.length-1;for(s=0;s<=a;s++)i=this.buildingRow.entriesBuff[this.settings.rtl?a-s:s],this.displayEntry(i,r,this.offY,i.data("jg.jwidth"),i.data("jg.jheight"),this.buildingRow.height),r+=i.data("jg.jwidth")+n.margins;this.galleryHeightToSet=this.offY+this.buildingRow.height+this.border,this.setGalleryTempHeight(this.galleryHeightToSet+this.getSpinnerHeight()),(!t||this.buildingRow.height<=n.rowHeight&&e)&&(this.offY+=this.buildingRow.height+n.margins,this.rows+=1,this.clearBuildingRow(),this.settings.triggerEvent.call(this,"jg.rowflush"))}};var i=0;function e(){return g("body").height()>g(window).height()}r.prototype.rememberGalleryHeight=function(){i=this.$gallery.height(),this.$gallery.height(i)},r.prototype.setGalleryTempHeight=function(t){i=Math.max(t,i),this.$gallery.height(i)},r.prototype.setGalleryFinalHeight=function(t){i=t,this.$gallery.height(t)},r.prototype.checkWidth=function(){this.checkWidthIntervalId=setInterval(g.proxy(function(){if(this.$gallery.is(":visible")){var t=parseFloat(this.$gallery.width());e()===this.scrollBarOn?Math.abs(t-this.galleryWidth)>this.settings.refreshSensitivity&&(this.galleryWidth=t,this.rewind(),this.rememberGalleryHeight(),this.startImgAnalyzer(!0)):(this.scrollBarOn=e(),this.galleryWidth=t)}},this),this.settings.refreshTime)},r.prototype.isSpinnerActive=function(){return null!==this.spinner.intervalId},r.prototype.getSpinnerHeight=function(){return this.spinner.$el.innerHeight()},r.prototype.stopLoadingSpinnerAnimation=function(){clearInterval(this.spinner.intervalId),this.spinner.intervalId=null,this.setGalleryTempHeight(this.$gallery.height()-this.getSpinnerHeight()),this.spinner.$el.detach()},r.prototype.startLoadingSpinnerAnimation=function(){var t=this.spinner,i=t.$el.find("span");clearInterval(t.intervalId),this.$gallery.append(t.$el),this.setGalleryTempHeight(this.offY+this.buildingRow.height+this.getSpinnerHeight()),t.intervalId=setInterval(function(){t.phase<i.length?i.eq(t.phase).fadeTo(t.timeSlot,1):i.eq(t.phase-i.length).fadeTo(t.timeSlot,0),t.phase=(t.phase+1)%(2*i.length)},t.timeSlot)},r.prototype.rewind=function(){this.lastFetchedEntry=null,this.lastAnalyzedIndex=-1,this.offY=this.border,this.rows=0,this.clearBuildingRow()},r.prototype.updateEntries=function(t){var i;return t&&null!=this.lastFetchedEntry?i=g(this.lastFetchedEntry).nextAll(this.settings.selector).toArray():(this.entries=[],i=this.$gallery.children(this.settings.selector).toArray()),0<i.length&&(g.isFunction(this.settings.sort)?i=this.sortArray(i):this.settings.randomize&&(i=this.shuffleArray(i)),this.lastFetchedEntry=i[i.length-1],this.settings.filter?i=this.filterArray(i):this.resetFilters(i)),this.entries=this.entries.concat(i),!0},r.prototype.insertToGallery=function(t){var i=this;g.each(t,function(){g(this).appendTo(i.$gallery)})},r.prototype.shuffleArray=function(t){var i,e,s;for(i=t.length-1;0<i;i--)e=Math.floor(Math.random()*(i+1)),s=t[i],t[i]=t[e],t[e]=s;return this.insertToGallery(t),t},r.prototype.sortArray=function(t){return t.sort(this.settings.sort),this.insertToGallery(t),t},r.prototype.resetFilters=function(t){for(var i=0;i<t.length;i++)g(t[i]).removeClass("jg-filtered")},r.prototype.filterArray=function(t){var e=this.settings;if("string"===g.type(e.filter))return t.filter(function(t){var i=g(t);return i.is(e.filter)?(i.removeClass("jg-filtered"),!0):(i.addClass("jg-filtered").removeClass("jg-visible"),!1)});if(g.isFunction(e.filter)){for(var i=t.filter(e.filter),s=0;s<t.length;s++)-1===i.indexOf(t[s])?g(t[s]).addClass("jg-filtered").removeClass("jg-visible"):g(t[s]).removeClass("jg-filtered");return i}},r.prototype.destroy=function(){clearInterval(this.checkWidthIntervalId),g.each(this.entries,g.proxy(function(t,i){var e=g(i);e.css("width",""),e.css("height",""),e.css("top",""),e.css("left",""),e.data("jg.loaded",void 0),e.removeClass("jg-entry");var s=this.imgFromEntry(e);s.css("width",""),s.css("height",""),s.css("margin-left",""),s.css("margin-top",""),s.attr("src",s.data("jg.originalSrc")),s.data("jg.originalSrc",void 0),this.removeCaptionEventsHandlers(e);var n=this.captionFromEntry(e);e.data("jg.createdCaption")?(e.data("jg.createdCaption",void 0),null!==n&&n.remove()):null!==n&&n.fadeTo(0,1)},this)),this.$gallery.css("height",""),this.$gallery.removeClass("justified-gallery"),this.$gallery.data("jg.controller",void 0)},r.prototype.analyzeImages=function(t){for(var i=this.lastAnalyzedIndex+1;i<this.entries.length;i++){var e=g(this.entries[i]);if(!0===e.data("jg.loaded")||"skipped"===e.data("jg.loaded")){var s=this.galleryWidth-2*this.border-(this.buildingRow.entriesBuff.length-1)*this.settings.margins,n=e.data("jg.width")/e.data("jg.height");if(s/(this.buildingRow.aspectRatio+n)<this.settings.rowHeight&&(this.flushRow(!1),++this.yield.flushed>=this.yield.every))return void this.startImgAnalyzer(t);this.buildingRow.entriesBuff.push(e),this.buildingRow.aspectRatio+=n,this.buildingRow.width+=n*this.settings.rowHeight,this.lastAnalyzedIndex=i}else if("error"!==e.data("jg.loaded"))return}0<this.buildingRow.entriesBuff.length&&this.flushRow(!0),this.isSpinnerActive()&&this.stopLoadingSpinnerAnimation(),this.stopImgAnalyzerStarter(),this.settings.triggerEvent.call(this,t?"jg.resize":"jg.complete"),this.setGalleryFinalHeight(this.galleryHeightToSet)},r.prototype.stopImgAnalyzerStarter=function(){this.yield.flushed=0,null!==this.imgAnalyzerTimeout&&(clearTimeout(this.imgAnalyzerTimeout),this.imgAnalyzerTimeout=null)},r.prototype.startImgAnalyzer=function(t){var i=this;this.stopImgAnalyzerStarter(),this.imgAnalyzerTimeout=setTimeout(function(){i.analyzeImages(t)},.001)},r.prototype.onImageEvent=function(t,i,e){if(i||e){var s=new Image,n=g(s);i&&n.one("load",function(){n.off("load error"),i(s)}),e&&n.one("error",function(){n.off("load error"),e(s)}),s.src=t}},r.prototype.init=function(){var a=!1,h=!1,l=this;g.each(this.entries,function(t,i){var e=g(i),s=l.imgFromEntry(e);if(e.addClass("jg-entry"),!0!==e.data("jg.loaded")&&"skipped"!==e.data("jg.loaded"))if(null!==l.settings.rel&&e.attr("rel",l.settings.rel),null!==l.settings.target&&e.attr("target",l.settings.target),null!==s){var n=l.extractImgSrcFromImage(s);if(s.attr("src",n),!1===l.settings.waitThumbnailsLoad){var r=parseFloat(s.prop("width")),o=parseFloat(s.prop("height"));if(!isNaN(r)&&!isNaN(o))return e.data("jg.width",r),e.data("jg.height",o),e.data("jg.loaded","skipped"),h=!0,l.startImgAnalyzer(!1),!0}e.data("jg.loaded",!1),a=!0,l.isSpinnerActive()||l.startLoadingSpinnerAnimation(),l.onImageEvent(n,function(t){e.data("jg.width",t.width),e.data("jg.height",t.height),e.data("jg.loaded",!0),l.startImgAnalyzer(!1)},function(){e.data("jg.loaded","error"),l.startImgAnalyzer(!1)})}else e.data("jg.loaded",!0),e.data("jg.width",e.width()|parseFloat(e.css("width"))|1),e.data("jg.height",e.height()|parseFloat(e.css("height"))|1)}),a||h||this.startImgAnalyzer(!1),this.checkWidth()},r.prototype.checkOrConvertNumber=function(t,i){if("string"===g.type(t[i])&&(t[i]=parseFloat(t[i])),"number"!==g.type(t[i]))throw i+" must be a number";if(isNaN(t[i]))throw"invalid number for "+i},r.prototype.checkSizeRangesSuffixes=function(){if("object"!==g.type(this.settings.sizeRangeSuffixes))throw"sizeRangeSuffixes must be defined and must be an object";var t=[];for(var i in this.settings.sizeRangeSuffixes)this.settings.sizeRangeSuffixes.hasOwnProperty(i)&&t.push(i);for(var e={0:""},s=0;s<t.length;s++)if("string"===g.type(t[s]))try{e[parseInt(t[s].replace(/^[a-z]+/,""),10)]=this.settings.sizeRangeSuffixes[t[s]]}catch(t){throw"sizeRangeSuffixes keys must contains correct numbers ("+t+")"}else e[t[s]]=this.settings.sizeRangeSuffixes[t[s]];this.settings.sizeRangeSuffixes=e},r.prototype.retrieveMaxRowHeight=function(){var t=null,i=this.settings.rowHeight;if("string"===g.type(this.settings.maxRowHeight))t=this.settings.maxRowHeight.match(/^[0-9]+%$/)?i*parseFloat(this.settings.maxRowHeight.match(/^([0-9]+)%$/)[1])/100:parseFloat(this.settings.maxRowHeight);else{if("number"!==g.type(this.settings.maxRowHeight)){if(!1===this.settings.maxRowHeight||null==this.settings.maxRowHeight)return null;throw"maxRowHeight must be a number or a percentage"}t=this.settings.maxRowHeight}if(isNaN(t))throw"invalid number for maxRowHeight";return t<i&&(t=i),t},r.prototype.checkSettings=function(){this.checkSizeRangesSuffixes(),this.checkOrConvertNumber(this.settings,"rowHeight"),this.checkOrConvertNumber(this.settings,"margins"),this.checkOrConvertNumber(this.settings,"border");var t=["justify","nojustify","left","center","right","hide"];if(-1===t.indexOf(this.settings.lastRow))throw"lastRow must be one of: "+t.join(", ");
22if(this.checkOrConvertNumber(this.settings,"justifyThreshold"),this.settings.justifyThreshold<0||1<this.settings.justifyThreshold)throw"justifyThreshold must be in the interval [0,1]";if("boolean"!==g.type(this.settings.cssAnimation))throw"cssAnimation must be a boolean";if("boolean"!==g.type(this.settings.captions))throw"captions must be a boolean";if(this.checkOrConvertNumber(this.settings.captionSettings,"animationDuration"),this.checkOrConvertNumber(this.settings.captionSettings,"visibleOpacity"),this.settings.captionSettings.visibleOpacity<0||1<this.settings.captionSettings.visibleOpacity)throw"captionSettings.visibleOpacity must be in the interval [0, 1]";if(this.checkOrConvertNumber(this.settings.captionSettings,"nonVisibleOpacity"),this.settings.captionSettings.nonVisibleOpacity<0||1<this.settings.captionSettings.nonVisibleOpacity)throw"captionSettings.nonVisibleOpacity must be in the interval [0, 1]";if(this.checkOrConvertNumber(this.settings,"imagesAnimationDuration"),this.checkOrConvertNumber(this.settings,"refreshTime"),this.checkOrConvertNumber(this.settings,"refreshSensitivity"),"boolean"!==g.type(this.settings.randomize))throw"randomize must be a boolean";if("string"!==g.type(this.settings.selector))throw"selector must be a string";if(!1!==this.settings.sort&&!g.isFunction(this.settings.sort))throw"sort must be false or a comparison function";if(!1!==this.settings.filter&&!g.isFunction(this.settings.filter)&&"string"!==g.type(this.settings.filter))throw"filter must be false, a string or a filter function"},r.prototype.retrieveSuffixRanges=function(){var t=[];for(var i in this.settings.sizeRangeSuffixes)this.settings.sizeRangeSuffixes.hasOwnProperty(i)&&t.push(parseInt(i,10));return t.sort(function(t,i){return i<t?1:t<i?-1:0}),t},r.prototype.updateSettings=function(t){this.settings=g.extend({},this.settings,t),this.checkSettings(),this.border=0<=this.settings.border?this.settings.border:this.settings.margins,this.maxRowHeight=this.retrieveMaxRowHeight(),this.suffixRanges=this.retrieveSuffixRanges()},r.prototype.defaults={sizeRangeSuffixes:{},thumbnailPath:void 0,rowHeight:120,maxRowHeight:!1,margins:1,border:-1,lastRow:"nojustify",justifyThreshold:.9,waitThumbnailsLoad:!0,captions:!0,cssAnimation:!0,imagesAnimationDuration:500,captionSettings:{animationDuration:500,visibleOpacity:.7,nonVisibleOpacity:0},rel:null,target:null,extension:/\.[^.\\/]+$/,refreshTime:200,refreshSensitivity:0,randomize:!1,rtl:!1,sort:!1,filter:!1,selector:"a, div:not(.spinner)",imgSelector:"> img, > a > img",triggerEvent:function(t){this.$gallery.trigger(t)}},g.fn.justifiedGallery=function(n){return this.each(function(t,i){var e=g(i);e.addClass("justified-gallery");var s=e.data("jg.controller");if(void 0===s){if(null!=n&&"object"!==g.type(n)){if("destroy"===n)return;throw"The argument must be an object"}s=new r(e,g.extend({},r.prototype.defaults,n)),e.data("jg.controller",s)}else if("norewind"===n);else{if("destroy"===n)return void s.destroy();s.updateSettings(n),s.rewind()}s.updateEntries("norewind"===n)&&s.init()})}}); 23let gridgallery={init:function(){gridgallery.loadGallery();gridgallery.lazyLoadImages();$(window).on("resize scroll",function(){gridgallery.lazyLoadImages()})},loadGallery:function(){$(".ce-gridgallery").each(function(){$(this).justifiedGallery({rowHeight:$(this).data("row-height"),margins:$(this).data("margins"),captions:$(this).data("captions")===1,randomize:$(this).data("randomize")===1,lastRow:$(this).data("last-row"),border:$(this).data("border")})})},lazyLoadImages:function(){$(".ce-gridgallery img.unloaded").each(function(){if(gridgallery.isInViewport($(this))===true){let src=$(this).attr("data-src");let srcset=$(this).attr("data-srcset");if(src!==undefined&&src!==""){$(this).attr("src",src).removeAttr("data-src")}if(srcset!==undefined&&srcset!==""){$(this).attr("srcset",srcset).removeAttr("data-srcset")}$(this).removeClass("unloaded")}})},isInViewport:function(a){let elementTop=a.offset().top;let elementBottom=elementTop+a.outerHeight();let viewportTop=$(window).scrollTop();let viewportBottom=viewportTop+$(window).height();return elementBottom>=viewportTop&&elementTop<=viewportBottom}};$(document).ready(function(){gridgallery.init()}); 24/*! 25 * ScrollMagic v2.0.7 (2019-05-07) 26 * The javascript library for magical scroll interactions. 27 * (c) 2019 Jan Paepke (@janpaepke) 28 * Project Website: http://scrollmagic.io 29 * 30 * @version 2.0.7 31 * @license Dual licensed under MIT license and GPL. 32 * @author Jan Paepke - [email protected] 33 * 34 * @file ScrollMagic main library. 35 */ 36/** 37 * @namespace ScrollMagic 38 */ 39(function (root, factory) { 40 if (typeof define === 'function' && define.amd) { 41 // AMD. Register as an anonymous module. 42 define(factory); 43 } else if (typeof exports === 'object') { 44 // CommonJS 45 module.exports = factory(); 46 } else { 47 // Browser global 48 root.ScrollMagic = factory(); 49 } 50}(this, function () { 51 "use strict"; 52 53 var ScrollMagic = function () { 54 _util.log(2, '(COMPATIBILITY NOTICE) -> As of ScrollMagic 2.0.0 you need to use \'new ScrollMagic.Controller()\' to create a new controller instance. Use \'new ScrollMagic.Scene()\' to instance a scene.'); 55 }; 56 57 ScrollMagic.version = "2.0.7"; 58 59 // TODO: temporary workaround for chrome's scroll jitter bug 60 window.addEventListener("mousewheel", function () {}); 61 62 // global const 63 var PIN_SPACER_ATTRIBUTE = "data-scrollmagic-pin-spacer"; 64 65 /** 66 * The main class that is needed once per scroll container. 67 * 68 * @class 69 * 70 * @example 71 * // basic initialization 72 * var controller = new ScrollMagic.Controller(); 73 * 74 * // passing options 75 * var controller = new ScrollMagic.Controller({container: "#myContainer", loglevel: 3}); 76 * 77 * @param {object}
77 [options] - An object containing one or more options for the controller. 78 * @param {(string|object)} [options.container=window] - A selector, DOM object that references the main container for scrolling. 79 * @param {boolean} [options.vertical=true] - Sets the scroll mode to vertical (`true`) or horizontal (`false`) scrolling. 80 * @param {object} [options.globalSceneOptions={}] - These options will be passed to every Scene that is added to the controller using the addScene method. For more information on Scene options see {@link ScrollMagic.Scene}. 81 * @param {number} [options.loglevel=2] Loglevel for debugging. Note that logging is disabled in the minified version of ScrollMagic. 82 ** `0` => silent 83 ** `1` => errors 84 ** `2` => errors, warnings 85 ** `3` => errors, warnings, debuginfo 86 * @param {boolean} [options.refreshInterval=100] - Some changes don't call events by default, like changing the container size or moving a scene trigger element. 87 This interval polls these parameters to fire the necessary events. 88 If you don't use custom containers, trigger elements or have static layouts, where the positions of the trigger elements don't change, you can set this to 0 disable interval checking and improve performance. 89 * 90 */ 91 ScrollMagic.Controller = function (options) { 92 /* 93 * ---------------------------------------------------------------- 94 * settings 95 * ---------------------------------------------------------------- 96 */ 97 var 98 NAMESPACE = 'ScrollMagic.Controller', 99 SCROLL_DIRECTION_FORWARD = 'FORWARD', 100 SCROLL_DIRECTION_REVERSE = 'REVERSE', 101 SCROLL_DIRECTION_PAUSED = 'PAUSED', 102 DEFAULT_OPTIONS = CONTROLLER_OPTIONS.defaults; 103 104 /* 105 * ---------------------------------------------------------------- 106 * private vars 107 * ---------------------------------------------------------------- 108 */ 109 var 110 Controller = this, 111 _options = _util.extend({}, DEFAULT_OPTIONS, options), 112 _sceneObjects = [], 113 _updateScenesOnNextCycle = false, // can be boolean (true => all scenes) or an array of scenes to be updated 114 _scrollPos = 0, 115 _scrollDirection = SCROLL_DIRECTION_PAUSED, 116 _isDocument = true, 117 _viewPortSize = 0, 118 _enabled = true, 119 _updateTimeout, 120 _refreshTimeout; 121 122 /* 123 * ---------------------------------------------------------------- 124 * private functions 125 * ---------------------------------------------------------------- 126 */ 127 128 /** 129 * Internal constructor function of the ScrollMagic Controller 130 * @private 131 */ 132 var construct = function () { 133 for (var key in _options) { 134 if (!DEFAULT_OPTIONS.hasOwnProperty(key)) { 135 log(2, "WARNING: Unknown option \"" + key + "\""); 136 delete _options[key]; 137 } 138 } 139 _options.container = _util.get.elements(_options.container)[0];
140 // check ScrollContainer 141 if (!_options.container) { 142 log(1, "ERROR creating object " + NAMESPACE + ": No valid scroll container supplied"); 143 throw NAMESPACE + " init failed."; // cancel 144 } 145 _isDocument = _options.container === window || _options.container === document.body || !document.body.contains(_options.container); 146 // normalize to window 147 if (_isDocument) { 148 _options.container = window; 149 } 150 // update container size immediately 151 _viewPortSize = getViewportSize(); 152 // set event handlers 153 _options.container.addEventListener("resize", onChange); 154 _options.container.addEventListener("scroll", onChange); 155 156 var ri = parseInt(_options.refreshInterval, 10); 157 _options.refreshInterval = _util.type.Number(ri) ? ri : DEFAULT_OPTIONS.refreshInterval; 158 scheduleRefresh(); 159 160 log(3, "added new " + NAMESPACE + " controller (v" + ScrollMagic.version + ")"); 161 }; 162 163 /** 164 * Schedule the next execution of the refresh function 165 * @private 166 */ 167 var scheduleRefresh = function () { 168 if (_options.refreshInterval > 0) { 169 _refreshTimeout = window.setTimeout(refresh, _options.refreshInterval); 170 } 171 }; 172 173 /** 174 * Default function to get scroll pos - overwriteable using `Controller.scrollPos(newFunction)` 175 * @private 176 */ 177 var getScrollPos = function () { 178 return _options.vertical ? _util.get.scrollTop(_options.container) : _util.get.scrollLeft(_options.container); 179 }; 180 181 /** 182 * Returns the current viewport Size (width vor horizontal, height for vertical) 183 * @private 184 */ 185 var getViewportSize = function () { 186 return _options.vertical ? _util.get.height(_options.container) : _util.get.width(_options.container); 187 }; 188 189 /** 190 * Default function to set scroll pos - overwriteable using `Controller.scrollTo(newFunction)` 191 * Make available publicly for pinned mousewheel workaround. 192 * @private 193 */ 194 var setScrollPos = this._setScrollPos = function (pos) { 195 if (_options.vertical) { 196 if (_isDocument) { 197 window.scrollTo(_util.get.scrollLeft(), pos); 198 } else { 199 _options.container.scrollTop = pos; 200 } 201 } else { 202 if (_isDocument) { 203 window.scrollTo(pos, _util.get.scrollTop()); 204 } else { 205 _options.container.scrollLeft = pos; 206 } 207 } 208 }; 209 210 /** 211 * Handle updates in cycles instead of on scroll (performance) 212 * @private 213 */ 214 var updateScenes = function () { 215 if (_enabled && _updateScenesOnNextCycle) { 216 // determine scenes to update 217 var scenesToUpdate = _util.type.Array(_updateScenesOnNextCycle) ? _updateScenesOnNextCycle : _sceneObjects.slice(0); 218 // reset scenes 219 _updateScenesOnNextCycle = false; 220 var oldScrollPos = _scrollPos; 221 // update scroll pos now instead of onChange, as it might have changed since scheduling (i.e. in-browser smooth scroll) 222 _scrollPos = Controller.scrollPos(); 223 var deltaScroll = _scrollPos - oldScrollPos; 224 if (deltaScroll !== 0) { // scroll position changed? 225 _scrollDirection = (deltaScroll > 0) ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_REVERSE; 226 } 227 // reverse order of scenes if scrolling reverse 228 if (_scrollDirection === SCROLL_DIRECTION_REVERSE) { 229 scenesToUpdate.reverse(); 230 } 231 // update scenes 232 scenesToUpdate.forEach(function (scene, index) { 233 log(3, "updating Scene " + (index + 1) + "/" + scenesToUpdate.length + " (" + _sceneObjects.length + " total)"); 234 scene.update(true); 235 }); 236 if (scenesToUpdate.length === 0 && _options.loglevel >= 3) { 237 log(3, "updating 0 Scenes (nothing added to controller)"); 238 } 239 } 240 }; 241 242 /** 243 * Initializes rAF callback 244 * @private 245 */ 246 var debounceUpdate = function () { 247 _updateTimeout = _util.rAF(updateScenes); 248 }; 249 250 /** 251 * Handles Container changes 252 * @private 253 */ 254 var onChange = function (e) { 255 log(3, "event fired causing an update:", e.type); 256 if (e.type == "resize") { 257 // resize 258 _viewPortSize = getViewportSize(); 259 _scrollDirection = SCROLL_DIRECTION_PAUSED; 260 } 261 // schedule update 262 if (_updateScenesOnNextCycle !== true) { 263 _updateScenesOnNextCycle = true; 264 debounceUpdate(); 265 } 266 }; 267 268 var refresh = function () { 269 if (!_isDocument) { 270 // simulate resize event. Only works for viewport relevant param (performance) 271 if (_viewPortSize != getViewportSize()) { 272 var resizeEvent; 273 try { 274 resizeEvent = new Event('resize', { 275 bubbles: false, 276 cancelable: false 277 }); 278 } catch (e) { // stupid IE 279 resizeEvent = document.createEvent("Event"); 280 resizeEvent.initEvent("resize", false, false); 281 }
282 _options.container.dispatchEvent(resizeEvent); 283 } 284 } 285 _sceneObjects.forEach(function (scene, index) { // refresh all scenes 286 scene.refresh(); 287 }); 288 scheduleRefresh(); 289 }; 290 291 /** 292 * Send a debug message to the console. 293 * provided publicly with _log for plugins 294 * @private 295 * 296 * @param {number} loglevel - The loglevel required to initiate output for the message. 297 * @param {...mixed} output - One or more variables that should be passed to the console. 298 */ 299 var log = this._log = function (loglevel, output) { 300 if (_options.loglevel >= loglevel) { 301 Array.prototype.splice.call(arguments, 1, 0, "(" + NAMESPACE + ") ->"); 302 _util.log.apply(window, arguments); 303 } 304 }; 305 // for scenes we have getters for each option, but for the controller we don't, so we need to make it available externally for plugins 306 this._options = _options; 307 308 /** 309 * Sort scenes in ascending order of their start offset. 310 * @private 311 * 312 * @param {array} ScenesArray - an array of ScrollMagic Scenes that should be sorted 313 * @return {array} The sorted array of Scenes. 314 */ 315 var sortScenes = function (ScenesArray) { 316 if (ScenesArray.length <= 1) { 317 return ScenesArray; 318 } else { 319 var scenes = ScenesArray.slice(0); 320 scenes.sort(function (a, b) { 321 return a.scrollOffset() > b.scrollOffset() ? 1 : -1; 322 }); 323 return scenes; 324 } 325 }; 326 327 /** 328 * ---------------------------------------------------------------- 329 * public functions 330 * ---------------------------------------------------------------- 331 */ 332 333 /** 334 * Add one ore more scene(s) to the controller. 335 * This is the equivalent to `Scene.addTo(controller)`. 336 * @public 337 * @example 338 * // with a previously defined scene 339 * controller.addScene(scene); 340 * 341 * // with a newly created scene. 342 * controller.addScene(new ScrollMagic.Scene({duration : 0})); 343 * 344 * // adding multiple scenes 345 * controller.addScene([scene, scene2, new ScrollMagic.Scene({duration : 0})]); 346 * 347 * @param {(ScrollMagic.Scene|array)} newScene - ScrollMagic Scene or Array of Scenes to be added to the controller. 348 * @return {Controller} Parent object for chaining. 349 */ 350 this.addScene = function (newScene) { 351 if (_util.type.Array(newScene)) { 352 newScene.forEach(function (scene, index) { 353 Controller.addScene(scene); 354 }); 355 } else if (newScene instanceof ScrollMagic.Scene) { 356 if (newScene.controller() !== Controller) { 357 newScene.addTo(Controller); 358 } else if (_sceneObjects.indexOf(newScene) < 0) { 359 // new scene 360 _sceneObjects.push(newScene); // add to array 361 _sceneObjects = sortScenes(_sceneObjects); // sort 362 newScene.on("shift.controller_sort", function () { // resort whenever scene moves 363 _sceneObjects = sortScenes(_sceneObjects); 364 }); 365 // insert Global defaults. 366 for (var key in _options.globalSceneOptions) { 367 if (newScene[key]) { 368 newScene[key].call(newScene, _options.globalSceneOptions[key]); 369 } 370 } 371 log(3, "adding Scene (now " + _sceneObjects.length + " total)"); 372 } 373 } else { 374 log(1, "ERROR: invalid argument supplied for '.addScene()'"); 375 } 376 return Controller; 377 }; 378 379 /** 380 * Remove one ore more scene(s) from the controller. 381 * This is the equivalent to `Scene.remove()`. 382 * @public 383 * @example 384 * // remove a scene from the controller 385 * controller.removeScene(scene); 386 * 387 * // remove multiple scenes from the controller 388 * controller.removeScene([scene, scene2, scene3]); 389 * 390 * @param {(ScrollMagic.Scene|array)} Scene - ScrollMagic Scene or Array of Scenes to be removed from the controller. 391 * @returns {Controller} Parent object for chaining. 392 */ 393 this.removeScene = function (Scene) { 394 if (_util.type.Array(Scene)) { 395 Scene.forEach(function (scene, index) { 396 Controller.removeScene(scene); 397 }); 398 } else { 399 var index = _sceneObjects.indexOf(Scene); 400 if (index > -1) { 401 Scene.off("shift.controller_sort"); 402 _sceneObjects.splice(index, 1); 403 log(3, "removing Scene (now " + _sceneObjects.length + " left)"); 404 Scene.remove(); 405 } 406 } 407 return Controller; 408 }; 409 410 /** 411 * Update one ore more scene(s) according to the scroll position of the container.
412 * This is the equivalent to `Scene.update()`. 413 * The update method calculates the scene's start and end position (based on the trigger element, trigger hook, duration and offset) and checks it against the current scroll position of the container. 414 * It then updates the current scene state accordingly (or does nothing, if the state is already correct) – Pins will be set to their correct position and tweens will be updated to their correct progress. 415 * _**Note:** This method gets called constantly whenever Controller detects a change. The only application for you is if you change something outside of the realm of ScrollMagic, like moving the trigger or changing tween parameters._ 416 * @public 417 * @example 418 * // update a specific scene on next cycle 419 * controller.updateScene(scene); 420 * 421 * // update a specific scene immediately 422 * controller.updateScene(scene, true); 423 * 424 * // update multiple scenes scene on next cycle 425 * controller.updateScene([scene1, scene2, scene3]); 426 * 427 * @param {ScrollMagic.Scene} Scene - ScrollMagic Scene or Array of Scenes that is/are supposed to be updated. 428 * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle. 429 This is useful when changing multiple properties of the scene - this way it will only be updated once all new properties are set (updateScenes). 430 * @return {Controller} Parent object for chaining. 431 */ 432 this.updateScene = function (Scene, immediately) { 433 if (_util.type.Array(Scene)) { 434 Scene.forEach(function (scene, index) { 435 Controller.updateScene(scene, immediately); 436 }); 437 } else { 438 if (immediately) { 439 Scene.update(true); 440 } else if (_updateScenesOnNextCycle !== true && Scene instanceof ScrollMagic.Scene) { // if _updateScenesOnNextCycle is true, all connected scenes are already scheduled for update 441 // prep array for next update cycle 442 _updateScenesOnNextCycle = _updateScenesOnNextCycle || []; 443 if (_updateScenesOnNextCycle.indexOf(Scene) == -1) { 444 _updateScenesOnNextCycle.push(Scene); 445 } 446 _updateScenesOnNextCycle = sortScenes(_updateScenesOnNextCycle); // sort 447 debounceUpdate(); 448 } 449 } 450 return Controller; 451 }; 452 453 /** 454 * Updates the controller params and calls updateScene on every scene, that is attached to the controller. 455 * See `Controller.updateScene()` for more information about what this means. 456 * In most cases you will not need this function, as it is called constantly, whenever ScrollMagic detects a state change event, like resize or scroll. 457 * The only application for this method is when ScrollMagic fails to detect these events. 458 * One application is with some external scroll libraries (like iScroll) that move an internal container to a negative offset instead of actually scrolling. In this case the update on the controller needs to be called whenever the child container's position changes. 459 * For this case there will also be the need to provide a custom function to calculate the correct scroll position. See `Controller.scrollPos()` for details. 460 * @public 461 * @example 462 * // update the controller on next cycle (saves performance due to elimination of redundant updates) 463 * controller.update(); 464 * 465 * // update the controller immediately 466 * controller.update(true); 467 * 468 * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle (better performance) 469 * @return {Controller} Parent object for chaining. 470 */ 471 this.update = function (immediately) { 472 onChange({ 473 type: "resize" 474 }); // will update size and set _updateScenesOnNextCycle to true 475 if (immediately) { 476 updateScenes(); 477 } 478 return Controller; 479 }; 480 481 /** 482 * Scroll to a numeric scroll offset, a DOM element, the start of a scene or provide an alternate method for scrolling. 483 * For vertical controllers it will change the top scroll offset and for horizontal applications it will change the left offset. 484 * @public 485 * 486 * @since 1.1.0 487 * @example 488 * // scroll to an offset of 100 489 * controller.scrollTo(100); 490 * 491 * // scroll to a DOM element 492 * controller.scrollTo("#anchor"); 493 * 494 * // scroll to the beginning of a scene 495 * var scene = new ScrollMagic.Scene({offset: 200}); 496 * controller.scrollTo(scene); 497 * 498 * // define a new scroll position modification function (jQuery animate instead of jump) 499 * controller.scrollTo(function (newScrollPos) { 500 * $("html, body").animate({scrollTop: newScrollPos}); 501 * }); 502 * controller.scrollTo(100); // call as usual, but the new function will be used instead 503 * 504 * // define a new scroll function with an additional parameter 505 * controller.scrollTo(function (newScrollPos, message) { 506 * console.log(message); 507 * $(this).animate({scrollTop: newScrollPos}); 508 * }); 509 * // call as usual, but supply an extra parameter to the defined custom function 510 * controller.scrollTo(100, "my message"); 511 * 512 * // define a new scroll function with an additional parameter containing multiple variables 513 * controller.scrollTo(function (newScrollPos, options) { 514 * someGlobalVar = options.a + options.b; 515 * $(this).animate({scrollTop: newScrollPos}); 516 * }); 517 * // call as usual, but supply an extra parameter containing multiple options 518 * controller.scrollTo(100, {a: 1, b: 2}); 519 * 520 * // define a new scroll function with a callback supplied as an additional parameter 521 * controller.scrollTo(function (newScrollPos, callback) { 522 * $(this).animate({scrollTop: newScrollPos}, 400, "swing", callback); 523 * }); 524 * // call as usual, but supply an extra parameter, which is used as a callback in the previously defined custom scroll function 525 * controller.scrollTo(100, function() { 526 * console.log("scroll has finished."); 527 * }); 528 * 529 * @param {mixed} scrollTarget - The supplied argument can be one of these types: 530 * 1. `number` -> The container will scroll to this new scroll offset. 531 * 2. `string` or `object` -> Can be a selector or a DOM object. 532 * The container will scroll to the position of this element. 533 * 3. `ScrollMagic Scene` -> The container will scroll to the start of this scene. 534 * 4. `function` -> This function will be used for future scroll position modifications. 535 * This provides a way for you to change the behaviour of scrolling and adding new behaviour like animation. The function receives the new scroll position as a parameter and a reference to the container element using `this`.
536 * It may also optionally receive an optional additional parameter (see below) 537 * _**NOTE:** 538 * All other options will still work as expected, using the new function to scroll._ 539 * @param {mixed} [additionalParameter] - If a custom scroll function was defined (see above 4.), you may want to supply additional parameters to it, when calling it. You can do this using this parameter – see examples for details. Please note, that this parameter will have no effect, if you use the default scrolling function. 540 * @returns {Controller} Parent object for chaining. 541 */ 542 this.scrollTo = function (scrollTarget, additionalParameter) { 543 if (_util.type.Number(scrollTarget)) { // excecute 544 setScrollPos.call(_options.container, scrollTarget, additionalParameter); 545 } else if (scrollTarget instanceof ScrollMagic.Scene) { // scroll to scene 546 if (scrollTarget.controller() === Controller) { // check if the controller is associated with this scene 547 Controller.scrollTo(scrollTarget.scrollOffset(), additionalParameter); 548 } else { 549 log(2, "scrollTo(): The supplied scene does not belong to this controller. Scroll cancelled.", scrollTarget); 550 } 551 } else if (_util.type.Function(scrollTarget)) { // assign new scroll function 552 setScrollPos = scrollTarget; 553 } else { // scroll to element 554 var elem = _util.get.elements(scrollTarget)[0]; 555 if (elem) { 556 // if parent is pin spacer, use spacer position instead so correct start position is returned for pinned elements. 557 while (elem.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) { 558 elem = elem.parentNode; 559 } 560 561 var 562 param = _options.vertical ? "top" : "left", // which param is of interest ? 563 containerOffset = _util.get.offset(_options.container), // container position is needed because element offset is returned in relation to document, not in relation to container. 564 elementOffset = _util.get.offset(elem); 565 566 if (!_isDocument) { // container is not the document root, so substract scroll Position to get correct trigger element position relative to scrollcontent 567 containerOffset[param] -= Controller.scrollPos(); 568 } 569 570 Controller.scrollTo(elementOffset[param] - containerOffset[param], additionalParameter); 571 } else { 572 log(2, "scrollTo(): The supplied argument is invalid. Scroll cancelled.", scrollTarget); 573 } 574 } 575 return Controller; 576 }; 577 578 /** 579 * **Get** the current scrollPosition or **Set** a new method to calculate it. 580 * -> **GET**: 581 * When used as a getter this function will return the current scroll position. 582 * To get a cached value use Controller.info("scrollPos"), which will be updated in the update cycle. 583 * For vertical controllers it will return the top scroll offset and for horizontal applications it will return the left offset. 584 * 585 * -> **SET**: 586 * When used as a setter this method prodes a way to permanently overwrite the controller's scroll position calculation. 587 * A typical usecase is when the scroll position is not reflected by the containers scrollTop or scrollLeft values, but for example by the inner offset of a child container. 588 * Moving a child container inside a parent is a commonly used method for several scrolling frameworks, including iScroll. 589 * By providing an alternate calculation function you can make sure ScrollMagic receives the correct scroll position. 590 * Please also bear in mind that your function should return y values for vertical scrolls an x for horizontals. 591 * 592 * To change the current scroll position please use `Controller.scrollTo()`. 593 * @public 594 * 595 * @example 596 * // get the current scroll Position 597 * var scrollPos = controller.scrollPos(); 598 * 599 * // set a new scroll position calculation method 600 * controller.scrollPos(function () { 601 * return this.info("vertical") ? -mychildcontainer.y : -mychildcontainer.x 602 * }); 603 * 604 * @param {function} [scrollPosMethod] - The function to be used for the scroll position calculation of the container. 605 * @returns {(number|Controller)} Current scroll position or parent object for chaining. 606 */ 607 this.scrollPos = function (scrollPosMethod) { 608 if (!arguments.length) { // get 609 return getScrollPos.call(Controller); 610 } else { // set 611 if (_util.type.Function(scrollPosMethod)) { 612 getScrollPos = scrollPosMethod; 613 } else { 614 log(2, "Provided value for method 'scrollPos' is not a function. To change the current scroll position use 'scrollTo()'."); 615 } 616 } 617 return Controller; 618 }; 619 620 /** 621 * **Get** all infos or one in particular about the controller. 622 * @public 623 * @example 624 * // returns the current scroll position (number) 625 * var scrollPos = controller.info("scrollPos"); 626 * 627 * // returns all infos as an object 628 * var infos = controller.info(); 629 * 630 * @param {string} [about] - If passed only this info will be returned instead of an object c
630ontaining all. 631 Valid options are: 632 ** `"size"` => the current viewport size of the container 633 ** `"vertical"` => true if vertical scrolling, otherwise false 634 ** `"scrollPos"` => the current scroll position 635 ** `"scrollDirection"` => the last known direction of the scroll 636 ** `"container"` => the container element 637 ** `"isDocument"` => true if container element is the document. 638 * @returns {(mixed|object)} The requested info(s). 639 */ 640 this.info = function (about) { 641 var values = { 642 size: _viewPortSize, // contains height or width (in regard to orientation); 643 vertical: _options.vertical, 644 scrollPos: _scrollPos, 645 scrollDirection: _scrollDirection, 646 container: _options.container, 647 isDocument: _isDocument 648 }; 649 if (!arguments.length) { // get all as an object 650 return values; 651 } else if (values[about] !== undefined) { 652 return values[about]; 653 } else { 654 log(1, "ERROR: option \"" + about + "\" is not available"); 655 return; 656 } 657 }; 658 659 /** 660 * **Get** or **Set** the current loglevel option value. 661 * @public 662 * 663 * @example 664 * // get the current value 665 * var loglevel = controller.loglevel(); 666 * 667 * // set a new value 668 * controller.loglevel(3); 669 * 670 * @param {number} [newLoglevel] - The new loglevel setting of the Controller. `[0-3]` 671 * @returns {(number|Controller)} Current loglevel or parent object for chaining. 672 */ 673 this.loglevel = function (newLoglevel) { 674 if (!arguments.length) { // get 675 return _options.loglevel; 676 } else if (_options.loglevel != newLoglevel) { // set 677 _options.loglevel = newLoglevel; 678 } 679 return Controller; 680 }; 681 682 /** 683 * **Get** or **Set** the current enabled state of the controller. 684 * This can be used to disable all Scenes connected to the controller without destroying or removing them. 685 * @public 686 * 687 * @example 688 * // get the current value 689 * var enabled = controller.enabled(); 690 * 691 * // disable the controller 692 * controller.enabled(false); 693 * 694 * @param {boolean} [newState] - The new enabled state of the controller `true` or `false`. 695 * @returns {(boolean|Controller)} Current enabled state or parent object for chaining. 696 */ 697 this.enabled = function (newState) { 698 if (!arguments.length) { // get 699 return _enabled; 700 } else if (_enabled != newState) { // set 701 _enabled = !!newState; 702 Controller.updateScene(_sceneObjects, true); 703 } 704 return Controller; 705 }; 706 707 /** 708 * Destroy the Controller, all Scenes and everything. 709 * @public 710 * 711 * @example 712 * // without resetting the scenes 713 * controller = controller.destroy(); 714 * 715 * // with scene reset 716 * controller = controller.destroy(true); 717 * 718 * @param {boolean} [resetScenes=false] - If `true` the pins and tweens (if existent) of all scenes will be reset. 719 * @returns {null} Null to unset handler variables. 720 */ 721 this.destroy = function (resetScenes) { 722 window.clearTimeout(_refreshTimeout); 723 var i = _sceneObjects.length; 724 while (i--) { 725 _sceneObjects[i].destroy(resetScenes); 726 } 727 _options.container.removeEventListener("resize", onChange); 728 _options.container.removeEventListener("scroll", onChange); 729 _util.cAF(_updateTimeout); 730 log(3, "destroyed " + NAMESPACE + " (reset: " + (resetScenes ? "true" : "false") + ")"); 731 return null; 732 }; 733 734 // INIT 735 construct(); 736 return Controller; 737 }; 738 739 // store pagewide controller options 740 var CONTROLLER_OPTIONS = { 741 defaults: { 742 container: window, 743 vertical: true, 744 globalSceneOptions: {}, 745 loglevel: 2, 746 refreshInterval: 100 747 } 748 }; 749 /* 750 * method used to add an option to ScrollMagic Scenes. 751 */ 752 ScrollMagic.Controller.addOption = function (name, defaultValue) { 753 CONTROLLER_OPTIONS.defaults[name] = defaultValue; 754 }; 755 // instance extension function for plugins 756 ScrollMagic.Controller.extend = function (extension) { 757 var oldClass = this; 758 ScrollMagic.Controller = function () { 759 oldClass.apply(this, arguments); 760 this.$super = _util.extend({}, this); // copy parent state 761 return extension.apply(this, arguments) || this; 762 }; 763 _util.extend(ScrollMagic.Controller, oldClass); // copy properties 764 ScrollMagic.Controller.prototype = oldClass.prototype; // copy prototype 765 ScrollMagic.Controller.prototype.constructor = ScrollMagic.Controller; // restore constructor 766 }; 767 768 769 /** 770 * A Scene defines where the controller should react and how. 771 * 772 * @class 773 * 774 * @example 775 * // create a standard scene and add it to a controller 776 * new ScrollMagic.Scene() 777 * .addTo(controller); 778 * 779 * // create a scene with custom options and assign a handler to it. 780 * var scene = new ScrollMagic.Scene({ 781 * duration: 100, 782 * offset: 200, 783 * triggerHook: "onEnter", 784 * reverse: false 785 * }); 786 * 787 * @param {object} [options] - Options for the Scene. The options can be updated at any time. 788 Instead of setting the options for each scene individually you can also set them globally in the controller as the controllers `globalSceneOptions` option. The object accepts the same properties as the ones below. 789 When a scene is added to the controller the options defined using the Scene constructor will be overwritten by those set in `globalSceneOptions`. 790 * @param {(number|string|function)} [options.duration=0] - The duration of the scene. 791 Please see `Scene.duration()` for details. 792 * @param {number} [options.offset=0] - Offset Value for the Trigger Position. If no triggerElement is defined this will be the scroll distance from the start of the page, after which the scene will start. 793 * @param {(string|object)} [options.triggerElement=null] - Selector or DOM object that defines the start of the scene. If undefined the scene will start right at the start of the page (unless an offset is set). 794 * @param {(number|string)} [options.triggerHook="onCenter"] - Can be a number between 0 and 1 defining the position of the trigger Hook in relation to the viewport. 795 Can also be defined using a string: 796 ** `"onEnter"` => `1` 797 ** `"onCenter"` => `0.5` 798 ** `"onLeave"` => `0` 799 * @param {boolean} [options.reverse=true] - Should the scene reverse, when scrolling up? 800 * @param {number} [options.loglevel=2] - Loglevel for debugging. Note that logging is disabled in the minified version of ScrollMagic. 801 ** `0` => silent 802 ** `1` => errors 803 ** `2` => errors, warnings 804 ** `3` => errors, warnings, debuginfo 805 * 806 */ 807 ScrollMagic.Scene = function (options) { 808 809 /* 810 * ---------------------------------------------------------------- 811 * settings 812 * ---------------------------------------------------------------- 813 */ 814 815 var 816 NAMESPACE = 'ScrollMagic.Scene', 817 SCENE_STATE_BEFORE = 'BEFORE', 818 SCENE_STATE_DURING = 'DURING', 819 SCENE_STATE_AFTER = 'AFTER', 820 DEFAULT_OPTIONS = SCENE_OPTIONS.defaults; 821 822 /* 823 * ---------------------------------------------------------------- 824 * private vars 825 * ---------------------------------------------------------------- 826 */ 827 828 var 829 Scene = this, 830 _options = _util.extend({}, DEFAULT_OPTIONS, options), 831 _state = SCENE_STATE_BEFORE, 832 _progress = 0, 833 _scrollOffset = { 834 start: 0, 835 end: 0 836 }, // reflects the controllers's scroll position for the start and end of the scene respectively 837 _triggerPos = 0, 838 _enabled = true, 839 _durationUpdateMethod, 840 _controller; 841 842 /**
843 * Internal constructor function of the ScrollMagic Scene 844 * @private 845 */ 846 var construct = function () { 847 for (var key in _options) { // check supplied options 848 if (!DEFAULT_OPTIONS.hasOwnProperty(key)) { 849 log(2, "WARNING: Unknown option \"" + key + "\""); 850 delete _options[key]; 851 } 852 } 853 // add getters/setters for all possible options 854 for (var optionName in DEFAULT_OPTIONS) { 855 addSceneOption(optionName); 856 } 857 // validate all options 858 validateOption(); 859 }; 860 861 /* 862 * ---------------------------------------------------------------- 863 * Event Management 864 * ---------------------------------------------------------------- 865 */ 866 867 var _listeners = {}; 868 /** 869 * Scene start event. 870 * Fires whenever the scroll position its the starting point of the scene. 871 * It will also fire when scrolling back up going over the start position of the scene. If you want something to happen only when scrolling down/right, use the scrollDirection parameter passed to the callback. 872 * 873 * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method. 874 * 875 * @event ScrollMagic.Scene#start 876 * 877 * @example 878 * scene.on("start", function (event) { 879 * console.log("Hit start point of scene."); 880 * }); 881 * 882 * @property {object} event - The event Object passed to each callback 883 * @property {string} event.type - The name of the event 884 * @property {Scene} event.target - The Scene object that triggered this event 885 * @property {number} event.progress - Reflects the current progress of the scene 886 * @property {string} event.state - The current state of the scene `"BEFORE"` or `"DURING"` 887 * @property {string} event.scrollDirection - Indicates which way we are scrolling `"PAUSED"`, `"FORWARD"` or `"REVERSE"` 888 */ 889 /** 890 * Scene end event. 891 * Fires whenever the scroll position its the ending point of the scene. 892 * It will also fire when scrolling back up from after the scene and going over its end position. If you want something to happen only when scrolling down/right, use the scrollDirection parameter passed to the callback. 893 * 894 * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method. 895 * 896 * @event ScrollMagic.Scene#end 897 * 898 * @example 899 * scene.on("end", function (event) { 900 * console.log("Hit end point of scene."); 901 * }); 902 * 903 * @property {object} event - The event Object passed to each callback 904 * @property {string} event.type - The name of the event 905 * @property {Scene} event.target - The Scene object that triggered this event 906 * @property {number} event.progress - Reflects the current progress of the scene 907 * @property {string} event.state - The current state of the scene `"DURING"` or `"AFTER"` 908 * @property {string} event.scrollDirection - Indicates which way we are scrolling `"PAUSED"`, `"FORWARD"` or `"REVERSE"` 909 */ 910 /** 911 * Scene enter event. 912 * Fires whenever the scene enters the "DURING" state. 913 * Keep in mind that it doesn't matter if the scene plays forward or backward: This event always fires when the scene enters its active scroll timeframe, regardless of the scroll-direction. 914 * 915 * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method. 916 * 917 * @event ScrollMagic.Scene#enter 918 * 919 * @example 920 * scene.on("enter", function (event) { 921 * console.log("Scene entered."); 922 * }); 923 * 924 * @property {object} event - The event Object passed to each callback 925 * @property {string} event.type - The name of the event 926 * @property {Scene} event.target - The Scene object that triggered this event 927 * @property {number} event.progress - Reflects the current progress of the scene 928 * @property {string} event.state - The current state of the scene - always `"DURING"` 929 * @property {string} event.scrollDirection - Indicates which way we are scrolling `"PAUSED"`, `"FORWARD"` or `"REVERSE"` 930 */ 931 /** 932 * Scene leave event. 933 * Fires whenever the scene's state goes from "DURING" to either "BEFORE" or "AFTER". 934 * Keep in mind that it doesn't matter if the scene plays forward or backward: This event al
934ways fires when the scene leaves its active scroll timeframe, regardless of the scroll-direction. 935 * 936 * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method. 937 * 938 * @event ScrollMagic.Scene#leave 939 * 940 * @example 941 * scene.on("leave", function (event) { 942 * console.log("Scene left."); 943 * }); 944 * 945 * @property {object} event - The event Object passed to each callback 946 * @property {string} event.type - The name of the event 947 * @property {Scene} event.target - The Scene object that triggered this event 948 * @property {number} event.progress - Reflects the current progress of the scene 949 * @property {string} event.state - The current state of the scene `"BEFORE"` or `"AFTER"` 950 * @property {string} event.scrollDirection - Indicates which way we are scrolling `"PAUSED"`, `"FORWARD"` or `"REVERSE"` 951 */ 952 /** 953 * Scene update event. 954 * Fires whenever the scene is updated (but not necessarily changes the progress). 955 * 956 * @event ScrollMagic.Scene#update 957 * 958 * @example 959 * scene.on("update", function (event) { 960 * console.log("Scene updated."); 961 * }); 962 * 963 * @property {object} event - The event Object passed to each callback 964 * @property {string} event.type - The name of the event 965 * @property {Scene} event.target - The Scene object that triggered this event 966 * @property {number} event.startPos - The starting position of the scene (in relation to the conainer) 967 * @property {number} event.endPos - The ending position of the scene (in relation to the conainer) 968 * @property {number} event.scrollPos - The current scroll position of the container 969 */ 970 /** 971 * Scene progress event. 972 * Fires whenever the progress of the scene changes. 973 * 974 * For details on this event and the order in which it is fired, please review the {@link Scene.progress} method. 975 * 976 * @event ScrollMagic.Scene#progress 977 * 978 * @example 979 * scene.on("progress", function (event) { 980 * console.log("Scene progress changed to " + event.progress); 981 * }); 982 * 983 * @property {object} event - The event Object passed to each callback 984 * @property {string} event.type - The name of the event 985 * @property {Scene} event.target - The Scene object that triggered this event 986 * @property {number} event.progress - Reflects the current progress of the scene 987 * @property {string} event.state - The current state of the scene `"BEFORE"`, `"DURING"` or `"AFTER"` 988 * @property {string} event.scrollDirection - Indicates which way we are scrolling `"PAUSED"`, `"FORWARD"` or `"REVERSE"` 989 */ 990 /** 991 * Scene change event. 992 * Fires whenvever a property of the scene is changed. 993 * 994 * @event ScrollMagic.Scene#change 995 * 996 * @example 997 * scene.on("change", function (event) { 998 * console.log("Scene Property \"" + event.what + "\" changed to " + event.newval); 999 * }); 1000 * 1001 * @property {object} event - The event Object passed to each callback 1002 * @property {string} event.type - The name of the event 1003 * @property {Scene} event.target - The Scene object that triggered this event 1004 * @property {string} event.what - Indicates what value has been changed 1005 * @property {mixed} event.newval - The new value of the changed property 1006 */ 1007 /** 1008 * Scene shift event. 1009 * Fires whenvever the start or end **scroll offset** of the scene change. 1010 * This happens explicitely, when one of these values change: `offset`, `duration` or `triggerHook`. 1011 * It will fire implicitly when the `triggerElement` changes, if the new element has a different position (most cases). 1012 * It will also fire implicitly when the size of the container changes and the triggerHook is anything other than `onLeave`. 1013 * 1014 * @event ScrollMagic.Scene#shift 1015 * @since 1.1.0 1016 * 1017 * @example 1018 * scene.on("shift", function (event) { 1019 * console.log("Scene moved, because the " + event.reason + " has changed.)"); 1020 * }); 1021 * 1022 * @property {object} event - The event Object passed to each callback 1023 * @property {string} event.type - The name of the event 1024 * @property {Scene} event.target - The Scene object that triggered this event 1025 * @property {string} event.reason - Indicates why the scene has shifted 1026 */ 1027 /** 1028 * Scene destroy event. 1029 * Fires whenvever the scene is destroyed. 1030 * This can be used to tidy up custom behaviour used in events. 1031 * 1032 * @event ScrollMagic.Scene#destroy 1033 * @since 1.1.0 1034 * 1035 * @example 1036 * scene.on("enter", function (event) { 1037 * // add custom action 1038 * $("#my-elem").left("200"); 1039 * }) 1040 * .on("destroy", function (event) { 1041 * // reset my element to start position 1042 * if (event.reset) { 1043 * $("#my-elem").left("0"); 1044 * } 1045 * }); 1046 * 1047 * @property {object} event - The event Object passed to each callback 1048 * @property {string} event.type - The name of the event 1049 * @property {Scene} event.target - The Scene object that triggered this event 1050 * @property {boolean} event.reset - Indicates if the destroy method was called with reset `true` or `false`. 1051 */ 1052 /** 1053 * Scene add event. 1054 * Fires when the scene is added to a controller. 1055 * This is mostly used by plugins to know that change might be due. 1056 * 1057 * @event ScrollMagic.Scene#add 1058 * @since 2.0.0 1059 * 1060 * @example 1061 * scene.on("add", function (event) { 1062 * console.log('Scene was added to a new controller.'); 1063 * }); 1064 * 1065 * @property {object} event - The event Object passed to each callback 1066 * @property {string} event.type - The name of the event 1067 * @property {Scene} event.target - The Scene object that triggered this event 1068 * @property {boolean} event.controller - The controller object the scene was added to. 1069 */ 1070 /** 1071 * Scene remove event. 1072 * Fires when the scene is removed from a controller. 1073 * This is mostly used by plugins to know that change might be due. 1074 * 1075 * @event ScrollMagic.Scene#remove 1076 * @since 2.0.0 1077 * 1078 * @example 1079 * scene.on("remove", function (event) { 1080 * console.log('Scene was removed from its controller.'); 1081 * }); 1082 * 1083 * @property {object} event - The event Object passed to each callback 1084 * @property {string} event.type - The name of the event 1085 * @property {Scene} event.target - The Scene object that triggered this event 1086 */ 1087 1088 /** 1089 * Add one ore more event listener. 1090 * The callback function will be fired at the respective event, and an object c
1090ontaining relevant data will be passed to the callback. 1091 * @method ScrollMagic.Scene#on 1092 * 1093 * @example 1094 * function callback (event) { 1095 * console.log("Event fired! (" + event.type + ")"); 1096 * } 1097 * // add listeners 1098 * scene.on("change update progress start end enter leave", callback); 1099 * 1100 * @param {string} names - The name or names of the event the callback should be attached to. 1101 * @param {function} callback - A function that should be executed, when the event is dispatched. An event object will be passed to the callback. 1102 * @returns {Scene} Parent object for chaining. 1103 */ 1104 this.on = function (names, callback) { 1105 if (_util.type.Function(callback)) { 1106 names = names.trim().split(' '); 1107 names.forEach(function (fullname) { 1108 var 1109 nameparts = fullname.split('.'), 1110 eventname = nameparts[0], 1111 namespace = nameparts[1]; 1112 if (eventname != "*") { // disallow wildcards 1113 if (!_listeners[eventname]) { 1114 _listeners[eventname] = []; 1115 } 1116 _listeners[eventname].push({ 1117 namespace: namespace || '', 1118 callback: callback 1119 }); 1120 } 1121 }); 1122 } else { 1123 log(1, "ERROR when calling '.on()': Supplied callback for '" + names + "' is not a valid function!"); 1124 } 1125 return Scene; 1126 }; 1127 1128 /** 1129 * Remove one or more event listener. 1130 * @method ScrollMagic.Scene#off 1131 * 1132 * @example 1133 * function callback (event) { 1134 * console.log("Event fired! (" + event.type + ")"); 1135 * } 1136 * // add listeners 1137 * scene.on("change update", callback); 1138 * // remove listeners 1139 * scene.off("change update", callback); 1140 * 1141 * @param {string} names - The name or names of the event that should be removed. 1142 * @param {function} [callback] - A specific callback function that should be removed. If none is passed all callbacks to the event listener will be removed. 1143 * @returns {Scene} Parent object for chaining. 1144 */ 1145 this.off = function (names, callback) { 1146 if (!names) { 1147 log(1, "ERROR: Invalid event name supplied."); 1148 return Scene; 1149 } 1150 names = names.trim().split(' '); 1151 names.forEach(function (fullname, key) { 1152 var 1153 nameparts = fullname.split('.'), 1154 eventname = nameparts[0], 1155 namespace = nameparts[1] || '', 1156 removeList = eventname === '*' ? Object.keys(_listeners) : [eventname]; 1157 removeList.forEach(function (remove) { 1158 var 1159 list = _listeners[remove] || [], 1160 i = list.length; 1161 while (i--) { 1162 var listener = list[i]; 1163 if (listener && (namespace === listener.namespace || namespace === '*') && (!callback || callback == listener.callback)) { 1164 list.splice(i, 1); 1165 } 1166 } 1167 if (!list.length) { 1168 delete _listeners[remove]; 1169 } 1170 }); 1171 }); 1172 return Scene; 1173 }; 1174 1175 /** 1176 * Trigger an event. 1177 * @method ScrollMagic.Scene#trigger 1178 * 1179 * @example 1180 * this.trigger("change"); 1181 * 1182 * @param {string} name - The name of the event that should be triggered. 1183 * @param {object} [vars] - An object containing info that should be passed to the callback. 1184 * @returns {Scene} Parent object for chaining. 1185 */ 1186 this.trigger = function (name, vars) { 1187 if (name) { 1188 var 1189 nameparts = name.trim().split('.'), 1190 eventname = nameparts[0], 1191 namespace = nameparts[1], 1192 listeners = _listeners[eventname]; 1193 log(3, 'event fired:', eventname, vars ? "->" : '', vars || ''); 1194 if (listeners) { 1195 listeners.forEach(function (listener, key) { 1196 if (!namespace || namespace === listener.namespace) { 1197 listener.callback.call(Scene, new ScrollMagic.Event(eventname, listener.namespace, Scene, vars)); 1198 } 1199 }); 1200 } 1201 } else { 1202 log(1, "ERROR: Invalid event name supplied."); 1203 } 1204 return Scene; 1205 }; 1206 1207 // set event listeners 1208 Scene 1209 .on("change.internal", function (e) { 1210 if (e.what !== "loglevel" && e.what !== "tweenChanges") { // no need for a scene update scene with these options... 1211 if (e.what === "triggerElement") { 1212 updateTriggerElementPosition(); 1213 } else if (e.what === "reverse") { // the only property left that may have an impact on the current scene state. Everything else is handled by the shift event.
1214 Scene.update(); 1215 } 1216 } 1217 }) 1218 .on("shift.internal", function (e) { 1219 updateScrollOffset(); 1220 Scene.update(); // update scene to reflect new position 1221 }); 1222 1223 /** 1224 * Send a debug message to the console. 1225 * @private 1226 * but provided publicly with _log for plugins 1227 * 1228 * @param {number} loglevel - The loglevel required to initiate output for the message. 1229 * @param {...mixed} output - One or more variables that should be passed to the console. 1230 */ 1231 var log = this._log = function (loglevel, output) { 1232 if (_options.loglevel >= loglevel) { 1233 Array.prototype.splice.call(arguments, 1, 0, "(" + NAMESPACE + ") ->"); 1234 _util.log.apply(window, arguments); 1235 } 1236 }; 1237 1238 /** 1239 * Add the scene to a controller. 1240 * This is the equivalent to `Controller.addScene(scene)`. 1241 * @method ScrollMagic.Scene#addTo 1242 * 1243 * @example 1244 * // add a scene to a ScrollMagic Controller 1245 * scene.addTo(controller); 1246 * 1247 * @param {ScrollMagic.Controller} controller - The controller to which the scene should be added. 1248 * @returns {Scene} Parent object for chaining. 1249 */ 1250 this.addTo = function (controller) { 1251 if (!(controller instanceof ScrollMagic.Controller)) { 1252 log(1, "ERROR: supplied argument of 'addTo()' is not a valid ScrollMagic Controller"); 1253 } else if (_controller != controller) { 1254 // new controller 1255 if (_controller) { // was associated to a different controller before, so remove it... 1256 _controller.removeScene(Scene); 1257 } 1258 _controller = controller; 1259 validateOption(); 1260 updateDuration(true); 1261 updateTriggerElementPosition(true); 1262 updateScrollOffset(); 1263 _controller.info("container").addEventListener('resize', onContainerResize); 1264 controller.addScene(Scene); 1265 Scene.trigger("add", { 1266 controller: _controller 1267 }); 1268 log(3, "added " + NAMESPACE + " to controller"); 1269 Scene.update(); 1270 } 1271 return Scene; 1272 }; 1273 1274 /** 1275 * **Get** or **Set** the current enabled state of the scene. 1276 * This can be used to disable this scene without removing or destroying it. 1277 * @method ScrollMagic.Scene#enabled 1278 * 1279 * @example 1280 * // get the current value 1281 * var enabled = scene.enabled(); 1282 * 1283 * // disable the scene 1284 * scene.enabled(false); 1285 * 1286 * @param {boolean} [newState] - The new enabled state of the scene `true` or `false`. 1287 * @returns {(boolean|Scene)} Current enabled state or parent object for chaining. 1288 */ 1289 this.enabled = function (newState) { 1290 if (!arguments.length) { // get 1291 return _enabled; 1292 } else if (_enabled != newState) { // set 1293 _enabled = !!newState; 1294 Scene.update(true); 1295 } 1296 return Scene; 1297 }; 1298 1299 /** 1300 * Remove the scene from the controller. 1301 * This is the equivalent to `Controller.removeScene(scene)`. 1302 * The scene will not be updated anymore until you readd it to a controller. 1303 * To remove the pin or the tween you need to call removeTween() or removePin() respectively. 1304 * @method ScrollMagic.Scene#remove 1305 * @example 1306 * // remove the scene from its controller 1307 * scene.remove(); 1308 * 1309 * @returns {Scene} Parent object for chaining. 1310 */ 1311 this.remove = function () { 1312 if (_controller) { 1313 _controller.info("container").removeEventListener('resize', onContainerResize); 1314 var tmpParent = _controller; 1315 _controller = undefined; 1316 tmpParent.removeScene(Scene); 1317 Scene.trigger("remove"); 1318 log(3, "removed " + NAMESPACE + " from controller"); 1319 } 1320 return Scene; 1321 }; 1322 1323 /** 1324 * Destroy the scene and everything. 1325 * @method ScrollMagic.Scene#destroy 1326 * @example 1327 * // destroy the scene without resetting the pin and tween to their initial positions 1328 * scene = scene.destroy(); 1329 * 1330 * // destroy the scene and reset the pin and tween 1331 * scene = scene.destroy(true); 1332 * 1333 * @param {boolean} [reset=false] - If `true` the pin and tween (if existent) will be reset. 1334 * @returns {null} Null to unset handler variables. 1335 */ 1336 this.destroy = function (reset) { 1337 Scene.trigger("destroy", { 1338 reset: reset 1339 }); 1340 Scene.remove(); 1341 Scene.off("*.*"); 1342 log(3, "destroyed " + NAMESPACE + " (reset: " + (reset ? "true" : "false") + ")"); 1343 return null; 1344 }; 1345 1346 1347 /** 1348 * Updates the Scene to reflect the current state. 1349 * This is the equivalent to `Controller.updateScene(scene, immediately)`. 1350 * The update method calculates the scene's start and end position (based on the trigger element, trigger hook, duration and offset) and checks it against the current scroll position of the container. 1351 * It then updates the current scene state accordingly (or does nothing, if the state is already correct) – Pins will be set to their correct position and tweens will be updated to their correct progress. 1352 * This means an update doesn't necessarily result in a progress change. The `progress` event will be fired if the progress has indeed changed between this update and the last. 1353 * _**NOTE:** This method gets called constantly whenever ScrollMagic detects a change. The only application for you is
1353if you change something outside of the realm of ScrollMagic, like moving the trigger or changing tween parameters._ 1354 * @method ScrollMagic.Scene#update 1355 * @example 1356 * // update the scene on next tick 1357 * scene.update(); 1358 * 1359 * // update the scene immediately 1360 * scene.update(true); 1361 * 1362 * @fires Scene.update 1363 * 1364 * @param {boolean} [immediately=false] - If `true` the update will be instant, if `false` it will wait until next update cycle (better performance). 1365 * @returns {Scene} Parent object for chaining. 1366 */ 1367 this.update = function (immediately) { 1368 if (_controller) { 1369 if (immediately) { 1370 if (_controller.enabled() && _enabled) { 1371 var 1372 scrollPos = _controller.info("scrollPos"), 1373 newProgress; 1374 1375 if (_options.duration > 0) { 1376 newProgress = (scrollPos - _scrollOffset.start) / (_scrollOffset.end - _scrollOffset.start); 1377 } else { 1378 newProgress = scrollPos >= _scrollOffset.start ? 1 : 0; 1379 } 1380 1381 Scene.trigger("update", { 1382 startPos: _scrollOffset.start, 1383 endPos: _scrollOffset.end, 1384 scrollPos: scrollPos 1385 }); 1386 1387 Scene.progress(newProgress); 1388 } else if (_pin && _state === SCENE_STATE_DURING) { 1389 updatePinState(true); // unpin in position 1390 } 1391 } else { 1392 _controller.updateScene(Scene, false); 1393 } 1394 } 1395 return Scene; 1396 }; 1397 1398 /** 1399 * Updates dynamic scene variables like the trigger element position or the duration. 1400 * This method is automatically called in regular intervals from the controller. See {@link ScrollMagic.Controller} option `refreshInterval`. 1401 * 1402 * You can call it to minimize lag, for example when you intentionally change the position of the triggerElement. 1403 * If you don't it will simply be updated in the next refresh interval of the container, which is usually sufficient. 1404 * 1405 * @method ScrollMagic.Scene#refresh 1406 * @since 1.1.0 1407 * @example 1408 * scene = new ScrollMagic.Scene({triggerElement: "#trigger"}); 1409 * 1410 * // change the position of the trigger 1411 * $("#trigger").css("top", 500); 1412 * // immediately let the scene know of this change 1413 * scene.refresh(); 1414 * 1415 * @fires {@link Scene.shift}, if the trigger element position or the duration changed 1416 * @fires {@link Scene.change}, if the duration changed 1417 * 1418 * @returns {Scene} Parent object for chaining. 1419 */ 1420 this.refresh = function () { 1421 updateDuration(); 1422 updateTriggerElementPosition(); 1423 // update trigger element position 1424 return Scene; 1425 }; 1426 1427 /** 1428 * **Get** or **Set** the scene's progress. 1429 * Usually it shouldn't be necessary to use this as a setter, as it is set automatically by scene.update(). 1430 * The order in which the events are fired depends on the duration of the scene: 1431 * 1. Scenes with `duration == 0`: 1432 * Scenes that have no duration by definition have no ending. Thus the `end` event will never be fired. 1433 * When the trigger position of the scene is passed the events are always fired in this order: 1434 * `enter`, `start`, `progress` when scrolling forward 1435 * and 1436 * `progress`, `start`, `leave` when scrolling in reverse 1437 * 2. Scenes with `duration > 0`: 1438 * Scenes with a set duration have a defined start and end point. 1439 * When scrolling past the start position of the scene it will fire these events in this order: 1440 * `enter`, `start`, `progress` 1441 * When continuing to scroll and passing the end point it will fire these events: 1442 * `progress`, `end`, `leave` 1443 * When reversing through the end point these events are fired: 1444 * `enter`, `end`, `progress` 1445 * And when continuing to scroll past the start position in reverse it will fire: 1446 * `progress`, `start`, `leave` 1447 * In between start and end the `progress` event will be called constantly, whenever the progress changes. 1448 * 1449 * In short: 1450 * `enter` events will always trigger **before** the progress update and `leave` envents will trigger **after** the progress update. 1451 * `start` and `end` will always trigger at their respective position. 1452 * 1453 * Please review the event descriptions for details on the events and the event object that is passed to the callback. 1454 * 1455 * @method ScrollMagic.Scene#progress 1456 * @example 1457 * // get the current scene progress 1458 * var progress = scene.progress(); 1459 * 1460 * // set new scene progress 1461 * scene.progress(0.3); 1462 * 1463 * @fires {@link Scene.enter}, when used as setter 1464 * @fires {@link Scene.start}, when used as setter 1465 * @fires {@link Scene.progress}, when used as setter 1466 * @fires {@link Scene.end}, when used as setter 1467 * @fires {@link Scene.leave}, when used as setter 1468 * 1469 * @param {number} [progress] - The new progress value of the scene `[0-1]`. 1470 * @returns {number} `get` - Current scene progress. 1471 * @returns {Scene} `set` - Parent object for chaining. 1472 */ 1473 this.progress = function (progress) { 1474 if (!arguments.length) { // get 1475 return _progress; 1476 } else { // set 1477 var 1478 doUpdate = false, 1479 oldState = _state, 1480 scrollDirection = _controller ? _controller.info("scrollDirection") : 'PAUSED', 1481 reverseOrForward = _options.reverse || progress >= _progress; 1482 if (_options.duration === 0) { 1483 // zero duration scenes 1484 doUpdate = _progress != progress; 1485 _progress = progress < 1 && reverseOrForward ? 0 : 1; 1486 _state = _progress === 0 ? SCENE_STATE_BEFORE : SCENE_STATE_DURING; 1487 } else { 1488 // scenes with start and end 1489 if (progress < 0 && _state !== SCENE_STATE_BEFORE && reverseOrForward) { 1490 // go back to initial state 1491 _progress = 0; 1492 _state = SCENE_STATE_BEFORE; 1493 doUpdate = true; 1494 } else if (progress >= 0 && progress < 1 && reverseOrForward) { 1495 _progress = progress; 1496 _state = SCENE_STATE_DURING; 1497 doUpdate = true; 1498 } else if (progress >= 1 && _state !== SCENE_STATE_AFTER) { 1499 _progress = 1; 1500 _state = SCENE_STATE_AFTER; 1501 doUpdate = true; 1502 } else if (_state === SCENE_STATE_DURING && !reverseOrForward) { 1503 updatePinState(); // in case we scrolled backwards mid-scene and reverse is disabled => update the pin position, so it doesn't move back as well. 1504 } 1505 } 1506 if (doUpdate) { 1507 // fire events 1508 var 1509 eventVars = { 1510 progress: _progress, 1511 state: _state, 1512 scrollDirection: scrollDirection 1513 }, 1514 stateChanged = _state != oldState; 1515 1516 var trigger = function (eventName) { // tmp helper to simplify code 1517 Scene.trigger(eventName, eventVars); 1518 }; 1519 1520 if (stateChanged) { // enter events 1521 if (oldState !== SCENE_STATE_DURING) { 1522 trigger("enter"); 1523 trigger(oldState === SCENE_STATE_BEFORE ? "start" : "end"); 1524 } 1525 } 1526 trigger("progress"); 1527 if (stateChanged) { // leave events 1528 if (_state !== SCENE_STATE_DURING) { 1529 trigger(_state === SCENE_STATE_BEFORE ? "start" : "end"); 1530 trigger("leave"); 1531 } 1532 } 1533 } 1534 1535 return Scene; 1536 } 1537 }; 1538 1539 1540 /** 1541 * Update the start and end scrollOffset of the container. 1542 * The positions reflect what the controller's scroll position will be at the start and end respectively. 1543 * Is called, when: 1544 * - Scene event "change" is called with: offset, triggerHook, duration 1545 * - scroll container event "resize" is called 1546 * - the position of the triggerElement changes 1547 * - the controller changes -> addTo() 1548 * @private 1549 */ 1550 var updateScrollOffset = function () { 1551 _scrollOffset = { 1552 start: _triggerPos + _options.offset 1553 }; 1554 if (_controller && _options.triggerElement) { 1555 // take away triggerHook portion to get relative to top 1556 _scrollOffset.start -= _controller.info("size") * _options.triggerHook; 1557 } 1558 _scrollOffset.end = _scrollOffset.start + _options.duration; 1559 }; 1560 1561 /** 1562 * Updates the duration if set to a dynamic function. 1563 * This method is called when the scene is added to a controller and in regular intervals from the controller through scene.refresh(). 1564 * 1565 * @fires {@link Scene.change}, if the duration changed 1566 * @fires {@link Scene.shift}, if the duration changed 1567 * 1568 * @param {boolean} [suppressEvents=false] - If true the shift event will be suppressed. 1569 * @private 1570 */ 1571 var updateDuration = function (suppressEvents) { 1572 // update duration 1573 if (_durationUpdateMethod) { 1574 var varname = "duration"; 1575 if (changeOption(varname, _durationUpdateMethod.call(Scene)) && !suppressEvents) { // set 1576 Scene.trigger("change", { 1577 what: varname, 1578 newval: _options[varname] 1579 }); 1580 Scene.trigger("shift", { 1581 reason: varname 1582 }); 1583 } 1584 } 1585 }; 1586 1587 /** 1588 * Updates the position of the triggerElement, if present. 1589 * This method is called ... 1590 * - ... when the triggerElement is changed 1591 * - ... when the scene is added to a (new) controller 1592 * - ... in regular intervals from the controller through scene.refresh(). 1593 * 1594 * @fires {@link Scene.shift}, if the position changed 1595 * 1596 * @param {boolean} [suppressEvents=false] - If true the shift event will be suppressed. 1597 * @private 1598 */ 1599 var updateTriggerElementPosition = function (suppressEvents) { 1600 var 1601 elementPos = 0, 1602 telem = _options.triggerElement; 1603 if (_controller && (telem || _triggerPos > 0)) { // either an element exists or was removed and the triggerPos is still > 0 1604 if (telem) { // there currently a triggerElement set 1605 if (telem.parentNode) { // check if element is still attached to DOM 1606 var 1607 controllerInfo = _controller.info(), 1608 containerOffset = _util.get.offset(controllerInfo.container), // container position is needed because element offset is returned in relation to document, not in relation to container. 1609 param = controllerInfo.vertical ? "top" : "left"; // which param is of interest ? 1610 1611 // if parent is spacer, use spacer position instead so correct start position is returned for pinned elements. 1612 while (telem.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) { 1613 telem = telem.parentNode; 1614 } 1615 1616 var elementOffset = _util.get.offset(telem); 1617 1618 if (!controllerInfo.isDocument) { // container is not the document root, so substract scroll Position to get correct trigger element position relative to scrollcontent 1619 containerOffset[param] -= _controller.scrollPos(); 1620 } 1621 1622 elementPos = elementOffset[param] - containerOffset[param]; 1623 1624 } else { // there was an element, but it was removed from DOM 1625 log(2, "WARNING: triggerElement was removed from DOM and will be reset to", undefined); 1626 Scene.triggerElement(undefined); // unset, so a change event is triggered 1627 } 1628 } 1629 1630 var changed = elementPos != _triggerPos; 1631 _triggerPos = elementPos; 1632 if (changed && !suppressEvents) { 1633 Scene.trigger("shift", { 1634 reason: "triggerElementPosition" 1635 }); 1636 } 1637 } 1638 }; 1639 1640 /** 1641 * Trigger a shift event, when the container is resized and the triggerHook is > 1. 1642 * @private 1643 */ 1644 var onContainerResize = function (e) { 1645 if (_options.triggerHook > 0) { 1646 Scene.trigger("shift", { 1647 reason: "containerResize" 1648 }); 1649 } 1650 }; 1651 1652 1653 var _validate = _util.extend(SCENE_OPTIONS.validate, { 1654 // validation for duration handled internally for reference to private var _durationMethod 1655 duration: function (val) { 1656 if (_util.type.String(val) && val.match(/^(\.|\d)*\d+%$/)) { 1657 // percentage value 1658 var perc = parseFloat(val) / 100; 1659 val = function () { 1660 return _controller ? _controller.info("size") * perc : 0; 1661 }; 1662 } 1663 if (_util.type.Function(val)) { 1664 // function 1665 _durationUpdateMethod = val; 1666 try { 1667 val = parseFloat(_durationUpdateMethod.call(Scene)); 1668 } catch (e) { 1669 val = -1; // will cause error below 1670 } 1671 } 1672 // val has to be float 1673 val = parseFloat(val); 1674 if (!_util.type.Number(val) || val < 0) { 1675 if (_durationUpdateMethod) { 1676 _durationUpdateMethod = undefined; 1677 throw ["Invalid return value of supplied function for option \"duration\":", val]; 1678 } else { 1679 throw ["Invalid value for option \"duration\":", val]; 1680 } 1681 } 1682 return val; 1683 } 1684 }); 1685 1686 /** 1687 * Checks the validity of a specific or all options and reset to default if neccessary. 1688 * @private 1689 */
1690 var validateOption = function (check) { 1691 check = arguments.length ? [check] : Object.keys(_validate); 1692 check.forEach(function (optionName, key) { 1693 var value; 1694 if (_validate[optionName]) { // there is a validation method for this option 1695 try { // validate value 1696 value = _validate[optionName](_options[optionName]); 1697 } catch (e) { // validation failed -> reset to default 1698 value = DEFAULT_OPTIONS[optionName]; 1699 var logMSG = _util.type.String(e) ? [e] : e; 1700 if (_util.type.Array(logMSG)) { 1701 logMSG[0] = "ERROR: " + logMSG[0]; 1702 logMSG.unshift(1); // loglevel 1 for error msg 1703 log.apply(this, logMSG); 1704 } else { 1705 log(1, "ERROR: Problem executing validation callback for option '" + optionName + "':", e.message); 1706 } 1707 } finally { 1708 _options[optionName] = value; 1709 } 1710 } 1711 }); 1712 }; 1713 1714 /** 1715 * Helper used by the setter/getters for scene options 1716 * @private 1717 */ 1718 var changeOption = function (varname, newval) { 1719 var 1720 changed = false, 1721 oldval = _options[varname]; 1722 if (_options[varname] != newval) { 1723 _options[varname] = newval; 1724 validateOption(varname); // resets to default if necessary 1725 changed = oldval != _options[varname]; 1726 } 1727 return changed; 1728 }; 1729 1730 // generate getters/setters for all options 1731 var addSceneOption = function (optionName) { 1732 if (!Scene[optionName]) { 1733 Scene[optionName] = function (newVal) { 1734 if (!arguments.length) { // get 1735 return _options[optionName]; 1736 } else { 1737 if (optionName === "duration") { // new duration is set, so any previously set function must be unset 1738 _durationUpdateMethod = undefined; 1739 } 1740 if (changeOption(optionName, newVal)) { // set 1741 Scene.trigger("change", { 1742 what: optionName, 1743 newval: _options[optionName] 1744 }); 1745 if (SCENE_OPTIONS.shifts.indexOf(optionName) > -1) { 1746 Scene.trigger("shift", { 1747 reason: optionName 1748 }); 1749 } 1750 } 1751 } 1752 return Scene; 1753 }; 1754 } 1755 }; 1756 1757 /** 1758 * **Get** or **Set** the duration option value. 1759 * 1760 * As a **setter** it accepts three types of parameters: 1761 * 1. `number`: Sets the duration of the scene to exactly this amount of pixels. 1762 * This means the scene will last for exactly this amount of pixels scrolled. Sub-Pixels are also valid. 1763 * A value of `0` means that the scene is 'open end' and no end will be triggered. Pins will never unpin and animations will play independently of scroll progress. 1764 * 2. `string`: Always updates the duration relative to parent scroll container. 1765 * For example `"100%"` will keep the duration always exactly at the inner height of the scroll container. 1766 * When scrolling vertically the width is used for reference respectively. 1767 * 3. `function`: The supplied function will be called to return the scene duration. 1768 * This is useful in setups where the duration depends on other elements who might change size. By supplying a function you can return a value instead of updating potentially multiple scene durations. 1769 * The scene can be referenced inside the callback using `this`. 1770 * _**WARNING:** This is an easy way to kill performance, as the callback will be executed every time `Scene.refresh()` is called, which happens a lot. The interval is defined by the controller (see ScrollMagic.Controller option `refreshInterval`). 1771 * It's recomended to avoid calculations within the function and use cached variables as return values. 1772 * This counts double if you use the same function for multiple scenes._ 1773 * 1774 * @method ScrollMagic.Scene#duration 1775 * @example 1776 * // get the current duration value 1777 * var duration = scene.duration(); 1778 * 1779 * // set a new duration 1780 * scene.duration(300); 1781 * 1782 * // set duration responsively to container size 1783 * scene.duration("100%"); 1784 * 1785 * // use a function to randomize the duration for some reason. 1786 * var durationValueCache; 1787 * function durationCallback () { 1788 * return durationValueCache; 1789 * } 1790 * function updateDuration () { 1791 * durationValueCache = Math.random() * 100; 1792 * } 1793 * updateDuration(); // set to initial value 1794 * scene.duration(durationCallback); // set duration callback 1795 * 1796 * @fires {@link Scene.change}, when used as setter 1797 * @fires {@link Scene.shift}, when used as setter 1798 * @param {(number|string|function)} [newDuration] - The new duration setting for the scene. 1799 * @returns {number} `get` - Current scene duration. 1800 * @returns {Scene} `set` - Parent object for chaining. 1801 */ 1802 1803 /** 1804 * **Get** or **Set** the offset option value. 1805 * @method ScrollMagic.Scene#offset 1806 * @example 1807 * // get the current offset 1808 * var offset = scene.offset(); 1809 * 1810 * // set a new offset 1811 * scene.offset(100); 1812 * 1813 * @fires {@link Scene.change}, when used as setter 1814 * @fires {@link Scene.shift}, when used as setter 1815 * @param {number} [newOffset] - The new offset of the scene. 1816 * @returns {number} `get` - Current scene offset. 1817 * @returns {Scene} `set` - Parent object for chaining. 1818 */ 1819 1820 /** 1821 * **Get** or **Set** the triggerElement option value. 1822 * Does **not** fire `Scene.shift`, because changing the trigger Element doesn't necessarily mean the start position changes. This will be determined in `Scene.refresh()`, which is automatically triggered. 1823 * @method ScrollMagic.Scene#triggerElement 1824 * @example 1825 * // get the current triggerElement 1826 * var triggerElement = scene.triggerElement(); 1827 * 1828 * // set a new triggerElement using a selector 1829 * scene.triggerElement("#trigger"); 1830 * // set a new triggerElement using a DOM object 1831 * scene.triggerElement(document.getElementById("trigger")); 1832 * 1833 * @fires {@link Scene.change}, when used as setter 1834 * @param {(string|object)} [newTriggerElement] - The new trigger element for the scene. 1835 * @returns {(string|object)} `get` - Current triggerElement. 1836 * @returns {Scene} `set` - Parent object for chaining. 1837 */ 1838 1839 /** 1840 * **Get** or **Set** the triggerHook option value. 1841 * @method ScrollMagic.Scene#triggerHook 1842 * @example 1843 * // get the current triggerHook value 1844 * var triggerHook = scene.triggerHook(); 1845 * 1846 * // set a new triggerHook using a string 1847 * scene.triggerHook("onLeave"); 1848 * // set a new triggerHook using a number 1849 * scene.triggerHook(0.7); 1850 * 1851 * @fires {@link Scene.change}, when used as setter 1852 * @fires {@link Scene.shift}, when used as setter 1853 * @param {(number|string)} [newTriggerHook] - The new triggerHook of the scene. See {@link Scene} parameter description for value options. 1854 * @returns {number} `get` - Current triggerHook (ALWAYS numerical). 1855 * @returns {Scene} `set` - Parent object for chaining. 1856 */ 1857 1858 /** 1859 * **Get** or **Set** the reverse option value. 1860 * @method ScrollMagic.Scene#reverse 1861 * @example 1862 * // get the current reverse option 1863 * var reverse = scene.reverse(); 1864 * 1865 * // set new reverse option 1866 * scene.reverse(false); 1867 * 1868 * @fires {@link Scene.change}, when used as setter 1869 * @param {boolean} [newReverse] - The new reverse setting of the scene. 1870 * @returns {boolean} `get` - Current reverse option value. 1871 * @returns {Scene} `set` - Parent object for chaining. 1872 */ 1873 1874 /** 1875 * **Get** or **Set** the loglevel option value. 1876 * @method ScrollMagic.Scene#loglevel 1877 * @example 1878 * // get the current loglevel 1879 * var loglevel = scene.loglevel(); 1880 * 1881 * // set new loglevel 1882 * scene.loglevel(3); 1883 * 1884 * @fires {@link Scene.change}, when used as setter 1885 * @param {number} [newLoglevel] - The new loglevel setting of the scene. `[0-3]` 1886 * @returns {number} `get` - Current loglevel. 1887 * @returns {Scene} `set` - Parent object for chaining. 1888 */ 1889 1890 /** 1891 * **Get** the associated controller. 1892 * @method ScrollMagic.Scene#controller 1893 * @example 1894 * // get the controller of a scene 1895 * var controller = scene.controller(); 1896 * 1897 * @returns {ScrollMagic.Controller} Parent controller or `undefined` 1898 */ 1899 this.controller = function () { 1900 return _controller; 1901 }; 1902 1903 /** 1904 * **Get** the current state. 1905 * @method ScrollMagic.Scene#state 1906 * @example 1907 * // get the current state 1908 * var state = scene.state(); 1909 * 1910 * @returns {string} `"BEFORE"`, `"DURING"` or `"AFTER"` 1911 */ 1912 this.state = function () { 1913 return _state; 1914 }; 1915 1916 /** 1917 * **Get** the current scroll offset for the start of the scene. 1918 * Mind, that the scrollOffset is related to the size of the container, if `triggerHook` is bigger than `0` (or `"onLeave"`). 1919 * This means, that resizing the container or changing the `triggerHook` will influence the scene's start offset. 1920 * @method ScrollMagic.Scene#scrollOffset 1921 * @example 1922 * // get the current scroll offset for the start and end of the scene. 1923 * var start = scene.scrollOffset(); 1924 * var end = scene.scrollOffset() + scene.duration(); 1925 * console.log("the scene starts at", start, "and ends at", end); 1926 * 1927 * @returns {number} The scroll offset (of the container) at which the scene will trigger. Y value for vertical and X value for horizontal scrolls. 1928 */ 1929 this.scrollOffset = function () { 1930 return _scrollOffset.start; 1931 }; 1932 1933 /** 1934 * **Get** the trigger position of the scene (including the value of the `offset` option). 1935 * @method ScrollMagic.Scene#triggerPosition 1936 * @example 1937 * // get the scene's trigger position 1938 * var triggerPosition = scene.triggerPosition(); 1939 * 1940 * @returns {number} Start position of the scene. Top position value for vertical and left position value for horizontal scrolls. 1941 */ 1942 this.triggerPosition = function () { 1943 var pos = _options.offset; // the offset is the basis 1944 if (_controller) { 1945 // get the trigger position 1946 if (_options.triggerElement) { 1947 // Element as trigger 1948 pos += _triggerPos; 1949 } else { 1950 // return the height of the triggerHook to start at the beginning 1951 pos += _controller.info("size") * Scene.triggerHook(); 1952 } 1953 } 1954 return pos; 1955 }; 1956 1957 1958 var 1959 _pin, 1960 _pinOptions; 1961 1962 Scene 1963 .on("shift.internal", function (e) { 1964 var durationChanged = e.reason === "duration"; 1965 if ((_state === SCENE_STATE_AFTER && durationChanged) || (_state === SCENE_STATE_DURING && _options.duration === 0)) { 1966 // if [duration changed after a scene (inside scene progress updates pin position)] or [duration is 0, we are in pin phase and some other value changed]. 1967 updatePinState(); 1968 } 1969 if (durationChanged) { 1970 updatePinDimensions(); 1971 } 1972 }) 1973 .on("progress.internal", function (e) { 1974 updatePinState(); 1975 }) 1976 .on("add.internal", function (e) { 1977 updatePinDimensions(); 1978 }) 1979 .on("destroy.internal", function (e) { 1980 Scene.removePin(e.reset); 1981 }); 1982 /** 1983 * Update the pin state. 1984 * @private 1985 */ 1986 var updatePinState = function (forceUnpin) { 1987 if (_pin && _controller) { 1988 var 1989 containerInfo = _controller.info(), 1990 pinTarget = _pinOptions.spacer.firstChild; // may be pin element or another spacer, if cascading pins 1991 1992 if (!forceUnpin && _state === SCENE_STATE_DURING) { // during scene or if duration is 0 and we are past the trigger 1993 // pinned state 1994 if (_util.css(pinTarget, "position") != "fixed") { 1995 // change state before updating pin spacer (position changes due to fixed collapsing might occur.) 1996 _util.css(pinTarget, { 1997 "position": "fixed" 1998 }); 1999 // update pin spacer 2000 updatePinDimensions(); 2001 } 2002 2003 var 2004 fixedPos = _util.get.offset(_pinOptions.spacer, true), // get viewport position of spacer 2005 scrollDistance = _options.reverse || _options.duration === 0 ? 2006 containerInfo.scrollPos - _scrollOffset.start // quicker 2007 : 2008 Math.round(_progress * _options.duration * 10) / 10; // if no reverse and during pin the position needs to be recalculated using the progress 2009 2010 // add scrollDistance 2011 fixedPos[containerInfo.vertical ? "top" : "left"] += scrollDistance; 2012 2013 // set new values 2014 _util.css(_pinOptions.spacer.firstChild, { 2015 top: fixedPos.top, 2016 left: fixedPos.left 2017 }); 2018 } else { 2019 // unpinned state 2020 var 2021 newCSS = { 2022 position: _pinOptions.inFlow ? "relative" : "absolute", 2023 top: 0, 2024 left: 0 2025 }, 2026 change = _util.css(pinTarget, "position") != newCSS.position; 2027 2028 if (!_pinOptions.pushFollowers) { 2029 newCSS[containerInfo.vertical ? "top" : "left"] = _options.duration * _progress; 2030 } else if (_options.duration > 0) { // only concerns scenes with duration 2031 if (_state === SCENE_STATE_AFTER && parseFloat(_util.css(_pinOptions.spacer, "padding-top")) === 0) { 2032 change = true; // if in after state but havent updated spacer yet (jumped past pin) 2033 } else if (_state === SCENE_STATE_BEFORE && parseFloat(_util.css(_pinOptions.spacer, "padding-bottom")) === 0) { // before 2034 change = true; // jumped past fixed state upward direction 2035 } 2036 } 2037 // set new values 2038 _util.css(pinTarget, newCSS); 2039 if (change) { 2040 // update pin spacer if state changed 2041 updatePinDimensions(); 2042 } 2043 } 2044 } 2045 }; 2046 2047 /** 2048 * Update the pin spacer and/or element size. 2049 * The size of the spacer needs to be updated whenever the duration of the scene changes, if it is to push down following elements. 2050 * @private 2051 */ 2052 var updatePinDimensions = function () { 2053 if (_pin && _controller && _pinOptions.inFlow) { // no spacerresize, if original position is absolute 2054 var 2055 after = (_state === SCENE_STATE_AFTER), 2056 before = (_state === SCENE_STATE_BEFORE), 2057 during = (_state === SCENE_STATE_DURING), 2058 vertical = _controller.info("vertical"), 2059 pinTarget = _pinOptions.spacer.firstChild, // usually the pined element but can also be another spacer (cascaded pins) 2060 marginCollapse = _util.isMarginCollapseType(_util.css(_pinOptions.spacer, "display")), 2061 css = {}; 2062 2063 // set new size 2064 // if relsize: spacer -> pin | else: pin -> spacer 2065 if (_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) { 2066 if (during) { 2067 _util.css(_pin, { 2068 "width": _util.get.width(_pinOptions.spacer) 2069 }); 2070 } else { 2071 _util.css(_pin, { 2072 "width": "100%" 2073 }); 2074 } 2075 } else { 2076 // minwidth is needed for cascaded pins. 2077 css["min-width"] = _util.get.width(vertical ? _pin : pinTarget, true, true); 2078 css.width = during ? css["min-width"] : "auto"; 2079 } 2080 if (_pinOptions.relSize.height) { 2081 if (during) { 2082 // the only padding the spacer should ever include is the duration (if pushFollowers = true), so we need to substract that. 2083 _util.css(_pin, { 2084 "height": _util.get.height(_pinOptions.spacer) - (_pinOptions.pushFollowers ? _options.duration : 0) 2085 }); 2086 } else { 2087 _util.css(_pin, { 2088 "height": "100%" 2089 }); 2090 } 2091 } else { 2092 // margin is only included if it's a cascaded pin to resolve an IE9 bug 2093 css["min-height"] = _util.get.height(vertical ? pinTarget : _pin, true, !marginCollapse); // needed for cascading pins 2094 css.height = during ? css["min-height"] : "auto"; 2095 } 2096 2097 // add space for duration if pushFollowers is true 2098 if (_pinOptions.pushFollowers) { 2099 css["padding" + (vertical ? "Top" : "Left")] = _options.duration * _progress; 2100 css["padding" + (vertical ? "Bottom" : "Right")] = _options.duration * (1 - _progress); 2101 } 2102 _util.css(_pinOptions.spacer, css); 2103 } 2104 }; 2105 2106 /** 2107 * Updates the Pin state (in certain scenarios) 2108 * If the controller container is not the document and we are mid-pin-phase scrolling or resizing the main document can result to wrong pin positions. 2109 * So this function is called on resize and scroll of the document. 2110 * @private 2111 */ 2112 var updatePinInContainer = function () { 2113 if (_controller && _pin && _state === SCENE_STATE_DURING && !_controller.info("isDocument")) { 2114 updatePinState(); 2115 } 2116 }; 2117 2118 /** 2119 * Updates the Pin spacer size state (in certain scenarios) 2120 * If container is resized during pin and relatively sized the size of the pin might need to be updated... 2121 * So this function is called on resize of the container. 2122 * @private 2123 */ 2124 var updateRelativePinSpacer = function () { 2125 if (_controller && _pin && // well, duh 2126 _state === SCENE_STATE_DURING && // element in pinned state? 2127 ( // is width or height relatively sized, but
2127 not in relation to body? then we need to recalc. 2128 ((_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) && _util.get.width(window) != _util.get.width(_pinOptions.spacer.parentNode)) || 2129 (_pinOptions.relSize.height && _util.get.height(window) != _util.get.height(_pinOptions.spacer.parentNode)) 2130 ) 2131 ) { 2132 updatePinDimensions(); 2133 } 2134 }; 2135 2136 /** 2137 * Is called, when the mousewhel is used while over a pinned element inside a div container. 2138 * If the scene is in fixed state scroll events would be counted towards the body. This forwards the event to the scroll container. 2139 * @private 2140 */ 2141 var onMousewheelOverPin = function (e) { 2142 if (_controller && _pin && _state === SCENE_STATE_DURING && !_controller.info("isDocument")) { // in pin state 2143 e.preventDefault(); 2144 _controller._setScrollPos(_controller.info("scrollPos") - ((e.wheelDelta || e[_controller.info("vertical") ? "wheelDeltaY" : "wheelDeltaX"]) / 3 || -e.detail * 30)); 2145 } 2146 }; 2147 2148 /** 2149 * Pin an element for the duration of the scene. 2150 * If the scene duration is 0 the element will only be unpinned, if the user scrolls back past the start position. 2151 * Make sure only one pin is applied to an element at the same time. 2152 * An element can be pinned multiple times, but only successively. 2153 * _**NOTE:** The option `pushFollowers` has no effect, when the scene duration is 0._ 2154 * @method ScrollMagic.Scene#setPin 2155 * @example 2156 * // pin element and push all following elements down by the amount of the pin duration. 2157 * scene.setPin("#pin"); 2158 * 2159 * // pin element and keeping all following elements in their place. The pinned element will move past them. 2160 * scene.setPin("#pin", {pushFollowers: false}); 2161 * 2162 * @param {(string|object)} element - A Selector targeting an element or a DOM object that is supposed to be pinned. 2163 * @param {object} [settings] - settings for the pin 2164 * @param {boolean} [settings.pushFollowers=true] - If `true` following elements will be "pushed" down for the duration of the pin, if `false` the pinned element will just scroll past them. 2165 Ignored, when duration is `0`. 2166 * @param {string} [settings.spacerClass="scrollmagic-pin-spacer"] - Classname of the pin spacer element, which is used to replace the element. 2167 * 2168 * @returns {Scene} Parent object for chaining. 2169 */ 2170 this.setPin = function (element, settings) { 2171 var 2172 defaultSettings = { 2173 pushFollowers: true, 2174 spacerClass: "scrollmagic-pin-spacer" 2175 }; 2176 var pushFollowersActivelySet = settings && settings.hasOwnProperty('pushFollowers'); 2177 settings = _util.extend({}, defaultSettings, settings); 2178 2179 // validate Element 2180 element = _util.get.elements(element)[0]; 2181 if (!element) { 2182 log(1, "ERROR calling method 'setPin()': Invalid pin element supplied."); 2183 return Scene; // cancel 2184 } else if (_util.css(element, "position") === "fixed") { 2185 log(1, "ERROR calling method 'setPin()': Pin does not work with elements that are positioned 'fixed'."); 2186 return Scene; // cancel 2187 } 2188 2189 if (_pin) { // preexisting pin? 2190 if (_pin === element) { 2191 // same pin we already have -> do nothing 2192 return Scene; // cancel 2193 } else { 2194 // kill old pin 2195 Scene.removePin(); 2196 } 2197 2198 } 2199 _pin = element; 2200 2201 var 2202 parentDisplay = _pin.parentNode.style.display, 2203 boundsParams = ["top", "left", "bottom", "right", "margin", "marginLeft", "marginRight", "marginTop", "marginBottom"]; 2204 2205 _pin.parentNode.style.display = 'none'; // hack start to force css to return stylesheet values instead of calculated px values. 2206 var 2207 inFlow = _util.css(_pin, "position") != "absolute", 2208 pinCSS = _util.css(_pin, boundsParams.concat(["display"])), 2209 sizeCSS = _util.css(_pin, ["width", "height"]); 2210 _pin.parentNode.style.display = parentDisplay; // hack end. 2211 2212 if (!inFlow && settings.pushFollowers) { 2213 log(2, "WARNING: If the pinned element is positioned absolutely pushFollowers will be disabled."); 2214 settings.pushFollowers = false; 2215 } 2216 window.setTimeout(function () { // wait until all finished, because with responsive duration it will only be set after scene is added to controller 2217 if (_pin && _options.duration === 0 && pushFollowersActivelySet && settings.pushFollowers) { 2218 log(2, "WARNING: pushFollowers =", true, "has no effect, when scene duration is 0."); 2219 } 2220 }, 0); 2221 2222 // create spacer and insert 2223 var 2224 spacer = _pin.parentNode.insertBefore(document.createElement('div'), _pin), 2225 spacerCSS = _util.extend(pinCSS, { 2226 position: inFlow ? "relative" : "absolute", 2227 boxSizing: "content-box", 2228 mozBoxSizing: "content-box", 2229 webkitBoxSizing: "content-box" 2230 }); 2231 2232 if (!inFlow) { // copy size if positioned absolutely, to work for bottom/right positioned elements. 2233 _util.extend(spacerCSS, _util.css(_pin, ["width", "height"])); 2234 } 2235 2236 _util.css(spacer, spacerCSS); 2237 spacer.setAttribute(PIN_SPACER_ATTRIBUTE, ""); 2238 _util.addClass(spacer, settings.spacerClass); 2239 2240 // set the pin Options 2241 _pinOptions = { 2242 spacer: spacer, 2243 relSize: { // save if size is defined using % values. if so, handle spacer resize differently... 2244 width: sizeCSS.width.slice(-1) === "%", 2245 height: sizeCSS.height.slice(-1) === "%",
2246 autoFullWidth: sizeCSS.width === "auto" && inFlow && _util.isMarginCollapseType(pinCSS.display) 2247 }, 2248 pushFollowers: settings.pushFollowers, 2249 inFlow: inFlow, // stores if the element takes up space in the document flow 2250 }; 2251 2252 if (!_pin.___origStyle) { 2253 _pin.___origStyle = {}; 2254 var 2255 pinInlineCSS = _pin.style, 2256 copyStyles = boundsParams.concat(["width", "height", "position", "boxSizing", "mozBoxSizing", "webkitBoxSizing"]); 2257 copyStyles.forEach(function (val) { 2258 _pin.___origStyle[val] = pinInlineCSS[val] || ""; 2259 }); 2260 } 2261 2262 // if relative size, transfer it to spacer and make pin calculate it... 2263 if (_pinOptions.relSize.width) { 2264 _util.css(spacer, { 2265 width: sizeCSS.width 2266 }); 2267 } 2268 if (_pinOptions.relSize.height) { 2269 _util.css(spacer, { 2270 height: sizeCSS.height 2271 }); 2272 } 2273 2274 // now place the pin element inside the spacer 2275 spacer.appendChild(_pin); 2276 // and set new css 2277 _util.css(_pin, { 2278 position: inFlow ? "relative" : "absolute", 2279 margin: "auto", 2280 top: "auto", 2281 left: "auto", 2282 bottom: "auto", 2283 right: "auto" 2284 }); 2285 2286 if (_pinOptions.relSize.width || _pinOptions.relSize.autoFullWidth) { 2287 _util.css(_pin, { 2288 boxSizing: "border-box", 2289 mozBoxSizing: "border-box", 2290 webkitBoxSizing: "border-box" 2291 }); 2292 } 2293 2294 // add listener to document to update pin position in case controller is not the document. 2295 window.addEventListener('scroll', updatePinInContainer); 2296 window.addEventListener('resize', updatePinInContainer); 2297 window.addEventListener('resize', updateRelativePinSpacer); 2298 // add mousewheel listener to catch scrolls over fixed elements 2299 _pin.addEventListener("mousewheel", onMousewheelOverPin); 2300 _pin.addEventListener("DOMMouseScroll", onMousewheelOverPin); 2301 2302 log(3, "added pin"); 2303 2304 // finally update the pin to init 2305 updatePinState(); 2306 2307 return Scene; 2308 }; 2309 2310 /** 2311 * Remove the pin from the scene. 2312 * @method ScrollMagic.Scene#removePin 2313 * @example 2314 * // remove the pin from the scene without resetting it (the spacer is not removed) 2315 * scene.removePin(); 2316 * 2317 * // remove the pin from the scene and reset the pin element to its initial position (spacer is removed) 2318 * scene.removePin(true); 2319 * 2320 * @param {boolean} [reset=false] - If `false` the spacer will not be removed and the element's position will not be reset. 2321 * @returns {Scene} Parent object for chaining. 2322 */ 2323 this.removePin = function (reset) { 2324 if (_pin) { 2325 if (_state === SCENE_STATE_DURING) { 2326 updatePinState(true); // force unpin at position 2327 } 2328 if (reset || !_controller) { // if there's no controller no progress was made anyway... 2329 var pinTarget = _pinOptions.spacer.firstChild; // usually the pin element, but may be another spacer (cascaded pins)... 2330 if (pinTarget.hasAttribute(PIN_SPACER_ATTRIBUTE)) { // copy margins to child spacer 2331 var 2332 style = _pinOptions.spacer.style, 2333 values = ["margin", "marginLeft", "marginRight", "marginTop", "marginBottom"], 2334 margins = {}; 2335 values.forEach(function (val) { 2336 margins[val] = style[val] || ""; 2337 }); 2338 _util.css(pinTarget, margins); 2339 } 2340 _pinOptions.spacer.parentNode.insertBefore(pinTarget, _pinOptions.spacer); 2341 _pinOptions.spacer.parentNode.removeChild(_pinOptions.spacer); 2342 if (!_pin.parentNode.hasAttribute(PIN_SPACER_ATTRIBUTE)) { // if it's the last pin for this element -> restore inline styles 2343 // TODO: only correctly set for first pin (when cascading) - how to fix? 2344 _util.css(_pin, _pin.___origStyle); 2345 delete _pin.___origStyle; 2346 } 2347 } 2348 window.removeEventListener('scroll', updatePinInContainer); 2349 window.removeEventListener('resize', updatePinInContainer); 2350 window.removeEventListener('resize', updateRelativePinSpacer); 2351 _pin.removeEventListener("mousewheel", onMousewheelOverPin); 2352 _pin.removeEventListener("DOMMouseScroll", onMousewheelOverPin); 2353 _pin = undefined; 2354 log(3, "removed pin (reset: " + (reset ? "true" : "false") + ")"); 2355 } 2356 return Scene; 2357 }; 2358 2359 2360 var
2361 _cssClasses, 2362 _cssClassElems = []; 2363 2364 Scene 2365 .on("destroy.internal", function (e) { 2366 Scene.removeClassToggle(e.reset); 2367 }); 2368 /** 2369 * Define a css class modification while the scene is active. 2370 * When the scene triggers the classes will be added to the supplied element and removed, when the scene is over. 2371 * If the scene duration is 0 the classes will only be removed if the user scrolls back past the start position. 2372 * @method ScrollMagic.Scene#setClassToggle 2373 * @example 2374 * // add the class 'myclass' to the element with the id 'my-elem' for the duration of the scene 2375 * scene.setClassToggle("#my-elem", "myclass"); 2376 * 2377 * // add multiple classes to multiple elements defined by the selector '.classChange' 2378 * scene.setClassToggle(".classChange", "class1 class2 class3"); 2379 * 2380 * @param {(string|object)} element - A Selector targeting one or more elements or a DOM object that is supposed to be modified. 2381 * @param {string} classes - One or more Classnames (separated by space) that should be added to the element during the scene. 2382 * 2383 * @returns {Scene} Parent object for chaining. 2384 */ 2385 this.setClassToggle = function (element, classes) { 2386 var elems = _util.get.elements(element); 2387 if (elems.length === 0 || !_util.type.String(classes)) { 2388 log(1, "ERROR calling method 'setClassToggle()': Invalid " + (elems.length === 0 ? "element" : "classes") + " supplied."); 2389 return Scene; 2390 } 2391 if (_cssClassElems.length > 0) { 2392 // remove old ones 2393 Scene.removeClassToggle(); 2394 } 2395 _cssClasses = classes; 2396 _cssClassElems = elems; 2397 Scene.on("enter.internal_class leave.internal_class", function (e) { 2398 var toggle = e.type === "enter" ? _util.addClass : _util.removeClass; 2399 _cssClassElems.forEach(function (elem, key) {
2400 toggle(elem, _cssClasses); 2401 }); 2402 }); 2403 return Scene; 2404 }; 2405 2406 /** 2407 * Remove the class binding from the scene. 2408 * @method ScrollMagic.Scene#removeClassToggle 2409 * @example 2410 * // remove class binding from the scene without reset 2411 * scene.removeClassToggle(); 2412 * 2413 * // remove class binding and remove the changes it caused 2414 * scene.removeClassToggle(true); 2415 * 2416 * @param {boolean} [reset=false] - If `false` and the classes are currently active, they will remain on the element. If `true` they will be removed. 2417 * @returns {Scene} Parent object for chaining. 2418 */ 2419 this.removeClassToggle = function (reset) { 2420 if (reset) { 2421 _cssClassElems.forEach(function (elem, key) { 2422 _util.removeClass(elem, _cssClasses); 2423 }); 2424 } 2425 Scene.off("start.internal_class end.internal_class"); 2426 _cssClasses = undefined; 2427 _cssClassElems = []; 2428 return Scene; 2429 }; 2430 2431 // INIT 2432 construct(); 2433 return Scene; 2434 }; 2435 2436 // store pagewide scene options 2437 var SCENE_OPTIONS = { 2438 defaults: { 2439 duration: 0, 2440 offset: 0, 2441 triggerElement: undefined, 2442 triggerHook: 0.5, 2443 reverse: true, 2444 loglevel: 2 2445 }, 2446 validate: { 2447 offset: function (val) { 2448 val = parseFloat(val); 2449 if (!_util.type.Number(val)) { 2450 throw ["Invalid value for option \"offset\":", val]; 2451 } 2452 return val; 2453 }, 2454 triggerElement: function (val) { 2455 val = val || undefined; 2456 if (val) { 2457 var elem = _util.get.elements(val)[0]; 2458 if (elem && elem.parentNode) { 2459 val = elem; 2460 } else { 2461 throw ["Element defined in option \"triggerElement\" was not found:", val]; 2462 } 2463 } 2464 return val; 2465 }, 2466 triggerHook: function (val) { 2467 var translate = { 2468 "onCenter": 0.5, 2469 "onEnter": 1, 2470 "onLeave": 0 2471 }; 2472 if (_util.type.Number(val)) { 2473 val = Math.max(0, Math.min(parseFloat(val), 1)); // make sure its betweeen 0 and 1 2474 } else if (val in translate) { 2475 val = translate[val]; 2476 } else { 2477 throw ["Invalid value for option \"triggerHook\": ", val]; 2478 } 2479 return val; 2480 }, 2481 reverse: function (val) { 2482 return !!val; // force boolean 2483 }, 2484 loglevel: function (val) { 2485 val = parseInt(val); 2486 if (!_util.type.Number(val) || val < 0 || val > 3) { 2487 throw ["Invalid value for option \"loglevel\":", val]; 2488 } 2489 return val; 2490 } 2491 }, // holder for validation methods. duration validation is handled in 'getters-setters.js' 2492 shifts: ["duration", "offset", "triggerHook"], // list of options that trigger a `shift` event 2493 }; 2494 /* 2495 * method used to add an option to ScrollMagic Scenes. 2496 * TODO: DOC (private for dev) 2497 */ 2498 ScrollMagic.Scene.addOption = function (name, defaultValue, validationCallback, shifts) { 2499 if (!(name in SCENE_OPTIONS.defaults)) { 2500 SCENE_OPTIONS.defaults[name] = defaultValue; 2501 SCENE_OPTIONS.validate[name] = validationCallback; 2502 if (shifts) { 2503 SCENE_OPTIONS.shifts.push(name); 2504 } 2505 } else { 2506 ScrollMagic._util.log(1, "[static] ScrollMagic.Scene -> Cannot add Scene option '" + name + "', because it already exists."); 2507 } 2508 }; 2509 // instance extension function for plugins 2510 // TODO: DOC (private for dev) 2511 ScrollMagic.Scene.extend = function (extension) { 2512 var oldClass = this; 2513 ScrollMagic.Scene = function () { 2514 oldClass.apply(this, arguments); 2515 this.$super = _util.extend({}, this); // copy parent state 2516 return extension.apply(this, arguments) || this; 2517 }; 2518 _util.extend(ScrollMagic.Scene, oldClass); // copy properties 2519 ScrollMagic.Scene.prototype = oldClass.prototype; // copy prototype 2520 ScrollMagic.Scene.prototype.constructor = ScrollMagic.Scene; // restore constructor 2521 }; 2522 2523 2524 2525 /** 2526 * TODO: DOCS (private for dev) 2527 * @class 2528 * @private 2529 */ 2530 2531 ScrollMagic.Event = function (type, namespace, target, vars) { 2532 vars = vars || {}; 2533 for (var key in vars) { 2534 this[key] = vars[key]; 2535 } 2536 this.type = type; 2537 this.target = this.currentTarget = target; 2538 this.namespace = namespace || ''; 2539 this.timeStamp = this.timestamp = Date.now(); 2540 return this; 2541 }; 2542 2543 /* 2544 * TODO: DOCS (private for dev) 2545 */ 2546 2547 var _util = ScrollMagic._util = (function (window) { 2548 var U = {}, 2549 i; 2550 2551 /** 2552 * ------------------------------ 2553 * internal helpers 2554 * ------------------------------ 2555 */ 2556 2557 // parse float and fall back to 0. 2558 var floatval = function (number) { 2559 return parseFloat(number) || 0; 2560 }; 2561 // get current style IE safe (otherwise IE would return calculated values for 'auto') 2562 var _getComputedStyle = function (elem) { 2563 return elem.currentStyle ? elem.currentStyle : window.getComputedStyle(elem); 2564 }; 2565 2566 // get element dimension (width or height) 2567 var _dimension = function (which, elem, outer, includeMargin) { 2568 elem = (elem === document) ? window : elem; 2569 if (elem === window) { 2570 includeMargin = false;
2571 } else if (!_type.DomElement(elem)) { 2572 return 0; 2573 } 2574 which = which.charAt(0).toUpperCase() + which.substr(1).toLowerCase(); 2575 var dimension = (outer ? elem['offset' + which] || elem['outer' + which] : elem['client' + which] || elem['inner' + which]) || 0; 2576 if (outer && includeMargin) { 2577 var style = _getComputedStyle(elem); 2578 dimension += which === 'Height' ? floatval(style.marginTop) + floatval(style.marginBottom) : floatval(style.marginLeft) + floatval(style.marginRight); 2579 } 2580 return dimension; 2581 }; 2582 // converts 'margin-top' into 'marginTop' 2583 var _camelCase = function (str) { 2584 return str.replace(/^[^a-z]+([a-z])/g, '$1').replace(/-([a-z])/g, function (g) { 2585 return g[1].toUpperCase(); 2586 }); 2587 }; 2588 2589 /** 2590 * ------------------------------ 2591 * external helpers 2592 * ------------------------------ 2593 */ 2594 2595 // extend obj – same as jQuery.extend({}, objA, objB) 2596 U.extend = function (obj) { 2597 obj = obj || {}; 2598 for (i = 1; i < arguments.length; i++) { 2599 if (!arguments[i]) { 2600 continue; 2601 } 2602 for (var key in arguments[i]) { 2603 if (arguments[i].hasOwnProperty(key)) { 2604 obj[key] = arguments[i][key]; 2605 } 2606 } 2607 } 2608 return obj; 2609 }; 2610 2611 // check if a css display type results in margin-collapse or not 2612 U.isMarginCollapseType = function (str) { 2613 return ["block", "flex", "list-item", "table", "-webkit-box"].indexOf(str) > -1; 2614 }; 2615 2616 // implementation of requestAnimationFrame 2617 // based on https://gist.github.com/paulirish/1579671 2618 var 2619 lastTime = 0, 2620 vendors = ['ms', 'moz', 'webkit', 'o']; 2621 var _requestAnimationFrame = window.requestAnimationFrame; 2622 var _cancelAnimationFrame = window.cancelAnimationFrame; 2623 // try vendor prefixes if the above doesn't work 2624 for (i = 0; !_requestAnimationFrame && i < vendors.length; ++i) { 2625 _requestAnimationFrame = window[vendors[i] + 'RequestAnimationFrame']; 2626 _cancelAnimationFrame = window[vendors[i] + 'CancelAnimationFrame'] || window[vendors[i] + 'CancelRequestAnimationFrame']; 2627 } 2628 2629 // fallbacks 2630 if (!_requestAnimationFrame) { 2631 _requestAnimationFrame = function (callback) { 2632 var 2633 currTime = new Date().getTime(), 2634 timeToCall = Math.max(0, 16 - (currTime - lastTime)), 2635 id = window.setTimeout(function () { 2636 callback(currTime + timeToCall); 2637 }, timeToCall); 2638 lastTime = currTime + timeToCall; 2639 return id; 2640 }; 2641 } 2642 if (!_cancelAnimationFrame) { 2643 _cancelAnimationFrame = function (id) { 2644 window.clearTimeout(id); 2645 }; 2646 } 2647 U.rAF = _requestAnimationFrame.bind(window); 2648 U.cAF = _cancelAnimationFrame.bind(window); 2649 2650 var 2651 loglevels = ["error", "warn", "log"], 2652 console = window.console || {}; 2653 2654 console.log = console.log || function () {}; // no console log, well - do nothing then... 2655 // make sure methods for all levels exist. 2656 for (i = 0; i < loglevels.length; i++) { 2657 var method = loglevels[i]; 2658 if (!console[method]) { 2659 console[method] = console.log; // prefer .log over nothing 2660 } 2661 } 2662 U.log = function (loglevel) { 2663 if (loglevel > loglevels.length || loglevel <= 0) loglevel = loglevels.length; 2664 var now = new Date(), 2665 time = ("0" + now.getHours()).slice(-2) + ":" + ("0" + now.getMinutes()).slice(-2) + ":" + ("0" + now.getSeconds()).slice(-2) + ":" + ("00" + now.getMilliseconds()).slice(-3), 2666 method = loglevels[loglevel - 1], 2667 args = Array.prototype.splice.call(arguments, 1), 2668 func = Function.prototype.bind.call(console[method], console); 2669 args.unshift(time); 2670 func.apply(console, args); 2671 }; 2672 2673 /** 2674 * ------------------------------ 2675 * type testing 2676 * ------------------------------ 2677 */ 2678 2679 var _type = U.type = function (v) { 2680 return Object.prototype.toString.call(v).replace(/^\[object (.+)\]$/, "$1").toLowerCase(); 2681 }; 2682 _type.String = function (v) { 2683 return _type(v) === 'string'; 2684 }; 2685 _type.Function = function (v) { 2686 return _type(v) === 'function'; 2687 }; 2688 _type.Array = function (v) { 2689 return Array.isArray(v); 2690 }; 2691 _type.Number = function (v) { 2692 return !_type.Array(v) && (v - parseFloat(v) + 1) >= 0; 2693 }; 2694 _type.DomElement = function (o) { 2695 return ( 2696 typeof HTMLElement === "object" || typeof HTMLElement === "function" ? o instanceof HTMLElement || o instanceof SVGElement : //DOM2 2697 o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName === "string" 2698 ); 2699 }; 2700 2701 /** 2702 * ------------------------------ 2703 * DOM Element info 2704 * ------------------------------ 2705 */ 2706 // always returns a list of matching DOM elements, from a selector, a DOM element or an list of elements or even an array of selectors 2707 var _get = U.get = {}; 2708 _get.elements = function (selector) { 2709 var arr = []; 2710 if (_type.String(selector)) { 2711 try { 2712 selector = document.querySelectorAll(selector); 2713 } catch (e) { // invalid selector 2714 return arr; 2715 } 2716 } 2717 if (_type(selector) === 'nodelist' || _type.Array(selector) || selector instanceof NodeList) { 2718 for (var i = 0, ref = arr.length = selector.length; i < ref; i++) { // list of elements 2719 var elem = selector[i]; 2720 arr[i] = _type.DomElement(elem) ? elem : _get.elements(elem); // if not an element, try to resolve recursively 2721 } 2722 } else if (_type.DomElement(selector) || selector === document || selector === window) { 2723 arr = [selector]; // only the element 2724 } 2725 return arr; 2726 }; 2727 // get scroll top value 2728 _get.scrollTop = function (elem) { 2729 return (elem && typeof elem.scrollTop === 'number') ? elem.scrollTop : window.pageYOffset || 0; 2730 }; 2731 // get scroll left value 2732 _get.scrollLeft = function (elem) { 2733 return (elem && typeof elem.scrollLeft === 'number') ? elem.scrollLeft : window.pageXOffset || 0; 2734 }; 2735 // get element height 2736 _get.width = function (elem, outer, includeMargin) { 2737 return _dimension('width', elem, outer, includeMargin); 2738 }; 2739 // get element width 2740 _get.height = function (elem, outer, includeMargin) { 2741 return _dimension('height', elem, outer, includeMargin); 2742 }; 2743 2744 // get element position (optionally relative to viewport) 2745 _get.offset = function (elem, relativeToViewport) { 2746 var offset = { 2747 top: 0, 2748 left: 0 2749 }; 2750 if (elem && elem.getBoundingClientRect) { // check if available 2751 var rect = elem.getBoundingClientRect(); 2752 offset.top = rect.top; 2753 offset.left = rect.left; 2754 if (!relativeToViewport) { // clientRect is by default relative to viewport... 2755 offset.top += _get.scrollTop(); 2756 offset.left += _get.scrollLeft(); 2757 } 2758 } 2759 return offset; 2760 }; 2761 2762 /** 2763 * ------------------------------ 2764 * DOM Element manipulation 2765 * ------------------------------ 2766 */ 2767 2768 U.addClass = function (elem, classname) { 2769 if (classname) { 2770 if (elem.classList) 2771 elem.classList.add(classname); 2772 else 2773 elem.className += ' ' + classname; 2774 } 2775 }; 2776 U.removeClass = function (elem, classname) { 2777 if (classname) { 2778 if (elem.classList) 2779 elem.classList.remove(classname); 2780 else 2781 elem.className = elem.className.replace(new RegExp('(^|\\b)' + classname.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); 2782 } 2783 }; 2784 // if options is string -> returns css value 2785 // if options is array -> returns object with css value pairs 2786 // if options is object -> set new css values 2787 U.css = function (elem, options) { 2788 if (_type.String(options)) { 2789 return _getComputedStyle(elem)[_camelCase(options)]; 2790 } else if (_type.Array(options)) { 2791 var 2792 obj = {}, 2793 style = _getComputedStyle(elem); 2794 options.forEach(function (option, key) { 2795 obj[option] = style[_camelCase(option)]; 2796 }); 2797 return obj; 2798 } else { 2799 for (var option in options) { 2800 var val = options[option]; 2801 if (val == parseFloat(val)) { // assume pixel for seemingly numerical values 2802 val += 'px'; 2803 } 2804 elem.style[_camelCase(option)] = val; 2805 } 2806 } 2807 }; 2808 2809 return U; 2810 }(window || {})); 2811 2812 2813 ScrollMagic.Scene.prototype.addIndicators = function () { 2814 ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling addIndicators() due to missing Plugin \'debug.addIndicators\'. Please make sure to include plugins/debug.addIndicators.js'); 2815 return this; 2816 } 2817 ScrollMagic.Scene.prototype.removeIndicators = function () { 2818 ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeIndicators() due to missing Plugin \'debug.addIndicators\'. Please make sure to include plugins/debug.addIndicators.js'); 2819 return this; 2820 } 2821 ScrollMagic.Scene.prototype.setTween = function () { 2822 ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling setTween() due to missing Plugin \'animation.gsap\'. Please make sure to include plugins/animation.gsap.js'); 2823 return this; 2824 } 2825 ScrollMagic.Scene.prototype.removeTween = function () { 2826 ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeTween() due to missing Plugin \'animation.gsap\'. Please make sure to include plugins/animation.gsap.js'); 2827 return this; 2828 } 2829 ScrollMagic.Scene.prototype.setVelocity = function () { 2830 ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling setVelocity() due to missing Plugin \'animation.velocity\'. Please make sure to include plugins/animation.velocity.js'); 2831 return this; 2832 } 2833 ScrollMagic.Scene.prototype.removeVelocity = function () { 2834 ScrollMagic._util.log(1, '(ScrollMagic.Scene) -> ERROR calling removeVelocity() due to missing Plugin \'animation.velocity\'. Please make sure to include plugins/animation.velocity.js'); 2835 return this; 2836 } 2837 2838 return ScrollMagic; 2839})); 2840/*! 2841 * ScrollMagic v2.0.7 (2019-05-07) 2842 * The javascript library for magical scroll interactions. 2843 * (c) 2019 Jan Paepke (@janpaepke) 2844 * Project Website: http://scrollmagic.io 2845 * 2846 * @version 2.0.7 2847 * @license Dual licensed under MIT license and GPL. 2848 * @author Jan Paepke - [email protected] 2849 * 2850 * @file Debug Extension for ScrollMagic. 2851 */ 2852/** 2853 * This plugin was formerly known as the ScrollMagic debug extension. 2854 * 2855 * It enables you to add visual indicators to your page, to be able to see exactly when a scene is triggered. 2856 * 2857 * To have access to this extension, please include `plugins/debug.addIndicators.js`. 2858 * @mixin debug.addIndicators 2859 */ 2860(function (root, factory) { 2861 if (typeof define === 'function' && define.amd) { 2862 // AMD. Register as an anonymous module. 2863 define(['ScrollMagic'], factory); 2864 } else if (typeof exports === 'object') { 2865 // CommonJS 2866 factory(require('scrollmagic')); 2867 } else { 2868 // no browser global export needed, just execute 2869 factory(root.ScrollMagic || (root.jQuery && root.jQuery.ScrollMagic)); 2870 } 2871}(this, function (ScrollMagic) { 2872 "use strict"; 2873 var NAMESPACE = "debug.addIndicators"; 2874 2875 var 2876 console = window.console || {}, 2877 err = Function.prototype.bind.call(console.error || console.log || function () {}, console); 2878 if (!ScrollMagic) { 2879 err("(" + NAMESPACE + ") -> ERROR: The ScrollMagic main module could not be found. Please make sure it's loaded before this plugin or use an asynchronous loader like requirejs."); 2880 } 2881 2882 // plugin settings 2883 var 2884 FONT_SIZE = "0.85em", 2885 ZINDEX = "9999", 2886 EDGE_OFFSET = 15; // minimum edge distance, added to indentation 2887 2888 // overall vars 2889 var 2890 _util = ScrollMagic._util, 2891 _autoindex = 0; 2892 2893 2894 2895 ScrollMagic.Scene.extend(function () { 2896 var 2897 Scene = this, 2898 _indicator; 2899 2900 var log = function () { 2901 if (Scene._log) { // not available, when main source minified 2902 Array.prototype.splice.call(arguments, 1, 0, "(" + NAMESPACE + ")", "->"); 2903 Scene._log.apply(this, arguments); 2904 } 2905 }; 2906 2907 /** 2908 * Add visual indicators for a ScrollMagic.Scene. 2909 * @memberof! debug.addIndicators# 2910 * 2911 * @example 2912 * // add basic indicators 2913 * scene.addIndicators() 2914 * 2915 * // passing options 2916 * scene.addIndicators({name: "pin scene", colorEnd: "#FFFFFF"}); 2917 * 2918 * @param {object}
2918 [options] - An object containing one or more options for the indicators. 2919 * @param {(string|object)} [options.parent] - A selector, DOM Object or a jQuery object that the indicators should be added to. 2920 If undefined, the controller's container will be used. 2921 * @param {number} [options.name=""] - This string will be displayed at the start and end indicators of the scene for identification purposes. If no name is supplied an automatic index will be used. 2922 * @param {number} [options.indent=0] - Additional position offset for the indicators (useful, when having multiple scenes starting at the same position). 2923 * @param {string} [options.colorStart=green] - CSS color definition for the start indicator. 2924 * @param {string} [options.colorEnd=red] - CSS color definition for the end indicator. 2925 * @param {string} [options.colorTrigger=blue] - CSS color definition for the trigger indicator. 2926 */ 2927 Scene.addIndicators = function (options) { 2928 if (!_indicator) { 2929 var 2930 DEFAULT_OPTIONS = { 2931 name: "", 2932 indent: 0, 2933 parent: undefined, 2934 colorStart: "green", 2935 colorEnd: "red", 2936 colorTrigger: "blue", 2937 }; 2938 2939 options = _util.extend({}, DEFAULT_OPTIONS, options); 2940 2941 _autoindex++; 2942 _indicator = new Indicator(Scene, options); 2943 2944 Scene.on("add.plugin_addIndicators", _indicator.add); 2945 Scene.on("remove.plugin_addIndicators", _indicator.remove); 2946 Scene.on("destroy.plugin_addIndicators", Scene.removeIndicators); 2947 2948 // it the scene already has a controller we can start right away. 2949 if (Scene.controller()) { 2950 _indicator.add(); 2951 } 2952 } 2953 return Scene; 2954 }; 2955 2956 /** 2957 * Removes visual indicators from a ScrollMagic.Scene. 2958 * @memberof! debug.addIndicators# 2959 * 2960 * @example 2961 * // remove previously added indicators 2962 * scene.removeIndicators() 2963 * 2964 */ 2965 Scene.removeIndicators = function () { 2966 if (_indicator) { 2967 _indicator.remove(); 2968 this.off("*.plugin_addIndicators"); 2969 _indicator = undefined; 2970 } 2971 return Scene; 2972 }; 2973 2974 }); 2975 2976 2977 /* 2978 * ---------------------------------------------------------------- 2979 * Extension for controller to store and update related indicators 2980 * ---------------------------------------------------------------- 2981 */ 2982 // add option to globally auto-add indicators to scenes 2983 /** 2984 * Every ScrollMagic.Controller instance now accepts an additional option. 2985 * See {@link ScrollMagic.Controller} for a complete list of the standard options. 2986 * @memberof! debug.addIndicators# 2987 * @method new ScrollMagic.Controller(options) 2988 * @example 2989 * // make a controller and add indicators to all scenes attached 2990 * var controller = new ScrollMagic.Controller({addIndicators: true}); 2991 * // this scene will automatically have indicators added to it 2992 * new ScrollMagic.Scene() 2993 * .addTo(controller); 2994 * 2995 * @param {object} [options] - Options for the Controller. 2996 * @param {boolean} [options.addIndicators=false] - If set to `true` every scene that is added to the controller will automatically get indicators added to it. 2997 */ 2998 ScrollMagic.Controller.addOption("addIndicators", false); 2999 // extend Controller 3000 ScrollMagic.Controller.extend(function () { 3001 var 3002 Controller = this, 3003 _info = Controller.info(), 3004 _container = _info.container, 3005 _isDocument = _info.isDocument, 3006 _vertical = _info.vertical, 3007 _indicators = { // container for all indicators and methods 3008 groups: [] 3009 }; 3010 3011 var log = function () { 3012 if (Controller._log) { // not available, when main source minified 3013 Array.prototype.splice.call(arguments, 1, 0, "(" + NAMESPACE + ")", "->"); 3014 Controller._log.apply(this, arguments); 3015 } 3016 }; 3017 if (Controller._indicators) {
3018 log(2, "WARNING: Scene already has a property '_indicators', which will be overwritten by plugin."); 3019 } 3020 3021 // add indicators container 3022 this._indicators = _indicators; 3023 /* 3024 needed updates: 3025 +++++++++++++++ 3026 start/end position on scene shift (handled in Indicator class) 3027 trigger parameters on triggerHook value change (handled in Indicator class) 3028 bounds position on container scroll or resize (to keep alignment to bottom/right) 3029 trigger position on container resize, window resize (if container isn't document) and window scroll (if container isn't document) 3030 */ 3031 3032 // event handler for when associated bounds markers need to be repositioned 3033 var handleBoundsPositionChange = function () { 3034 _indicators.updateBoundsPositions(); 3035 }; 3036 3037 // event handler for when associated trigger groups need to be repositioned 3038 var handleTriggerPositionChange = function () { 3039 _indicators.updateTriggerGroupPositions(); 3040 }; 3041 3042 _container.addEventListener("resize", handleTriggerPositionChange); 3043 if (!_isDocument) { 3044 window.addEventListener("resize", handleTriggerPositionChange); 3045 window.addEventListener("scroll", handleTriggerPositionChange); 3046 } 3047 // update all related bounds containers 3048 _container.addEventListener("resize", handleBoundsPositionChange); 3049 _container.addEventListener("scroll", handleBoundsPositionChange); 3050 3051 3052 // updates the position of the bounds container to aligned to the right for vertical containers and to the bottom for horizontal 3053 this._indicators.updateBoundsPositions = function (specificIndicator) { 3054 var // constant for all bounds 3055 groups = specificIndicator ? [_util.extend({}, specificIndicator.triggerGroup, { 3056 members: [specificIndicator] 3057 })] : // create a group with only one element 3058 _indicators.groups, // use all 3059 g = groups.length, 3060 css = {}, 3061 paramPos = _vertical ? "left" : "top", 3062 paramDimension = _vertical ? "width" : "height", 3063 edge = _vertical ? 3064 _util.get.scrollLeft(_container) + _util.get.width(_container) - EDGE_OFFSET : 3065 _util.get.scrollTop(_container) + _util.get.height(_container) - EDGE_OFFSET, 3066 b, triggerSize, group; 3067 while (g--) { // group loop 3068 group = groups[g]; 3069 b = group.members.length; 3070 triggerSize = _util.get[paramDimension](group.element.firstChild); 3071 while (b--) { // indicators loop 3072 css[paramPos] = edge - triggerSize; 3073 _util.css(group.members[b].bounds, css); 3074 } 3075 } 3076 }; 3077 3078 // updates the positions of all trigger groups attached to a controller or a specific one, if provided 3079 this._indicators.updateTriggerGroupPositions = function (specificGroup) { 3080 var // constant vars 3081 groups = specificGroup ? [specificGroup] : _indicators.groups, 3082 i = groups.length, 3083 container = _isDocument ? document.body : _container, 3084 containerOffset = _isDocument ? { 3085 top: 0, 3086 left: 0 3087 } : _util.get.offset(container, true), 3088 edge = _vertical ? 3089 _util.get.width(_container) - EDGE_OFFSET : 3090 _util.get.height(_container) - EDGE_OFFSET, 3091 paramDimension = _vertical ? "width" : "height", 3092 paramTransform = _vertical ? "Y" : "X"; 3093 var // changing vars 3094 group, 3095 elem, 3096 pos, 3097 elemSize, 3098 transform; 3099 while (i--) { 3100 group = groups[i]; 3101 elem = group.element; 3102 pos = group.triggerHook * Controller.info("size"); 3103 elemSize = _util.get[paramDimension](elem.firstChild.firstChild); 3104 transform = pos > elemSize ? "translate" + paramTransform + "(-100%)" : ""; 3105 3106 _util.css(elem, { 3107 top: containerOffset.top + (_vertical ? pos : edge - group.members[0].options.indent), 3108 left: containerOffset.left + (_vertical ? edge - group.members[0].options.indent : pos) 3109 }); 3110 _util.css(elem.firstChild.firstChild, { 3111 "-ms-transform": transform, 3112 "-webkit-transform": transform, 3113 "transform": transform 3114 }); 3115 } 3116 }; 3117 3118 // updates the label for the group to contain the name, if it only has one member 3119 this._indicators.updateTriggerGroupLabel = function (group) { 3120 var 3121 text = "trigger" + (group.members.length > 1 ? "" : " " + group.members[0].options.name), 3122 elem = group.element.firstChild.firstChild, 3123 doUpdate = elem.textContent !== text; 3124 if (doUpdate) { 3125 elem.textContent = text; 3126 if (_vertical) { // bounds position is dependent on text length, so update 3127 _indicators.updateBoundsPositions(); 3128 } 3129 } 3130 }; 3131 3132 // add indicators if global option is set 3133 this.addScene = function (newScene) { 3134 3135 if (this._options.addIndicators && newScene instanceof ScrollMagic.Scene && newScene.controller() === Controller) { 3136 newScene.addIndicators(); 3137 } 3138 // call original destroy method 3139 this.$super.addScene.apply(this, arguments); 3140 }; 3141 3142 // remove all previously set listeners on destroy 3143 this.destroy = function () { 3144 _container.removeEventListener("resize", handleTriggerPositionChange); 3145 if (!_isDocument) { 3146 window.removeEventListener("resize", handleTriggerPositionChange); 3147 window.removeEventListener("scroll", handleTriggerPositionChange); 3148 } 3149 _container.removeEventListener("resize", handleBoundsPositionChange); 3150 _container.removeEventListener("scroll", handleBoundsPositionChange); 3151 // call original destroy method 3152 this.$super.destroy.apply(this, arguments); 3153 }; 3154 return Controller; 3155 3156 }); 3157 3158 /* 3159 * ----------------------------------------------------------------
3160 * Internal class for the construction of Indicators 3161 * ---------------------------------------------------------------- 3162 */ 3163 var Indicator = function (Scene, options) { 3164 var 3165 Indicator = this, 3166 _elemBounds = TPL.bounds(), 3167 _elemStart = TPL.start(options.colorStart), 3168 _elemEnd = TPL.end(options.colorEnd), 3169 _boundsContainer = options.parent && _util.get.elements(options.parent)[0], 3170 _vertical, 3171 _ctrl; 3172 3173 var log = function () { 3174 if (Scene._log) { // not available, when main source minified 3175 Array.prototype.splice.call(arguments, 1, 0, "(" + NAMESPACE + ")", "->"); 3176 Scene._log.apply(this, arguments); 3177 } 3178 }; 3179 3180 options.name = options.name || _autoindex; 3181 3182 // prepare bounds elements 3183 _elemStart.firstChild.textContent += " " + options.name; 3184 _elemEnd.textContent += " " + options.name; 3185 _elemBounds.appendChild(_elemStart); 3186 _elemBounds.appendChild(_elemEnd); 3187 3188 // set public variables 3189 Indicator.options = options; 3190 Indicator.bounds = _elemBounds; 3191 // will be set later 3192 Indicator.triggerGroup = undefined; 3193 3194 // add indicators to DOM 3195 this.add = function () { 3196 _ctrl = Scene.controller(); 3197 _vertical = _ctrl.info("vertical"); 3198 3199 var isDocument = _ctrl.info("isDocument"); 3200 3201 if (!_boundsContainer) { 3202 // no parent supplied or doesnt exist 3203 _boundsContainer = isDocument ? document.body : _ctrl.info("container"); // check if window/document (then use body) 3204 } 3205 if (!isDocument && _util.css(_boundsContainer, "position") === 'static') {
3206 // position mode needed for correct positioning of indicators 3207 _util.css(_boundsContainer, { 3208 position: "relative" 3209 }); 3210 } 3211 3212 // add listeners for updates 3213 Scene.on("change.plugin_addIndicators", handleTriggerParamsChange); 3214 Scene.on("shift.plugin_addIndicators", handleBoundsParamsChange); 3215 3216 // updates trigger & bounds (will add elements if needed) 3217 updateTriggerGroup(); 3218 updateBounds(); 3219 3220 setTimeout(function () { // do after all execution is finished otherwise sometimes size calculations are off 3221 _ctrl._indicators.updateBoundsPositions(Indicator); 3222 }, 0); 3223 3224 log(3, "added indicators"); 3225 }; 3226 3227 // remove indicators from DOM 3228 this.remove = function () { 3229 if (Indicator.triggerGroup) { // if not set there's nothing to remove 3230 Scene.off("change.plugin_addIndicators", handleTriggerParamsChange); 3231 Scene.off("shift.plugin_addIndicators", handleBoundsParamsChange); 3232 3233 if (Indicator.triggerGroup.members.length > 1) { 3234 // just remove from memberlist of old group 3235 var group = Indicator.triggerGroup; 3236 group.members.splice(group.members.indexOf(Indicator), 1); 3237 _ctrl._indicators.updateTriggerGroupLabel(group); 3238 _ctrl._indicators.updateTriggerGroupPositions(group); 3239 Indicator.triggerGroup = undefined; 3240 } else { 3241 // remove complete group 3242 removeTriggerGroup(); 3243 } 3244 removeBounds(); 3245 3246 log(3, "removed indicators"); 3247 } 3248 }; 3249 3250 /* 3251 * ---------------------------------------------------------------- 3252 * internal Event Handlers 3253 * ---------------------------------------------------------------- 3254 */ 3255 3256 // event handler for when bounds params change 3257 var handleBoundsParamsChange = function () { 3258 updateBounds(); 3259 }; 3260 3261 // event handler for when trigger params change 3262 var handleTriggerParamsChange = function (e) { 3263 if (e.what === "triggerHook") { 3264 updateTriggerGroup(); 3265 } 3266 }; 3267 3268 /* 3269 * ---------------------------------------------------------------- 3270 * Bounds (start / stop) management 3271 * ---------------------------------------------------------------- 3272 */ 3273 3274 // adds an new bounds elements to the array and to the DOM 3275 var addBounds = function () { 3276 var v = _ctrl.info("vertical"); 3277 // apply stuff we didn't know before... 3278 _util.css(_elemStart.firstChild, { 3279 "border-bottom-width": v ? 1 : 0, 3280 "border-right-width": v ? 0 : 1, 3281 "bottom": v ? -1 : options.indent, 3282 "right": v ? options.indent : -1, 3283 "padding": v ? "0 8px" : "2px 4px", 3284 }); 3285 _util.css(_elemEnd, { 3286 "border-top-width": v ? 1 : 0, 3287 "border-left-width": v ? 0 : 1, 3288 "top": v ? "100%" : "", 3289 "right": v ? options.indent : "", 3290 "bottom": v ? "" : options.indent, 3291 "left": v ? "" : "100%", 3292 "padding": v ? "0 8px" : "2px 4px" 3293 }); 3294 // append 3295 _boundsContainer.appendChild(_elemBounds); 3296 }; 3297 3298 // remove bounds from list and DOM 3299 var removeBounds = function () { 3300 _elemBounds.parentNode.removeChild(_elemBounds); 3301 }; 3302 3303 // update the start and end positions of the scene 3304 var updateBounds = function () { 3305 if (_elemBounds.parentNode !== _boundsContainer) { 3306 addBounds(); // Add Bounds elements (start/end) 3307 } 3308 var css = {}; 3309 css[_vertical ? "top" : "left"] = Scene.triggerPosition(); 3310 css[_vertical ? "height" : "width"] = Scene.duration(); 3311 _util.css(_elemBounds, css); 3312 _util.css(_elemEnd, { 3313 display: Scene.duration() > 0 ? "" : "none" 3314 }); 3315 }; 3316 3317 /* 3318 * ---------------------------------------------------------------- 3319 * trigger and trigger group management 3320 * ---------------------------------------------------------------- 3321 */ 3322 3323 // adds an new trigger group to the array and to the DOM 3324 var addTriggerGroup = function () { 3325 var triggerElem = TPL.trigger(options.colorTrigger); // new trigger element 3326 var css = {}; 3327 css[_vertical ? "right" : "bottom"] = 0; 3328 css[_vertical ? "border-top-width" : "border-left-width"] = 1; 3329 _util.css(triggerElem.firstChild, css); 3330 _util.css(triggerElem.firstChild.firstChild, { 3331 padding: _vertical ? "0 8px 3px 8px" : "3px 4px" 3332 }); 3333 document.body.appendChild(triggerElem); // directly add to body 3334 var newGroup = { 3335 triggerHook: Scene.triggerHook(), 3336 element: triggerElem, 3337 members: [Indicator] 3338 }; 3339 _ctrl._indicators.groups.push(newGroup); 3340 Indicator.triggerGroup = newGroup; 3341 // update right away 3342 _ctrl._indicators.updateTriggerGroupLabel(newGroup); 3343 _ctrl._indicators.updateTriggerGroupPositions(newGroup); 3344 }; 3345 3346 var removeTriggerGroup = function () { 3347 _ctrl._indicators.groups.splice(_ctrl._indicators.groups.indexOf(Indicator.triggerGroup), 1); 3348 Indicator.triggerGroup.element.parentNode.removeChild(Indicator.triggerGroup.element); 3349 Indicator.triggerGroup = undefined; 3350 }; 3351 3352 // updates the trigger group -> either join existing or add new one 3353 /* 3354 * Logic: 3355 * 1 if a trigger group exist, check if it's in sync with Scene settings – if so, nothing else needs to happen 3356 * 2 try to find an existing one that matches Scene parameters 3357 * 2.1 If a match is found check if already assigned to an existing group 3358 * If so: 3359 * A: it was the last member of existing group -> kill whole group 3360 * B: the existing group has other members -> just remove from member list 3361 * 2.2 Assign to matching group 3362 * 3 if no new match could be found, check if assigned to existing group 3363 * A: yes, and it's the only member -> just update parameters and positions and keep using this group 3364 * B: yes but there are other members -> remove from member list and create a new one 3365 * C: no, so create a new one 3366 */ 3367 var updateTriggerGroup = function () { 3368 var 3369 triggerHook = Scene.triggerHook(), 3370 closeEnough = 0.0001; 3371 3372 // Have a group, check if it still matches 3373 if (Indicator.triggerGroup) { 3374 if (Math.abs(Indicator.triggerGroup.triggerHook - triggerHook) < closeEnough) { 3375 // _util.log(0, "trigger", options.name, "->", "no need to change, still in sync"); 3376 return; // all good 3377 } 3378 } 3379 // Don't have a group, check if a matching one exists 3380 // _util.log(0, "trigger", options.name, "->", "out of sync!"); 3381 var 3382 groups = _ctrl._indicators.groups, 3383 group, 3384 i = groups.length; 3385 while (i--) { 3386 group = groups[i]; 3387 if (Math.abs(group.triggerHook - triggerHook) < closeEnough) { 3388 // found a match! 3389 // _util.log(0, "trigger", options.name, "->", "found match"); 3390 if (Indicator.triggerGroup) { // do I have an old group that is out of sync? 3391 if (Indicator.triggerGroup.members.length === 1) { // is it the only remaining group? 3392 // _util.log(0, "trigger", options.name, "->", "kill"); 3393 // was the last member, remove the whole group 3394 removeTriggerGroup(); 3395 } else { 3396 Indicator.triggerGroup.members.splice(Indicator.triggerGroup.members.indexOf(Indicator), 1); // just remove from memberlist of old group 3397 _ctrl._indicators.updateTriggerGroupLabel(Indicator.triggerGroup); 3398 _ctrl._indicators.updateTriggerGroupPositions(Indicator.triggerGroup); 3399 // _util.log(0, "trigger", options.name, "->", "removing from previous member list"); 3400 } 3401 } 3402 // join new group 3403 group.members.push(Indicator); 3404 Indicator.triggerGroup = group; 3405 _ctrl._indicators.updateTriggerGroupLabel(group); 3406 return; 3407 } 3408 } 3409 3410 // at this point I am obviously out of sync and don't match any other group 3411 if (Indicator.triggerGroup) { 3412 if (Indicator.triggerGroup.members.length === 1) { 3413 // _util.log(0, "trigger", options.name, "->", "updating existing"); 3414 // out of sync but i'm the only member => just change and update 3415 Indicator.triggerGroup.triggerHook = triggerHook; 3416 _ctrl._indicators.updateTriggerGroupPositions(Indicator.triggerGroup); 3417 return; 3418 } else { 3419 // _util.log(0, "trigger", options.name, "->", "removing from previous member list"); 3420 Indicator.triggerGroup.members.splice(Indicator.triggerGroup.members.indexOf(Indicator), 1); // just remove from memberlist of old group 3421 _ctrl._indicators.updateTriggerGroupLabel(Indicator.triggerGroup); 3422 _ctrl._indicators.updateTriggerGroupPositions(Indicator.triggerGroup); 3423 Indicator.triggerGroup = undefined; // need a brand new group... 3424 } 3425 } 3426 // _util.log(0, "trigger", options.name, "->", "add a new one"); 3427 // did not find any match, make new trigger group 3428 addTriggerGroup(); 3429 }; 3430 }; 3431 3432 /* 3433 * ---------------------------------------------------------------- 3434 * Templates for the indicators 3435 * ---------------------------------------------------------------- 3436 */ 3437 var TPL = { 3438 start: function (color) { 3439 // inner element (for bottom offset -1, while keeping top position 0) 3440 var inner = document.createElement("div"); 3441 inner.textContent = "start"; 3442 _util.css(inner, { 3443 position: "absolute", 3444 overflow: "visible", 3445 "border-width": 0, 3446 "border-style": "solid", 3447 color: color, 3448 "border-color": color 3449 }); 3450 var e = document.createElement('div'); 3451 // wrapper 3452 _util.css(e, { 3453 position: "absolute", 3454 overflow: "visible", 3455 width: 0, 3456 height: 0 3457 }); 3458 e.appendChild(inner); 3459 return e; 3460 }, 3461 end: function (color) { 3462 var e = document.createElement('div'); 3463 e.textContent = "end"; 3464 _util.css(e, { 3465 position: "absolute", 3466 overflow: "visible", 3467 "border-width": 0, 3468 "border-style": "solid", 3469 color: color, 3470 "border-color": color 3471 }); 3472 return e; 3473 }, 3474 bounds: function () { 3475 var e = document.createElement('div'); 3476 _util.css(e, { 3477 position: "absolute", 3478 overflow: "visible", 3479 "white-space": "nowrap", 3480 "pointer-events": "none", 3481 "font-size": FONT_SIZE 3482 }); 3483 e.style.zIndex = ZINDEX; 3484 return e; 3485 }, 3486 trigger: function (color) { 3487 // inner to be above or below line but keep position 3488 var inner = document.createElement('div'); 3489 inner.textContent = "trigger"; 3490 _util.css(inner, { 3491 position: "relative", 3492 }); 3493 // inner wrapper for right: 0 and main element has no size 3494 var w = document.createElement('div'); 3495 _util.css(w, { 3496 position: "absolute", 3497 overflow: "visible", 3498 "border-width": 0, 3499 "border-style": "solid", 3500 color: color, 3501 "border-color": color 3502 }); 3503 w.appendChild(inner); 3504 // wrapper 3505 var e = document.createElement('div'); 3506 _util.css(e, { 3507 position: "fixed", 3508 overflow: "visible", 3509 "white-space": "nowrap", 3510 "pointer-events": "none", 3511 "font-size": FONT_SIZE 3512 }); 3513 e.style.zIndex = ZINDEX; 3514 e.appendChild(w); 3515 return e; 3516 }, 3517 }; 3518 3519})); 3520/*! 3521 * GSAP 3.2.0 3522 * https://greensock.com 3523 * 3524 * @license Copyright 2020, GreenSock. All rights reserved. 3525 * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership. 3526 * @author: Jack Doyle, [email protected] 3527 */ 3528 3529!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).window=t.window||{})}(this,function(e){"use strict";function _inheritsLoose(t,e){t.prototype=Object.create(e.prototype),(t.prototype.constructor=t).__proto__=e}function _assertThisInitialized(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function n(t){return"string"==typeof t}function o(t){return"function"==typeof t}function p(t){return"number"==typeof t}function q(t){return void 0===t}function r(t){return"object"==typeof t}function s(t){return!1!==t}function t(){return"undefined"!=typeof window}function u(t){return o(t)||n(t)}function K(t){return(l=dt(t,at))&&ne}function L(t,e){return console.warn("Invalid property",t,"set to",e,"Missing plugin? gsap.registerPlugin()")}function M(t,e){return!e&&console.warn(t)}function N(t,e){return t&&(at[t]=e)&&l&&(l[t]=e)||at}function O(){return 0}function Y(t){var e,n,i=t[0];if(r(i)||o(i)||(t=[t]),!(e=(i._gsap||{}).harness)){for(n=pt.length;n--&&!pt[n].targetTest(i););e=pt[n]}for(n=t.length;n--;)t[n]&&(t[n]._gsap||(t[n]._gsap=new Rt(t[n],e)))||t.splice(n,1);return t}function Z(t){return t._gsap||Y(yt(t))[0]._gsap}function $(t,e){var r=t[e];return o(r)?t[e]():q(r)&&t.getAttribute(e)||r}
3529function _(t,e){return(t=t.split(",")).forEach(e)||t}function aa(t){return Math.round(1e5*t)/1e5||0}function ba(t,e){for(var r=e.length,n=0;t.indexOf(e[n])<0&&++n<r;);return n<r}function ca(t,e,r){var n,i=p(t[1]),a=(i?2:1)+(e<2?0:1),o=t[a];if(i&&(o.duration=t[1]),o.parent=r,e){for(n=o;r&&!("immediateRender"in n);)n=r.vars.defaults||{},r=s(r.vars.inherit)&&r.parent;o.immediateRender=s(n.immediateRender),e<2?o.runBackwards=1:o.startAt=t[a-1]}return o}function da(){var t,e,r=ot.length,n=ot.slice(0);for(ut={},t=ot.length=0;t<r;t++)(e=n[t])&&e._lazy&&(e.render(e._lazy[0],e._lazy[1],!0)._lazy=0)}function ea(t,e,r,n){ot.length&&da(),t.render(e,r,n),ot.length&&da()}function fa(t){var e=parseFloat(t);return(e||0===e)&&(t+"").match(it).length<2?e:t}function ga(t){return t}function ha(t,e){for(var r in e)r in t||(t[r]=e[r]);return t}function ia(t,e){for(var r in e)r in t||"duration"===r||"ease"===r||(t[r]=e[r])}function ka(t,e){for(var n in e)t[n]=r(e[n])?ka(t[n]||(t[n]={}),e[n]):e[n];return t}function la(t,e){var r,n={};for(r in t)r in e||(n[r]=t[r]);return n}function pa(t,e,r,n){void 0===r&&(r="_first"),void 0===n&&(n="_last");var i=e._prev,a=e._next;i?i._next=a:t[r]===e&&(t[r]=a),a?a._prev=i:t[n]===e&&(t[n]=i),e._dp=t,e._next=e._prev=e.parent=null}function qa(t,e){!t.parent||e&&!t.parent.autoRemoveChildren||t.parent.remove(t),t._act=0}function ra(t){for(var e=t;e;)e._dirty=1,e=e.parent;return t}function ua(t){return t._repeat?_t(t._tTime,t=t.duration()+t._rDelay)*t:0}function wa(t,e){return(t-e._start)*e._ts+(0<=e._ts?0:e._dirty?e.totalDuration():e._tDur)}function xa(t){return t._end=aa(t._start+(t._tDur/Math.abs(t._ts||t._pauseTS||B)||0))}function ya(t,e,r){if(e.parent&&qa(e),e._start=aa(r+e._delay),e._end=aa(e._start+(e.totalDuration()/Math.abs(e.timeScale())||0)),function _addLinkedListItem(t,e,r,n,i){void 0===r&&(r="_first"),void 0===n&&(n="_last");var a,s=t[n];if(i)for(a=e[i];s&&s[i]>a;)s=s._prev;s?(e._next=s._next,s._next=e):(e._next=t[r],t[r]=e),e._next?e._next._prev=e:t[n]=e,e._prev=s,e.parent=t}(t,e,"_first","_last",t._sort?"_start":0),(t._recent=e)._time||!e._dur&&e._initted){var n=(t.rawTime()-e._start)*e._ts;(!e._dur||gt(0,e.totalDuration(),n)-e._tTime>B)&&e.render(n,!0)}if(ra(t)._dp&&t._initted&&t._time>=t._dur&&t._ts){if(t._dur<t.duration())for(var i=t;i._dp;)0<=i.rawTime()&&i.totalTime(i._tTime,!0),i=i._dp;t._zTime=-B}return t}function za(t,e,r,n){return qt(t,e),t._initted?!r&&t._pt&&(t._dur&&!1!==t.vars.lazy||!t._dur&&t.vars.lazy)&&c!==Mt.frame?(ot.push(t),t._lazy=[e,n],1):void 0:1}function Ca(t,e,r){var n=t._repeat,i=aa(e);return t._dur=i,t._tDur=n?n<0?1e12:aa(i*(n+1)+t._rDelay*n):i,r||ra(t.parent),t.parent&&xa(t),t}function Da(t){return t instanceof Bt?ra(t):Ca(t,t._dur)}function Fa(t,e){var r,i,a=t.labels,s=t._recent||mt,o=t.duration()>=z?s.endTime(!1):t._dur;return n(e)&&(isNaN(e)||e in a)?"<"===(r=e.charAt(0))||">"===r?("<"===r?s._start:s.endTime(0<=s._repeat))+(parseFloat(e.substr(1))||0):(r=e.indexOf("="))<0?(e in a||(a[e]=o),a[e]):(i=+(e.charAt(r-1)+e.substr(r+1)),1<r?Fa(t,e.substr(0,r-1))+i:o+i):null==e?o:+e}function Ga(t,e){return t||0===t?e(t):e}function Ia(t){return(t+"").substr((parseFloat(t)+"").length)}function La(t,e){return t&&r(t)&&"length"in t&&(!e&&!t.length||t.length-1 in t&&r(t[0]))&&!t.nodeType&&t!==i}function Oa(t){return t.sort(function(){return.5-Math.random()})}function Pa(t){if(o(t))return t;var d=r(t)?t:{each:t},_=Dt(d.ease),m=d.from||0,g=parseFloat(d.base)||0,v={},e=0<m&&m<1,y=isNaN(m)||e,T=d.axis,b=m,w=m;return n(m)?b=w={center:.5,edges:.5,end:1}[m]||0:!e&&y&&(b=m[0],w=m[1]),function(t,e,r){var n,i,a,s,o,u,h,l,f,p=(r||d).length,c=v[p];if(!c){if(!(f="auto"===d.grid?0:(d.grid||[1,z])[1])){for(h=-z;h<(h=r[f++].getBoundingClientRect().left)&&f<p;);f--}for(c=v[p]=[],n=y?Math.min(f,p)*b-.5:m%f,i=y?p*w/f-.5:m/f|0,l=z,u=h=0;u<p;u++)a=u%f-n,s=i-(u/f|0),c[u]=o=T?Math.abs("y"===T?s:a):X(a*a+s*s),h<o&&(h=o),o<l&&(l=o);"random"===m&&Oa(c),c.max=h-l,c.min=l,c.v=p=(parseFloat(d.amount)||parseFloat(d.each)*(p<f?p-1:T?"y"===T?p/f:f:Math.max(f,p/f))||0)*("edges"===m?-1:1),c.b=p<0?g-p:g,c.u=Ia(d.amount||d.each)||0,_=_&&p<0?Ft(_):_}return p=(c[t]-c.min)/c.max||0,aa(c.b+(_?_(p):p)*c.v)+c.u}}function Qa(e){var r=e<1?Math.pow(10,(e+"").length-2):1;return function(t){return~~(Math.round(parseFloat(t)/e)*e*r)/r+(p(t)?0:Ia(t))}}function Ra(u,t){var h,l,e=W(u);
vendor: 8,693 bytes, line 3529
3529return!e&&r(u)&&(h=e=u.radius||z,u.values?(u=yt(u.values),(l=!p(u[0]))&&(h*=h)):u=Qa(u.increment)),Ga(t,e?o(u)?function(t){return l=u(t),Math.abs(l-t)<=h?l:t}:function(t){for(var e,r,n=parseFloat(l?t.x:t),i=parseFloat(l?t.y:0),a=z,s=0,o=u.length;o--;)(e=l?(e=u[o].x-n)*e+(r=u[o].y-i)*r:Math.abs(u[o]-n))<a&&(a=e,s=o);return s=!h||a<=h?u[s]:t,l||s===t||p(t)?s:s+Ia(t)}:Qa(u))}function Sa(t,e,r,n){return Ga(W(t)?!e:!0===r?!!(r=0):!n,function(){return W(t)?t[~~(Math.random()*t.length)]:(r=r||1e-5)&&(n=r<1?Math.pow(10,(r+"").length-2):1)&&~~(Math.round((t+Math.random()*(e-t))/r)*r*n)/n})}function Wa(e,r,t){return Ga(t,function(t){return e[~~r(t)]})}function Za(t){for(var e,r,n,i,a=0,s="";~(e=t.indexOf("random(",a));)n=t.indexOf(")",e),i="["===t.charAt(e+7),r=t.substr(e+7,n-e-7).match(i?it:H),s+=t.substr(a,e-a)+Sa(i?r:+r[0],+r[1],+r[2]||1e-5),a=n+1;return s+t.substr(a,t.length-a)}function ab(t,e,r){var n,i,a,s=t.labels,o=z;for(n in s)(i=s[n]-e)<0==!!r&&i&&o>(i=Math.abs(i))&&(a=n,o=i);return a}function cb(t){return qa(t),t.progress()<1&&bt(t,"onInterrupt"),t}function hb(t,e,r){return(6*(t=t<0?t+1:1<t?t-1:t)<1?e+(r-e)*t*6:t<.5?r:3*t<2?e+(r-e)*(2/3-t)*6:e)*wt+.5|0}function ib(t,e,r){var n,i,a,s,o,u,h,l,f,c,d=t?p(t)?[t>>16,t>>8&wt,t&wt]:0:xt.black;if(!d){if(","===t.substr(-1)&&(t=t.substr(0,t.length-1)),xt[t])d=xt[t];else if("#"===t.charAt(0))4===t.length&&(t="#"+(n=t.charAt(1))+n+(i=t.charAt(2))+i+(a=t.charAt(3))+a),d=[(t=parseInt(t.substr(1),16))>>16,t>>8&wt,t&wt];else if("hsl"===t.substr(0,3))if(d=c=t.match(H),e){if(~t.indexOf("="))return d=t.match(J),r&&d.length<4&&(d[3]=1),d}else s=+d[0]%360/360,o=d[1]/100,n=2*(u=d[2]/100)-(i=u<=.5?u*(o+1):u+o-u*o),3<d.length&&(d[3]*=1),d[0]=hb(s+1/3,n,i),d[1]=hb(s,n,i),d[2]=hb(s-1/3,n,i);else d=t.match(H)||xt.transparent;d=d.map(Number)}return e&&!c&&(n=d[0]/wt,i=d[1]/wt,a=d[2]/wt,u=((h=Math.max(n,i,a))+(l=Math.min(n,i,a)))/2,h===l?s=o=0:(f=h-l,o=.5<u?f/(2-h-l):f/(h+l),s=h===n?(i-a)/f+(i<a?6:0):h===i?(a-n)/f+2:(n-i)/f+4,s*=60),d[0]=~~(s+.5),d[1]=~~(100*o+.5),d[2]=~~(100*u+.5)),r&&d.length<4&&(d[3]=1),d}function jb(t){var r=[],n=[],i=-1;return t.split(kt).forEach(function(t){var e=t.match(tt)||[];r.push.apply(r,e),n.push(i+=e.length+1)}),r.c=n,r}function kb(t,e,r){var n,i,a,s,o="",u=(t+o).match(kt),h=e?"hsla(":"rgba(",l=0;if(!u)return t;if(u=u.map(function(t){return(t=ib(t,e,1))&&h+(e?t[0]+","+t[1]+"%,"+t[2]+"%,"+t[3]:t.join(","))+")"}),r&&(a=jb(t),(n=r.c).join(o)!==a.c.join(o)))for(s=(i=t.replace(kt,"1").split(tt)).length-1;l<s;l++)o+=i[l]+(~n.indexOf(l)?u.shift()||h+"0,0,0,0)":(a.length?a:u.length?u:r).shift());if(!i)for(s=(i=t.split(kt)).length-1;l<s;l++)o+=i[l]+u[l];return o+i[s]}function nb(t){var e,r=t.join(" ");if(kt.lastIndex=0,kt.test(r))return e=Ot.test(r),t[1]=kb(t[1],e),t[0]=kb(t[0],e,jb(t[1])),!0}function vb(t){var e=(t+"").split("("),r=Ct[e[0]];return r&&1<e.length&&r.config?r.config.apply(null,~t.indexOf("{")?[function _parseObjectInString(t){for(var e,r,n,i={},a=t.substr(1,t.length-3).split(":"),s=a[0],o=1,u=a.length;o<u;o++)r=a[o],e=o!==u-1?r.lastIndexOf(","):r.length,n=r.substr(0,e),i[s]=isNaN(n)?n.replace(At,"").trim():+n,s=r.substr(e+1).trim();return i}(e[1])]:rt.exec(t)[1].split(",").map(fa)):Ct._CE&&St.test(t)?Ct._CE("",t):r}function yb(t,e,r,n){void 0===r&&(r=function easeOut(t){return 1-e(1-t)}),void 0===n&&(n=function easeInOut(t){return t<.5?e(2*t)/2:1-e(2*(1-t))/2});var i,a={easeIn:e,easeOut:r,easeInOut:n};return _(t,function(t){for(var e in Ct[t]=at[t]=a,Ct[i=t.toLowerCase()]=r,a)Ct[i+("easeIn"===e?".in":"easeOut"===e?".out":".inOut")]=Ct[t+"."+e]=a[e]}),a}function zb(e){return function(t){return t<.5?(1-e(1-2*t))/2:.5+e(2*(t-.5))/2}}function Ab(r,t,e){function Vk(t){return 1===t?1:n*Math.pow(2,-10*t)*Q((t-a)*i)+1}var n=1<=t?t:1,i=(e||(r?.3:.45))/(t<1?t:1),a=i/I*(Math.asin(1/n)||0),s="out"===r?Vk:"in"===r?function(t){return 1-Vk(1-t)}:zb(Vk);return i=I/i,s.config=function(t,e){return Ab(r,t,e)},s}function Bb(e,r){function bl(t){return t?--t*t*((r+1)*t+r)+1:0}void 0===r&&(r=1.70158);var t="out"===e?bl:"in"===e?function(t){return 1-bl(1-t)}:zb(bl);return t.config=function(t){return Bb(e,t)},t}var R,i,a,h,l,f,c,d,m,g,v,y,T,b,w,x,k,P,C,S,A,F,D,U={autoSleep:120,force3D:"auto",nullTargetWarn:1,units:{lineHeight:""}},E={duration:.5,overwrite:!1,delay:0},z=1e8,B=1/z,I=2*Math.PI,V=I/4,j=0,X=Math.sqrt,G=Math.cos,Q=Math.sin,W=Array.isArray,H=/(?:-?\.?\d|\.)+/gi,J=/[-+=.]*\d+[.e\-+]*\d*[e\-\+]*\d*/g,tt=/[-+=.]*\d+[.e-]*\d*[a-z%]*/g,et=/[-+=.]*\d+(?:\.|e-|e)*\d*/gi,rt=/\(([^()]+)\)/i,nt=/[+-]=-?[\.\d]+/,it=/[#\-+.]*\b[a-z\d-=+%.]+/gi,at={},st={},ot=[],ut={},ht={},lt={},ft=30,pt=[],ct="onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt",dt=function _merge(t,e){for(var r in e)t[r]=e[r];return t},_t=function _animationCycle(t,e){return(t/=e)&&~~t===t?~~t-1:~~t},mt={_start:0,endTime:O},gt=function _clamp(t,e,r){return r<t?t:e<r?e:r},vt=[].slice,yt=function toArray(t,e){return!n(t)||e||!a&&Pt()?W(t)?function _flatten(t,e,r){return void 0===r&&(r=[]),t.forEach(function(t){return n(t)&&!e||La(t,1)?r.push.apply(r,yt(t)):r.push(t)})||r}(t,e):La(t)?vt.call(t,0):t?[t]:[]:vt.call(h.querySelectorAll(t),0)},Tt=function mapRange(e,t,r,n,i){var a=t-e,s=n-r;return Ga(i,function(t){return r+(t-e)/a*s})},bt=function _callback(t,e,r){var n,i,a=t.vars,s=a[e];if(s)return n=a[e+"Params"],i=a.callbackScope||t,r&&ot.length&&da(),n?s.apply(i,n):s.call(i)},wt=255,xt={aqua:[0,wt,wt],lime:[0,wt,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,wt],navy:[0,0,128],white:[wt,wt,wt],olive:[128,128,0],yellow:[wt,wt,0],orange:[wt,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[wt,0,0],pink:[wt,192,203],cyan:[0,wt,wt],transparent:[wt,wt,wt,0]},kt=function(){var t,e="(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3}){1,2}\\b";for(t in xt)e+="|"+t+"\\b";return new RegExp(e+")","gi")}(),Ot=/hsl[a]?\(/,Mt=(b=Date.now,w=500,x=33,k=b(),P=k,S=C=1/240,T={time:0,frame:0,tick:function tick(){_j(!0)},wake:function wake(){f&&(!a&&t()&&(i=a=window,h=i.document||{},at.gsap=ne,(i.gsapVersions||(i.gsapVersions=[])).push(ne.version),K(l||i.GreenSockGlobals||!i.gsap&&i||{}),y=i.requestAnimationFrame),g&&T.sleep(),v=y||function(t){return setTimeout(t,1e3*(S-T.time)+1|0)},m=1,_j(2))},sleep:function sleep(){(y?i.cancelAnimationFrame:clearTimeout)(g),m=0,v=O},lagSmoothing:function lagSmoothing(t,e){w=t||1e8,x=Math.min(e,w,0)},fps:function fps(t){C=1/(t||240),S=T.time+C},add:function add(t){A.indexOf(t)<0&&A.push(t),Pt()},remove:function remove(t){var e;~(e=A.indexOf(t))&&A.splice(e,1)},_listeners:A=[]}),Pt=function _wake(){return!m&&Mt.wake()},Ct={},St=/^[\d.\-M][\d.\-,\s]/,At=/["']/g,Ft=function _invertEase(e){return function(t){return 1-e(1-t)}},Dt=function _parseEase(t,e){return t&&(o(t)?t:Ct[t]||vb(t))||e};function _j(e){var t,r,n=b()-P,i=!0===e;w<n&&(k+=n-x),P+=n,T.time=(P-k)/1e3,(0<(t=T.time-S)||i)&&(T.frame++,S+=t+(C<=t?.004:C-t),r=1),i||(g=v(_j)),r&&A.forEach(function(t){return t(T.time,n,T.frame,e)})}function sl(t){return t<D?F*t*t:t<.7272727272727273?F*Math.pow(t-1.5/2.75,2)+.75:t<.9090909090909092?F*(t-=2.25/2.75)*t+.9375:F*Math.pow(t-2.625/2.75,2)+.984375}_("Linear,Quad,Cubic,Quart,Quint,Strong",function(t,e){var r=e<5?e+1:e;yb(t+",Power"+(r-1),e?function(t){return Math.pow(t,r)}:function(t){return t},function(t){return 1-Math.pow(1-t,r)},function(t){return t<.5?Math.pow(2*t,r)/2:1-Math.pow(2*(1-t),r)/2})}),Ct.Linear.easeNone=Ct.none=Ct.Linear.easeIn,yb("Elastic",Ab("in"),Ab("out"),Ab()),F=7.5625,D=1/2.75,yb("Bounce",function(t){return 1-sl(1-t)},sl),yb("Expo",function(t){return t?Math.pow(2,10*(t-1)):0}),yb("Circ",function(t){return-(X(1-t*t)-1)}),yb("Sine",function(t){return 1-G(t*V)}),yb("Back",Bb("in"),Bb("out"),Bb()),Ct.SteppedEase=Ct.steps=at.SteppedEase={config:function config(t,e){void 0===t&&(t=1);var r=1/t,n=t+(e?0:1),i=e?1:0;return function(t){return((n*gt(0,.99999999,t)|0)+i)*r}}},E.ease=Ct["quad.out"];var zt,Rt=function GSCache(t,e){this.id=j++,(t._gsap=this).target=t,this.harness=e,this.get=e?e.get:$,this.set=e?e.getSetter:Gt},Et=((zt=Animation.prototype).delay=function delay(t){return t||0===t?(this._delay=t,this):this._delay},zt.duration=function duration(t){return arguments.length?Ca(this,t):this.totalDuration()&&this._dur},zt.totalDuration=function totalDuration(t){return arguments.length?(this._dirty=0,Ca(this,this._repeat<0?t:(t-this._repeat*this._rDelay)/(this._repeat+1))):this._tDur},zt.totalTime=function totalTime(t,e){if(Pt(),!arguments.length)return this._tTime;var r=this.parent||this._dp;if(r&&r.smoothChildTiming&&this._ts){for(this._start=aa(r._time-(0<this._ts?t/this._ts:((this._dirty?this.totalDuration():this._tDur)-t)/-this._ts
3529)),xa(this),r._dirty||ra(r);r.parent;)r.parent._time!==r._start+(0<=r._ts?r._tTime/r._ts:(r.totalDuration()-r._tTime)/-r._ts)&&r.totalTime(r._tTime,!0),r=r.parent;!this.parent&&this._dp.autoRemoveChildren&&ya(this._dp,this,this._start-this._delay)}return this._tTime===t&&(this._dur||e)&&Math.abs(this._zTime)!==B||(this._ts||(this._pTime=t),ea(this,t,e)),this},zt.time=function time(t,e){return arguments.length?this.totalTime(Math.min(this.totalDuration(),t+ua(this))%this._dur||(t?this._dur:0),e):this._time},zt.totalProgress=function totalProgress(t,e){return arguments.length?this.totalTime(this.totalDuration()*t,e):this.totalDuration()?Math.min(1,this._tTime/this._tDur):this.ratio},zt.progress=function progress(t,e){return arguments.length?this.totalTime(this.duration()*(!this._yoyo||1&this.iteration()?t:1-t)+ua(this),e):this.duration()?Math.min(1,this._time/this._dur):this.ratio},zt.iteration=function iteration(t,e){var r=this.duration()+this._rDelay;return arguments.length?this.totalTime(this._time+(t-1)*r,e):this._repeat?_t(this._tTime,r)+1:1},zt.timeScale=function timeScale(t){if(!arguments.length)return this._ts||this._pauseTS||0;if(null!==this._pauseTS)return this._pauseTS=t,this;var e=this.parent&&this._ts?wa(this.parent._time,this):this._tTime;return this._ts=t,function _recacheAncestors(t){for(var e=t.parent;e&&e.parent;)e._dirty=1,e.totalDuration(),e=e.parent;return t}(this.totalTime(e,!0))},zt.paused=function paused(t){var e=!this._ts;return arguments.length?(e!==t&&(t?(this._pauseTS=this._ts,this._pTime=this._tTime||Math.max(-this._delay,this.rawTime()),this._ts=this._act=0):(Pt(),this._ts=this._pauseTS||1,this._pauseTS=null,this.totalTime(this.parent&&!this.parent.smoothChildTiming?this.rawTime():this._tTime||this._pTime,1===this.progress()&&(this._tTime-=B)&&Math.abs(this._zTime)!==B))),this):e},zt.startTime=function startTime(t){return arguments.length?(this.parent&&this.parent._sort&&ya(this.parent,this,t-this._delay),this):this._start},zt.endTime=function endTime(t){return this._start+(s(t)?this.totalDuration():this.duration())/Math.abs(this._ts)},zt.rawTime=function rawTime(t){var e=this.parent||this._dp;return e?t&&(!this._ts||this._repeat&&this._time&&this.totalProgress()<1)?this._tTime%(this._dur+this._rDelay):this._ts?wa(e.rawTime(t),this):this._tTime:this._tTime},zt.repeat=function repeat(t){return arguments.length?(this._repeat=t,Da(this)):this._repeat},zt.repeatDelay=function repeatDelay(t){return arguments.length?(this._rDelay=t,Da(this)):this._rDelay},zt.yoyo=function yoyo(t){return arguments.length?(this._yoyo=t,this):this._yoyo},zt.seek=function seek(t,e){return this.totalTime(Fa(this,t),s(e))},zt.restart=function restart(t,e){return this.play().totalTime(t?-this._delay:0,s(e))},zt.play=function play(t,e){return null!=t&&this.seek(t,e),this.reversed(!1).paused(!1)},zt.reverse=function reverse(t,e){return null!=t&&this.seek(t||this.totalDuration(),e),this.reversed(!0).paused(!1)},zt.pause=function pause(t,e){return null!=t&&this.seek(t,e),this.paused(!0)},zt.resume=function resume(){return this.paused(!1)},zt.reversed=function reversed(t){var e=this._ts||this._pauseTS||0;return arguments.length?(t!==this.reversed()&&(this[null===this._pauseTS?"_ts":"_pauseTS"]=Math.abs(e)*(t?-1:1),this.totalTime(this._tTime,!0)),this):e<0}
3529,zt.invalidate=function invalidate(){return this._initted=0,this._zTime=-B,this},zt.isActive=function isActive(t){var e,r=this.parent||this._dp,n=this._start;return!(r&&!(this._ts&&(this._initted||!t)&&r.isActive(t)&&(e=r.rawTime(!0))>=n&&e<this.endTime(!0)-B))},zt.eventCallback=function eventCallback(t,e,r){var n=this.vars;return 1<arguments.length?(e?(n[t]=e,r&&(n[t+"Params"]=r),"onUpdate"===t&&(this._onUpdate=e)):delete n[t],this):n[t]},zt.then=function then(t){var n=this;return new Promise(function(e){function Hm(){var t=n.then;n.then=null,o(r)&&(r=r(n))&&(r.then||r===n)&&(n.then=t),e(r),n.then=t}var r=o(t)?t:ga;n._initted&&1===n.totalProgress()&&0<=n._ts||!n._tTime&&n._ts<0?Hm():n._prom=Hm})},zt.kill=function kill(){cb(this)},Animation);function Animation(t,e){var r=t.parent||R;this.vars=t,this._delay=+t.delay||0,(this._repeat=t.repeat||0)&&(this._rDelay=t.repeatDelay||0,this._yoyo=!!t.yoyo||!!t.yoyoEase),this._ts=1,Ca(this,+t.duration,1),this.data=t.data,m||Mt.wake(),r&&ya(r,this,e||0===e?e:r._time),t.reversed&&this.reversed(!0),t.paused&&this.paused(!0)}ha(Et.prototype,{_time:0,_start:0,_end:0,_tTime:0,_tDur:0,_dirty:0,_repeat:0,_yoyo:!1,parent:null,_initted:!1,_rDelay:0,_ts:1,_dp:0,ratio:0,_zTime:-B,_prom:0,_pauseTS:null});var Bt=function(i){function Timeline(t,e){var r;return void 0===t&&(t={}),(r=i.call(this,t,e)||this).labels={},r.smoothChildTiming=!!t.smoothChildTiming,r.autoRemoveChildren=!!t.autoRemoveChildren,r._sort=s(t.sortChildren),r}_inheritsLoose(Timeline,i);var t=Timeline.prototype;return t.to=function to(t,e,r,n){return new Vt(t,ca(arguments,0,this),Fa(this,p(e)?n:r)),this},t.from=function from(t,e,r,n){return new Vt(t,ca(arguments,1,this),Fa(this,p(e)?n:r)),this},t.fromTo=function fromTo(t,e,r,n,i){return new Vt(t,ca(arguments,2,this),Fa(this,p(e)?i:n)),this},t.set=function set(t,e,r){return e.duration=0,e.parent=this,e.repeatDelay||(e.repeat=0),e.immediateRender=!!e.immediateRender,new Vt(t,e,Fa(this,r)),this},t.call=function call(t,e,r){return ya(this,Vt.delayedCall(0,t,e),Fa(this,r))},t.staggerTo=function staggerTo(t,e,r,n,i,a,s){return r.duration=e,r.stagger=r.stagger||n,r.onComplete=a,r.onCompleteParams=s,r.parent=this,new Vt(t,r,Fa(this,i)),this},t.staggerFrom=function staggerFrom(t,e,r,n,i,a,o){return r.runBackwards=1,r.immediateRender=s(r.immediateRender),this.staggerTo(t,e,r,n,i,a,o)},t.staggerFromTo=function staggerFromTo(t,e,r,n,i,a,o,u){return n.startAt=r,n.immediateRender=s(n.immediateRender),this.staggerTo(t,e,n,i,a,o,u)},t.render=function render(t,e,r){var n,i,a,s,o,u,h,l,f,p,c,d,_=this._time,m=this._dirty?this.totalDuration():this._tDur,g=this._dur,v=this!==R&&m-B<t&&0<=t?m:t<B?0:t,y=this._zTime<0!=t<0&&(this._initted||!g);if(v!==this._tTime||r||y){if(_!==this._time&&g&&(v+=this._time-_,t+=this._time-_),n=v,f=this._start,u=!(l=this._ts),y&&(g||(_=this._zTime),!t&&e||(this._zTime=t)),this._repeat&&(c=this._yoyo,o=g+this._rDelay,(g<(n=aa(v%o))||m===v)&&(n=g),(s=~~(v/o))&&s===v/o&&(n=g,s--),c&&1&s&&(n=g-n,d=1),s!==(p=_t(this._tTime,o))&&!this._lock)){var T=c&&1&p,b=T===(c&&
35291&s);if(s<p&&(T=!T),_=T?0:g,this._lock=1,this.render(_,e,!g)._lock=0,!e&&this.parent&&bt(this,"onRepeat"),this.vars.repeatRefresh&&!d&&(this.invalidate()._lock=1),_!==this._time||u!=!this._ts)return this;if(b&&(this._lock=2,_=T?g+1e-4:-1e-4,this.render(_,!0),this.vars.repeatRefresh&&!d&&this.invalidate()),this._lock=0,!this._ts&&!u)return this}if(this._hasPause&&!this._forcing&&this._lock<2&&(h=function _findNextPauseTween(t,e,r){var n;if(e<r)for(n=t._first;n&&n._start<=r;){if(!n._dur&&"isPause"===n.data&&n._start>e)return n;n=n._next}else for(n=t._last;n&&n._start>=r;){if(!n._dur&&"isPause"===n.data&&n._start<e)return n;n=n._prev}}(this,aa(_),aa(n)))&&(v-=n-(n=h._start)),this._tTime=v,this._time=n,this._act=!l,this._initted||(this._onUpdate=this.vars.onUpdate,this._initted=1,this._zTime=t),_||!n||e||bt(this,"onStart"),_<=n&&0<=t)for(i=this._first;i;){if(a=i._next,(i._act||n>=i._start)&&i._ts&&h!==i){if(i.parent!==this)return this.render(t,e,r);if(i.render(0<i._ts?(n-i._start)*i._ts:(i._dirty?i.totalDuration():i._tDur)+(n-i._start)*i._ts,e,r),n!==this._time||!this._ts&&!u){h=0,a&&(v+=this._zTime=-B);break}}i=a}else{i=this._last;for(var w=t<0?t:n;i;){if(a=i._prev,(i._act||w<=i._end)&&i._ts&&h!==i){if(i.parent!==this)return this.render(t,e,r);if(i.render(0<i._ts?(w-i._start)*i._ts:(i._dirty?i.totalDuration():i._tDur)+(w-i._start)*i._ts,e,r),n!==this._time||!this._ts&&!u){h=0,a&&(v+=this._zTime=w?-B:B);break}}i=a}}if(h&&!e&&(this.pause(),h.render(_<=n?0:-B)._zTime=_<=n?1:-1,this._ts))return this._start=f,xa(this),this.render(t,e,r);this._onUpdate&&!e&&bt(this,"onUpdate",!0),(v===m&&m>=this.totalDuration()||!v&&this._ts<0)&&(f!==this._start&&Math.abs(l)===Math.abs(this._ts)||(!t&&g||!(t&&0<this._ts||!v&&this._ts<0)||qa(this,1),e||t<0&&!_||(bt(this,v===m?"onComplete":"onReverseComplete",!0),this._prom&&this._prom())))}return this},t.add=function add(t,e){var r=this;if(p(e)||(e=Fa(this,e)),!(t instanceof Et)){if(W(t))return t.forEach(function(t){return r.add(t,e)}),ra(this);if(n(t))return this.addLabel(t,e);if(!o(t))return this;t=Vt.delayedCall(0,t)}return this!==t?ya(this,t,e):this},t.getChildren=function getChildren(t,e,r,n){void 0===t&&(t=!0),void 0===e&&(e=!0),void 0===r&&(r=!0),void 0===n&&(n=-z);for(var i=[],a=this._first;a;)a._start>=n&&(a instanceof Vt?e&&i.push(a):(r&&i.push(a),t&&i.push.apply(i,a.getChildren(!0,e,r)))),a=a._next;return i},t.getById=function getById(t){for(var e=this.getChildren(1,1,1),r=e.length;r--;)if(e[r].vars.id===t)return e[r]},t.remove=function remove(t){return n(t)?this.removeLabel(t):o(t)?this.killTweensOf(t):(pa(this,t),t===this._recent&&(this._recent=this._last),ra(this))},t.totalTime=function totalTime(t,e){return arguments.length?(this._forcing=1,this.parent||this._dp||!this._ts||(this._start=aa(Mt.time-(0<this._ts?t/this._ts:(this.totalDuration()-t)/-this._ts))),i.prototype.totalTime.call(this,t,e),this._forcing=0,this):this._tTime},t.addLabel=function addLabel(t,e){return this.labels[t]=Fa(this,e),this},t.removeLabel=function removeLabel(t){return delete this.labels[t],this},t.addPause=function addPause(t,e,r){var n=Vt.delayedCall(0,e||O,r);return n.data="isPause",this._hasPause=1,ya(this,n,Fa(this,t))},t.removePause=function removePause(t){var e=this._first;for(t=Fa(this,t);e;)e._start===t&&"isPause"===e.data&&qa(e),e=e._next},t.killTweensOf=function killTweensOf(t,e,r){for(var n=this.getTweensOf(t,r),i=n.length;i--;)It!==n[i]&&n[i].kill(t,e);return this},t.getTweensOf=function getTweensOf(t,e){for(var r,n=[],i=yt(t),a=this._first;a;)a instanceof Vt?!ba(a._targets,i)||e&&!a.isActive("started"===e)||n.push(a):(r=a.getTweensOf(i,e)).length&&n.push.apply(n,r),a=a._next;return n},t.tweenTo=function tweenTo(t,e){e=e||{};var r=this,n=Fa(r,t),i=e.startAt,a=Vt.to(r,ha(e,{ease:"none",lazy:!1,time:n,duration:e.duration||Math.abs(n-(i&&"time"in i?i.time:r._time))/r.timeScale()||B,onStart:function onStart(){r.pause();var t=e.duration||Math.abs(n-r._time)/r.timeScale();a._dur!==t&&Ca(a,t).render(a._time,!0,!0),e.onStart&&e.onStart.apply(a,e.onStartParams||[])}}));return a},t.tweenFromTo=function tweenFromTo(t,e,r){return this.tweenTo(e,ha({startAt:{time:Fa(this,t)}},r))},t.recent=function recent(){return this._recent},t.nextLabel=function nextLabel(t){return void 0===t&&(t=this._time),ab(this,Fa(this,t))},t.previousLabel=function previousLabel(t){return void 0===t&&(t=this._time),ab(this,Fa(this,t),1)},t.currentLabel=function currentLabel(t){return arguments.length?this.seek(t,!0):this.previousLabel(this._time+B)},t.shiftChildren=function shiftChildren(t,e,r){void 0===r&&(r=0);for(var n,i=this._first,a=this.labels;i;)i._start>=r&&(i._start+=t),i=i._next;if(e)for(n in a)a[n]>=r&&(a[n]+=t);return ra(this)}
3529,t.invalidate=function invalidate(){var t=this._first;for(this._lock=0;t;)t.invalidate(),t=t._next;return i.prototype.invalidate.call(this)},t.clear=function clear(t){void 0===t&&(t=!0);for(var e,r=this._first;r;)e=r._next,this.remove(r),r=e;return this._time=this._tTime=0,t&&(this.labels={}),ra(this)},t.totalDuration=function totalDuration(t){var e,r,n,i,a=0,s=this,o=s._last,u=z;if(arguments.length)return s._repeat<0?s:s.timeScale(s.totalDuration()/t);if(s._dirty){for(i=s.parent;o;)e=o._prev,o._dirty&&o.totalDuration(),u<(n=o._start)&&s._sort&&o._ts&&!s._lock?(s._lock=1,ya(s,o,n-o._delay)._lock=0):u=n,n<0&&o._ts&&(a-=n,(!i&&!s._dp||i&&i.smoothChildTiming)&&(s._start+=n/s._ts,s._time-=n,s._tTime-=n),s.shiftChildren(-n,!1,-1e20),u=0),a<(r=xa(o))&&o._ts&&(a=r),o=e;Ca(s,s===R&&s._time>a?s._time:Math.min(z,a),1),s._dirty=0}return s._tDur},Timeline.updateRoot=function updateRoot(t){if(R._ts&&(ea(R,wa(t,R)),c=Mt.frame),Mt.frame>=ft){ft+=U.autoSleep||120;var e=R._first;if((!e||!e._ts)&&U.autoSleep&&Mt._listeners.length<2){for(;e&&!e._ts;)e=e._next;e||Mt.sleep()}}},Timeline}(Et);ha(Bt.prototype,{_lock:0,_hasPause:0,_forcing:0});function Ib(t,e,i,a,s,u){var h,l,f,p;if(ht[t]&&!1!==(h=new ht[t]).init(s,h.rawVars?e[t]:function _processVars(t,e,i,a,s){if(o(t)&&(t=Yt(t,s,e,i,a)),!r(t)||t.style&&t.nodeType||W(t))return n(t)?Yt(t,s,e,i,a):t;var u,h={};for(u in t)h[u]=Yt(t[u],s,e,i,a);return h}(e[t],a,s,u,i),i,a,u)&&(i._pt=l=new ee(i._pt,s,t,0,1,h.render,h,0,h.priority),i!==d))for(f=i._ptLookup[i._targets.indexOf(s)],p=h._props.length;p--;)f[h._props[p]]=l;return h}var It,Lt=function _addPropTween(t,e,r,i,a,s,u,h,l){o(i)&&(i=i(a||0,t,s));var f,p=t[e],c="get"!==r?r:o(p)?l?t[e.indexOf("set")||!o(t["get"+e.substr(3)])?e:"get"+e.substr(3)](l):t[e]():p,d=o(p)?l?Zt:Xt:jt;if(n(i)&&(~i.indexOf("random(")&&(i=Za(i)),"="===i.charAt(1)&&(i=parseFloat(c)+parseFloat(i.substr(2))*("-"===i.charAt(0)?-1:1)+(Ia(c)||0))),c!==i)return isNaN(c+i)?(p||e in t||L(e,i),function _addComplexStringPropTween(t,e,r,n,i,a,s){var o,u,h,l,f,p,c,d,_=new ee(this._pt,t,e,0,1,Ht,null,i),m=0,g=0;for(_.b=r,_.e=n,r+="",(c=~(n+="").indexOf("random("))&&(n=Za(n)),a&&(a(d=[r,n],t,e),r=d[0],n=d[1]),u=r.match(et)||[];o=et.exec(n);)l=o[0],f=n.substring(m,o.index),h?h=(h+1)%5:"rgba("===f.substr(-5)&&(h=1),l!==u[g++]&&(p=parseFloat(u[g-1])||0,_._pt={_next:_._pt,p:f||1===g?f:",",s:p,c:"="===l.charAt(1)?parseFloat(l.substr(2))*("-"===l.charAt(0)?-1:1):parseFloat(l)-p,m:h&&h<4?Math.round:0},m=et.lastIndex);return _.c=m<n.length?n.substring(m,n.length):"",_.fp=s,(nt.test(n)||c)&&(_.e=0),this._pt=_}.call(this,t,e,c,i,d,h||U.stringFilter,l)):(f=new ee(this._pt,t,e,+c||0,i-(c||0),"boolean"==typeof p?Wt:Qt,0,d),l&&(f.fp=l),u&&f.modifier(u,this,t),this._pt=f)},qt=function _initTween(t,e){var r,n,i,a,o,u,h,l,f,p,c,d,_=t.vars,m=_.ease,g=_.startAt,v=_.immediateRender,y=_.lazy,T=_.onUpdate,b=_.onUpdateParams,w=_.callbackScope,x=_.runBackwards,k=_.yoyoEase,O=_.keyframes,M=_.autoRevert,P=t._dur,C=t._startAt,S=t._targets,A=t.parent,F=A&&"nested"===A.data?A.parent._targets:S,D="auto"===t._overwrite,z=t.timeline;if(!z||O&&m||(m="none"),t._ease=Dt(m,E.ease),t._yEase=k?Ft(Dt(!0===k?m:k,E.ease)):0,k&&t._yoyo&&!t._repeat&&(k=t._yEase,t._yEase=t._ease,t._ease=k),!z){if(C&&C.render(-1,!0).kill(),g){if(qa(t._startAt=Vt.set(S,ha({data:"isStart",overwrite:!1,parent:A,immediateRender:!0,lazy:s(y),startAt:null,delay:0,onUpdate:T,onUpdateParams:b,callbackScope:w,stagger:0},g))),v)if(0<e)M||(t._startAt=0);else if(P)return}else if(x&&P)if(C)M||(t._startAt=0);else if(e&&(v=!1),qa(t._startAt=Vt.set(S,dt(la(_,st),{overwrite:!1,data:"isFromStart",lazy:v&&s(y),immediateRender:v,stagger:0,parent:A}))),v){if(!e)return}else _initTween(t._startAt,B);for(r=la(_,st),d=(l=S[t._pt=0]?Z(S[0]).harness:0)&&_[l.prop],y=P&&s(y)||y&&!P,n=0;n<S.length;n++){if(h=(o=S[n])._gsap||Y(S)[n]._gsap,t._ptLookup[n]=p={},ut[h.id]&&da(),c=F===S?n:F.indexOf(o),l&&!1!==(f=new l).init(o,d||r,t,c,F)&&(t._pt=a=new ee(t._pt,o,f.name,0,1,f.render,f,0,f.priority),f._props.forEach(function(t){p[t]=a}),f.priority&&(u=1)),!l||d)for(i in r)ht[i]&&(f=Ib(i,r,t,c,o,F))?f.priority&&(u=1):p[i]=a=Lt.call(t,o,i,"get",r[i],c,F,0,_.stringFilter);t._op&&t._op[n]&&t.kill(o,t._op[n]),D&&t._pt&&(It=t,R.killTweensOf(o,p,"started"),It=0),t._pt&&y&&(ut[h.id]=1)}u&&te(t),t._onInit&&t._onInit(t)}t._from=!z&&!!_.runBackwards,t._onUpdate=T,t._initted=1},Yt=function _parseFuncOrString(t,e,r,i,a){return o(t)?t.call(e,r,i,a):n(t)&&~t.indexOf("random(")?Za(t):t},Nt=ct+",repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase",Ut=(Nt+",id,stagger,delay,duration,paused").split(","),Vt=function(P){function Tween(t,e,n){var i;"number"==typeof e&&(n.duration=e,e=n,n=null);var a,o,h,l,f,c,d,_,m=(i=P.call(this,function _inheritDefaults(t){var e=t.parent||R,r=t.keyframes?ia:ha;if(s(t.inherit))for(;e;)r(t,e.vars.defaults),e=e.parent;return t}(e),n)||this).vars,g=m.duration,v=m.delay,y=m.immediateRender,T=m.stagger,b=m.overwrite,w=m.keyframes,x=m.defaults,k=(W(t)?p(t[0]):"length"in e)?[t]:yt(t);if(i._targets=k.length?Y(k):M("GSAP target "+t+" not found. https://greensock.com",!U.nullTargetWarn)||[],i._ptLookup=[],i._overwrite=b,w||T||u(g)||u(v)){if(e=i.vars,(a=i.timeline=new Bt({data:"nested",defaults:x||{}})).kill(),a.parent=_assertThisInitialized(i),w)ha(a.vars.defaults,{ease:"none"}
3529),w.forEach(function(t){return a.to(k,t,">")});else{if(l=k.length,d=T?Pa(T):O,r(T))for(f in T)~Nt.indexOf(f)&&((_=_||{})[f]=T[f]);for(o=0;o<l;o++){for(f in h={},e)Ut.indexOf(f)<0&&(h[f]=e[f]);h.stagger=0,_&&dt(h,_),e.yoyoEase&&!e.repeat&&(h.yoyoEase=e.yoyoEase),c=k[o],h.duration=+Yt(g,_assertThisInitialized(i),o,c,k),h.delay=(+Yt(v,_assertThisInitialized(i),o,c,k)||0)-i._delay,!T&&1===l&&h.delay&&(i._delay=v=h.delay,i._start+=v,h.delay=0),a.to(c,h,d(o,c,k))}g=v=0}g||i.duration(g=a.duration())}else i.timeline=0;return!0===b&&(It=_assertThisInitialized(i),R.killTweensOf(k),It=0),(y||!g&&!w&&i._start===i.parent._time&&s(y)&&function _hasNoPausedAncestors(t){return!t||t._ts&&_hasNoPausedAncestors(t.parent)}(_assertThisInitialized(i))&&"nested"!==i.parent.data)&&(i._tTime=-B,i.render(Math.max(0,-v))),i}_inheritsLoose(Tween,P);var t=Tween.prototype;return t.render=function render(t,e,r){var n,i,a,s,o,u,h,l,f,p=this._time,c=this._tDur,d=this._dur,_=c-B<t&&0<=t?c:t<B?0:t;if(d){if(_!==this._tTime||!t||r||this._startAt&&this._zTime<0!=t<0){if(n=_,l=this.timeline,this._repeat){if(s=d+this._rDelay,(d<(n=aa(_%s))||c===_)&&(n=d),(a=~~(_/s))&&a===_/s&&(n=d,a--),(u=this._yoyo&&1&a)&&(f=this._yEase,n=d-n),o=_t(this._tTime,s),n===p&&!r&&this._initted)return this;a!==o&&(!this.vars.repeatRefresh||u||this._lock||(this._lock=r=1,this.render(s*a,!0).invalidate()._lock=0))}if(!this._initted&&za(this,n,r,e))return this._tTime=0,this;for(this._tTime=_,this._time=n,!this._act&&this._ts&&(this._act=1,this._lazy=0),this.ratio=h=(f||this._ease)(n/d),this._from&&(this.ratio=h=1-h),p||!n||e||bt(this,"onStart"),i=this._pt;i;)i.r(h,i.d),i=i._next;l&&l.render(t<0?t:!n&&u?-B:l._dur*h,e,r)||this._startAt&&(this._zTime=t),this._onUpdate&&!e&&(t<0&&this._startAt&&this._startAt.render(t,!0,r),bt(this,"onUpdate")),this._repeat&&a!==o&&this.vars.onRepeat&&!e&&this.parent&&bt(this,"onRepeat"),_!==this._tDur&&_||this._tTime!==_||(t<0&&this._startAt&&!this._onUpdate&&this._startAt.render(t,!0,r),!t&&d||!(t&&0<this._ts||!_&&this._ts<0)||qa(this,1),e||t<0&&!p||(bt(this,_===c?"onComplete":"onReverseComplete",!0),this._prom&&this._prom()))}}else!function _renderZeroDurationTween(t,e,r,n){var i,a=t._zTime<0?0:1,s=e<0?0:1,o=t._rDelay,u=0;if(o&&t._repeat&&(u=gt(0,t._tDur,e),_t(u,o)!==_t(t._tTime,o)&&(a=1-s,t.vars.repeatRefresh&&t._initted&&t.invalidate())),(t._initted||!za(t,e,n,r))&&(s!==a||n||t._zTime===B||!e&&t._zTime)){for(t._zTime=e||(r?B:0),t.ratio=s,t._from&&(s=1-s),t._time=0,t._tTime=u,r||bt(t,"onStart"),i=t._pt;i;)i.r(s,i.d),i=i._next;!s&&t._startAt&&!t._onUpdate&&t._start&&t._startAt.render(e,!0,n),t._onUpdate&&!r&&bt(t,"onUpdate"),u&&t._repeat&&!r&&t.parent&&bt(t,"onRepeat"),(e>=t._tDur||e<0)&&t.ratio===s&&(t.ratio&&qa(t,1),r||(bt(t,t.ratio?"onComplete":"onReverseComplete",!0),t._prom&&t._prom()))}}(this,t,e,r);return this},t.targets=function targets(){return this._targets}
vendor: 21,352 bytes, line 3529
3529,t.invalidate=function invalidate(){return this._pt=this._op=this._startAt=this._onUpdate=this._act=this._lazy=0,this._ptLookup=[],this.timeline&&this.timeline.invalidate(),P.prototype.invalidate.call(this)},t.kill=function kill(t,e){if(void 0===e&&(e="all"),!(t||e&&"all"!==e)&&(this._lazy=0,this.parent))return cb(this);if(this.timeline)return this.timeline.killTweensOf(t,e,It&&!0!==It.vars.overwrite),this;var r,i,a,s,o,u,h,l=this._targets,f=t?yt(t):l,p=this._ptLookup,c=this._pt;if((!e||"all"===e)&&function _arraysMatch(t,e){for(var r=t.length,n=r===e.length;n&&r--&&t[r]===e[r];);return r<0}(l,f))return cb(this);for(r=this._op=this._op||[],"all"!==e&&(n(e)&&(o={},_(e,function(t){return o[t]=1}),e=o),e=function _addAliasesToVars(t,e){var r,n,i,a,s=t[0]?Z(t[0]).harness:0,o=s&&s.aliases;if(!o)return e;for(n in r=dt({},e),o)if(n in r)for(i=(a=o[n].split(",")).length;i--;)r[a[i]]=r[n];return r}(l,e)),h=l.length;h--;)if(~f.indexOf(l[h]))for(o in i=p[h],"all"===e?(r[h]=e,s=i,a={}):(a=r[h]=r[h]||{},s=e),s)(u=i&&i[o])&&("kill"in u.d&&!0!==u.d.kill(o)||pa(this,u,"_pt"),delete i[o]),"all"!==a&&(a[o]=1);return this._initted&&!this._pt&&c&&cb(this),this},Tween.to=function to(t,e,r){return new Tween(t,e,r)},Tween.from=function from(t,e){return new Tween(t,ca(arguments,1))},Tween.delayedCall=function delayedCall(t,e,r,n){return new Tween(e,0,{immediateRender:!1,lazy:!1,overwrite:!1,delay:t,onComplete:e,onReverseComplete:e,onCompleteParams:r,onReverseCompleteParams:r,callbackScope:n})},Tween.fromTo=function fromTo(t,e,r){return new Tween(t,ca(arguments,2))},Tween.set=function set(t,e){return e.duration=0,e.repeatDelay||(e.repeat=0),new Tween(t,e)},Tween.killTweensOf=function killTweensOf(t,e,r){return R.killTweensOf(t,e,r)},Tween}(Et);ha(Vt.prototype,{_targets:[],_lazy:0,_startAt:0,_op:0,_onInit:0}),_("staggerTo,staggerFrom,staggerFromTo",function(r){Vt[r]=function(){var t=new Bt,e=vt.call(arguments,0);return e.splice("staggerFromTo"===r?5:4,0,0),t[r].apply(t,e)}});function Tb(t,e,r){return t.setAttribute(e,r)}function _b(t,e,r,n){n.mSet(t,e,n.m.call(n.tween,r,n.mt),n)}var jt=function _setterPlain(t,e,r){return t[e]=r},Xt=function _setterFunc(t,e,r){return t[e](r)},Zt=function _setterFuncWithParam(t,e,r,n){return t[e](n.fp,r)},Gt=function _getSetter(t,e){return o(t[e])?Xt:q(t[e])&&t.setAttribute?Tb:jt},Qt=function _renderPlain(t,e){return e.set(e.t,e.p,Math.round(1e4*(e.s+e.c*t))/1e4,e)},Wt=function _renderBoolean(t,e){return e.set(e.t,e.p,!!(e.s+e.c*t),e)},Ht=function _renderComplexString(t,e){var r=e._pt,n="";if(!t&&e.b)n=e.b;else if(1===t&&e.e)n=e.e;else{for(;r;)n=r.p+(r.m?r.m(r.s+r.c*t):Math.round(1e4*(r.s+r.c*t))/1e4)+n,r=r._next;n+=e.c}e.set(e.t,e.p,n,e)},$t=function _renderPropTweens(t,e){for(var r=e._pt;r;)r.r(t,r.d),r=r._next},Kt=function _addPluginModifier(t,e,r,n){for(var i,a=this._pt;a;)i=a._next,a.p===n&&a.modifier(t,e,r),a=i},Jt=function _killPropTweensOf(t){for(var e,r,n=this._pt;n;)r=n._next,n.p===t&&!n.op||n.op===t?pa(this,n,"_pt"):n.dep||(e=1),n=r;return!e},te=function _sortPropTweensByPriority(t){for(var e,r,n,i,a=t._pt;a;){for(e=a._next,r=n;r&&r.pr>a.pr;)r=r._next;(a._prev=r?r._prev:i)?a._prev._next=a:n=a,(a._next=r)?r._prev=a:i=a,a=e}t._pt=n},ee=(PropTween.prototype.modifier=function modifier(t,e,r){this.mSet=this.mSet||this.set,this.set=_b,this.m=t,this.mt=r,this.tween=e},PropTween);function PropTween(t,e,r,n,i,a,s,o,u){this.t=e,this.s=n,this.c=i,this.p=r,this.r=a||Qt,this.d=s||this,this.set=o||jt,this.pr=u||0,(this._next=t)&&(t._prev=this)}_(ct+",parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert",function(t){st[t]=1,"on"===t.substr(0,2)&&(st[t+"Params"]=1)}),at.TweenMax=at.TweenLite=Vt,at.TimelineLite=at.TimelineMax=Bt,R=new Bt({sortChildren:!1,defaults:E,autoRemoveChildren:!0,id:"root",smoothChildTiming:!0}),U.stringFilter=nb;var re={registerPlugin:function registerPlugin(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];e.forEach(function(t){return function _createPlugin(t){var e=(t=!t.name&&t.default||t).name,r=o(t),n=e&&!r&&t.init?function(){this._props=[]}:t,i={init:O,render:$t,add:Lt,kill:Jt,modifier:Kt,rawVars:0},a={targetTest:0,get:0,getSetter:Gt,aliases:{},register:0};if(Pt(),t!==n){if(ht[e])return;ha(n,ha(la(t,i),a)),dt(n.prototype,dt(i,la(t,a))),ht[n.prop=e]=n,t.targetTest&&(pt.push(n),st[e]=1),e=("css"===e?"CSS":e.charAt(0).toUpperCase()+e.substr(1))+"Plugin"}N(e,n),t.register&&t.register(ne,n,ee)}(t)})},timeline:function timeline(t){return new Bt(t)},getTweensOf:function getTweensOf(t,e){return R.getTweensOf(t,e)},getProperty:function getProperty(i,t,e,r){n(i)&&(i=yt(i)[0]);var a=Z(i||{}).get,s=e?ga:fa;return"native"===e&&(e=""),i?t?s((ht[t]&&ht[t].get||a)(i,t,e,r)):function(t,e,r){return s((ht[t]&&ht[t].get||a)(i,t,e,r))}:i},quickSetter:function quickSetter(r,e,n){if(1<(r=yt(r)).length){var i=r.map(function(t){return ne.quickSetter(t,e,n)}),a=i.length;return function(t){for(var e=a;e--;)i[e](t)}}r=r[0]||{};var s=ht[e],o=Z(r),u=s?function(t){var e=new s;d._pt=0,e.init(r,n?t+n:t,d,0,[r]),e.render(1,e),d._pt&&$t(1,d)}:o.set(r,e);return s?u:function(t){return u(r,e,n?t+n:t,o,1)}},isTweening:function isTweening(t){return 0<R.getTweensOf(t,!0).length},defaults:function defaults(t){return t&&t.ease&&(t.ease=Dt(t.ease,E.ease)),ka(E,t||{})},config:function config(t){return ka(U,t||{})},registerEffect:function registerEffect(t){var i=t.name,n=t.effect,e=t.plugins,a=t.defaults,s=t.extendTimeline;(e||"").split(",").forEach(function(t){return t&&!ht[t]&&!at[t]&&M(i+" effect requires "+t+" plugin.")}),lt[i]=function(t,e){return n(yt(t),ha(e||{},a))},s&&(Bt.prototype[i]=function(t,e,n){return this.add(lt[i](t,r(e)?e:(n=e)&&{}),n)})},registerEase:function registerEase(t,e){Ct[t]=Dt(e)},parseEase:function parseEase(t,e){return arguments.length?Dt(t,e):Ct},getById:function getById(t){return R.getById(t)},exportRoot:function exportRoot(t,e){void 0===t&&(t={});var r,n,i=new Bt(t);for(i.smoothChildTiming=s(t.smoothChildTiming),R.remove(i),i._dp=0,i._time=i._tTime=R._time,r=R._first;r;)n=r._next,!e&&!r._dur&&r instanceof Vt&&r.vars.onComplete===r._targets[0]||ya(i,r,r._start-r._delay),r=n;return ya(R,i,0),i},utils:{wrap:function wrap(e,t,r){var n=t-e;return W(e)?Wa(e,wrap(0,e.length),t):Ga(r,function(t){return(n+(t-e)%n)%n+e})},wrapYoyo:function wrapYoyo(e,t,r){var n=t-e,i=2*n;return W(e)?Wa(e,wrapYoyo(0,e.length-1),t):Ga(r,function(t){return e+(n<(t=(i+(t-e)%i)%i)?i-t:t)})},distribute:Pa,random:Sa,snap:Ra,normalize:function normalize(t,e,r){return Tt(t,e,0,1,r)},getUnit:Ia,clamp:function clamp(e,r,t){return Ga(t,function(t){return gt(e,r,t)})},splitColor:ib,toArray:yt,mapRange:Tt,pipe:function pipe(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return function(t){return e.reduce(function(t,e){return e(t)},t)}},unitize:function unitize(e,r){return function(t){return e(parseFloat(t))+(r||Ia(t))}},interpolate:function interpolate(e,r,t,i){var a=isNaN(e+r)?0:function(t){return(1-t)*e+t*r};if(!a){var s,o,u,h,l,f=n(e),p={};if(!0===t&&(i=1)&&(t=null),f)e={p:e},r={p:r};else if(W(e)&&!W(r)){for(u=[],h=e.length,l=h-2,o=1;o<h;o++)u.push(interpolate(e[o-1],e[o]));h--,a=function func(t){t*=h;var e=Math.min(l,~~t);return u[e](t-e)},t=r}else i||(e=dt(W(e)?[]:{},e));if(!u){for(s in r)Lt.call(p,e,s,"get",r[s]);a=function func(t){return $t(t,p)||(f?e.p:e)}}}return Ga(t,a)},shuffle:Oa},install:K,effects:lt,ticker:Mt,updateRoot:Bt.updateRoot,plugins:ht,globalTimeline:R,core:{PropTween:ee,globals:N,Tween:Vt,Timeline:Bt,Animation:Et,getCache:Z}};_("to,from,fromTo,delayedCall,set,killTweensOf",function(t){return re[t]=Vt[t]}),Mt.add(Bt.updateRoot),d=re.to({},{duration:0});function dc(t,e){for(var r=t._pt;r&&r.p!==e&&r.op!==e&&r.fp!==e;)r=r._next;return r}function fc(t,a){return{name:t,rawVars:1,init:function init(t,i,e){e._onInit=function(t){var e,r;if(n(i)&&(e={},_(i,function(t){return e[t]=1}),i=e),a){for(r in e={},i)e[r]=a(i[r]);i=e}!function _addModifiers(t,e){var r,n,i,a=t._targets;for(r in e)for(n=a.length;n--;)(i=(i=t._ptLookup[n][r])&&i.d)&&(i._pt&&(i=dc(i,r)),i&&i.modifier&&i.modifier(e[r],t,a[n],r))}(t,i)}}}}var ne=re.registerPlugin({name:"attr",init:function init(t,e,r,n,i){for(var a in e)this.add(t,"setAttribute",(t.getAttribute(a)||0)+"",e[a],n,i,0,0,a),this._props.push(a)}},{name:"endArray",init:function init(t,e){for(var r=e.length;r--;)this.add(t,r,t[r]||0,e[r])}},fc("roundProps",Qa),fc("modifiers"),fc("snap",Ra))||re;Vt.version=Bt.version=ne.version="3.2.0",f=1,t()&&Pt();function Qc(t,e){return e.set(e.t,e.p,Math.round(1e4*(e.s+e.c*t))/1e4+e.u,e)}function Rc(t,e){return e.set(e.t,e.p,1===t?e.e:Math.round(1e4*(e.s+e.c*t))/1e4+e.u,e)}function Sc(t,e){return e.set(e.t,e.p,t?Math.round(1e4*(e.s+e.c*t))/1e4+e.u:e.b,e)}function Tc(t,e){var r=e.s+e.c*t;e.set(e.t,e.p,~~(r+(r<0?-.5:.5))+e.u,e)}function Uc(t,e){return e.set(e.t,e.p,t?e.e:e.b,e)}function Vc(t,e){return e.set(e.t,e.p,1!==t?e.b:e.e,e)}function Wc(t,e,r){return t.style[e]=r}function Xc(t,e,r){return t.style.setProperty(e,r)}function Yc(t,e,r){return t._gsap[e]=r}function Zc(t,e,r){return t._gsap.scaleX=t._gsap.scaleY=r}function $c(t,e,r,n,i){var a=t._gsap;a.scaleX=a.scaleY=r,a.renderTransform(i,a)}function _c(t,e,r,n,i){var a=t._gsap;a[e]=r,a.renderTransform(i,a)}function dd(t,e){var r=ae.createElementNS?ae.createElementNS((e||"http://www.w3.org/1999/xhtml").replace(/^https/,"http"),t):ae.createElement(t);return r.style?r:ae.createElement(t)}function ed(t,e,r){var n=getComputedStyle(t);return n[e]||n.getPropertyValue(e.replace(Re,"-$1").toLowerCase())||n.getPropertyValue(e)||!r&&ed(t,Ne(e)||e,1)||""}function hd(){!function _windowExists(){return"undefined"!=typeof window}()||(ie=window,ae=ie.document,se=ae.documentElement,ue=dd("div")||{style:{}},he=dd("div"),Le=Ne(Le),qe=Ne(qe),ue.style.cssText="border-width:0;line-height:0;position:absolute;padding:0",fe=!!Ne("perspective"),oe=1)}function jd(t,e){for(var r=e.length;r--;)if(t.hasAttribute(e[r]))return t.getAttribute(e[r])}function kd(e){var r;try{r=e.getBBox()}catch(t){r=function _getBBoxHack(t){var e,r=dd("svg",this.ownerSVGElement&&this.ownerSVGElement.getAttribute("xmlns")||"http://www.w3.org/2000/svg"),n=this.parentNode,i=this.nextSibling,a=this.style.cssText;if(se.appendChild(r),r.appendChild(this),this.style.display="block",t)try{e=this.getBBox(),this._gsapBBox=this.getBBox,this.getBBox=_getBBoxHack}catch(t){}else this._gsapBBox&&(e=this._gsapBBox());return i?n.insertBefore(this,i):n.appendChild(this),se.removeChild(r),this.style.cssText=a,e}.call(e,!0)}return!r||r.width||r.x||r.y?r:{x:+jd(e,["x","cx","x1"])||0,y:+jd(e,["y","cy","y1"])||0,width:0,height:0}}function ld(t){return!(!t.getCTM||t.parentNode&&!t.ownerSVGElement||!kd(t))}function md(t,e){if(e){var r=t.style;e in Ae&&(e=Le),r.removeProperty?("ms"!==e.substr(0,2)&&"webkit"!==e.substr(0,6)||(e="-"+e),r.removeProperty(e.replace(Re,"-$1").toLowerCase())):r.removeAttribute(e)}}function nd(t,e,r,n,i,a){var s=new ee(t._pt,e,r,0,1,a?Vc:Uc);return(t._pt=s).b=n,s.e=i,t._props.push(r),s}function pd(t,e,r,n){var i,a,s,o,u=parseFloat(r)||0,h=(r+"").trim().substr((u+"").length)||"px",l=ue.style,f=Ee.test(e),p="svg"===t.tagName.toLowerCase(),c=(p?"client":"offset")+(f?"Width":"Height"),d="px"===n;return n===h||!u||Ue[n]||Ue[h]?u:(o=t.getCTM&&ld(t),"%"===n&&(Ae[e]||~e.indexOf("adius"))?aa(u/(o?t.getBBox()[f?"width":"height"]:t[c])*100):(l[f?"width":"height"]=100+(d?h:n),a=~e.indexOf("adius")||"em"===n&&t.appendChild&&!p?t:t.parentNode,o&&(a=(t.ownerSVGElement||{}).parentNode),a&&a!==ae&&a.appendChild||(a=ae.body),(s=a._gsap)&&"%"===n&&s.width&&f&&s.time===Mt.time?aa(u/s.width*100):(a===t&&(l.position="static"),a.appendChild(ue),i=ue[c],a.removeChild(ue),l.position="absolute",f&&"%"===n&&((s=Z(a)).time=Mt.time,s.width=a[c]),aa(d?i*u/100:100/i*u))))}function qd(t,e,r,n){var i;return oe||hd(),e in Ie&&"transform"!==e&&~(e=Ie[e]).indexOf(",")&&(e=e.split(",")[0]),Ae[e]&&"transform"!==e?(i=Ge(t,n),i="transformOrigin"!==e?i[e]:Qe(ed(t,qe))+" "+i.zOrigin+"px"):(i=t.style[e])&&"auto"!==i&&!n&&!~(i+"").indexOf("calc(")||(i=je[e]&&je[e](t,e,r)||ed(t,e)||$(t,e)||("opacity"===e?1:0)),r&&!~(i+"").indexOf(" ")?pd(t,e,i,r)+r:i}function rd(t,e,r,n){if(!r||"none"===r){var i=Ne(e,t,1),a=i&&ed(t,i,1);a&&a!==r&&(e=i,r=a)}var s,o,u,h,l,f,p,c,d,_,m,g,v=new ee(this._pt,t.style,e,0,1,Ht),y=0,T=0;if(v.b=r,v.e=n,r+="","auto"===(n+="")&&(t.style[e]=n,n=ed(t,e)||n,t.style[e]=r),nb(s=[r,n]),n=s[1],u=(r=s[0]).match(tt)||[],(n.match(tt)||[]).length){for(;o=tt.exec(n);)p=o[0],d=n.substring(y,o.index),l?l=(l+1)%5:"rgba("!==d.substr(-5)&&"hsla("!==d.substr(-5)||(l=1),p!==(f=u[T++]||"")&&(h=parseFloat(f)||0,m=f.substr((h+"").length),(g="="===p.charAt(1)?+(p.charAt(0)+"1"):0)&&(p=p.substr(2)),c=parseFloat(p),_=p.substr((c+"").length),y=tt.lastIndex-_.length,_||(_=_||U.units[e]||m,y===n.length&&(n+=_,v.e+=_)),m!==_&&(h=pd(t,e,f,_)||0),v._pt={_next:v._pt,p:d||1===T?d:",",s:h,c:g?g*c:c-h,m:l&&l<4?Math.round:0});v.c=y<n.length?n.substring(y,n.length):""}else v.r="display"===e&&"none"===n?Vc:Uc;return nt.test(n)&&(v.e=0),this._pt=v}function td(t){var e=t.split(" "),r=e[0],n=e[1]||"50%";return"top"!==r&&"bottom"!==r&&"left"!==n&&"right"!==n||(t=r,r=n,n=t),e[0]=Ve[r]||r,e[1]=Ve[n]||n,e.join(" ")}function ud(t,e){if(e.tween&&e.tween._time===e.tween._dur){var r,n,i,a=e.t,s=a.style,o=e.u;if("all"===o||!0===o)s.cssText="",n=1;else for(i=(o=o.split(",")).length;-1<--i;)r=o[i],Ae[r]&&(n=1,r="transformOrigin"===r?qe:Le),md(a,r);n&&(md(a,Le),(n=a._gsap)&&(n.svg&&a.removeAttribute("transform"),Ge(a,1)))}}function yd(t){return"matrix(1, 0, 0, 1, 0, 0)"===t||"none"===t||!t}function zd(t){var e=ed(t,Le);return yd(e)?Xe:e.substr(7).match(J).map(aa)}function Ad(t,e){var r,n,i,a,s=t._gsap,o=t.style,u=zd(t);return s.svg&&t.getAttribute("transform")?"1,0,0,1,0,0"===(u=[(i=t.transform.baseVal.consolidate().matrix).a,i.b,i.c,i.d,i.e,i.f]).join(",")?Xe:u:(u!==Xe||t.offsetParent||t===se||s.svg||(i=o.display,o.display="block",(r=t.parentNode)&&t.offsetParent||(a=1,n=t.nextSibling,se.appendChild(t)),u=zd(t),i?o.display=i:md(t,"display"),a&&(n?r.insertBefore(t,n):r?r.appendChild(t):se.removeChild(t))),e&&6<u.length?[u[0],u[1],u[4],u[5],u[12],u[13]]:u)}function Bd(t,e,r,n,i,a){var s,o,u,h=t._gsap,l=i||Ad(t,!0),f=h.xOrigin||0,p=h.yOrigin||0,c=h.xOffset||0,d=h.yOffset||0,_=l[0],m=l[1],g=l[2],v=l[3],y=l[4],T=l[5],b=e.split(" "),w=parseFloat(b[0])||0,x=parseFloat(b[1])||0;r?l!==Xe&&(o=_*v-m*g)&&(u=w*(-m/o)+x*(_/o)-(_*T-m*y)/o,w=w*(v/o)+x*(-g/o)+(g*T-v*y)/o,x=u):(w=(s=kd(t)).x+(~b[0].indexOf("%")?w/100*s.width:w),x=s.y+(~(b[1]||b[0]).indexOf("%")?x/100*s.height:x)),n||!1!==n&&h.smooth?(y=w-f,T=x-p,h.xOffset=c+(y*_+T*g)-y,h.yOffset=d+(y*m+T*v)-T):h.xOffset=h.yOffset=0,h.xOrigin=w,h.yOrigin=x,h.smooth=!!n,h.origin=e,h.originIsAbsolute=!!r,t.style[qe]="0px 0px",a&&(nd(a,h,"xOrigin",f,w),nd(a,h,"yOrigin",p,x),nd(a,h,"xOffset",c,h.xOffset),nd(a,h,"yOffset",d,h.yOffset))}function Ed(t,e,r){var n=Ia(e);return aa(parseFloat(e)+parseFloat(pd(t,"x",r+"px",n)))+n}function Ld(t,e,r,i,a,s){var o,u,h=360,l=n(a),f=parseFloat(a)*(l&&~a.indexOf("rad")?Fe:1),p=s?f*s:f-i,c=i+p+"deg";return l&&("short"===(o=a.split("_")[1])&&(p%=h)!==p%180&&(p+=p<0?h:-h),"cw"===o&&p<0?p=(p+36e9)%h-~~(p/h)*h:"ccw"===o&&0<p&&(p=(p-36e9)%h-~~(p/h)*h)),t._pt=u=new ee(t._pt,e,r,i,p,Rc),u.e=c,u.u="deg",t._props.push(r),u}function Md(t,e,r){var n,i,a,s,o,u,h,l=he.style,f=r._gsap;for(i in l.cssText=getComputedStyle(r).cssText+";position:absolute;display:block;",l[Le]=e,ae.body.appendChild(he),n=Ge(he,1),Ae)(a=f[i])!==(s=n[i])&&"perspective,force3D,transformOrigin,svgOrigin".indexOf(i)<0&&(o=Ia(a)!==(h=Ia(s))?pd(r,i,a,h):parseFloat(a),u=parseFloat(s),t._pt=new ee(t._pt,f,i,o,u-o,Qc),t._pt.u=h||0,t._props.push(i));ae.body.removeChild(he)}var ie,ae,se,oe,ue,he,le,fe,pe=Ct.Power0,ce=Ct.Power1,de=Ct.Power2,_e=Ct.Power3,me=Ct.Power4,ge=Ct.Linear,ve=Ct.Quad,ye=Ct.Cubic,Te=Ct.Quart,be=Ct.Quint,we=Ct.Strong,xe=Ct.Elastic,ke=Ct.Back,Oe=Ct.SteppedEase,Me=Ct.Bounce,Pe=Ct.Sine,Ce=Ct.Expo,Se=Ct.Circ,Ae={},Fe=180/Math.PI,De=Math.PI/180,ze=Math.atan2,Re=/([A-Z])/g,Ee=/(?:left|right|width|margin|padding|x)/i,Be=/[\s,\(]\S/,Ie={autoAlpha:"opacity,visibility",scale:"scaleX,scaleY",alpha:"opacity"},Le="transform",qe=Le+"Origin",Ye="O,Moz,ms,Ms,Webkit".split(","),Ne=function _checkPropPrefix(t,e,r){var n=(e||ue).style,i=5;if(t in n&&!r)return t;for(t=t.charAt(0).toUpperCase()+t.substr(1);i--&&!(Ye[i]+t in n););return i<0?null:(3===i?"ms":0<=i?Ye[i]:"")+t},Ue={deg:1,rad:1,turn:1},Ve={top:"0%",bottom:"100%",left:"0%",right:"100%",center:"50%"},je={clearProps:function clearProps(t,e,r,n,i){if("isFromStart"!==i.data){var a=t._pt=new ee(t._pt,e,r,0,0,ud);return a.u=n,a.pr=-10,a.tween=i,t._props.push(r),1}}},Xe=[1,0,0,1,0,0],Ze={},Ge=function _parseTransform(t,e){var r=t._gsap||new Rt(t);if("x"in r&&!e&&!r.uncache)return r;var n,i,a,s,o,u,h,l,f,p,c,d,_,m,g,v,y,T,b,w,x,k,O,M,P,C,S,A,F,D,z=t.style,R=r.scaleX<0,E=r.xOrigin||0,B=r.yOrigin||0,I="deg",L=ed(t,qe)||"0";return n=i=a=u=h=l=f=p=c=0,s=o=1,r.svg=!(!t.getCTM||!ld(t)),d=Ad(t,r.svg),r.svg&&Bd(t,L,r.originIsAbsolute,!1!==r.smooth,d),d!==Xe&&(v=d[0],y=d[1],T=d[2],b=d[3],n=w=d[4],i=x=d[5],6===d.length?(s=Math.sqrt(v*v+y*y),o=Math.sqrt(b*b+T*T),u=v||y?ze(y,v)*Fe:0,f=T||b?ze(T,b)*Fe+u:0,r.svg&&(n-=E-(E*v+B*T),i-=B-(E*y+B*b))):(D=d[6],A=d[7],P=d[8],C=d[9],S=d[10],F=d[11],n=d[12],i=d[13],a=d[14],h=(_=ze(D,S))*Fe,_&&(k=w*(m=Math.cos(-_))+P*(g=Math.sin(-_)),O=x*m+C*g,M=D*m+S*g,P=w*-g+P*m,C=x*-g+C*m,S=D*-g+S*m,F=A*-g+F*m,w=k,x=O,D=M),l=(_=ze(-T,S))*Fe,_&&(m=Math.cos(-_),F=b*(g=Math.sin(-_))+F*m,v=k=v*m-P*g,y=O=y*m-C*g,T=M=T*m-S*g),u=(_=ze(y,v))*Fe,_&&(k=v*(m=Math.cos(_))+y*(g=Math.sin(_)),O=w*m+x*g,y=y*m-v*g,x=x*m-w*g,v=k,w=O),h&&359.9<Math.abs(h)+Math.abs(u)&&(h=u=0,l=180-l),s=aa(Math.sqrt(v*v+y*y+T*T)),o=aa(Math.sqrt(x*x+D*D)),_=ze(w,x),f=2e-4<Math.abs(_)?_*Fe:0,c=F?1/(F<0?-F:F):0),r.svg&&(d=t.getAttribute("transform"),r.forceCSS=t.setAttribute("transform","")||!yd(ed(t,Le)),d&&t.setAttribute("transform",d))),90<Math.abs(f)&&Math.abs(f)<270&&(R?(s*=-1,f+=u<=0?180:-180,u+=u<=0?180:-180):(o*=-1,f+=f<=0?180:-180)),r.x=((r.xPercent=n&&Math.round(t.offsetWidth/2)===Math.round(-n)?-50:0)?0:n)+"px",r.y=((r.yPercent=i&&Math.round(t.offsetHeight/2)===Math.round(-i)?-50:0)?0:i)+"px",r.z=a+"px",r.scaleX=aa(s),r.scaleY=aa(o),r.rotation=aa(u)+I,r.rotationX=aa(h)+I,r.rotationY=aa(l)+I,r.skewX=f+I,r.skewY=p+I,r.transformPerspective=c+"px",(r.zOrigin=parseFloat(L.split(" ")[2])||0)&&(z[qe]=Qe(L)),r.xOffset=r.yOffset=0,r.force3D=U.force3D,r.renderTransform=r.svg?tr:fe?Je:We,r.uncache=0,r},Qe=function _firstTwoOnly(t){return(t=t.split(" "))[0]+" "+t[1]},We=function _renderNon3DTransforms(t,e){e.z="0px",e.rotationY=e.rotationX="0deg",e.force3D=0,Je(t,e)},He="0deg",$e="0px",Ke=") ",Je=function _renderCSSTransforms(t,e){var r=e||this,n=r.xPercent,i=r.yPercent,a=r.x,s=r.y,o=r.z,u=r.rotation,h=r.rotationY,l=r.rotationX,f=r.skewX,p=r.skewY,c=r.scaleX,d=r.scaleY,_=r.transformPerspective,m=r.force3D,g=r.target,v=r.zOrigin,y="",T="auto"===m&&t&&1!==t||!0===m;if(v&&(l!==He||h!==He)){var b,w=parseFloat(h)*De,x=Math.sin(w),k=Math.cos(w);w=parseFloat(l)*De,b=Math.cos(w),a=Ed(g,a,x*b*-v),s=Ed(g,s,-Math.sin(w)*-v),o=Ed(g,o,k*b*-v+v)}_!==$e&&(y+="perspective("+_+Ke),(n||i)&&(y+="translate("+n+"%, "+i+"%) "),!T&&a===$e&&s===$e&&o===$e||(y+=o!==$e||T?"translate3d("+a+", "+s+", "+o+") ":"translate("+a+", "+s+Ke),u!==He&&(y+="rotate("+u+Ke),h!==He&&(y+="rotateY("+h+Ke),l!==He&&(y+="rotateX("+l+Ke),f===He&&p===He||(y+="skew("+f+", "+p+Ke),1===c&&1===d||(y+="scale("+c+", "+d+Ke),g.style[Le]=y||"translate(0, 0)"},tr=function _renderSVGTransforms(t,e){var r,n,i,a,s,o=e||this,u=o.xPercent,h=o.yPercent,l=o.x,f=o.y,p=o.rotation,c=o.skewX,d=o.skewY,_=o.scaleX,m=o.scaleY,g=o.target,v=o.xOrigin,y=o.yOrigin,T=o.xOffset,b=o.yOffset,w=o.forceCSS,x=parseFloat(l),k=parseFloat(f);p=parseFloat(p),c=parseFloat(c),(d=parseFloat(d))&&(c+=d=parseFloat(d),p+=d),p||c?(p*=De,c*=De,r=Math.cos(p)*_,n=Math.sin(p)*_,i=Math.sin(p-c)*-m,a=Math.cos(p-c)*m,c&&(d*=De,s=Math.tan(c-d),i*=s=Math.sqrt(1+s*s),a*=s,d&&(s=Math.tan(d),r*=s=Math.sqrt(1+s*s),n*=s)),r=aa(r),n=aa(n),i=aa(i),a=aa(a)):(r=_,a=m,n=i=0),(x&&!~(l+"").indexOf("px")||k&&!~(f+"").indexOf("px"))&&(x=pd(g,"x",l,"px"),k=pd(g,"y",f,"px")),(v||y||T||b)&&(x=aa(x+v-(v*r+y*i)+T),k=aa(k+y-(v*n+y*a)+b)),(u||h)&&(s=g.getBBox(),x=aa(x+u/100*s.width),k=aa(k+h/100*s.height)),s="matrix("+r+","+n+","+i+","+a+","+x+","+k+")",g.setAttribute("transform",s),w&&(g.style[Le]=s)};_("padding,margin,Width,Radius",function(e,r){var t="Right",n="Bottom",i="Left",o=(r<3?["Top",t,n,i]:["Top"+i,"Top"+t,n+t,n+i]).map(function(t){return r<2?e+t:"border"+t+e});je[1<r?"border"+e:e]=function(e,t,r,n,i){var a,s;if(arguments.length<4)return a=o.map(function(t){return qd(e,t,r)}),5===(s=a.join(" ")).split(a[0]).length?a[0]:s;a=(n+"").split(" "),s={},o.forEach(function(t,e){return s[t]=a[e]=a[e]||a[(e-1)/2|0]}),e.init(t,s,i)}});var er,rr,nr,ir={name:"css",register:hd,targetTest:function targetTest(t){return t.style&&t.nodeType},init:function init(t,e,r,n,i){var a,s,o,u,h,l,f,p,c,d,_,m,g,v,y,T=this._props,b=t.style;for(f in oe||hd(),e)if("autoRound"!==f&&(s=e[f],!ht[f]||!Ib(f,e,r,n,t,i)))if(h=typeof s,l=je[f],"function"===h&&
3529(h=typeof(s=s.call(r,n,t,i))),"string"===h&&~s.indexOf("random(")&&(s=Za(s)),l)l(this,t,f,s,r)&&(y=1);else if("--"===f.substr(0,2))this.add(b,"setProperty",getComputedStyle(t).getPropertyValue(f)+"",s+"",n,i,0,0,f);else{if(a=qd(t,f),u=parseFloat(a),(d="string"===h&&"="===s.charAt(1)?+(s.charAt(0)+"1"):0)&&(s=s.substr(2)),o=parseFloat(s),f in Ie&&("autoAlpha"===f&&(1===u&&"hidden"===qd(t,"visibility")&&o&&(u=0),nd(this,b,"visibility",u?"inherit":"hidden",o?"inherit":"hidden",!o)),"scale"!==f&&"transform"!==f&&~(f=Ie[f]).indexOf(",")&&(f=f.split(",")[0])),_=f in Ae)if(m||((g=t._gsap).renderTransform||Ge(t),v=!1!==e.smoothOrigin&&g.smooth,(m=this._pt=new ee(this._pt,b,Le,0,1,g.renderTransform,g,0,-1)).dep=1),"scale"===f)this._pt=new ee(this._pt,g,"scaleY",g.scaleY,d?d*o:o-g.scaleY),T.push("scaleY",f),f+="X";else{if("transformOrigin"===f){s=td(s),g.svg?Bd(t,s,0,v,0,this):((c=parseFloat(s.split(" ")[2]))!==g.zOrigin&&nd(this,g,"zOrigin",g.zOrigin,c),nd(this,b,f,Qe(a),Qe(s)));continue}if("svgOrigin"===f){Bd(t,s,1,v,0,this);continue}if(f in Ze){Ld(this,g,f,u,s,d);continue}if("smoothOrigin"===f){nd(this,g,"smooth",g.smooth,s);continue}if("force3D"===f){g[f]=s;continue}if("transform"===f){Md(this,s,t);continue}}else f in b||(f=Ne(f)||f);if(_||(o||0===o)&&(u||0===u)&&!Be.test(s)&&f in b)(p=(a+"").substr((u+"").length))!==(c=(s+"").substr((o+"").length)||(f in U.units?U.units[f]:p))&&(u=pd(t,f,a,c)),this._pt=new ee(this._pt,_?g:b,f,u,d?d*o:o-u,"px"!==c||!1===e.autoRound||_?Qc:Tc),this._pt.u=c||0,p!==c&&(this._pt.b=a,this._pt.r=Sc);else if(f in b)rd.call(this,t,f,a,s);else{if(!(f in t)){L(f,s);continue}this.add(t,f,t[f],s,n,i)}T.push(f)}y&&te(this)},get:qd,aliases:Ie,getSetter:function getSetter(t,e,r){var n=Ie[e];return n&&n.indexOf(",")<0&&(e=n),e in Ae&&e!==qe&&(t._gsap.x||qd(t,"x"))?r&&le===r?"scale"===e?Zc:Yc:(le=r||{})&&("scale"===e?$c:_c):t.style&&!q(t.style[e])?Wc:~e.indexOf("-")?Xc:Gt(t,e)}};ne.utils.checkPrefix=Ne,nr=_((er="x,y,z,scale,scaleX,scaleY,xPercent,yPercent")+","+(rr="rotation,rotationX,rotationY,skewX,skewY")+",transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective",function(t){Ae[t]=1}),_(rr,function(t){U.units[t]="deg",Ze[t]=1}),Ie[nr[13]]=er+","+rr,_("0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY",function(t){var e=t.split(":");Ie[e[1]]=nr[e[0]]}),_("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective",function(t){U.units[t]="px"}),ne.registerPlugin(ir);var ar=ne.registerPlugin(ir)||ne,sr=ar.core.Tween;e.Back=ke,e.Bounce=Me,e.CSSPlugin=ir,e.Circ=Se,e.Cubic=ye,e.Elastic=xe,e.Expo=Ce,e.Linear=ge,e.Power0=pe,e.Power1=ce,e.Power2=de,e.Power3=_e,e.Power4=me,e.Quad=ve,e.Quart=Te,e.Quint=be,e.Sine=Pe,e.SteppedEase=Oe,e.Strong=we,e.TimelineLite=Bt,e.TimelineMax=Bt,e.TweenLite=Vt,e.TweenMax=sr,e.default=ar,e.gsap=ar;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}}); 3530//# sourceMappingURL=gsap.min.js.map 3531 3532/*! ScrollMagic v2.0.7 | (c) 2019 Jan Paepke (@janpaepke) | license & info: http://scrollmagic.io */ 3533!function(e,n){"function"==typeof define&&define.amd?define(["ScrollMagic","TweenMax","TimelineMax"],n):"object"==typeof exports?(require("gsap"),n(require("scrollmagic"),TweenMax,TimelineMax)):n(e.ScrollMagic||e.jQuery&&e.jQuery.ScrollMagic,e.TweenMax||e.TweenLite,e.TimelineMax||e.TimelineLite)}(this,function(e,s,u){"use strict";e.Scene.addOption("tweenChanges",!1,function(e){return!!e}),e.Scene.extend(function(){var i,o=this;o.on("progress.plugin_gsap",function(){a()}),o.on("destroy.plugin_gsap",function(e){o.removeTween(e.reset)});var a=function(){if(i){var e=o.progress(),n=o.state();i.repeat&&-1===i.repeat()?"DURING"===n&&i.paused()?i.play():"DURING"===n||i.paused()||i.pause():e!=i.progress()&&(0===o.duration()?0<e?i.play():i.reverse():o.tweenChanges()&&i.tweenTo?i.tweenTo(e*i.duration()):i.progress(e).pause())}};o.setTween=function(e,n,r){var t;1<arguments.length&&(arguments.length<3&&(r=n,n=1),e=s.to(e,n,r));try{(t=u?new u({smoothChildTiming:!0}).add(e):e).pause()}catch(e){return o}return i&&o.removeTween(),i=t,e.repeat&&-1===e.repeat()&&(i.repeat(-1),i.yoyo(e.yoyo())),a(),o},o.removeTween=function(e){return i&&(e&&i.progress(0).pause(),i.kill(),i=void 0),o}})}); 3534/*! 3535 * VERSION: 2.1.3 3536 * DATE: 2019-05-17 3537 * UPDATES AND DOCS AT: http://greensock.com 3538 * 3539 * @license Copyright (c) 2008-2019, GreenSock. All rights reserved. 3540 * This work is subject to the terms at http://greensock.com/standard-license or for
vendor: 8,276 bytes, lines 3541-3545
3541 * Club GreenSock members, the software agreement that was issued with your membership. 3542 * 3543 * @author: Jack Doyle, [email protected] 3544 */ 3545!function(a,b){"use strict";var c={},d=a.document,e=a.GreenSockGlobals=a.GreenSockGlobals||a,f=e[b];if(f)return"undefined"!=typeof module&&module.exports&&(module.exports=f),f;var g,h,i,j,k,l=function(a){var b,c=a.split("."),d=e;for(b=0;b<c.length;b++)d[c[b]]=d=d[c[b]]||{};return d},m=l("com.greensock"),n=1e-8,o=function(a){var b,c=[],d=a.length;for(b=0;b!==d;c.push(a[b++]));return c},p=function(){},q=function(){var a=Object.prototype.toString,b=a.call([]);return function(c){return null!=c&&(c instanceof Array||"object"==typeof c&&!!c.push&&a.call(c)===b)}}(),r={},s=function(d,f,g,h){this.sc=r[d]?r[d].sc:[],r[d]=this,this.gsClass=null,this.func=g;var i=[];this.check=function(j){for(var k,m,n,o,p=f.length,q=p;--p>-1;)(k=r[f[p]]||new s(f[p],[])).gsClass?(i[p]=k.gsClass,q--):j&&k.sc.push(this);if(0===q&&g){if(m=("com.greensock."+d).split("."),n=m.pop(),o=l(m.join("."))[n]=this.gsClass=g.apply(g,i),h)if(e[n]=c[n]=o,"undefined"!=typeof module&&module.exports)if(d===b){module.exports=c[b]=o;for(p in c)o[p]=c[p]}else c[b]&&(c[b][n]=o);else"function"==typeof define&&define.amd&&define((a.GreenSockAMDPath?a.GreenSockAMDPath+"/":"")+d.split(".").pop(),[],function(){return o});for(p=0;p<this.sc.length;p++)this.sc[p].check()}},this.check(!0)},t=a._gsDefine=function(a,b,c,d){return new s(a,b,c,d)},u=m._class=function(a,b,c){return b=b||function(){},t(a,[],function(){return b},c),b};t.globals=e;var v=[0,0,1,1],w=u("easing.Ease",function(a,b,c,d){this._func=a,this._type=c||0,this._power=d||0,this._params=b?v.concat(b):v},!0),x=w.map={},y=w.register=function(a,b,c,d){for(var e,f,g,h,i=b.split(","),j=i.length,k=(c||"easeIn,easeOut,easeInOut").split(",");--j>-1;)for(f=i[j],e=d?u("easing."+f,null,!0):m.easing[f]||{},g=k.length;--g>-1;)h=k[g],x[f+"."+h]=x[h+f]=e[h]=a.getRatio?a:a[h]||new a};for(i=w.prototype,i._calcEnd=!1,i.getRatio=function(a){if(this._func)return this._params[0]=a,this._func.apply(null,this._params);var b=this._type,c=this._power,d=1===b?1-a:2===b?a:.5>a?2*a:2*(1-a);return 1===c?d*=d:2===c?d*=d*d:3===c?d*=d*d*d:4===c&&(d*=d*d*d*d),1===b?1-d:2===b?d:.5>a?d/2:1-d/2},g=["Linear","Quad","Cubic","Quart","Quint,Strong"],h=g.length;--h>-1;)i=g[h]+",Power"+h,y(new w(null,null,1,h),i,"easeOut",!0),y(new w(null,null,2,h),i,"easeIn"+(0===h?",easeNone":"")),y(new w(null,null,3,h),i,"easeInOut");x.linear=m.easing.Linear.easeIn,x.swing=m.easing.Quad.easeInOut;var z=u("events.EventDispatcher",function(a){this._listeners={},this._eventTarget=a||this});i=z.prototype,i.addEventListener=function(a,b,c,d,e){e=e||0;var f,g,h=this._listeners[a],i=0;for(this!==j||k||j.wake(),null==h&&(this._listeners[a]=h=[]),g=h.length;--g>-1;)f=h[g],f.c===b&&f.s===c?h.splice(g,1):0===i&&f.pr<e&&(i=g+1);h.splice(i,0,{c:b,s:c,up:d,pr:e})},i.removeEventListener=function(a,b){var c,d=this._listeners[a];if(d)for(c=d.length;--c>-1;)if(d[c].c===b)return void d.splice(c,1)},i.dispatchEvent=function(a){var b,c,d,e=this._listeners[a];if(e)for(b=e.length,b>1&&(e=e.slice(0)),c=this._eventTarget;--b>-1;)d=e[b],d&&(d.up?d.c.call(d.s||c,{type:a,target:c}):d.c.call(d.s||c))};var A=a.requestAnimationFrame,B=a.cancelAnimationFrame,C=Date.now||function(){return(new Date).getTime()},D=C();for(g=["ms","moz","webkit","o"],h=g.length;--h>-1&&!A;)A=a[g[h]+"RequestAnimationFrame"],B=a[g[h]+"CancelAnimationFrame"]||a[g[h]+"CancelRequestAnimationFrame"];u("Ticker",function(a,b){var c,e,f,g,h,i=this,l=C(),m=b!==!1&&A?"auto":!1,o=500,q=33,r="tick",s=function(a){var b,d,j=C()-D;j>o&&(l+=j-q),D+=j,i.time=(D-l)/1e3,b=i.time-h,(!c||b>0||a===!0)&&(i.frame++,h+=b+(b>=g?.004:g-b),d=!0),a!==!0&&(f=e(s)),d&&i.dispatchEvent(r)};z.call(i),i.time=i.frame=0,i.tick=function(){s(!0)},i.lagSmoothing=function(a,b){return arguments.length?(o=a||1/n,void(q=Math.min(b,o,0))):1/n>o},i.sleep=function(){null!=f&&(m&&B?B(f):clearTimeout(f),e=p,f=null,i===j&&(k=!1))},i.wake=function(a){null!==f?i.sleep():a?l+=-D+(D=C()):i.frame>10&&(D=C()-o+5),e=0===c?p:m&&A?A:function(a){return setTimeout(a,1e3*(h-i.time)+1|0)},i===j&&(k=!0),s(2)},i.fps=function(a){return arguments.length?(c=a,g=1/(c||60),h=this.time+g,void i.wake()):c},i.useRAF=function(a){return arguments.length?(i.sleep(),m=a,void i.fps(c)):m},i.fps(a),setTimeout(function(){"auto"===m&&i.frame<5&&"hidden"!==(d||{}).visibilityState&&i.useRAF(!1)},1500)}),i=m.Ticker.prototype=new m.events.EventDispatcher,i.constructor=m.Ticker;var E=u("core.Animation",function(a,b){if(this.vars=b=b||{},this._duration=this._totalDuration=a||0,this._delay=Number(b.delay)||0,this._timeScale=1,this._active=!!b.immediateRender,this.data=b.data,this._reversed=!!b.reversed,Z){k||j.wake();var c=this.vars.useFrames?Y:Z;c.add(this,c._time),this.vars.paused&&this.paused(!0)}});j=E.ticker=new m.Ticker,i=E.prototype,i._dirty=i._gc=i._initted=i._paused=!1,i._totalTime=i._time=0,i._rawPrevTime=-1,i._next=i._last=i._onUpdate=i._timeline=i.timeline=null,i._paused=!1;var F=function(){k&&C()-D>2e3&&("hidden"!==(d||{}).visibilityState||!j.lagSmoothing())&&j.wake();var a=setTimeout(F,2e3);a.unref&&a.unref()};F(),i.play=function(a,b){return null!=a&&this.seek(a,b),this.reversed(!1).paused(!1)},i.pause=function(a,b){return null!=a&&this.seek(a,b),this.paused(!0)},i.resume=function(a,b){return null!=a&&this.seek(a,b),this.paused(!1)},i.seek=function(a,b){return this.totalTime(Number(a),b!==!1)},i.restart=function(a,b){return this.reversed(!1).paused(!1).totalTime(a?-this._delay:0,b!==!1,!0)},i.reverse=function(a,b){return null!=a&&this.seek(a||this.totalDuration(),b),this.reversed(!0).paused(!1)},i.render=function(a,b,c){},i.invalidate=function(){return this._time=this._totalTime=0,this._initted=this._gc=!1,this._rawPrevTime=-1,(this._gc||!this.timeline)&&this._enabled(!0),this},i.isActive=function(){var a,b=this._timeline,c=this._startTime;return!b||!this._gc&&!this._paused&&b.isActive()&&(a=b.rawTime(!0))>=c&&a<c+this.totalDuration()/this._timeScale-n},i._enabled=function(a,b){return k||j.wake(),this._gc=!a,this._active=this.isActive(),b!==!0&&(a&&!this.timeline?this._timeline.add(this,this._startTime-this._delay):!a&&this.timeline&&this._timeline._remove(this,!0)),!1},i._kill=function(a,b){return this._enabled(!1,!1)},i.kill=function(a,b){return this._kill(a,b),this},i._uncache=function(a){for(var b=a?this:this.timeline;b;)b._dirty=!0,b=b.timeline;return this},i._swapSelfInParams=function(a){for(var b=a.length,c=a.concat();--b>-1;)"{self}"===a[b]&&(c[b]=this);return c},i._callback=function(a){var b=this.vars,c=b[a],d=b[a+"Params"],e=b[a+"Scope"]||b.callbackScope||this,f=d?d.length:0;switch(f){case 0:c.call(e);break;case 1:c.call(e,d[0]);break;case 2:c.call(e,d[0],d[1]);break;default:c.apply(e,d)}},i.eventCallback=function(a,b,c,d){if("on"===(a||"").substr(0,2)){var e=this.vars;if(1===arguments.length)return e[a];null==b?delete e[a]:(e[a]=b,e[a+"Params"]=q(c)&&-1!==c.join("").indexOf("{self}")?this._swapSelfInParams(c):c,e[a+"Scope"]=d),"onUpdate"===a&&(this._onUpdate=b)}return this},i.delay=function(a){return arguments.length?(this._timeline.smoothChildTiming&&this.startTime(this._startTime+a-this._delay),this._delay=a,this):this._delay},i.duration=function(a){return arguments.length?(this._duration=this._totalDuration=a,this._uncache(!0),this._timeline.smoothChildTiming&&this._time>0&&this._time<this._duration&&0!==a&&this.totalTime(this._totalTime*(a/this._duration),!0),this):(this._dirty=!1,this._duration)},i.totalDuration=function(a){return this._dirty=!1,arguments.length?this.duration(a):this._totalDuration},i.time=function(a,b){return arguments.length?(this._dirty&&this.totalDuration(),this.totalTime(a>this._duration?this._duration:a,b)):this._time},i.totalTime=function(a,b,c){if(k||j.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(0>a&&!c&&(a+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var d=this._totalDuration,e=this._timeline;if(a>d&&!c&&(a=d),this._startTime=(this._paused?this._pauseTime:e._time)-(this._reversed?d-a:a)/this._timeScale,e._dirty||this._uncache(!1),e._timeline)for(;e._timeline;)e._timeline._time!==(e._startTime+e._totalTime)/e._timeScale&&e.totalTime(e._totalTime,!0),
vendor: 19,493 bytes, line 3545
3545e=e._timeline}this._gc&&this._enabled(!0,!1),(this._totalTime!==a||0===this._duration)&&(K.length&&_(),this.render(a,b,!1),K.length&&_())}return this},i.progress=i.totalProgress=function(a,b){var c=this.duration();return arguments.length?this.totalTime(c*a,b):c?this._time/c:this.ratio},i.startTime=function(a){return arguments.length?(a!==this._startTime&&(this._startTime=a,this.timeline&&this.timeline._sortChildren&&this.timeline.add(this,a-this._delay)),this):this._startTime},i.endTime=function(a){return this._startTime+(0!=a?this.totalDuration():this.duration())/this._timeScale},i.timeScale=function(a){if(!arguments.length)return this._timeScale;var b,c;for(a=a||n,this._timeline&&this._timeline.smoothChildTiming&&(b=this._pauseTime,c=b||0===b?b:this._timeline.totalTime(),this._startTime=c-(c-this._startTime)*this._timeScale/a),this._timeScale=a,c=this.timeline;c&&c.timeline;)c._dirty=!0,c.totalDuration(),c=c.timeline;return this},i.reversed=function(a){return arguments.length?(a!=this._reversed&&(this._reversed=a,this.totalTime(this._timeline&&!this._timeline.smoothChildTiming?this.totalDuration()-this._totalTime:this._totalTime,!0)),this):this._reversed},i.paused=function(a){if(!arguments.length)return this._paused;var b,c,d=this._timeline;return a!=this._paused&&d&&(k||a||j.wake(),b=d.rawTime(),c=b-this._pauseTime,!a&&d.smoothChildTiming&&(this._startTime+=c,this._uncache(!1)),this._pauseTime=a?b:null,this._paused=a,this._active=this.isActive(),!a&&0!==c&&this._initted&&this.duration()&&(b=d.smoothChildTiming?this._totalTime:(b-this._startTime)/this._timeScale,this.render(b,b===this._totalTime,!0))),this._gc&&!a&&this._enabled(!0,!1),this};var G=u("core.SimpleTimeline",function(a){E.call(this,0,a),this.autoRemoveChildren=this.smoothChildTiming=!0});i=G.prototype=new E,i.constructor=G,i.kill()._gc=!1,i._first=i._last=i._recent=null,i._sortChildren=!1,i.add=i.insert=function(a,b,c,d){var e,f;if(a._startTime=Number(b||0)+a._delay,a._paused&&this!==a._timeline&&(a._pauseTime=this.rawTime()-(a._timeline.rawTime()-a._pauseTime)),a.timeline&&a.timeline._remove(a,!0),a.timeline=a._timeline=this,a._gc&&a._enabled(!0,!0),e=this._last,this._sortChildren)for(f=a._startTime;e&&e._startTime>f;)e=e._prev;return e?(a._next=e._next,e._next=a):(a._next=this._first,this._first=a),a._next?a._next._prev=a:this._last=a,a._prev=e,this._recent=a,this._timeline&&this._uncache(!0),this},i._remove=function(a,b){return a.timeline===this&&(b||a._enabled(!1,!0),a._prev?a._prev._next=a._next:this._first===a&&(this._first=a._next),a._next?a._next._prev=a._prev:this._last===a&&(this._last=a._prev),a._next=a._prev=a.timeline=null,a===this._recent&&(this._recent=this._last),this._timeline&&this._uncache(!0)),this},i.render=function(a,b,c){var d,e=this._first;for(this._totalTime=this._time=this._rawPrevTime=a;e;)d=e._next,(e._active||a>=e._startTime&&!e._paused&&!e._gc)&&(e._reversed?e.render((e._dirty?e.totalDuration():e._totalDuration)-(a-e._startTime)*e._timeScale,b,c):e.render((a-e._startTime)*e._timeScale,b,c)),e=d},i.rawTime=function(){return k||j.wake(),this._totalTime};var H=u("TweenLite",function(b,c,d){if(E.call(this,c,d),this.render=H.prototype.render,null==b)throw"Cannot tween a null target.";this.target=b="string"!=typeof b?b:H.selector(b)||b;var e,f,g,h=b.jquery||b.length&&b!==a&&b[0]&&(b[0]===a||b[0].nodeType&&b[0].style&&!b.nodeType),i=this.vars.overwrite;if(this._overwrite=i=null==i?X[H.defaultOverwrite]:"number"==typeof i?i>>0:X[i],(h||b instanceof Array||b.push&&q(b))&&"number"!=typeof b[0])for(this._targets=g=o(b),this._propLookup=[],this._siblings=[],e=0;e<g.length;e++)f=g[e],f?"string"!=typeof f?f.length&&f!==a&&f[0]&&(f[0]===a||f[0].nodeType&&f[0].style&&!f.nodeType)?(g.splice(e--,1),this._targets=g=g.concat(o(f))):(this._siblings[e]=aa(f,this,!1),1===i&&this._siblings[e].length>1&&ca(f,this,null,1,this._siblings[e])):(f=g[e--]=H.selector(f),"string"==typeof f&&g.splice(e+1,1)):g.splice(e--,1);else this._propLookup={},this._siblings=aa(b,this,!1),1===i&&this._siblings.length>1&&ca(b,this,null,1,this._siblings);(this.vars.immediateRender||0===c&&0===this._delay&&this.vars.immediateRender!==!1)&&(this._time=-n,this.render(Math.min(0,-this._delay)))},!0),I=function(b){return b&&b.length&&b!==a&&b[0]&&(b[0]===a||b[0].nodeType&&b[0].style&&!b.nodeType)},J=function(a,b){var c,d={};for(c in a)W[c]||c in b&&"transform"!==c&&"x"!==c&&"y"!==c&&"width"!==c&&"height"!==c&&"className"!==c&&"border"!==c||!(!T[c]||T[c]&&T[c]._autoCSS)||(d[c]=a[c],delete a[c]);a.css=d};i=H.prototype=new E,i.constructor=H,i.kill()._gc=!1,i.ratio=0,i._firstPT=i._targets=i._overwrittenProps=i._startAt=null,i._notifyPluginsOfEnabled=i._lazy=!1,H.version="2.1.3",H.defaultEase=i._ease=new w(null,null,1,1),H.defaultOverwrite="auto",H.ticker=j,H.autoSleep=120,H.lagSmoothing=function(a,b){j.lagSmoothing(a,b)},H.selector=a.$||a.jQuery||function(b){var c=a.$||a.jQuery;return c?(H.selector=c,c(b)):(d||(d=a.document),d?d.querySelectorAll?d.querySelectorAll(b):d.getElementById("#"===b.charAt(0)?b.substr(1):b):b)};var K=[],L={},M=/(?:(-|-=|\+=)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi,N=/[\+-]=-?[\.\d]/,O=function(a){for(var b,c=this._firstPT,d=1e-6;c;)b=c.blob?1===a&&null!=this.end?this.end:a?this.join(""):this.start:c.c*a+c.s,c.m?b=c.m.call(this._tween,b,this._target||c.t,this._tween):d>b&&b>-d&&!c.blob&&(b=0),c.f?c.fp?c.t[c.p](c.fp,b):c.t[c.p](b):c.t[c.p]=b,c=c._next},P=function(a){return(1e3*a|0)/1e3+""},Q=function(a,b,c,d){var e,f,g,h,i,j,k,l=[],m=0,n="",o=0;for(l.start=a,l.end=b,a=l[0]=a+"",b=l[1]=b+"",c&&(c(l),a=l[0],b=l[1]),l.length=0,e=a.match(M)||[],f=b.match(M)||[],d&&(d._next=null,d.blob=1,l._firstPT=l._applyPT=d),i=f.length,h=0;i>h;h++)k=f[h],j=b.substr(m,b.indexOf(k,m)-m),n+=j||!h?j:",",m+=j.length,o?o=(o+1)%5:"rgba("===j.substr(-5)&&(o=1),k===e[h]||e.length<=h?n+=k:(n&&(l.push(n),n=""),g=parseFloat(e[h]),l.push(g),l._firstPT={_next:l._firstPT,t:l,p:l.length-1,s:g,c:("="===k.charAt(1)?parseInt(k.charAt(0)+"1",10)*parseFloat(k.substr(2)):parseFloat(k)-g)||0,f:0,m:o&&4>o?Math.round:P}),m+=k.length;return n+=b.substr(m),n&&l.push(n),l.setRatio=O,N.test(b)&&(l.end=null),l},R=function(a,b,c,d,e,f,g,h,i){"function"==typeof d&&(d=d(i||0,a));var j,k=typeof a[b],l="function"!==k?"":b.indexOf("set")||"function"!=typeof a["get"+b.substr(3)]?b:"get"+b.substr(3),m="get"!==c?c:l?g?a[l](g):a[l]():a[b],n="string"==typeof d&&"="===d.charAt(1),o={t:a,p:b,s:m,f:"function"===k,pg:0,n:e||b,m:f?"function"==typeof f?f:Math.round:0,pr:0,c:n?parseInt(d.charAt(0)+"1",10)*parseFloat(d.substr(2)):parseFloat(d)-m||0};return("number"!=typeof m||"number"!=typeof d&&!n)&&(g||isNaN(m)||!n&&isNaN(d)||"boolean"==typeof m||"boolean"==typeof d?(o.fp=g,j=Q(m,n?parseFloat(o.s)+o.c+(o.s+"").replace(/[0-9\-\.]/g,""):d,h||H.defaultStringFilter,o),o={t:j,p:"setRatio",s:0,c:1,f:2,pg:0,n:e||b,pr:0,m:0}):(o.s=parseFloat(m),n||(o.c=parseFloat(d)-o.s||0))),o.c?((o._next=this._firstPT)&&(o._next._prev=o),this._firstPT=o,o):void 0},S=H._internals={isArray:q,isSelector:I,lazyTweens:K,blobDif:Q},T=H._plugins={},U=S.tweenLookup={},V=0,W=S.reservedProps={ease:1,delay:1,overwrite:1,onComplete:1,onCompleteParams:1,onCompleteScope:1,useFrames:1,runBackwards:1,startAt:1,onUpdate:1,onUpdateParams:1,onUpdateScope:1,onStart:1,onStartParams:1,onStartScope:1,onReverseComplete:1,onReverseCompleteParams:1,onReverseCompleteScope:1,onRepeat:1,onRepeatParams:1,onRepeatScope:1,easeParams:1,yoyo:1,immediateRender:1,repeat:1,repeatDelay:1,data:1,paused:1,reversed:1,autoCSS:1,lazy:1,onOverwrite:1,callbackScope:1,stringFilter:1,id:1,yoyoEase:1,stagger:1},X={none:0,all:1,auto:2,concurrent:3,allOnStart:4,preexisting:5,"true":1,"false":0},Y=E._rootFramesTimeline=new G,Z=E._rootTimeline=new G,$=30,_=S.lazyRender=function(){var a,b,c=K.length;for(L={},a=0;c>a;a++)b=K[a],b&&b._lazy!==!1&&(b.render(b._lazy[0],b._lazy[1],!0),b._lazy=!1);K.length=0};Z._startTime=j.time,Y._startTime=j.frame,Z._active=Y._active=!0,setTimeout(_,1),E._updateRoot=H.render=function(){var a,b,c;if(K.length&&_(),Z.render((j.time-Z._startTime)*Z._timeScale,!1,!1),Y.render((j.frame-Y._startTime)*Y._timeScale,!1,!1),K.length&&_(),j.frame>=$){$=j.frame+(parseInt(H.autoSleep,10)||120);for(c in U){for(b=U[c].tweens,a=b.length;--a>-1;)b[a]._gc&&b.splice(a,1);0===b.length&&delete U[c]}if(c=Z._first,(!c||c._paused)&&H.autoSleep&&!Y._first&&1===j._listeners.tick.length){for(;c&&c._paused;)c=c._next;c||j.sleep()}}},j.addEventListener("tick",E._updateRoot);var aa=function(a,b,c){var d,e,f=a._gsTweenID;if(U[f||(a._gsTweenID=f="t"+V++)]||(U[f]={target:a,tweens:[]}),b&&(d=U[f].tweens,d[e=d.length]=b,c))for(;--e>-1;)d[e]===b&&d.splice(e,1);return U[f].tweens},ba=function(a,b,c,d){var e,f,g=a.vars.onOverwrite;return g&&(e=g(a,b,c,d)),g=H.onOverwrite,g&&(f=g(a,b,c,d)),e!==!1&&f!==!1},ca=function(a,b,c,d,e){var f,g,h,i;if(1===d||d>=4){for(i=e.length,f=0;i>f;f++)if((h=e[f])!==b)h._gc||h._kill(null,a,b)&&(g=!0);else if(5===d)break;return g}var j,k=b._startTime+n,l=[],m=0,o=0===b._duration;for(f=e.length;--f>-1;)(h=e[f])===b||h._gc||h._paused||(h._timeline!==b._timeline?(j=j||da(b,0,o),0===da(h,j,o)&&(l[m++]=h)):h._startTime<=k&&h._startTime+h.totalDuration()/h._timeScale>k&&((o||!h._initted)&&k-h._startTime<=2*n||(l[m++]=h)));for(f=m;--f>-1;)if(h=l[f],i=h._firstPT,2===d&&h._kill(c,a,b)&&(g=!0),2!==d||!h._firstPT&&h._initted&&i){if(2!==d&&!ba(h,b))continue;h._enabled(!1,!1)&&(g=!0)}return g},da=function(a,b,c){for(var d=a._timeline,e=d._timeScale,f=a._startTime;d._timeline;){if(f+=d._startTime,e*=d._timeScale,d._paused)return-100;d=d._timeline}return f/=e,f>b?f-b:c&&f===b||!a._initted&&2*n>f-b?n:(f+=a.totalDuration()/a._timeScale/e)>b+n?0:f-b-n};i._init=function(){var a,b,c,d,e,f,g=this.vars,h=this._overwrittenProps,i=this._duration,j=!!g.immediateRender,k=g.ease,l=this._startAt;if(g.startAt){l&&(l.render(-1,!0),l.kill()),e={};for(d in g.startAt)e[d]=g.startAt[d];if(e.data="isStart",e.overwrite=!1,e.immediateRender=!0,e.lazy=j&&g.lazy!==!1,e.startAt=e.delay=null,e.onUpdate=g.onUpdate,e.onUpdateParams=g.onUpdateParams,e.onUpdateScope=g.onUpdateScope||g.callbackScope||this,this._startAt=H.to(this.target||{},0,e),j)if(this._time>0)this._startAt=null;else if(0!==i)return}else if(g.runBackwards&&0!==i)if(l)l.render(-1,!0),l.kill(),this._startAt=null;else{0!==this._time&&(j=!1),c={};for(d in g)W[d]&&"autoCSS"!==d||(c[d]=g[d]);if(c.overwrite=0,c.data="isFromStart",c.lazy=j&&g.lazy!==!1,c.immediateRender=j,this._startAt=H.to(this.target,0,c),j){if(0===this._time)return}else this._startAt._init(),this._startAt._enabled(!1),this.vars.immediateRender&&(this._startAt=null)}if(this._ease=k=k?k instanceof w?k:"function"==typeof k?new w(k,g.easeParams):x[k]||H.defaultEase:H.defaultEase,g.easeParams instanceof Array&&k.config&&(this._ease=k.config.apply(k,g.easeParams)),this._easeType=this._ease._type,this._easePower=this._ease._power,this._firstPT=null,this._targets)for(f=this._targets.length,a=0;f>a;a++)this._initProps(this._targets[a],this._propLookup[a]={},this._siblings[a],h?h[a]:null,a)&&(b=!0);else b=this._initProps(this.target,this._propLookup,this._siblings,h,0);if(b&&H._onPluginEvent("_onInitAllProps",this),h&&(this._firstPT||"function"!=typeof this.target&&this._enabled(!1,!1)),g.runBackwards)for(c=this._firstPT;c;)c.s+=c.c,c.c=-c.c,c=c._next;this._onUpdate=g.onUpdate,this._initted=!0},i._initProps=function(b,c,d,e,f){var g,h,i,j,k,l;if(null==b)return!1;L[b._gsTweenID]&&_(),this.vars.css||b.style&&b!==a&&b.nodeType&&T.css&&this.vars.autoCSS!==!1&&J(this.vars,b);for(g in this.vars)if(l=this.vars[g],W[g])l&&(l instanceof Array||l.push&&q(l))&&-1!==l.join("").indexOf("{self}")&&(this.vars[g]=l=this._swapSelfInParams(l,this));else if(T[g]&&(j=new T[g])._onInitTween(b,this.vars[g],this,f)){for(this._firstPT=k={_next:this._firstPT,t:j,p:"setRatio",s:0,c:1,f:1,n:g,pg:1,pr:j._priority,m:0},h=j._overwriteProps.length;--h>-1;)c[j._overwriteProps[h]]=this._firstPT;(j._priority||j._onInitAllProps)&&(i=!0),(j._onDisable||j._onEnable)&&(this._notifyPluginsOfEnabled=!0),k._next&&(k._next._prev=k)}else c[g]=R.call(this,b,g,"get",l,g,0,null,this.vars.stringFilter,f);return e&&this._kill(e,b)?this._initProps(b,c,d,e,f):this._overwrite>1&&this._firstPT&&d.length>1&&ca(b,this,c,this._overwrite,d)?(this._kill(c,b),this._initProps(b,c,d,e,f)):(this._firstPT&&(this.vars.lazy!==!1&&this._duration||this.vars.lazy&&!this._duration)&&(L[b._gsTweenID]=!0),i)},i.render=function(a,b,c){var d,e,f,g,h=this,i=h._time,j=h._duration,k=h._rawPrevTime;if(a>=j-n&&a>=0)h._totalTime=h._time=j,h.ratio=h._ease._calcEnd?h._ease.getRatio(1):1,h._reversed||(d=!0,e="onComplete",c=c||h._timeline.autoRemoveChildren),0===j&&(h._initted||!h.vars.lazy||c)&&(h._startTime===h._timeline._duration&&(a=0),(0>k||0>=a&&a>=-n||k===n&&"isPause"!==h.data)&&k!==a&&(c=!0,k>n&&(e="onReverseComplete")),h._rawPrevTime=g=!b||a||k===a?a:n);else if(n>a)h._totalTime=h._time=0,h.ratio=h._ease._calcEnd?h._ease.getRatio(0):0,(0!==i||0===j&&k>0)&&(e="onReverseComplete",d=h._reversed),a>-n?a=0:0>a&&(h._active=!1,0===j&&(h._initted||!h.vars.lazy||c)&&(k>=0&&(k!==n||"isPause"!==h.data)&&(c=!0),h._rawPrevTime=g=!b||a||k===a?a:n)),(!h._initted||h._startAt&&h._startAt.progress())&&(c=!0);else if(h._totalTime=h._time=a,h._easeType){var l=a/j,m=h._easeType,o=h._easePower;(1===m||3===m&&l>=.5)&&(l=1-l),3===m&&(l*=2),1===o?l*=l:2===o?l*=l*l:3===o?l*=l*l*l:4===o&&(l*=l*l*l*l),h.ratio=1===m?1-l:2===m?l:.5>a/j?l/2:1-l/2}else h.ratio=h._ease.getRatio(a/j);if(h._time!==i||c){if(!h._initted){if(h._init(),!h._initted||h._gc)return;if(!c&&h._firstPT&&(h.vars.lazy!==!1&&h._duration||h.vars.lazy&&!h._duration))return h._time=h._totalTime=i,h._rawPrevTime=k,K.push(h),void(h._lazy=[a,b]);h._time&&!d?h.ratio=h._ease.getRatio(h._time/j):d&&h._ease._calcEnd&&(h.ratio=h._ease.getRatio(0===h._time?0:1))}for(h._lazy!==!1&&(h._lazy=!1),h._active||!h._paused&&h._time!==i&&a>=0&&(h._active=!0),0===i&&(h._startAt&&(a>=0?h._startAt.render(a,!0,c):e||(e="_dummyGS")),h.vars.onStart&&(0!==h._time||0===j)&&(b||h._callback("onStart"))),f=h._firstPT;f;)f.f?f.t[f.p](f.c*h.ratio+f.s):f.t[f.p]=f.c*h.ratio+f.s,f=f._next;h._onUpdate&&(0>a&&h._startAt&&a!==-1e-4&&h._startAt.render(a,!0,c),b||(h._time!==i||d||c)&&h._callback("onUpdate")),e&&(!h._gc||c)&&(0>a&&h._startAt&&!h._onUpdate&&a!==-1e-4&&h._startAt.render(a,!0,c),d&&(h._timeline.autoRemoveChildren&&h._enabled(!1,!1),h._active=!1),!b&&h.vars[e]&&h._callback(e),0===j&&h._rawPrevTime===n&&g!==n&&(h._rawPrevTime=0))}},i._kill=function(a,b,c){if("all"===a&&(a=null),null==a&&(null==b||b===this.target))return this._lazy=!1,this._enabled(!1,!1);b="string"!=typeof b?b||this._targets||this.target:H.selector(b)||b;var d,e,f,g,h,i,j,k,l,m=c&&this._time&&c._startTime===this._startTime&&this._timeline===c._timeline,n=this._firstPT;if((q(b)||I(b))&&"number"!=typeof b[0])for(d=b.length;--d>-1;)this._kill(a,b[d],c)&&(i=!0);else{if(this._targets){for(d=this._targets.length;--d>-1;)if(b===this._targets[d]){h=this._propLookup[d]||{},this._overwrittenProps=this._overwrittenProps||[],e=this._overwrittenProps[d]=a?this._overwrittenProps[d]||{}:"all";break}}else{if(b!==this.target)return!1;h=this._propLookup,e=this._overwrittenProps=a?this._overwrittenProps||{}:"all"}if(h){if(j=a||h,k=a!==e&&"all"!==e&&a!==h&&("object"!=typeof a||!a._tempKill),c&&(H.onOverwrite||this.vars.onOverwrite)){for(f in j)h[f]&&(l||(l=[]),l.push(f));if((l||!a)&&!ba(this,c,b,l))return!1}for(f in j)(g=h[f])&&(m&&(g.f?g.t[g.p](g.s):g.t[g.p]=g.s,i=!0),g.pg&&g.t._kill(j)&&(i=!0),g.pg&&0!==g.t._overwriteProps.length||(g._prev?g._prev._next=g._next:g===this._firstPT&&(this._firstPT=g._next),g._next&&(g._next._prev=g._prev),g._next=g._prev=null),delete h[f]),k&&(e[f]=1);!this._firstPT&&this._initted&&n&&this._enabled(!1,!1)}}return i},i.invalidate=function(){this._notifyPluginsOfEnabled&&H._onPluginEvent("_onDisable",this);var a=this._time;return this._firstPT=this._overwrittenProps=this._startAt=this._onUpdate=null,this._notifyPluginsOfEnabled=this._active=this._lazy=!1,this._propLookup=this._targets?{}:[],E.prototype.invalidate.call(this),this.vars.immediateRender&&(this._time=-n,this.render(a,!1,this.vars.lazy!==!1)),this},i._enabled=function(a,b){if(k||j.wake(),a&&this._gc){var c,d=this._targets;if(d)for(c=d.length;--c>-1;)this._siblings[c]=aa(d[c],this,!0);else this._siblings=aa(this.target,this,!0)}return E.prototype._enabled.call(this,a,b),this._notifyPluginsOfEnabled&&this._firstPT?H._onPluginEvent(a?"_onEnable":"_onDisable",this):!1},H.to=function(a,b,c){return new H(a,b,c)},H.from=function(a,b,c){return c.runBackwards=!0,c.immediateRender=0!=c.immediateRender,new H(a,b,c)},H.fromTo=function(a,b,c,d){return d.startAt=c,d.immediateRender=0!=d.immediateRender&&0!=c.immediateRender,new H(a,b,d)},H.delayedCall=function(a,b,c,d,e){return new H(b,0,{delay:a,onComplete:b,onCompleteParams:c,callbackScope:d,onReverseComplete:b,onReverseCompleteParams:c,immediateRender:!1,lazy:!1,useFrames:e,overwrite:0})},H.set=function(a,b){return new H(a,0,b)},H.getTweensOf=function(a,b){if(null==a)return[];a="string"!=typeof a?a:H.selector(a)||a;var c,d,e,f;if((q(a)||I(a))&&"number"!=typeof a[0]){for(c=a.length,d=[];--c>-1;)d=d.concat(H.getTweensOf(a[c],b));for(c=d.length;--c>-1;)for(f=d[c],e=c;--e>-1;)f===d[e]&&d.splice(c,1)}else if(a._gsTweenID)for(d=aa(a).concat(),c=d.length;--c>-1;)(d[c]._gc||b&&!d[c].isActive())&&d.splice(c,1);return d||[]},H.killTweensOf=H.killDelayedCallsTo=function(a,b,c){"object"==typeof b&&(c=b,b=!1);for(var d=H.getTweensOf(a,b),e=d.length;--e>-1;)d[e]._kill(c,a)};var ea=u("plugins.TweenPlugin",function(a,b){this._overwriteProps=(a||"").split(","),this._propName=this._overwriteProps[0],this._priority=b||0,this._super=ea.prototype},!0);if(i=ea.prototype,ea.version="1.19.0",ea.API=2,i._firstPT=null,i._addTween=R,i.setRatio=O,i._kill=function(a){var b,c=this._overwriteProps,d=this._firstPT;if(null!=a[this._propName])this._overwriteProps=[];else for(b=c.length;--b>-1;)null!=a[c[b]]&&c.splice(b,1);for(;d;)null!=a[d.n]&&(d._next&&(d._next._prev=d._prev),d._prev?(d._prev._next=d._next,d._prev=null):this._firstPT===d&&(this._firstPT=d._next)),d=d._next;return!1},i._mod=i._roundProps=function(a){for(var b,c=this._firstPT;c;)b=a[this._propName]||null!=c.n&&a[c.n.split(this._propName+"_").join("")],b&&"function"==typeof b&&(2===c.f?c.t._applyPT.m=b:c.m=b),c=c._next},H._onPluginEvent=function(a,b){var c,d,e,f,g,h=b._firstPT;if("_onInitAllProps"===a){for(;h;){for(g=h._next,d=e;d&&d.pr>h.pr;)d=d._next;(h._prev=d?d._prev:f)?h._prev._next=h:e=h,(h._next=d)?d._prev=h:f=h,h=g}h=b._firstPT=e}for(;h;)h.pg&&"function"==typeof h.t[a]&&h.t[a]()&&(c=!0),h=h._next;return c},ea.activate=function(a){for(var b=a.length;--b>-1;)a[b].API===ea.API&&(T[(new a[b])._propName]=a[b]);return!0},t.plugin=function(a){if(!(a&&a.propName&&a.init&&a.API))throw"illegal plugin definition.";var b,c=a.propName,d=a.priority||0,e=a.overwriteProps,f={init:"_onInitTween",set:"setRatio",kill:"_kill",round:"_mod",mod:"_mod",initAll:"_onInitAllProps"},g=u("plugins."+c.charAt(0).toUpperCase()+c.substr(1)+"Plugin",function(){ea.call(this,c,d),this._overwriteProps=e||[]},a.global===!0),h=g.prototype=new ea(c);h.constructor=g,g.API=a.API;for(b in f)"function"==typeof a[b]&&(h[f[b]]=a[b]);return g.version=a.version,ea.activate([g]),g},g=a._gsQueue){for(h=0;h<g.length;h++)g[h]();for(i in r)r[i].func||a.console.log("GSAP encountered missing dependency: "+i)}k=!1}("undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window,"Tween
vendor: 13,565 bytes, lines 3545-3564
3545Lite"); 3546/*! 3547 * VERSION: 2.1.3 3548 * DATE: 2019-05-17 3549 * UPDATES AND DOCS AT: http://greensock.com 3550 * 3551 * @license Copyright (c) 2008-2019, GreenSock. All rights reserved. 3552 * This work is subject to the terms at http://greensock.com/standard-license or for 3553 * Club GreenSock members, the software agreement that was issued with your membership. 3554 * 3555 * @author: Jack Doyle, [email protected] 3556 */ 3557var _gsScope="undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window;(_gsScope._gsQueue||(_gsScope._gsQueue=[])).push(function(){"use strict";_gsScope._gsDefine("TimelineLite",["core.Animation","core.SimpleTimeline","TweenLite"],function(a,b,c){var d=function(a){b.call(this,a);var c,d,e=this,f=e.vars;e._labels={},e.autoRemoveChildren=!!f.autoRemoveChildren,e.smoothChildTiming=!!f.smoothChildTiming,e._sortChildren=!0,e._onUpdate=f.onUpdate;for(d in f)c=f[d],i(c)&&-1!==c.join("").indexOf("{self}")&&(f[d]=e._swapSelfInParams(c));i(f.tweens)&&e.add(f.tweens,0,f.align,f.stagger)},e=1e-8,f=c._internals,g=d._internals={},h=f.isSelector,i=f.isArray,j=f.lazyTweens,k=f.lazyRender,l=_gsScope._gsDefine.globals,m=function(a){var b,c={};for(b in a)c[b]=a[b];return c},n=function(a,b,c){var d,e,f=a.cycle;for(d in f)e=f[d],a[d]="function"==typeof e?e(c,b[c],b):e[c%e.length];delete a.cycle},o=g.pauseCallback=function(){},p=function(a){var b,c=[],d=a.length;for(b=0;b!==d;c.push(a[b++]));return c},q=function(a,b,c,d){var e="immediateRender";return e in b||(b[e]=!(c&&c[e]===!1||d)),b},r=function(a){if("function"==typeof a)return a;var b="object"==typeof a?a:{each:a},c=b.ease,d=b.from||0,e=b.base||0,f={},g=isNaN(d),h=b.axis,i={center:.5,end:1}[d]||0;return function(a,j,k){var l,m,n,o,p,q,r,s,t,u=(k||b).length,v=f[u];if(!v){if(t="auto"===b.grid?0:(b.grid||[1/0])[0],!t){for(r=-(1/0);r<(r=k[t++].getBoundingClientRect().left)&&u>t;);t--}for(v=f[u]=[],l=g?Math.min(t,u)*i-.5:d%t,m=g?u*i/t-.5:d/t|0,r=0,s=1/0,q=0;u>q;q++)n=q%t-l,o=m-(q/t|0),v[q]=p=h?Math.abs("y"===h?o:n):Math.sqrt(n*n+o*o),p>r&&(r=p),s>p&&(s=p);v.max=r-s,v.min=s,v.v=u=b.amount||b.each*(t>u?u-1:h?"y"===h?u/t:t:Math.max(t,u/t))||0,v.b=0>u?e-u:e}return u=(v[a]-v.min)/v.max,v.b+(c?c.getRatio(u):u)*v.v}},s=d.prototype=new b;return d.version="2.1.3",d.distribute=r,s.constructor=d,s.kill()._gc=s._forcingPlayhead=s._hasPause=!1,s.to=function(a,b,d,e){var f=d.repeat&&l.TweenMax||c;return b?this.add(new f(a,b,d),e):this.set(a,d,e)},s.from=function(a,b,d,e){return this.add((d.repeat&&l.TweenMax||c).from(a,b,q(this,d)),e)},s.fromTo=function(a,b,d,e,f){var g=e.repeat&&l.TweenMax||c;return e=q(this,e,d),b?this.add(g.fromTo(a,b,d,e),f):this.set(a,e,f)},s.staggerTo=function(a,b,e,f,g,i,j,k){var l,o,q=new d({onComplete:i,onCompleteParams:j,callbackScope:k,smoothChildTiming:this.smoothChildTiming}),s=r(e.stagger||f),t=e.startAt,u=e.cycle;for("string"==typeof a&&(a=c.selector(a)||a),a=a||[],h(a)&&(a=p(a)),o=0;o<a.length;o++)l=m(e),t&&(l.startAt=m(t),t.cycle&&n(l.startAt,a,o)),u&&(n(l,a,o),null!=l.duration&&(b=l.duration,delete l.duration)),q.to(a[o],b,l,s(o,a[o],a));return this.add(q,g)},s.staggerFrom=function(a,b,c,d,e,f,g,h){return c.runBackwards=!0,this.staggerTo(a,b,q(this,c),d,e,f,g,h)},s.staggerFromTo=function(a,b,c,d,e,f,g,h,i){return d.startAt=c,this.staggerTo(a,b,q(this,d,c),e,f,g,h,i)},s.call=function(a,b,d,e){return this.add(c.delayedCall(0,a,b,d),e)},s.set=function(a,b,d){return this.add(new c(a,0,q(this,b,null,!0)),d)},d.exportRoot=function(a,b){a=a||{},null==a.smoothChildTiming&&(a.smoothChildTiming=!0);var e,f,g,h,i=new d(a),j=i._timeline;for(null==b&&(b=!0),j._remove(i,!0),i._startTime=0,i._rawPrevTime=i._time=i._totalTime=j._time,g=j._first;g;)h=g._next,b&&g instanceof c&&g.target===g.vars.onComplete||(f=g._startTime-g._delay,0>f&&(e=1),i.add(g,f)),g=h;return j.add(i,0),e&&i.totalDuration(),i},s.add=function(e,f,g,h){var j,k,l,m,n,o,p=this;if("number"!=typeof f&&(f=p._parseTimeOrLabel(f,0,!0,e)),!(e instanceof a)){if(e instanceof Array||e&&e.push&&i(e)){for(g=g||"normal",h=h||0,j=f,k=e.length,l=0;k>l;l++)i(m=e[l])&&(m=new d({tweens:m})),p.add(m,j),"string"!=typeof m&&"function"!=typeof m&&("sequence"===g?j=m._startTime+m.totalDuration()/m._timeScale:"start"===g&&(m._startTime-=m.delay())),j+=h;return p._uncache(!0)}if("string"==typeof e)return p.addLabel(e,f);if("function"!=typeof e)throw"Cannot add "+e+" into the timeline; it is not a tween, timeline, function, or string.";e=c.delayedCall(0,e)}if(b.prototype.add.call(p,e,f),(e._time||!e._duration&&e._initted)&&(j=(p.rawTime()-e._startTime)*e._timeScale,(!e._duration||Math.abs(Math.max(0,Math.min(e.totalDuration(),j)))-e._totalTime>1e-5)&&e.render(j,!1,!1)),(p._gc||p._time===p._duration)&&!p._paused&&p._duration<p.duration())for(n=p,o=n.rawTime()>e._startTime;n._timeline;)o&&n._timeline.smoothChildTiming?n.totalTime(n._totalTime,!0):n._gc&&n._enabled(!0,!1),n=n._timeline;return p},s.remove=function(b){if(b instanceof a){this._remove(b,!1);var c=b._timeline=b.vars.useFrames?a._rootFramesTimeline:a._rootTimeline;return b._startTime=(b._paused?b._pauseTime:c._time)-(b._reversed?b.totalDuration()-b._totalTime:b._totalTime)/b._timeScale,this}if(b instanceof Array||b&&b.push&&i(b)){for(var d=b.length;--d>-1;)this.remove(b[d]);return this}return"string"==typeof b?this.removeLabel(b):this.kill(null,b)},s._remove=function(a,c){b.prototype._remove.call(this,a,c);var d=this._last;return d?this._time>this.duration()&&(this._time=this._duration,this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},s.append=function(a,b){return this.add(a,this._parseTimeOrLabel(null,b,!0,a))},s.insert=s.insertMultiple=function(a,b,c,d){return this.add(a,b||0,c,d)},s.appendMultiple=function(a,b,c,d){return this.add(a,this._parseTimeOrLabel(null,b,!0,a),c,d)},s.addLabel=function(a,b){return this._labels[a]=this._parseTimeOrLabel(b),this},s.addPause=function(a,b,d,e){var f=c.delayedCall(0,o,d,e||this);return f.vars.onComplete=f.vars.onReverseComplete=b,f.data="isPause",this._hasPause=!0,this.add(f,a)},s.removeLabel=function(a){return delete this._labels[a],this},s.getLabelTime=function(a){return null!=this._labels[a]?this._labels[a]:-1},s._parseTimeOrLabel=function(b,c,d,e){var f,g;if(e instanceof a&&e.timeline===this)this.remove(e);else if(e&&(e instanceof Array||e.push&&i(e)))for(g=e.length;--g>-1;)e[g]instanceof a&&e[g].timeline===this&&this.remove(e[g]);if(f="number"!=typeof b||c?this.duration()>99999999999?this.recent().endTime(!1):this._duration:0,"string"==typeof c)return this._parseTimeOrLabel(c,d&&"number"==typeof b&&null==this._labels[c]?b-f:0,d);if(c=c||0,"string"!=typeof b||!isNaN(b)&&null==this._labels[b])null==b&&(b=f);else{if(g=b.indexOf("="),-1===g)return null==this._labels[b]?d?this._labels[b]=f+c:c:this._labels[b]+c;c=parseInt(b.charAt(g-1)+"1",10)*Number(b.substr(g+1)),b=g>1?this._parseTimeOrLabel(b.substr(0,g-1),0,d):f}return Number(b)+c},s.seek=function(a,b){return this.totalTime("number"==typeof a?a:this._parseTimeOrLabel(a),b!==!1)},s.stop=function(){return this.paused(!0)},s.gotoAndPlay=function(a,b){return this.play(a,b)},s.gotoAndStop=function(a,b){return this.pause(a,b)},s.render=function(a,b,c){this._gc&&this._enabled(!0,!1);var d,f,g,h,i,l,m,n,o=this,p=o._time,q=o._dirty?o.totalDuration():o._totalDuration,r=o._startTime,s=o._timeScale,t=o._paused;if(p!==o._time&&(a+=o._time-p),o._hasPause&&!o._forcingPlayhead&&!b){if(a>p)for(d=o._first;d&&d._startTime<=a&&!l;)d._duration||"isPause"!==d.data||d.ratio||0===d._startTime&&0===o._rawPrevTime||(l=d),d=d._next;else for(d=o._last;d&&d._startTime>=a&&!l;)d._duration||"isPause"===d.data&&d._rawPrevTime>0&&(l=d),d=d._prev;l&&(o._time=o._totalTime=a=l._startTime,n=o._startTime+(o._reversed?o._duration-a:a)/o._timeScale)}if(a>=q-e&&a>=0)o._totalTime=o._time=q,o._reversed||o._hasPausedChild()||(f=!0,h="onComplete",i=!!o._timeline.autoRemoveChildren,0===o._duration&&(0>=a&&a>=-e||o._rawPrevTime<0||o._rawPrevTime===e)&&o._rawPrevTime!==a&&o._first&&(i=!0,o._rawPrevTime>e&&(h="onReverseComplete"))),o._rawPrevTime=o._duration||!b||a||o._rawPrevTime===a?a:e,a=q+1e-4;else if(e>a)if(o._totalTime=o._time=0,a>-e&&(a=0),(0!==p||0===o._duration&&o._rawPrevTime!==e&&(o._rawPrevTime>0||0>a&&o._rawPrevTime>=0))&&(h="onReverseComplete",f=o._reversed),0>a)o._active=!1,o._timeline.autoRemoveChildren&&o._reversed?(i=f=!0,h="onReverseComplete"):o._rawPrevTime>=0&&o._first&&(i=!0),o._rawPrevTime=a;else{if(o._rawPrevTime=o._duration||!b||a||o._rawPrevTime===a?a:e,0===a&&f)for(d=o._first;d&&0===d._startTime;)d._duration||(f=!1),d=d._next;a=0,o._initted||(i=!0)}else o._totalTime=o._time=o._rawPrevTime=a;if(o._time!==p&&o._first||c||i||l){if(o._initted||(o._initted=!0),o._active||!o._paused&&o._time!==p&&a>0&&(o._active=!0),0===p&&o.vars.onStart&&(0===o._time&&o._duration||b||o._callback("onStart")),m=o._time,m>=p)for(d=o._first;d&&(g=d._next,m===o._time&&(!o._paused||t));)(d._active||d._startTime<=m&&!d._paused&&!d._gc)&&(l===d&&(o.pause(),o._pauseTime=n),d._reversed?d.render((d._dirty?d.totalDuration():d._totalDuration)-(a-d._startTime)*d._timeScale,b,c):d.render((a-d._startTime)*d._timeScale,b,c)),d=g;else for(d=o._last;d&&(g=d._prev,m===o._time&&(!o._paused||t));){if(d._active||d._startTime<=p&&!d._paused&&!d._gc){if(l===d){for(l=d._prev;l&&l.endTime()>o._time;)l.render(l._reversed?l.totalDuration()-(a-l._startTime)*l._timeScale:(a-l._startTime)*l._timeScale,b,c),l=l._prev;l=null,o.pause(),o._pauseTime=n}d._reversed?d.render((d._dirty?d.totalDuration():d._totalDuration)-(a-d._startTime)*d._timeScale,b,c):d.render((a-d._startTime)*d._timeScale,b,c)}d=g}o._onUpdate&&(b||(j.length&&k(),o._callback("onUpdate"))),h&&(o._gc||(r===o._startTime||s!==o._timeScale)&&(0===o._time||q>=o.totalDuration())&&(f&&(j.length&&k(),o._timeline.autoRemoveChildren&&o._enabled(!1,!1),o._active=!1),!b&&o.vars[h]&&o._callback(h)))}},s._hasPausedChild=function(){for(var a=this._first;a;){if(a._paused||a instanceof d&&a._hasPausedChild())return!0;a=a._next}return!1},s.getChildren=function(a,b,d,e){e=e||-9999999999;for(var f=[],g=this._first,h=0;g;)g._startTime<e||(g instanceof c?b!==!1&&(f[h++]=g):(d!==!1&&(f[h++]=g),a!==!1&&(f=f.concat(g.getChildren(!0,b,d)),h=f.length))),g=g._next;return f},s.getTweensOf=function(a,b){var d,e,f=this._gc,g=[],h=0;for(f&&this._enabled(!0,!0),d=c.getTweensOf(a),e=d.length;--e>-1;)(d[e].timeline===this||b&&this._contains(d[e]))&&(g[h++]=d[e]);return f&&this._enabled(!1,!0),g},s.recent=function(){return this._recent},s._contains=function(a){for(var b=a.timeline;b;){if(b===this)return!0;b=b.timeline}return!1},s.shiftChildren=function(a,b,c){c=c||0;for(var d,e=this._first,f=this._labels;e;)e._startTime>=c&&(e._startTime+=a),e=e._next;if(b)for(d in f)f[d]>=c&&(f[d]+=a);return this._uncache(!0)},s._kill=function(a,b){if(!a&&!b)return this._enabled(!1,!1);for(var c=b?this.getTweensOf(b):this.getChildren(!0,!0,!1),d=c.length,e=!1;--d>-1;)c[d]._kill(a,b)&&(e=!0);return e},s.clear=function(a){var b=this.getChildren(!1,!0,!0),c=b.length;for(this._time=this._totalTime=0;--c>-1;)b[c]._enabled(!1,!1);return a!==!1&&(this._labels={}),this._uncache(!0)},s.invalidate=function(){for(var b=this._first;b;)b.invalidate(),b=b._next;return a.prototype.invalidate.call(this)},s._enabled=function(a,c){if(a===this._gc)for(var d=this._first;d;)d._enabled(a,!0),d=d._next;return b.prototype._enabled.call(this,a,c)},s.totalTime=function(b,c,d){this._forcingPlayhead=!0;var e=a.prototype.totalTime.apply(this,arguments);return this._forcingPlayhead=!1,e},s.duration=function(a){return arguments.length?(0!==this.duration()&&0!==a&&this.timeScale(this._duration/a),this):(this._dirty&&this.totalDuration(),this._duration)},s.totalDuration=function(a){if(!arguments.length){if(this._dirty){for(var b,c,d=0,e=this,f=e._last,g=999999999999;f;)b=f._prev,f._dirty&&f.totalDuration(),f._startTime>g&&e._sortChildren&&!f._paused&&!e._calculatingDuration?(e._calculatingDuration=1,e.add(f,f._startTime-f._delay),e._calculatingDuration=0):g=f._startTime,f._startTime<0&&!f._paused&&(d-=f._startTime,e._timeline.smoothChildTiming&&(e._startTime+=f._startTime/e._timeScale,e._time-=f._startTime,e._totalTime-=f._startTime,e._rawPrevTime-=f._startTime),e.shiftChildren(-f._startTime,!1,-9999999999),g=0),c=f._startTime+f._totalDuration/f._timeScale,c>d&&(d=c),f=b;e._duration=e._totalDuration=d,e._dirty=!1}return this._totalDuration}return a&&this.totalDuration()?this.timeScale(this._totalDuration/a):this},s.paused=function(b){if(b===!1&&this._paused)for(var c=this._first;c;)c._startTime===this._time&&"isPause"===c.data&&(c._rawPrevTime=0),c=c._next;return a.prototype.paused.apply(this,arguments)},s.usesFrames=function(){for(var b=this._timeline;b._timeline;)b=b._timeline;return b===a._rootFramesTimeline},s.rawTime=function(a){return a&&(this._paused||this._repeat&&this.time()>0&&this.totalProgress()<1)?this._totalTime%(this._duration+this._repeatDelay):this._paused?this._totalTime:(this._timeline.rawTime(a)-this._startTime)*this._timeScale},d},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(),function(a){"use strict";var b=function(){return(_gsScope.GreenSockGlobals||_gsScope)[a]};"undefined"!=typeof module&&module.exports?(require("./TweenLite.min.js"),module.exports=b()):"function"==typeof define&&define.amd&&define(["TweenLite"],b)}("TimelineLite"); 3558/*! 3559 * VERSION: 2.1.3 3560 * DATE: 2019-05-17 3561 * UPDATES AND DOCS AT: http://greensock.com 3562 * 3563 * @license Copyright (c) 2008-2019, GreenSock. All rights reserved. 3564 * This work is subject to the terms at http://greensock.com/standard-license or for
3565 * Club GreenSock members, the software agreement that was issued with your membership. 3566 * 3567 * @author: Jack Doyle, [email protected] 3568 */ 3569var _gsScope="undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window;(_gsScope._gsQueue||(_gsScope._gsQueue=[])).push(function(){"use strict";
vendor: 26,155 bytes, line 3569
3569_gsScope._gsDefine("plugins.CSSPlugin",["plugins.TweenPlugin","TweenLite"],function(a,b){var c,d,e,f,g=function(){a.call(this,"css"),this._overwriteProps.length=0,this.setRatio=g.prototype.setRatio},h=_gsScope._gsDefine.globals,i={},j=g.prototype=new a("css");j.constructor=g,g.version="2.1.3",g.API=2,g.defaultTransformPerspective=0,g.defaultSkewType="compensated",g.defaultSmoothOrigin=!0,j="px",g.suffixMap={top:j,right:j,bottom:j,left:j,width:j,height:j,fontSize:j,padding:j,margin:j,perspective:j,lineHeight:""};var k,l,m,n,o,p,q,r,s=/(?:\-|\.|\b)(\d|\.|e\-)+/g,t=/(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,u=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,v=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b),?/gi,w=/(?![+-]?\d*\.?\d+|[+-]|e[+-]\d+)[^0-9]/g,x=/(?:\d|\-|\+|=|#|\.)*/g,y=/opacity *= *([^)]*)/i,z=/opacity:([^;]*)/i,A=/alpha\(opacity *=.+?\)/i,B=/^(rgb|hsl)/,C=/([A-Z])/g,D=/-([a-z])/gi,E=/(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,F=function(a,b){return b.toUpperCase()},G=/(?:Left|Right|Width)/i,H=/(M11|M12|M21|M22)=[\d\-\.e]+/gi,I=/progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,J=/,(?=[^\)]*(?:\(|$))/gi,K=/[\s,\(]/i,L=Math.PI/180,M=180/Math.PI,N={},O={style:{}},P=_gsScope.document||{createElement:function(){return O}},Q=function(a,b){var c=P.createElementNS?P.createElementNS(b||"http://www.w3.org/1999/xhtml",a):P.createElement(a);return c.style?c:P.createElement(a)},R=Q("div"),S=Q("img"),T=g._internals={_specialProps:i},U=(_gsScope.navigator||{}).userAgent||"",V=function(){var a=U.indexOf("Android"),b=Q("a");return m=-1!==U.indexOf("Safari")&&-1===U.indexOf("Chrome")&&(-1===a||parseFloat(U.substr(a+8,2))>3),o=m&&parseFloat(U.substr(U.indexOf("Version/")+8,2))<6,n=-1!==U.indexOf("Firefox"),(/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(U)||/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(U))&&(p=parseFloat(RegExp.$1)),b?(b.style.cssText="top:1px;opacity:.55;",/^0.55/.test(b.style.opacity)):!1}(),W=function(a){return y.test("string"==typeof a?a:(a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100:1},X=function(a){_gsScope.console&&console.log(a)},Y="",Z="",$=function(a,b){b=b||R;var c,d,e=b.style;if(void 0!==e[a])return a;for(a=a.charAt(0).toUpperCase()+a.substr(1),c=["O","Moz","ms","Ms","Webkit"],d=5;--d>-1&&void 0===e[c[d]+a];);return d>=0?(Z=3===d?"ms":c[d],Y="-"+Z.toLowerCase()+"-",Z+a):null},_="undefined"!=typeof window?window:P.defaultView||{getComputedStyle:function(){}},aa=function(a){return _.getComputedStyle(a)},ba=g.getStyle=function(a,b,c,d,e){var f;return V||"opacity"!==b?(!d&&a.style[b]?f=a.style[b]:(c=c||aa(a))?f=c[b]||c.getPropertyValue(b)||c.getPropertyValue(b.replace(C,"-$1").toLowerCase()):a.currentStyle&&(f=a.currentStyle[b]),null==e||f&&"none"!==f&&"auto"!==f&&"auto auto"!==f?f:e):W(a)},ca=T.convertToPixels=function(a,c,d,e,f){if("px"===e||!e&&"lineHeight"!==c)return d;if("auto"===e||!d)return 0;var h,i,j,k=G.test(c),l=a,m=R.style,n=0>d,o=1===d;if(n&&(d=-d),o&&(d*=100),"lineHeight"!==c||e)if("%"===e&&-1!==c.indexOf("border"))h=d/100*(k?a.clientWidth:a.clientHeight);else{if(m.cssText="border:0 solid red;position:"+ba(a,"position")+";line-height:0;","%"!==e&&l.appendChild&&"v"!==e.charAt(0)&&"rem"!==e)m[k?"borderLeftWidth":"borderTopWidth"]=d+e;else{if(l=a.parentNode||P.body,-1!==ba(l,"display").indexOf("flex")&&(m.position="absolute"),i=l._gsCache,j=b.ticker.frame,i&&k&&i.time===j)return i.width*d/100;m[k?"width":"height"]=d+e}l.appendChild(R),h=parseFloat(R[k?"offsetWidth":"offsetHeight"]),l.removeChild(R),k&&"%"===e&&g.cacheWidths!==!1&&(i=l._gsCache=l._gsCache||{},i.time=j,i.width=h/d*100),0!==h||f||(h=ca(a,c,d,e,!0))}else i=aa(a).lineHeight,a.style.lineHeight=d,h=parseFloat(aa(a).lineHeight),a.style.lineHeight=i;return o&&(h/=100),n?-h:h},da=T.calculateOffset=function(a,b,c){if("absolute"!==ba(a,"position",c))return 0;var d="left"===b?"Left":"Top",e=ba(a,"margin"+d,c);return a["offset"+d]-(ca(a,b,parseFloat(e),e.replace(x,""))||0)},ea=function(a,b){var c,d,e,f={};if(b=b||aa(a,null))if(c=b.length)for(;--c>-1;)e=b[c],(-1===e.indexOf("-transform")||Fa===e)&&(f[e.replace(D,F)]=b.getPropertyValue(e));else for(c in b)(-1===c.indexOf("Transform")||Ea===c)&&(f[c]=b[c]);else if(b=a.currentStyle||a.style)for(c in b)"string"==typeof c&&void 0===f[c]&&(f[c.replace(D,F)]=b[c]);return V||(f.opacity=W(a)),d=Ta(a,b,!1),f.rotation=d.rotation,f.skewX=d.skewX,f.scaleX=d.scaleX,f.scaleY=d.scaleY,f.x=d.x,f.y=d.y,Ha&&(f.z=d.z,f.rotationX=d.rotationX,f.rotationY=d.rotationY,f.scaleZ=d.scaleZ),f.filters&&delete f.filters,f},fa=function(a,b,c,d,e){var f,g,h,i={},j=a.style;for(g in c)"cssText"!==g&&"length"!==g&&isNaN(g)&&(b[g]!==(f=c[g])||e&&e[g])&&-1===g.indexOf("Origin")&&("number"==typeof f||"string"==typeof f)&&(i[g]="auto"!==f||"left"!==g&&"top"!==g?""!==f&&"auto"!==f&&"none"!==f||"string"!=typeof b[g]||""===b[g].replace(w,"")?f:0:da(a,g),void 0!==j[g]&&(h=new ua(j,g,j[g],h)));if(d)for(g in d)"className"!==g&&(i[g]=d[g]);return{difs:i,firstMPT:h}},ga={width:["Left","Right"],height:["Top","Bottom"]},ha=["marginLeft","marginRight","marginTop","marginBottom"],ia=function(a,b,c){if("svg"===(a.nodeName+"").toLowerCase())return(c||aa(a))[b]||0;if(a.getCTM&&Qa(a))return a.getBBox()[b]||0;var d=parseFloat("width"===b?a.offsetWidth:a.offsetHeight),e=ga[b],f=e.length;for(c=c||aa(a,null);--f>-1;)d-=parseFloat(ba(a,"padding"+e[f],c,!0))||0,d-=parseFloat(ba(a,"border"+e[f]+"Width",c,!0))||0;return d},ja=function(a,b){if("contain"===a||"auto"===a||"auto auto"===a)return a+" ";(null==a||""===a)&&(a="0 0");var c,d=a.split(" "),e=-1!==a.indexOf("left")?"0%":-1!==a.indexOf("right")?"100%":d[0],f=-1!==a.indexOf("top")?"0%":-1!==a.indexOf("bottom")?"100%":d[1];if(d.length>3&&!b){for(d=a.split(", ").join(",").split(","),a=[],c=0;c<d.length;c++)a.push(ja(d[c]));return a.join(",")}return null==f?f="center"===e?"50%":"0":"center"===f&&(f="50%"),("center"===e||isNaN(parseFloat(e))&&-1===(e+"").indexOf("="))&&(e="50%"),a=e+" "+f+(d.length>2?" "+d[2]:""),b&&(b.oxp=-1!==e.indexOf("%"),b.oyp=-1!==f.indexOf("%"),b.oxr="="===e.charAt(1),b.oyr="="===f.charAt(1),b.ox=parseFloat(e.replace(w,"")),b.oy=parseFloat(f.replace(w,"")),b.v=a),b||a},ka=function(a,b){return"function"==typeof a&&(a=a(r,q)),"string"==typeof a&&"="===a.charAt(1)?parseInt(a.charAt(0)+"1",10)*parseFloat(a.substr(2)):parseFloat(a)-parseFloat(b)||0},la=function(a,b){"function"==typeof a&&(a=a(r,q));var c="string"==typeof a&&"="===a.charAt(1);return"string"==typeof a&&"v"===a.charAt(a.length-2)&&(a=(c?a.substr(0,2):0)+window["inner"+("vh"===a.substr(-2)?"Height":"Width")]*(parseFloat(c?a.substr(2):a)/100)),null==a?b:c?parseInt(a.charAt(0)+"1",10)*parseFloat(a.substr(2))+b:parseFloat(a)||0},ma=function(a,b,c,d){var e,f,g,h,i,j=1e-6;return"function"==typeof a&&(a=a(r,q)),null==a?h=b:"number"==typeof a?h=a:(e=360,f=a.split("_"),i="="===a.charAt(1),g=(i?parseInt(a.charAt(0)+"1",10)*parseFloat(f[0].substr(2)):parseFloat(f[0]))*(-1===a.indexOf("rad")?1:M)-(i?0:b),f.length&&(d&&(d[c]=b+g),-1!==a.indexOf("short")&&(g%=e,g!==g%(e/2)&&(g=0>g?g+e:g-e)),-1!==a.indexOf("_cw")&&0>g?g=(g+9999999999*e)%e-(g/e|0)*e:-1!==a.indexOf("ccw")&&g>0&&(g=(g-9999999999*e)%e-(g/e|0)*e)),h=b+g),j>h&&h>-j&&(h=0),h},na={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},oa=function(a,b,c){return a=0>a?a+1:a>1?a-1:a,255*(1>6*a?b+(c-b)*a*6:.5>a?c:2>3*a?b+(c-b)*(2/3-a)*6:b)+.5|0},pa=g.parseColor=function(a,b){var c,d,e,f,g,h,i,j,k,l,m;if(a)if("number"==typeof a)c=[a>>16,a>>8&255,255&a];else{if(","===a.charAt(a.length-1)&&(a=a.substr(0,a.length-1)),na[a])c=na[a];else if("#"===a.charAt(0))4===a.length&&(d=a.charAt(1),e=a.charAt(2),f=a.charAt(3),a="#"+d+d+e+e+f+f),a=parseInt(a.substr(1),16),c=[a>>16,a>>8&255,255&a];else if("hsl"===a.substr(0,3))if(c=m=a.match(s),b){if(-1!==a.indexOf("="))return a.match(t)}else g=Number(c[0])%360/360,h=Number(c[1])/100,i=Number(c[2])/100,e=.5>=i?i*(h+1):i+h-i*h,d=2*i-e,c.length>3&&(c[3]=Number(c[3])),c[0]=oa(g+1/3,d,e),c[1]=oa(g,d,e),c[2]=oa(g-1/3,d,e);else c=a.match(s)||na.transparent;c[0]=Number(c[0]),c[1]=Number(c[1]),c[2]=Number(c[2]),c.length>3&&(c[3]=Number(c[3]))}else c=na.black;return b&&!m&&(d=c[0]/255,e=c[1]/255,f=c[2]/255,j=Math.max(d,e,f),k=Math.min(d,e,f),i=(j+k)/2,j===k?g=h=0:(l=j-k,h=i>.5?l/(2-j-k):l/(j+k),g=j===d?(e-f)/l+(f>e?6:0):j===e?(f-d)/l+2:(d-e)/l+4,g*=60),c[0]=g+.5|0,c[1]=100*h+.5|0,c[2]=100*i+.5|0),c},qa=function(a,b){var c,d,e,f=a.match(ra)||[],g=0,h="";if(!f.length)return a;for(c=0;c<f.length;c++)d=f[c],e=a.substr(g,a.indexOf(d,g)-g),g+=e.length+d.length,d=pa(d,b),3===d.length&&d.push(1),h+=e+(b?"hsla("+d[0]+","+d[1]+"%,"+d[2]+"%,"+d[3]:"rgba("+d.join(","))+")";return h+a.substr(g)},ra="(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3}){1,2}\\b";for(j in na)ra+="|"+j+"\\b";ra=new RegExp(ra+")","gi"),g.colorStringFilter=function(a){var b,c=a[0]+" "+a[1];ra.test(c)&&(b=-1!==c.indexOf("hsl(")||-1!==c.indexOf("hsla("),a[0]=qa(a[0],b),a[1]=qa(a[1],b)),ra.lastIndex=0},b.defaultStringFilter||(b.defaultStringFilter=g.colorStringFilter);var sa=function(a,b,c,d){if(null==a)return function(a){return a};var e,f=b?(a.match(ra)||[""])[0]:"",g=a.split(f).join("").match(u)||[],h=a.substr(0,a.indexOf(g[0])),i=")"===a.charAt(a.length-1)?")":"",j=-1!==a.indexOf(" ")?" ":",",k=g.length,l=k>0?g[0].replace(s,""):"";return k?e=b?function(a){var b,m,n,o;if("number"==typeof a)a+=l;else if(d&&J.test(a)){for(o=a.replace(J,"|").split("|"),n=0;n<o.length;n++)o[n]=e(o[n]);return o.join(",")}if(b=(a.match(ra)||[f])[0],m=a.split(b).join("").match(u)||[],n=m.length,k>n--)for(;++n<k;)m[n]=c?m[(n-1)/2|0]:g[n];return h+m.join(j)+j+b+i+(-1!==a.indexOf("inset")?" inset":"")}:function(a){var b,f,m;if("number"==typeof a)a+=l;else if(d&&J.test(a)){for(f=a.replace(J,"|").split("|"),m=0;m<f.length;m++)f[m]=e(f[m]);return f.join(",")}if(b=a.match(","===j?u:v)||[],m=b.length,k>m--)for(;++m<k;)b[m]=c?b[(m-1)/2|0]:g[m];return(h&&"none"!==a?a.substr(0,a.indexOf(b[0]))||h:h)+b.join(j)+i}:function(a){return a}},ta=function(a){return a=a.split(","),function(b,c,d,e,f,g,h){var i,j=(c+"").split(" ");for(h={},i=0;4>i;i++)h[a[i]]=j[i]=j[i]||j[(i-1)/2>>0];return e.parse(b,h,f,g)}},ua=(T._setPluginRatio=function(a){this.plugin.setRatio(a);for(var b,c,d,e,f,g=this.data,h=g.proxy,i=g.firstMPT,j=1e-6;i;)b=h[i.v],i.r?b=i.r(b):j>b&&b>-j&&(b=0),i.t[i.p]=b,i=i._next;if(g.autoRotate&&(g.autoRotate.rotation=g.mod?g.mod.call(this._tween,h.rotation,this.t,this._tween):h.rotation),1===a||0===a)for(i=g.firstMPT,f=1===a?"e":"b";i;){if(c=i.t,c.type){if(1===c.type){for(e=c.xs0+c.s+c.xs1,d=1;d<c.l;d++)e+=c["xn"+d]+c["xs"+(d+1)];c[f]=e}}else c[f]=c.s+c.xs0;i=i._next}},function(a,b,c,d,e){this.t=a,this.p=b,this.v=c,this.r=e,d&&(d._prev=this,this._next=d)}),va=(T._parseToProxy=function(a,b,c,d,e,f){var g,h,i,j,k,l=d,m={},n={},o=c._transform,p=N;for(c._transform=null,N=b,d=k=c.parse(a,b,d,e),N=p,f&&(c._transform=o,l&&(l._prev=null,l._prev&&(l._prev._next=null)));d&&d!==l;){if(d.type<=1&&(h=d.p,n[h]=d.s+d.c,m[h]=d.s,f||(j=new ua(d,"s",h,j,d.r),d.c=0),1===d.type))for(g=d.l;--g>0;)i="xn"+g,h=d.p+"_"+i,n[h]=d.data[i],m[h]=d[i],f||(j=new ua(d,i,h,j,d.rxp[i]));d=d._next}return{proxy:m,end:n,firstMPT:j,pt:k}},T.CSSPropTween=function(a,b,d,e,g,h,i,j,k,l,m){this.t=a,this.p=b,this.s=d,this.c=e,this.n=i||b,a instanceof va||f.push(this.n),this.r=j?"function"==typeof j?j:Math.round:j,this.type=h||0,k&&(this.pr=k,c=!0),this.b=void 0===l?d:l,this.e=void 0===m?d+e:m,g&&(this._next=g,g._prev=this)}),wa=function(a,b,c,d,e,f){var g=new va(a,b,c,d-c,e,-1,f);return g.b=c,g.e=g.xs0=d,g},xa=g.parseComplex=function(a,b,c,d,e,f,h,i,j,l){c=c||f||"","function"==typeof d&&(d=d(r,q)),h=new va(a,b,0,0,h,l?2:1,null,!1,i,c,d),d+="",e&&ra.test(d+c)&&(d=[c,d],g.colorStringFilter(d),c=d[0],d=d[1]);var m,n,o,p,u,v,w,x,y,z,A,B,C,D=c.split(", ").join(",").split(" "),E=d.split(", ").join(",").split(" "),F=D.length,G=k!==!1;for((-1!==d.indexOf(",")||-1!==c.indexOf(","))&&(-1!==(d+c).indexOf("rgb")||-1!==(d+c).indexOf("hsl")?(D=D.join(" ").replace(J,", ").split(" "),E=E.join(" ").replace(J,", ").split(" ")):(D=D.join(" ").split(",").join(", ").split(" "),E=E.join(" ").split(",").join(", ").split(" ")),F=D.length),F!==E.length&&(D=(f||"").split(" "),F=D.length),h.plugin=j,h.setRatio=l,ra.lastIndex=0,m=0;F>m;m++)if(p=D[m],u=E[m]+"",x=parseFloat(p),x||0===x)h.appendXtra("",x,ka(u,x),u.replace(t,""),G&&-1!==u.indexOf("px")?Math.round:!1,!0);else if(e&&ra.test(p))B=u.indexOf(")")+1,B=")"+(B?u.substr(B):""),C=-1!==u.indexOf("hsl")&&V,z=u,p=pa(p,C),u=pa(u,C),y=p.length+u.length>6,y&&!V&&0===u[3]?(h["xs"+h.l]+=h.l?" transparent":"transparent",h.e=h.e.split(E[m]).join("transparent")):(V||(y=!1),C?h.appendXtra(z.substr(0,z.indexOf("hsl"))+(y?"hsla(":"hsl("),p[0],ka(u[0],p[0]),",",!1,!0).appendXtra("",p[1],ka(u[1],p[1]),"%,",!1).appendXtra("",p[2],ka(u[2],p[2]),y?"%,":"%"+B,!1):h.appendXtra(z.substr(0,z.indexOf("rgb"))+(y?"rgba(":"rgb("),p[0],u[0]-p[0],",",Math.round,!0).appendXtra("",p[1],u[1]-p[1],",",Math.round).appendXtra("",p[2],u[2]-p[2],y?",":B,Math.round),y&&(p=p.length<4?1:p[3],h.appendXtra("",p,(u.length<4?1:u[3])-p,B,!1))),ra.lastIndex=0;else if(v=p.match(s)){if(w=u.match(t),!w||w.length!==v.length)return h;for(o=0,n=0;n<v.length;n++)A=v[n],z=p.indexOf(A,o),h.appendXtra(p.substr(o,z-o),Number(A),ka(w[n],A),"",G&&"px"===p.substr(z+A.length,2)?Math.round:!1,0===n),o=z+A.length;h["xs"+h.l]+=p.substr(o)}else h["xs"+h.l]+=h.l||h["xs"+h.l]?" "+u:u;if(-1!==d.indexOf("=")&&h.data){for(B=h.xs0+h.data.s,m=1;m<h.l;m++)B+=h["xs"+m]+h.data["xn"+m];h.e=B+h["xs"+m]}return h.l||(h.type=-1,h.xs0=h.e),h.xfirst||h},ya=9;for(j=va.prototype,j.l=j.pr=0;--ya>0;)j["xn"+ya]=0,j["xs"+ya]="";j.xs0="",j._next=j._prev=j.xfirst=j.data=j.plugin=j.setRatio=j.rxp=null,j.appendXtra=function(a,b,c,d,e,f){var g=this,h=g.l;return g["xs"+h]+=f&&(h||g["xs"+h])?" "+a:a||"",c||0===h||g.plugin?(g.l++,g.type=g.setRatio?2:1,g["xs"+g.l]=d||"",h>0?(g.data["xn"+h]=b+c,g.rxp["xn"+h]=e,g["xn"+h]=b,g.plugin||(g.xfirst=new va(g,"xn"+h,b,c,g.xfirst||g,0,g.n,e,g.pr),g.xfirst.xs0=0),g):(g.data={s:b+c},g.rxp={},g.s=b,g.c=c,g.r=e,g)):(g["xs"+h]+=b+(d||""),g)};var za=function(a,b){b=b||{},this.p=b.prefix?$(a)||a:a,i[a]=i[this.p]=this,this.format=b.formatter||sa(b.defaultValue,b.color,b.collapsible,b.multi),b.parser&&(this.parse=b.parser),this.clrs=b.color,this.multi=b.multi,this.keyword=b.keyword,this.dflt=b.defaultValue,this.allowFunc=b.allowFunc,this.pr=b.priority||0},Aa=T._registerComplexSpecialProp=function(a,b,c){"object"!=typeof b&&(b={parser:c});var d,e,f=a.split(","),g=b.defaultValue;for(c=c||[g],d=0;d<f.length;d++)b.prefix=0===d&&b.prefix,b.defaultValue=c[d]||g,e=new za(f[d],b)},Ba=T._registerPluginProp=function(a){if(!i[a]){var b=a.charAt(0).toUpperCase()+a.substr(1)+"Plugin";Aa(a,{parser:function(a,c,d,e,f,g,j){var k=h.com.greensock.plugins[b];return k?(k._cssRegister(),i[d].parse(a,c,d,e,f,g,j)):(X("Error: "+b+" js file not loaded."),f)}})}};j=za.prototype,j.parseComplex=function(a,b,c,d,e,f){var g,h,i,j,k,l,m=this.keyword;if(this.multi&&(J.test(c)||J.test(b)?(h=b.replace(J,"|").split("|"),i=c.replace(J,"|").split("|")):m&&(h=[b],i=[c])),i){for(j=i.length>h.length?i.length:h.length,g=0;j>g;g++)b=h[g]=h[g]||this.dflt,c=i[g]=i[g]||this.dflt,m&&(k=b.indexOf(m),l=c.indexOf(m),k!==l&&(-1===l?h[g]=h[g].split(m).join(""):-1===k&&(h[g]+=" "+m)));b=h.join(", "),c=i.join(", ")}return xa(a,this.p,b,c,this.clrs,this.dflt,d,this.pr,e,f)},j.parse=function(a,b,c,d,f,g,h){return this.parseComplex(a.style,this.format(ba(a,this.p,e,!1,this.dflt)),this.format(b),f,g)},g.registerSpecialProp=function(a,b,c){Aa(a,{parser:function(a,d,e,f,g,h,i){var j=new va(a,e,0,0,g,2,e,!1,c);return j.plugin=h,j.setRatio=b(a,d,f._tween,e),j},priority:c})},g.useSVGTransformAttr=!0;var Ca,Da="scaleX,scaleY,scaleZ,x,y,z,skewX,skewY,rotation,rotationX,rotationY,perspective,xPercent,yPercent".split(","),Ea=$("transform"),Fa=Y+"transform",Ga=$("transformOrigin"),Ha=null!==$("perspective"),Ia=T.Transform=function(){this.perspective=parseFloat(g.defaultTransformPerspective)||0,this.force3D=g.defaultForce3D!==!1&&Ha?g.defaultForce3D||"auto":!1},Ja=_gsScope.SVGElement,Ka=function(a,b,c){var d,e=P.createElementNS("http://www.w3.org/2000/svg",a),f=/([a-z])([A-Z])/g;for(d in c)e.setAttributeNS(null,d.replace(f,"$1-$2").toLowerCase(),c[d]);return b.appendChild(e),e},La=P.documentElement||{},Ma=function(){var a,b,c,d=p||/Android/i.test(U)&&!_gsScope.chrome;return P.createElementNS&&La.appendChild&&!d&&(a=Ka("svg",La),b=Ka("rect",a,{width:100,height:50,x:100}),c=b.getBoundingClientRect().width,b.style[Ga]="50% 50%",b.style[Ea]="scaleX(0.5)",d=c===b.getBoundingClientRect().width&&!(n&&Ha),La.removeChild(a)),d}(),Na=function(a,b,c,d,e,f){var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v=a._gsTransform,w=Sa(a,!0);v&&(t=v.xOrigin,u=v.yOrigin),(!d||(h=d.split(" ")).length<2)&&(n=a.getBBox(),0===n.x&&0===n.y&&n.width+n.height===0&&(n={x:parseFloat(a.hasAttribute("x")?a.getAttribute("x"):a.hasAttribute("cx")?a.getAttribute("cx"):0)||0,y:parseFloat(a.hasAttribute("y")?a.getAttribute("y"):a.hasAttribute("cy")?a.getAttribute("cy"):0)||0,width:0,height:0}),b=ja(b).split(" "),h=[(-1!==b[0].indexOf("%")?parseFloat(b[0])/100*n.width:parseFloat(b[0]))+n.x,(-1!==b[1].indexOf("%")?parseFloat(b[1])/100*n.height:parseFloat(b[1]))+n.y]),c.xOrigin=k=parseFloat(h[0]),c.yOrigin=l=parseFloat(h[1]),d&&w!==Ra&&(m=w[0],n=w[1],o=w[2],p=w[3],q=w[4],r=w[5],s=m*p-n*o,s&&(i=k*(p/s)+l*(-o/s)+(o*r-p*q)/s,j=k*(-n/s)+l*(m/s)-(m*r-n*q)/s,k=c.xOrigin=h[0]=i,l=c.yOrigin=h[1]=j)),v&&(f&&(c.xOffset=v.xOffset,c.yOffset=v.yOffset,v=c),e||e!==!1&&g.defaultSmoothOrigin!==!1?(i=k-t,j=l-u,v.xOffset+=i*w[0]+j*w[2]-i,v.yOffset+=i*w[1]+j*w[3]-j):v.xOffset=v.yOffset=0),f||a.setAttribute("data-svg-origin",h.join(" "))},Oa=function(a){var b,c=Q("svg",this.ownerSVGElement&&this.ownerSVGElement.getAttribute("xmlns")||"http://www.w3.org/2000/svg"),d=this.parentNode,e=this.nextSibling,f=this.style.cssText;if(La.appendChild(c),c.appendChild(this),this.style.display="block",a)try{b=this.getBBox(),this._originalGetBBox=this.getBBox,this.getBBox=Oa}catch(g){}else this._originalGetBBox&&(b=this._originalGetBBox());return e?d.insertBefore(this,e):d.appendChild(this),La.removeChild(c),this.style.cssText=f,b},Pa=function(a){try{return a.getBBox()}catch(b){return Oa.call(a,!0)}},Qa=function(a){return!(!Ja||!a.getCTM||a.parentNode&&!a.ownerSVGElement||!Pa(a))},Ra=[1,0,0,1,0,0],Sa=function(a,b){var c,d,e,f,g,h,i,j=a._gsTransform||new Ia,k=1e5,l=a.style;if(Ea?d=ba(a,Fa,null,!0):a.currentStyle&&(d=a.currentStyle.filter.match(H),d=d&&4===d.length?[d[0].substr(4),Number(d[2].substr(4)),Number(d[1].substr(4)),d[3].substr(4),j.x||0,j.y||0].join(","):""),c=!d||"none"===d||"matrix(1, 0, 0, 1, 0, 0)"===d,Ea&&c&&!a.offsetParent&&a!==La&&(f=l.display,l.display="block",i=a.parentNode,i&&a.offsetParent||(g=1,h=a.nextSibling,La.appendChild(a)),d=ba(a,Fa,null,!0),c=!d||"none"===d||"matrix(1, 0, 0, 1, 0, 0)"===d,f?l.display=f:Xa(l,"display"),g&&(h?i.insertBefore(a,h):i?i.appendChild(a):La.removeChild(a))),(j.svg||a.getCTM&&Qa(a))&&(c&&-1!==(l[Ea]+"").indexOf("matrix")&&(d=l[Ea],c=0),e=a.getAttribute("transform"),c&&e&&(e=a.transform.baseVal.consolidate().matrix,d="matrix("+e.a+","+e.b+","+e.c+","+e.d+","+e.e+","+e.f+")",c=0)),c)return Ra;for(e=(d||"").match(s)||[],ya=e.length;--ya>-1;)f=Number(e[ya]),e[ya]=(g=f-(f|=0))?(g*k+(0>g?-.5:.5)|0)/k+f:f;return b&&e.length>6?[e[0],e[1],e[4],e[5],e[12],e[13]]:e},Ta=T.getTransform=function(a,c,d,e){if(a._gsTransform&&d&&!e)return a._gsTransform;var f,h,i,j,k,l,m=d?a._gsTransform||new Ia:new Ia,n=m.scaleX<0,o=2e-5,p=1e5,q=Ha?parseFloat(ba(a,Ga,c,!1,"0 0 0").split(" ")[2])||m.zOrigin||0:0,r=parseFloat(g.defaultTransformPerspective)||0;if(m.svg=!(!a.getCTM||!Qa(a)),m.svg&&(Na(a,ba(a,Ga,c,!1,"50% 50%")+"",m,a.getAttribute("data-svg-origin")),Ca=g.useSVGTransformAttr||Ma),f=Sa(a),f!==Ra){if(16===f.length){var s,t,u,v,w,x=f[0],y=f[1],z=f[2],A=f[3],B=f[4],C=f[5],D=f[6],E=f[7],F=f[8],G=f[9],H=f[10],I=f[12],J=f[13],K=f[14],L=f[11],N=Math.atan2(D,H);m.zOrigin&&(K=-m.zOrigin,I=F*K-f[12],J=G*K-f[13],K=H*K+m.zOrigin-f[14]),m.rotationX=N*M,N&&(v=Math.cos(-N),w=Math.sin(-N),s=B*v+F*w,t=C*v+G*w,u=D*v+H*w,F=B*-w+F*v,G=C*-w+G*v,H=D*-w+H*v,L=E*-w+L*v,B=s,C=t,D=u),N=Math.atan2(-z,H),m.rotationY=N*M,N&&(v=Math.cos(-N),w=Math.sin(-N),s=x*v-F*w,t=y*v-G*w,u=z*v-H*w,G=y*w+G*v,H=z*w+H*v,L=A*w+L*v,x=s,y=t,z=u),N=Math.atan2(y,x),m.rotation=N*M,N&&(v=Math.cos(N),w=Math.sin(N),s=x*v+y*w,t=B*v+C*w,u=F*v+G*w,y=y*v-x*w,C=C*v-B*w,G=G*v-F*w,x=s,B=t,F=u),m.rotationX&&Math.abs(m.rotationX)+Math.abs(m.rotation)>359.9&&(m.rotationX=m.rotation=0,m.rotationY=180-m.rotationY),N=Math.atan2(B,C),m.scaleX=(Math.sqrt(x*x+y*y+z*z)*p+.5|0)/p,m.scaleY=(Math.sqrt(C*C+D*D)*p+.5|0)/p,m.scaleZ=(Math.sqrt(F*F+G*G+H*H)*p+.5|0)/p,x/=m.scaleX,B/=m.scaleY,y/=m.scaleX,C/=m.scaleY,Math.abs(N)>o?(m.skewX=N*M,B=0,"simple"!==m.skewType&&(m.scaleY*=1/Math.cos(N))):m.skewX=0,m.perspective=L?1/(0>L?-L:L):0,m.x=I,m.y=J,m.z=K,m.svg&&(m.x-=m.xOrigin-(m.xOrigin*x-m.yOrigin*B),m.y-=m.yOrigin-(m.yOrigin*y-m.xOrigin*C))}else if(!Ha||e||!f.length||m.x!==f[4]||m.y!==f[5]||!m.rotationX&&!m.rotationY){var O=f.length>=6,P=O?f[0]:1,Q=f[1]||0,R=f[2]||0,S=O?f[3]:1;m.x=f[4]||0,m.y=f[5]||0,i=Math.sqrt(P*P+Q*Q),j=Math.sqrt(S*S+R*R),k=P||Q?Math.atan2(Q,P)*M:m.rotation||0,l=R||S?Math.atan2(R,S)*M+k:m.skewX||0,m.scaleX=i,m.scaleY=j,m.rotation=k,m.skewX=l,Ha&&(m.rotationX=m.rotationY=m.z=0,m.perspective=r,m.scaleZ=1),m.svg&&(m.x-=m.xOrigin-(m.xOrigin*P+m.yOrigin*R),m.y-=m.yOrigin-(m.xOrigin*Q+m.yOrigin*S))}Math.abs(m.skewX)>90&&Math.abs(m.skewX)<270&&(n?(m.scaleX*=-1,m.skewX+=m.rotation<=0?180:-180,m.rotation+=m.rotation<=0?180:-180):(m.scaleY*=-1,m.skewX+=m.skewX<=0?180:-180)),m.zOrigin=q;for(h in m)m[h]<o&&m[h]>-o&&(m[h]=0)}return d&&(a._gsTransform=m,m.svg&&(Ca&&a.style[Ea]?b.delayedCall(.001,function(){Xa(a.style,Ea)}):!Ca&&a.getAttribute("transform")&&b.delayedCall(.001,function(){a.removeAttribute("transform")}))),m},Ua=function(a){var b,c,d=this.data,e=-d.rotation*L,f=e+d.skewX*L,g=1e5,h=(Math.cos(e)*d.scaleX*g|0)/g,i=(Math.sin(e)*d.scaleX*g|0)/g,j=(Math.sin(f)*-d.scaleY*g|0)/g,k=(Math.cos(f)*d.scaleY*g|0)/g,l=this.t.style,m=this.t.currentStyle;if(m){c=i,i=-j,j=-c,b=m.filter,l.filter="";var n,o,q=this.t.offsetWidth,r=this.t.offsetHeight,s="absolute"!==m.position,t="progid:DXImageTransform.Microsoft.Matrix(M11="+h+", M12="+i+", M21="+j+", M22="+k,u=d.x+q*d.xPercent/100,v=d.y+r*d.yPercent/100;if(null!=d.ox&&(n=(d.oxp?q*d.ox*.01:d.ox)-q/2,o=(d.oyp?r*d.oy*.01:d.oy)-r/2,u+=n-(n*h+o*i),v+=o-(n*j+o*k)),s?(n=q/2,o=r/2,t+=", Dx="+(n-(n*h+o*i)+u)+", Dy="+(o-(n*j+o*k)+v)+")"):t+=", sizingMethod='auto expand')",-1!==b.indexOf("DXImageTransform.Microsoft.Matrix(")?l.filter=b.replace(I,t):l.filter=t+" "+b,(0===a||1===a)&&1===h&&0===i&&0===j&&1===k&&(s&&-1===t.indexOf("Dx=0, Dy=0")||y.test(b)&&100!==parseFloat(RegExp.$1)||-1===b.indexOf(b.indexOf("Alpha"))&&l.removeAttribute("filter")),!s){var w,z,A,B=8>p?1:-1;for(n=d.ieOffsetX||0,o=d.ieOffsetY||0,d.ieOffsetX=Math.round((q-((0>h?-h:h)*q+(0>i?-i:i)*r))/2+u),d.ieOffsetY=Math.round((r-((0>k?-k:k)*r+(0>j?-j:j)*q))/2+v),ya=0;4>ya;ya++)z=ha[ya],w=m[z],c=-1!==w.indexOf("px")?parseFloat(w):ca(this.t,z,parseFloat(w),w.replace(x,""))||0,A=c!==d[z]?2>ya?-d.ieOffsetX:-d.ieOffsetY:2>ya?n-d.ieOffsetX:o-d.ieOffsetY,l[z]=(d[z]=Math.round(c-A*(0===ya||2===ya?1:B)))+"px"}}},Va=T.set3DTransformRatio=T.setTransformRatio=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,o,p,q,r,s,t,u,v,w,x,y,z=this.data,A=this.t.style,B=z.rotation,C=z.rotationX,D=z.rotationY,E=z.scaleX,F=z.scaleY,G=z.scaleZ,H=z.x,I=z.y,J=z.z,K=z.svg,M=z.perspective,N=z.force3D,O=z.skewY,P=z.skewX;if(O&&(P+=O,B+=O),((1===a||0===a)&&"auto"===N&&(this.tween._totalTime===this.tween._totalDuration||!this.tween._totalTime)||!N)&&!J&&!M&&!D&&!C&&1===G||Ca&&K||!Ha)return void(B||P||K?(B*=L,x=P*L,y=1e5,c=Math.cos(B)*E,f=Math.sin(B)*E,d=Math.sin(B-x)*-F,g=Math.cos(B-x)*F,x&&"simple"===z.skewType&&(b=Math.tan(x-O*L),b=Math.sqrt(1+b*b),d*=b,g*=b,O&&(b=Math.tan(O*L),b=Math.sqrt(1+b*b),c*=b,f*=b)),K&&(H+=z.xOrigin-(z.xOrigin*c+z.yOrigin*d)+z.xOffset,I+=z.yOrigin-(z.xOrigin*f+z.yOrigin*g)+z.yOffset,Ca&&(z.xPercent||z.yPercent)&&(q=this.t.getBBox(),H+=.01*z.xPercent*q.width,I+=.01*z.yPercent*q.height),q=1e-6,q>H&&H>-q&&(H=0),q>I&&I>-q&&(I=0)),u=(c*y|0)/y+","+(f*y|0)/y+","+(d*y|0)/y+","+(g*y|0)/y+","+H+","+I+")",K&&Ca?this.t.setAttribute("transform","matrix("+u):A[Ea]=(z.xPercent||z.yPercent?"translate("+z.xPercent+"%,"+z.yPercent+"%) matrix(":"matrix(")+u):A[Ea]=(z.xPercent||z.yPercent?"translate("+z.xPercent+"%,"+z.yPercent+"%) matrix(":"matrix(")+E+",0,0,"+F+","+H+","+I+")");if(n&&(q=1e-4,q>E&&E>-q&&(E=G=2e-5),q>F&&F>-q&&(F=G=2e-5),!M||z.z||z.rotationX||z.rotationY||(M=0)),B||P)B*=L,r=c=Math.cos(B),s=f=Math.sin(B),P&&(B-=P*L,r=Math.cos(B),s=Math.sin(B),"simple"===z.skewType&&(b=Math.tan((P-O)*L),b=Math.sqrt(1+b*b),r*=b,s*=b,z.skewY&&(b=Math.tan(O*L),b=Math.sqrt(1+b*b),c*=b,f*=b))),d=-s,g=r;else{if(!(D||C||1!==G||M||K))return void(A[Ea]=(z.xPercent||z.yPercent?"translate("+z.xPercent+"%,"+z.yPercent+"%) translate3d(":"translate3d(")+H+"px,"+I+"px,"+J+"px)"+(1!==E||1!==F?" scale("+E+","+F+")":""));c=g=1,d=f=0}k=1,e=h=i=j=l=m=0,o=M?-1/M:0,p=z.zOrigin,q=1e-6,v=",",w="0",B=D*L,B&&(r=Math.cos(B),s=Math.sin(B),i=-s,l=o*-s,e=c*s,h=f*s,k=r,o*=r,c*=r,f*=r),B=C*L,B&&(r=Math.cos(B),s=Math.sin(B),b=d*r+e*s,t=g*r+h*s,j=k*s,m=o*s,e=d*-s+e*r,h=g*-s+h*r,k*=r,o*=r,d=b,g=t),1!==G&&(e*=G,h*=G,k*=G,o*=G),1!==F&&(d*=F,g*=F,j*=F,m*=F),1!==E&&(c*=E,f*=E,i*=E,l*=E),(p||K)&&(p&&(H+=e*-p,I+=h*-p,J+=k*-p+p),K&&(H+=z.xOrigin-(z.xOrigin*c+z.yOrigin*d)+z.xOffset,I+=z.yOrigin-(z.xOrigin*f+z.yOrigin*g)+z.yOffset),q>H&&H>-q&&(H=w),q>I&&I>-q&&(I=w),q>J&&J>-q&&(J=0)),u=z.xPercent||z.yPercent?"translate("+z.xPercent+"%,"+z.yPercent+"%) matrix3d(":"matrix3d(",u+=(q>c&&c>-q?w:c)+v+(q>f&&f>-q?w:f)+v+(q>i&&i>-q?w:i),u+=v+(q>l&&l>-q?w:l)+v+(q>d&&d>-q?w:d)+v+(q>g&&g>-q?w:g),
vendor: 18,937 bytes, lines 3569-3648
3569C||D||1!==G?(u+=v+(q>j&&j>-q?w:j)+v+(q>m&&m>-q?w:m)+v+(q>e&&e>-q?w:e),u+=v+(q>h&&h>-q?w:h)+v+(q>k&&k>-q?w:k)+v+(q>o&&o>-q?w:o)+v):u+=",0,0,0,0,1,0,",u+=H+v+I+v+J+v+(M?1+-J/M:1)+")",A[Ea]=u};j=Ia.prototype,j.x=j.y=j.z=j.skewX=j.skewY=j.rotation=j.rotationX=j.rotationY=j.zOrigin=j.xPercent=j.yPercent=j.xOffset=j.yOffset=0,j.scaleX=j.scaleY=j.scaleZ=1,Aa("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,svgOrigin,transformPerspective,directionalRotation,parseTransform,force3D,skewType,xPercent,yPercent,smoothOrigin",{parser:function(a,b,c,d,f,h,i){if(d._lastParsedTransform===i)return f;d._lastParsedTransform=i;var j=i.scale&&"function"==typeof i.scale?i.scale:0;j&&(i.scale=j(r,a));var k,l,m,n,o,p,s,t,u,v=a._gsTransform,w=a.style,x=1e-6,y=Da.length,z=i,A={},B="transformOrigin",C=Ta(a,e,!0,z.parseTransform),D=z.transform&&("function"==typeof z.transform?z.transform(r,q):z.transform);if(C.skewType=z.skewType||C.skewType||g.defaultSkewType,d._transform=C,"rotationZ"in z&&(z.rotation=z.rotationZ),D&&"string"==typeof D&&Ea)l=R.style,l[Ea]=D,l.display="block",l.position="absolute",-1!==D.indexOf("%")&&(l.width=ba(a,"width"),l.height=ba(a,"height")),P.body.appendChild(R),k=Ta(R,null,!1),"simple"===C.skewType&&(k.scaleY*=Math.cos(k.skewX*L)),C.svg&&(p=C.xOrigin,s=C.yOrigin,k.x-=C.xOffset,k.y-=C.yOffset,(z.transformOrigin||z.svgOrigin)&&(D={},Na(a,ja(z.transformOrigin),D,z.svgOrigin,z.smoothOrigin,!0),p=D.xOrigin,s=D.yOrigin,k.x-=D.xOffset-C.xOffset,k.y-=D.yOffset-C.yOffset),(p||s)&&(t=Sa(R,!0),k.x-=p-(p*t[0]+s*t[2]),k.y-=s-(p*t[1]+s*t[3]))),P.body.removeChild(R),k.perspective||(k.perspective=C.perspective),null!=z.xPercent&&(k.xPercent=la(z.xPercent,C.xPercent)),null!=z.yPercent&&(k.yPercent=la(z.yPercent,C.yPercent));else if("object"==typeof z){if(k={scaleX:la(null!=z.scaleX?z.scaleX:z.scale,C.scaleX),scaleY:la(null!=z.scaleY?z.scaleY:z.scale,C.scaleY),scaleZ:la(z.scaleZ,C.scaleZ),x:la(z.x,C.x),y:la(z.y,C.y),z:la(z.z,C.z),xPercent:la(z.xPercent,C.xPercent),yPercent:la(z.yPercent,C.yPercent),perspective:la(z.transformPerspective,C.perspective)},o=z.directionalRotation,null!=o)if("object"==typeof o)for(l in o)z[l]=o[l];else z.rotation=o;"string"==typeof z.x&&-1!==z.x.indexOf("%")&&(k.x=0,k.xPercent=la(z.x,C.xPercent)),"string"==typeof z.y&&-1!==z.y.indexOf("%")&&(k.y=0,k.yPercent=la(z.y,C.yPercent)),k.rotation=ma("rotation"in z?z.rotation:"shortRotation"in z?z.shortRotation+"_short":C.rotation,C.rotation,"rotation",A),Ha&&(k.rotationX=ma("rotationX"in z?z.rotationX:"shortRotationX"in z?z.shortRotationX+"_short":C.rotationX||0,C.rotationX,"rotationX",A),k.rotationY=ma("rotationY"in z?z.rotationY:"shortRotationY"in z?z.shortRotationY+"_short":C.rotationY||0,C.rotationY,"rotationY",A)),k.skewX=ma(z.skewX,C.skewX),k.skewY=ma(z.skewY,C.skewY)}for(Ha&&null!=z.force3D&&(C.force3D=z.force3D,n=!0),m=C.force3D||C.z||C.rotationX||C.rotationY||k.z||k.rotationX||k.rotationY||k.perspective,m||null==z.scale||(k.scaleZ=1);--y>-1;)u=Da[y],D=k[u]-C[u],(D>x||-x>D||null!=z[u]||null!=N[u])&&(n=!0,f=new va(C,u,C[u],D,f),u in A&&(f.e=A[u]),f.xs0=0,f.plugin=h,d._overwriteProps.push(f.n));return D="function"==typeof z.transformOrigin?z.transformOrigin(r,q):z.transformOrigin,C.svg&&(D||z.svgOrigin)&&(p=C.xOffset,s=C.yOffset,Na(a,ja(D),k,z.svgOrigin,z.smoothOrigin),f=wa(C,"xOrigin",(v?C:k).xOrigin,k.xOrigin,f,B),f=wa(C,"yOrigin",(v?C:k).yOrigin,k.yOrigin,f,B),(p!==C.xOffset||s!==C.yOffset)&&(f=wa(C,"xOffset",v?p:C.xOffset,C.xOffset,f,B),f=wa(C,"yOffset",v?s:C.yOffset,C.yOffset,f,B)),D="0px 0px"),(D||Ha&&m&&C.zOrigin)&&(Ea?(n=!0,u=Ga,D||(D=(ba(a,u,e,!1,"50% 50%")+"").split(" "),D=D[0]+" "+D[1]+" "+C.zOrigin+"px"),D+="",f=new va(w,u,0,0,f,-1,B),f.b=w[u],f.plugin=h,Ha?(l=C.zOrigin,D=D.split(" "),C.zOrigin=(D.length>2?parseFloat(D[2]):l)||0,f.xs0=f.e=D[0]+" "+(D[1]||"50%")+" 0px",f=new va(C,"zOrigin",0,0,f,-1,f.n),f.b=l,f.xs0=f.e=C.zOrigin):f.xs0=f.e=D):ja(D+"",C)),n&&(d._transformType=C.svg&&Ca||!m&&3!==this._transformType?2:3),j&&(i.scale=j),f},allowFunc:!0,prefix:!0}),Aa("boxShadow",{defaultValue:"0px 0px 0px 0px #999",prefix:!0,color:!0,multi:!0,keyword:"inset"}),Aa("clipPath",{defaultValue:"inset(0%)",prefix:!0,multi:!0,formatter:sa("inset(0% 0% 0% 0%)",!1,!0)}),Aa("borderRadius",{defaultValue:"0px",parser:function(a,b,c,f,g,h){b=this.format(b);var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y=["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],z=a.style;for(q=parseFloat(a.offsetWidth),r=parseFloat(a.offsetHeight),i=b.split(" "),j=0;j<y.length;j++)this.p.indexOf("border")&&(y[j]=$(y[j])),m=l=ba(a,y[j],e,!1,"0px"),-1!==m.indexOf(" ")&&(l=m.split(" "),m=l[0],l=l[1]),n=k=i[j],o=parseFloat(m),t=m.substr((o+"").length),u="="===n.charAt(1),u?(p=parseInt(n.charAt(0)+"1",10),n=n.substr(2),p*=parseFloat(n),s=n.substr((p+"").length-(0>p?1:0))||""):(p=parseFloat(n),s=n.substr((p+"").length)),""===s&&(s=d[c]||t),s!==t&&(v=ca(a,"borderLeft",o,t),w=ca(a,"borderTop",o,t),"%"===s?(m=v/q*100+"%",l=w/r*100+"%"):"em"===s?(x=ca(a,"borderLeft",1,"em"),m=v/x+"em",l=w/x+"em"):(m=v+"px",l=w+"px"),u&&(n=parseFloat(m)+p+s,k=parseFloat(l)+p+s)),g=xa(z,y[j],m+" "+l,n+" "+k,!1,"0px",g);return g},prefix:!0,formatter:sa("0px 0px 0px 0px",!1,!0)}),Aa("borderBottomLeftRadius,borderBottomRightRadius,borderTopLeftRadius,borderTopRightRadius",{defaultValue:"0px",parser:function(a,b,c,d,f,g){return xa(a.style,c,this.format(ba(a,c,e,!1,"0px 0px")),this.format(b),!1,"0px",f)},prefix:!0,formatter:sa("0px 0px",!1,!0)}),Aa("backgroundPosition",{defaultValue:"0 0",parser:function(a,b,c,d,f,g){ 3570var h,i,j,k,l,m,n="background-position",o=e||aa(a,null),q=this.format((o?p?o.getPropertyValue(n+"-x")+" "+o.getPropertyValue(n+"-y"):o.getPropertyValue(n):a.currentStyle.backgroundPositionX+" "+a.currentStyle.backgroundPositionY)||"0 0"),r=this.format(b);if(-1!==q.indexOf("%")!=(-1!==r.indexOf("%"))&&r.split(",").length<2&&(m=ba(a,"backgroundImage").replace(E,""),m&&"none"!==m)){for(h=q.split(" "),i=r.split(" "),S.setAttribute("src",m),j=2;--j>-1;)q=h[j],k=-1!==q.indexOf("%"),k!==(-1!==i[j].indexOf("%"))&&(l=0===j?a.offsetWidth-S.width:a.offsetHeight-S.height,h[j]=k?parseFloat(q)/100*l+"px":parseFloat(q)/l*100+"%");q=h.join(" ")}return this.parseComplex(a.style,q,r,f,g)},formatter:ja}),Aa("backgroundSize",{defaultValue:"0 0",formatter:function(a){return a+="","co"===a.substr(0,2)?a:ja(-1===a.indexOf(" ")?a+" "+a:a)}}),Aa("perspective",{defaultValue:"0px",prefix:!0}),Aa("perspectiveOrigin",{defaultValue:"50% 50%",prefix:!0}),Aa("transformStyle",{prefix:!0}),Aa("backfaceVisibility",{prefix:!0}),Aa("userSelect",{prefix:!0}),Aa("margin",{parser:ta("marginTop,marginRight,marginBottom,marginLeft")}),Aa("padding",{parser:ta("paddingTop,paddingRight,paddingBottom,paddingLeft")}),Aa("clip",{defaultValue:"rect(0px,0px,0px,0px)",parser:function(a,b,c,d,f,g){var h,i,j;return 9>p?(i=a.currentStyle,j=8>p?" ":",",h="rect("+i.clipTop+j+i.clipRight+j+i.clipBottom+j+i.clipLeft+")",b=this.format(b).split(",").join(j)):(h=this.format(ba(a,this.p,e,!1,this.dflt)),b=this.format(b)),this.parseComplex(a.style,h,b,f,g)}}),Aa("textShadow",{defaultValue:"0px 0px 0px #999",color:!0,multi:!0}),Aa("autoRound,strictUnits",{parser:function(a,b,c,d,e){return e}}),Aa("border",{defaultValue:"0px solid #000",parser:function(a,b,c,d,f,g){var h=ba(a,"borderTopWidth",e,!1,"0px"),i=this.format(b).split(" "),j=i[0].replace(x,"");return"px"!==j&&(h=parseFloat(h)/ca(a,"borderTopWidth",1,j)+j),this.parseComplex(a.style,this.format(h+" "+ba(a,"borderTopStyle",e,!1,"solid")+" "+ba(a,"borderTopColor",e,!1,"#000")),i.join(" "),f,g)},color:!0,formatter:function(a){var b=a.split(" ");return b[0]+" "+(b[1]||"solid")+" "+(a.match(ra)||["#000"])[0]}}),Aa("borderWidth",{parser:ta("borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth")}),Aa("float,cssFloat,styleFloat",{parser:function(a,b,c,d,e,f){var g=a.style,h="cssFloat"in g?"cssFloat":"styleFloat";return new va(g,h,0,0,e,-1,c,!1,0,g[h],b)}});var Wa=function(a){var b,c=this.t,d=c.filter||ba(this.data,"filter")||"",e=this.s+this.c*a|0;100===e&&(-1===d.indexOf("atrix(")&&-1===d.indexOf("radient(")&&-1===d.indexOf("oader(")?(c.removeAttribute("filter"),b=!ba(this.data,"filter")):(c.filter=d.replace(A,""),b=!0)),b||(this.xn1&&(c.filter=d=d||"alpha(opacity="+e+")"),-1===d.indexOf("pacity")?0===e&&this.xn1||(c.filter=d+" alpha(opacity="+e+")"):c.filter=d.replace(y,"opacity="+e))};Aa("opacity,alpha,autoAlpha",{defaultValue:"1",parser:function(a,b,c,d,f,g){var h=parseFloat(ba(a,"opacity",e,!1,"1")),i=a.style,j="autoAlpha"===c;return"string"==typeof b&&"="===b.charAt(1)&&(b=("-"===b.charAt(0)?-1:1)*parseFloat(b.substr(2))+h),j&&1===h&&"hidden"===ba(a,"visibility",e)&&0!==b&&(h=0),V?f=new va(i,"opacity",h,b-h,f):(f=new va(i,"opacity",100*h,100*(b-h),f),f.xn1=j?1:0,i.zoom=1,f.type=2,f.b="alpha(opacity="+f.s+")",f.e="alpha(opacity="+(f.s+f.c)+")",f.data=a,f.plugin=g,f.setRatio=Wa),j&&(f=new va(i,"visibility",0,0,f,-1,null,!1,0,0!==h?"inherit":"hidden",0===b?"hidden":"inherit"),f.xs0="inherit",d._overwriteProps.push(f.n),d._overwriteProps.push(c)),f}});var Xa=function(a,b){b&&(a.removeProperty?(("ms"===b.substr(0,2)||"webkit"===b.substr(0,6))&&(b="-"+b),a.removeProperty(b.replace(C,"-$1").toLowerCase())):a.removeAttribute(b))},Ya=function(a){if(this.t._gsClassPT=this,1===a||0===a){this.t.setAttribute("class",0===a?this.b:this.e);for(var b=this.data,c=this.t.style;b;)b.v?c[b.p]=b.v:Xa(c,b.p),b=b._next;1===a&&this.t._gsClassPT===this&&(this.t._gsClassPT=null)}else this.t.getAttribute("class")!==this.e&&this.t.setAttribute("class",this.e)};Aa("className",{parser:function(a,b,d,f,g,h,i){var j,k,l,m,n,o=a.getAttribute("class")||"",p=a.style.cssText;if(g=f._classNamePT=new va(a,d,0,0,g,2),g.setRatio=Ya,g.pr=-11,c=!0,g.b=o,k=ea(a,e),l=a._gsClassPT){for(m={},n=l.data;n;)m[n.p]=1,n=n._next;l.setRatio(1)}return a._gsClassPT=g,g.e="="!==b.charAt(1)?b:o.replace(new RegExp("(?:\\s|^)"+b.substr(2)+"(?![\\w-])"),"")+("+"===b.charAt(0)?" "+b.substr(2):""),a.setAttribute("class",g.e),j=fa(a,k,ea(a),i,m),a.setAttribute("class",o),g.data=j.firstMPT,a.style.cssText!==p&&(a.style.cssText=p),g=g.xfirst=f.parse(a,j.difs,g,h)}});var Za=function(a){if((1===a||0===a)&&this.data._totalTime===this.data._totalDuration&&"isFromStart"!==this.data.data){var b,c,d,e,f,g=this.t.style,h=i.transform.parse;if("all"===this.e)g.cssText="",e=!0;else for(b=this.e.split(" ").join("").split(","),d=b.length;--d>-1;)c=b[d],i[c]&&(i[c].parse===h?e=!0:c="transformOrigin"===c?Ga:i[c].p),Xa(g,c);e&&(Xa(g,Ea),f=this.t._gsTransform,f&&(f.svg&&(this.t.removeAttribute("data-svg-origin"),this.t.removeAttribute("transform")),delete this.t._gsTransform))}};for(Aa("clearProps",{parser:function(a,b,d,e,f){return f=new va(a,d,0,0,f,2),f.setRatio=Za,f.e=b,f.pr=-10,f.data=e._tween,c=!0,f}}),j="bezier,throwProps,physicsProps,physics2D".split(","),ya=j.length;ya--;)Ba(j[ya]);j=g.prototype,j._firstPT=j._lastParsedTransform=j._transform=null,j._onInitTween=function(a,b,h,j){if(!a.nodeType)return!1;this._target=q=a,this._tween=h,this._vars=b,r=j,k=b.autoRound,c=!1,d=b.suffixMap||g.suffixMap,e=aa(a,""),f=this._overwriteProps;var n,p,s,t,u,v,w,x,y,A=a.style;if(l&&""===A.zIndex&&(n=ba(a,"zIndex",e),("auto"===n||""===n)&&this._addLazySet(A,"zIndex",0)),"string"==typeof b&&(t=A.cssText,n=ea(a,e),A.cssText=t+";"+b,n=fa(a,n,ea(a)).difs,!V&&z.test(b)&&(n.opacity=parseFloat(RegExp.$1)),b=n,A.cssText=t),b.className?this._firstPT=p=i.className.parse(a,b.className,"className",this,null,null,b):this._firstPT=p=this.parse(a,b,null),this._transformType){for(y=3===this._transformType,Ea?m&&(l=!0,""===A.zIndex&&(w=ba(a,"zIndex",e),("auto"===w||""===w)&&this._addLazySet(A,"zIndex",0)),o&&this._addLazySet(A,"WebkitBackfaceVisibility",this._vars.WebkitBackfaceVisibility||(y?"visible":"hidden"))):A.zoom=1,s=p;s&&s._next;)s=s._next;x=new va(a,"transform",0,0,null,2),this._linkCSSP(x,null,s),x.setRatio=Ea?Va:Ua,x.data=this._transform||Ta(a,e,!0),x.tween=h,x.pr=-1,f.pop()}if(c){for(;p;){for(v=p._next,s=t;s&&s.pr>p.pr;)s=s._next;(p._prev=s?s._prev:u)?p._prev._next=p:t=p,(p._next=s)?s._prev=p:u=p,p=v}this._firstPT=t}return!0},j.parse=function(a,b,c,f){var g,h,j,l,m,n,o,p,s,t,u=a.style;for(g in b){if(n=b[g],h=i[g],"function"!=typeof n||h&&h.allowFunc||(n=n(r,q)),h)c=h.parse(a,n,g,this,c,f,b);else{if("--"===g.substr(0,2)){this._tween._propLookup[g]=this._addTween.call(this._tween,a.style,"setProperty",aa(a).getPropertyValue(g)+"",n+"",g,!1,g);continue}m=ba(a,g,e)+"",s="string"==typeof n,"color"===g||"fill"===g||"stroke"===g||-1!==g.indexOf("Color")||s&&B.test(n)?(s||(n=pa(n),n=(n.length>3?"rgba(":"rgb(")+n.join(",")+")"),c=xa(u,g,m,n,!0,"transparent",c,0,f)):s&&K.test(n)?c=xa(u,g,m,n,!0,null,c,0,f):(j=parseFloat(m),o=j||0===j?m.substr((j+"").length):"",(""===m||"auto"===m)&&("width"===g||"height"===g?(j=ia(a,g,e),o="px"):"left"===g||"top"===g?(j=da(a,g,e),o="px"):(j="opacity"!==g?0:1,o="")),t=s&&"="===n.charAt(1),t?(l=parseInt(n.charAt(0)+"1",10),n=n.substr(2),l*=parseFloat(n),p=n.replace(x,"")):(l=parseFloat(n),p=s?n.replace(x,""):""),""===p&&(p=g in d?d[g]:o),n=l||0===l?(t?l+j:l)+p:b[g],o!==p&&(""!==p||"lineHeight"===g)&&(l||0===l)&&j&&(j=ca(a,g,j,o),"%"===p?(j/=ca(a,g,100,"%")/100,b.strictUnits!==!0&&(m=j+"%")):"em"===p||"rem"===p||"vw"===p||"vh"===p?j/=ca(a,g,1,p):"px"!==p&&(l=ca(a,g,l,p),p="px"),t&&(l||0===l)&&(n=l+j+p)),t&&(l+=j),!j&&0!==j||!l&&0!==l?void 0!==u[g]&&(n||n+""!="NaN"&&null!=n)?(c=new va(u,g,l||j||0,0,c,-1,g,!1,0,m,n),c.xs0="none"!==n||"display"!==g&&-1===g.indexOf("Style")?n:m):X("invalid "+g+" tween value: "+b[g]):(c=new va(u,g,j,l-j,c,0,g,k!==!1&&("px"===p||"zIndex"===g),0,m,n),c.xs0=p))}f&&c&&!c.plugin&&(c.plugin=f)}return c},j.setRatio=function(a){var b,c,d,e=this._firstPT,f=1e-6;if(1!==a||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(a||this._tween._time!==this._tween._duration&&0!==this._tween._time||this._tween._rawPrevTime===-1e-6)for(;e;){if(b=e.c*a+e.s,e.r?b=e.r(b):f>b&&b>-f&&(b=0),e.type)if(1===e.type)if(d=e.l,2===d)e.t[e.p]=e.xs0+b+e.xs1+e.xn1+e.xs2;else if(3===d)e.t[e.p]=e.xs0+b+e.xs1+e.xn1+e.xs2+e.xn2+e.xs3;else if(4===d)e.t[e.p]=e.xs0+b+e.xs1+e.xn1+e.xs2+e.xn2+e.xs3+e.xn3+e.xs4;else if(5===d)e.t[e.p]=e.xs0+b+e.xs1+e.xn1+e.xs2+e.xn2+e.xs3+e.xn3+e.xs4+e.xn4+e.xs5;else{for(c=e.xs0+b+e.xs1,d=1;d<e.l;d++)c+=e["xn"+d]+e["xs"+(d+1)];e.t[e.p]=c}else-1===e.type?e.t[e.p]=e.xs0:e.setRatio&&e.setRatio(a);else e.t[e.p]=b+e.xs0;e=e._next}else for(;e;)2!==e.type?e.t[e.p]=e.b:e.setRatio(a),e=e._next;else for(;e;){if(2!==e.type)if(e.r&&-1!==e.type)if(b=e.r(e.s+e.c),e.type){if(1===e.type){for(d=e.l,c=e.xs0+b+e.xs1,d=1;d<e.l;d++)c+=e["xn"+d]+e["xs"+(d+1)];e.t[e.p]=c}}else e.t[e.p]=b+e.xs0;else e.t[e.p]=e.e;else e.setRatio(a);e=e._next}},j._enableTransforms=function(a){this._transform=this._transform||Ta(this._target,e,!0),this._transformType=this._transform.svg&&Ca||!a&&3!==this._transformType?2:3};var $a=function(a){this.t[this.p]=this.e,this.data._linkCSSP(this,this._next,null,!0)};j._addLazySet=function(a,b,c){var d=this._firstPT=new va(a,b,0,0,this._firstPT,2);d.e=c,d.setRatio=$a,d.data=this},j._linkCSSP=function(a,b,c,d){return a&&(b&&(b._prev=a),a._next&&(a._next._prev=a._prev),a._prev?a._prev._next=a._next:this._firstPT===a&&(this._firstPT=a._next,d=!0),c?c._next=a:d||null!==this._firstPT||(this._firstPT=a),a._next=b,a._prev=c),a},j._mod=function(a){for(var b=this._firstPT;b;)"function"==typeof a[b.p]&&(b.r=a[b.p]),b=b._next},j._kill=function(b){var c,d,e,f=b;if(b.autoAlpha||b.alpha){f={};for(d in b)f[d]=b[d];f.opacity=1,f.autoAlpha&&(f.visibility=1)}for(b.className&&(c=this._classNamePT)&&(e=c.xfirst,e&&e._prev?this._linkCSSP(e._prev,c._next,e._prev._prev):e===this._firstPT&&(this._firstPT=c._next),c._next&&this._linkCSSP(c._next,c._next._next,e._prev),this._classNamePT=null),c=this._firstPT;c;)c.plugin&&c.plugin!==d&&c.plugin._kill&&(c.plugin._kill(b),d=c.plugin),c=c._next;return a.prototype._kill.call(this,f)};var _a=function(a,b,c){var d,e,f,g;if(a.slice)for(e=a.length;--e>-1;)_a(a[e],b,c);else for(d=a.childNodes,e=d.length;--e>-1;)f=d[e],g=f.type,f.style&&(b.push(ea(f)),c&&c.push(f)),1!==g&&9!==g&&11!==g||!f.childNodes.length||_a(f,b,c)};return g.cascadeTo=function(a,c,d){var e,f,g,h,i=b.to(a,c,d),j=[i],k=[],l=[],m=[],n=b._internals.reservedProps;for(a=i._targets||i.target,_a(a,k,m),i.render(c,!0,!0),_a(a,l),i.render(0,!0,!0),i._enabled(!0),e=m.length;--e>-1;)if(f=fa(m[e],k[e],l[e]),f.firstMPT){f=f.difs;for(g in d)n[g]&&(f[g]=d[g]);h={};for(g in f)h[g]=k[e][g];j.push(b.fromTo(m[e],c,h,f))}return j},a.activate([g]),g},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(),function(a){"use strict";var b=function(){return(_gsScope.GreenSockGlobals||_gsScope)[a]};"undefined"!=typeof module&&module.exports?(require("../TweenLite.min.js"),module.exports=b()):"function"==typeof define&&define.amd&&define(["TweenLite"],b)}("CSSPlugin"); 3571/*! 3572 * Colcade v0.2.0 3573 * Lightweight masonry layout 3574 * by David DeSandro 3575 * MIT license 3576 */ 3577 3578/*jshint browser: true, undef: true, unused: true */ 3579 3580( function( window, factory ) { 3581 // universal module definition 3582 /*jshint strict: false */ 3583 /*global define: false, module: false */ 3584 if ( typeof define == 'function' && define.amd ) { 3585 // AMD 3586 define( factory ); 3587 } else if ( typeof module == 'object' && module.exports ) { 3588 // CommonJS 3589 module.exports = factory(); 3590 } else { 3591 // browser global 3592 window.Colcade = factory(); 3593 } 3594 3595}( window, function factory() { 3596 3597// -------------------------- Colcade -------------------------- // 3598 3599function Colcade( element, options ) { 3600 element = getQueryElement( element ); 3601 3602 // do not initialize twice on same element 3603 if ( element && element.colcadeGUID ) { 3604 var instance = instances[ element.colcadeGUID ]; 3605 instance.option( options ); 3606 return instance; 3607 } 3608 3609 this.element = element; 3610 // options 3611 this.options = {}; 3612 this.option( options ); 3613 // kick things off 3614 this.create(); 3615} 3616 3617var proto = Colcade.prototype; 3618 3619proto.option = function( options ) { 3620 this.options = extend( this.options, options ); 3621}; 3622 3623// globally unique identifiers 3624var GUID = 0; 3625// internal store of all Colcade intances 3626var instances = {}; 3627 3628proto.create = function() { 3629 this.errorCheck(); 3630 // add guid for Colcade.data 3631 var guid = this.guid = ++GUID; 3632 this.element.colcadeGUID = guid; 3633 instances[ guid ] = this; // associate via id 3634 // update initial properties & layout 3635 this.reload(); 3636 // events 3637 this._windowResizeHandler = this.onWindowResize.bind( this ); 3638 this._loadHandler = this.onLoad.bind( this ); 3639 window.addEventListener( 'resize', this._windowResizeHandler ); 3640 this.element.addEventListener( 'load', this._loadHandler, true ); 3641}; 3642 3643proto.errorCheck = function() { 3644 var errors = []; 3645 if ( !this.element ) { 3646 errors.push( 'Bad element: ' + this.element ); 3647 } 3648 if ( !this.options.columns ) {
vendor: 4,287 bytes, lines 3649-3803
3649 errors.push( 'columns option required: ' + this.options.columns ); 3650 } 3651 if ( !this.options.items ) { 3652 errors.push( 'items option required: ' + this.options.items ); 3653 } 3654 3655 if ( errors.length ) { 3656 throw new Error( '[Colcade error] ' + errors.join('. ') ); 3657 } 3658}; 3659 3660// update properties and do layout 3661proto.reload = function() { 3662 this.updateColumns(); 3663 this.updateItems(); 3664 this.layout(); 3665}; 3666 3667proto.updateColumns = function() { 3668 this.columns = querySelect( this.options.columns, this.element ); 3669}; 3670 3671proto.updateItems = function() { 3672 this.items = querySelect( this.options.items, this.element ); 3673}; 3674 3675proto.getActiveColumns = function() { 3676 return this.columns.filter( function( column ) { 3677 var style = getComputedStyle( column ); 3678 return style.display != 'none'; 3679 }); 3680}; 3681 3682// ----- layout ----- // 3683 3684// public, updates activeColumns 3685proto.layout = function() { 3686 this.activeColumns = this.getActiveColumns(); 3687 this._layout(); 3688}; 3689 3690// private, does not update activeColumns 3691proto._layout = function() { 3692 // reset column heights 3693 this.columnHeights = this.activeColumns.map( function() { 3694 return 0; 3695 }); 3696 // layout all items 3697 this.layoutItems( this.items ); 3698}; 3699 3700proto.layoutItems = function( items ) { 3701 items.forEach( this.layoutItem, this ); 3702}; 3703 3704proto.layoutItem = function( item ) { 3705 // layout item by appending to column 3706 var minHeight = Math.min.apply( Math, this.columnHeights ); 3707 var index = this.columnHeights.indexOf( minHeight ); 3708 this.activeColumns[ index ].appendChild( item ); 3709 // at least 1px, if item hasn't loaded 3710 // Not exactly accurate, but it's cool 3711 this.columnHeights[ index ] += item.offsetHeight || 1; 3712}; 3713 3714// ----- adding items ----- // 3715 3716proto.append = function( elems ) { 3717 var items = this.getQueryItems( elems ); 3718 // add items to collection 3719 this.items = this.items.concat( items ); 3720 // lay them out 3721 this.layoutItems( items ); 3722}; 3723 3724proto.prepend = function( elems ) { 3725 var items = this.getQueryItems( elems ); 3726 // add items to collection 3727 this.items = items.concat( this.items ); 3728 // lay out everything 3729 this._layout(); 3730}; 3731 3732proto.getQueryItems = function( elems ) { 3733 elems = makeArray( elems ); 3734 var fragment = document.createDocumentFragment(); 3735 elems.forEach( function( elem ) { 3736 fragment.appendChild( elem ); 3737 }); 3738 return querySelect( this.options.items, fragment ); 3739}; 3740 3741// ----- measure column height ----- // 3742 3743proto.measureColumnHeight = function( elem ) { 3744 var boundingRect = this.element.getBoundingClientRect(); 3745 this.activeColumns.forEach( function( column, i ) { 3746 // if elem, measure only that column 3747 // if no elem, measure all columns 3748 if ( !elem || column.contains( elem ) ) { 3749 var lastChildRect = column.lastElementChild.getBoundingClientRect(); 3750 // not an exact calculation as it includes top border, and excludes item bottom margin 3751 this.columnHeights[ i ] = lastChildRect.bottom - boundingRect.top; 3752 } 3753 }, this ); 3754}; 3755 3756// ----- events ----- // 3757 3758proto.onWindowResize = function() { 3759 clearTimeout( this.resizeTimeout ); 3760 this.resizeTimeout = setTimeout( function() { 3761 this.onDebouncedResize(); 3762 }.bind( this ), 100 ); 3763}; 3764 3765proto.onDebouncedResize = function() { 3766 var activeColumns = this.getActiveColumns(); 3767 // check if columns changed 3768 var isSameLength = activeColumns.length == this.activeColumns.length; 3769 var isSameColumns = true; 3770 this.activeColumns.forEach( function( column, i ) { 3771 isSameColumns = isSameColumns && column == activeColumns[i]; 3772 }); 3773 if ( isSameLength && isSameColumns ) { 3774 return; 3775 } 3776 // activeColumns changed 3777 this.activeColumns = activeColumns; 3778 this._layout(); 3779}; 3780 3781proto.onLoad = function( event ) { 3782 this.measureColumnHeight( event.target ); 3783}; 3784 3785// ----- destroy ----- // 3786 3787proto.destroy = function() { 3788 // move items back to container 3789 this.items.forEach( function( item ) { 3790 this.element.appendChild( item ); 3791 }, this ); 3792 // remove events 3793 window.removeEventListener( 'resize', this._windowResizeHandler ); 3794 this.element.removeEventListener( 'load', this._loadHandler, true ); 3795 // remove data 3796 delete this.element.colcadeGUID; 3797 delete instances[ this.guid ]; 3798}; 3799 3800// -------------------------- HTML init -------------------------- // 3801 3802docReady( function() { 3803 var dataElems = querySelect('[data-colcade]');
3804 dataElems.forEach( htmlInit ); 3805}); 3806 3807function htmlInit( elem ) { 3808 // convert attribute "foo: bar, qux: baz" into object 3809 var attr = elem.getAttribute('data-colcade'); 3810 var attrParts = attr.split(','); 3811 var options = {}; 3812 attrParts.forEach( function( part ) { 3813 var pair = part.split(':'); 3814 var key = pair[0].trim(); 3815 var value = pair[1].trim(); 3816 options[ key ] = value; 3817 }); 3818 3819 new Colcade( elem, options ); 3820} 3821 3822Colcade.data = function( elem ) { 3823 elem = getQueryElement( elem ); 3824 var id = elem && elem.colcadeGUID; 3825 return id && instances[ id ]; 3826}; 3827 3828// -------------------------- jQuery -------------------------- // 3829 3830Colcade.makeJQueryPlugin = function( $ ) { 3831 $ = $ || window.jQuery; 3832 if ( !$ ) { 3833 return; 3834 } 3835 3836 $.fn.colcade = function( arg0 /*, arg1 */) { 3837 // method call $().colcade( 'method', { options } ) 3838 if ( typeof arg0 == 'string' ) { 3839 // shift arguments by 1 3840 var args = Array.prototype.slice.call( arguments, 1 ); 3841 return methodCall( this, arg0, args ); 3842 } 3843 // just $().colcade({ options }) 3844 plainCall( this, arg0 ); 3845 return this; 3846 }; 3847 3848 function methodCall( $elems, methodName, args ) { 3849 var returnValue; 3850 $elems.each( function( i, elem ) { 3851 // get instance 3852 var colcade = $.data( elem, 'colcade' ); 3853 if ( !colcade ) { 3854 return; 3855 } 3856 // apply method, get return value 3857 var value = colcade[ methodName ].apply( colcade, args ); 3858 // set return value if value is returned, use only first value 3859 returnValue = returnValue === undefined ? value : returnValue; 3860 }); 3861 return returnValue !== undefined ? returnValue : $elems; 3862 } 3863 3864 function plainCall( $elems, options ) { 3865 $elems.each( function( i, elem ) { 3866 var colcade = $.data( elem, 'colcade' ); 3867 if ( colcade ) { 3868 // set options & init 3869 colcade.option( options ); 3870 colcade.layout(); 3871 } else { 3872 // initialize new instance 3873 colcade = new Colcade( elem, options ); 3874 $.data( elem, 'colcade', colcade ); 3875 } 3876 }); 3877 } 3878}; 3879 3880// try making plugin 3881Colcade.makeJQueryPlugin(); 3882 3883// -------------------------- utils -------------------------- // 3884 3885function extend( a, b ) { 3886 for ( var prop in b ) { 3887 a[ prop ] = b[ prop ]; 3888 } 3889 return a; 3890} 3891 3892// turn element or nodeList into an array 3893function makeArray( obj ) { 3894 var ary = []; 3895 if ( Array.isArray( obj ) ) { 3896 // use object if already an array 3897 ary = obj; 3898 } else if ( obj && typeof obj.length == 'number' ) { 3899 // convert nodeList to array 3900 for ( var i=0; i < obj.length; i++ ) { 3901 ary.push( obj[i] ); 3902 } 3903 } else { 3904 // array of single index 3905 ary.push( obj ); 3906 } 3907 return ary; 3908} 3909 3910// get array of elements 3911function querySelect( selector, elem ) { 3912 elem = elem || document; 3913 var elems = elem.querySelectorAll( selector ); 3914 return makeArray( elems ); 3915} 3916 3917function getQueryElement( elem ) { 3918 if ( typeof elem == 'string' ) { 3919 elem = document.querySelector( elem ); 3920 } 3921 return elem; 3922} 3923 3924function docReady( onReady ) { 3925 if ( document.readyState == 'complete' ) { 3926 onReady(); 3927 return; 3928 } 3929 document.addEventListener( 'DOMContentLoaded', onReady ); 3930} 3931 3932// -------------------------- end -------------------------- // 3933 3934return Colcade; 3935 3936})); 3937 3938/*! pace 1.0.0 */ 3939(function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X=[].slice,Y={}.hasOwnProperty,Z=function(a,b){function c(){this.constructor=a}for(var d in b)Y.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},$=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};for(u={catchupTime:100,initialRate:.03,minTime:250,ghostTime:100,maxProgressPerFrame:20,easeFactor:1.25,startOnPageLoad:!0,restartOnPushState:!0,restartOnRequestAfter:500,target:"body",elements:{checkInterval:100,selectors:["body"]},eventLag:{minSamples:10,sampleCount:3,lagThreshold:3},ajax:{trackMethods:["GET"],trackWebSockets:!0,ignoreURLs:[]}},C=function(){var a;return null!=(a="undefined"!=typeof performance&&null!==performance&&"function"==typeof performance.now?performance.now():void 0)?a:+new Date},E=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,t=window.cancelAnimationFrame||window.mozCancelAnimationFrame,null==E&&(E=function(a){return setTimeout(a,50)},t=function(a){return clearTimeout(a)}),G=function(a){var b,c;return b=C(),(c=function(){var d;return d=C()-b,d>=33?(b=C(),a(d,function(){return E(c)})):setTimeout(c,33-d)})()},F=function(){var a,b,c;return c=arguments[0],b=arguments[1],a=3<=arguments.length?X.call(arguments,2):[],"function"==typeof c[b]?c[b].apply(c,a):c[b]},v=function(){var a,b,c,d,e,f,g;
vendor: 4,025 bytes, line 3939
3939for(b=arguments[0],d=2<=arguments.length?X.call(arguments,1):[],f=0,g=d.length;g>f;f++)if(c=d[f])for(a in c)Y.call(c,a)&&(e=c[a],null!=b[a]&&"object"==typeof b[a]&&null!=e&&"object"==typeof e?v(b[a],e):b[a]=e);return b},q=function(a){var b,c,d,e,f;for(c=b=0,e=0,f=a.length;f>e;e++)d=a[e],c+=Math.abs(d),b++;return c/b},x=function(a,b){var c,d,e;if(null==a&&(a="options"),null==b&&(b=!0),e=document.querySelector("[data-pace-"+a+"]")){if(c=e.getAttribute("data-pace-"+a),!b)return c;try{return JSON.parse(c)}catch(f){return d=f,"undefined"!=typeof console&&null!==console?console.error("Error parsing inline pace options",d):void 0}}},g=function(){function a(){}return a.prototype.on=function(a,b,c,d){var e;return null==d&&(d=!1),null==this.bindings&&(this.bindings={}),null==(e=this.bindings)[a]&&(e[a]=[]),this.bindings[a].push({handler:b,ctx:c,once:d})},a.prototype.once=function(a,b,c){return this.on(a,b,c,!0)},a.prototype.off=function(a,b){var c,d,e;if(null!=(null!=(d=this.bindings)?d[a]:void 0)){if(null==b)return delete this.bindings[a];for(c=0,e=[];c<this.bindings[a].length;)e.push(this.bindings[a][c].handler===b?this.bindings[a].splice(c,1):c++);return e}},a.prototype.trigger=function(){var a,b,c,d,e,f,g,h,i;if(c=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],null!=(g=this.bindings)?g[c]:void 0){for(e=0,i=[];e<this.bindings[c].length;)h=this.bindings[c][e],d=h.handler,b=h.ctx,f=h.once,d.apply(null!=b?b:this,a),i.push(f?this.bindings[c].splice(e,1):e++);return i}},a}(),j=window.Pace||{},window.Pace=j,v(j,g.prototype),D=j.options=v({},u,window.paceOptions,x()),U=["ajax","document","eventLag","elements"],Q=0,S=U.length;S>Q;Q++)K=U[Q],D[K]===!0&&(D[K]=u[K]);i=function(a){function b(){return V=b.__super__.constructor.apply(this,arguments)}return Z(b,a),b}(Error),b=function(){function a(){this.progress=0}return a.prototype.getElement=function(){var a;if(null==this.el){if(a=document.querySelector(D.target),!a)throw new i;this.el=document.createElement("div"),this.el.className="pace pace-active",document.body.className=document.body.className.replace(/pace-done/g,""),document.body.className+=" pace-running",this.el.innerHTML='<div class="pace-progress">\n <div class="pace-progress-inner"></div>\n</div>\n<div class="pace-activity"></div>',null!=a.firstChild?a.insertBefore(this.el,a.firstChild):a.appendChild(this.el)}return this.el},a.prototype.finish=function(){var a;return a=this.getElement(),a.className=a.className.replace("pace-active",""),a.className+=" pace-inactive",document.body.className=document.body.className.replace("pace-running",""),document.body.className+=" pace-done"},a.prototype.update=function(a){return this.progress=a,this.render()},a.prototype.destroy=function(){try{this.getElement().parentNode.removeChild(this.getElement())}catch(a){i=a}return this.el=void 0},a.prototype.render=function(){var a,b,c,d,e,f,g;if(null==document.querySelector(D.target))return!1;for(a=this.getElement(),d="translate3d("+this.progress+"%, 0, 0)",g=["webkitTransform","msTransform","transform"],e=0,f=g.length;f>e;e++)b=g[e],a.children[0].style[b]=d;return(!this.lastRenderedProgress||this.lastRenderedProgress|0!==this.progress|0)&&(a.children[0].setAttribute("data-progress-text",""+(0|this.progress)+"%"),this.progress>=100?c="99":(c=this.progress<10?"0":"",c+=0|this.progress),a.children[0].setAttribute("data-progress",""+c)),this.lastRenderedProgress=this.progress},a.prototype.done=function(){return this.progress>=100},a}(),h=function(){function a(){this.bindings={}}return a.prototype.trigger=function(a,b){var c,d,e,f,g;if(null!=this.bindings[a]){for(f=this.bindings[a],g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.call(this,b));return g}},a.prototype.on=function(a,b){var c;return null==(c=this.bindings)[a]&&(c[a]=[]),this.bindings[a].push(b)},a}(),P=window.XMLHttpRequest,O=window.XDomainRequest,N=window.WebSocket,w=function(a,b){var c,d,e,f;f=[];for(d in b.prototype)try{e=b.prototype[d],f.push(null==a[d]&&"function"!=typeof e?a[d]=e:void 0)}catch(g){c=g}return f
vendor: 6,688 bytes, line 3939
3939},A=[],j.ignore=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],A.unshift("ignore"),c=b.apply(null,a),A.shift(),c},j.track=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],A.unshift("track"),c=b.apply(null,a),A.shift(),c},J=function(a){var b;if(null==a&&(a="GET"),"track"===A[0])return"force";if(!A.length&&D.ajax){if("socket"===a&&D.ajax.trackWebSockets)return!0;if(b=a.toUpperCase(),$.call(D.ajax.trackMethods,b)>=0)return!0}return!1},k=function(a){function b(){var a,c=this;b.__super__.constructor.apply(this,arguments),a=function(a){var b;return b=a.open,a.open=function(d,e){return J(d)&&c.trigger("request",{type:d,url:e,request:a}),b.apply(a,arguments)}},window.XMLHttpRequest=function(b){var c;return c=new P(b),a(c),c};try{w(window.XMLHttpRequest,P)}catch(d){}if(null!=O){window.XDomainRequest=function(){var b;return b=new O,a(b),b};try{w(window.XDomainRequest,O)}catch(d){}}if(null!=N&&D.ajax.trackWebSockets){window.WebSocket=function(a,b){var d;return d=null!=b?new N(a,b):new N(a),J("socket")&&c.trigger("request",{type:"socket",url:a,protocols:b,request:d}),d};try{w(window.WebSocket,N)}catch(d){}}}return Z(b,a),b}(h),R=null,y=function(){return null==R&&(R=new k),R},I=function(a){var b,c,d,e;for(e=D.ajax.ignoreURLs,c=0,d=e.length;d>c;c++)if(b=e[c],"string"==typeof b){if(-1!==a.indexOf(b))return!0}else if(b.test(a))return!0;return!1},y().on("request",function(b){var c,d,e,f,g;return f=b.type,e=b.request,g=b.url,I(g)?void 0:j.running||D.restartOnRequestAfter===!1&&"force"!==J(f)?void 0:(d=arguments,c=D.restartOnRequestAfter||0,"boolean"==typeof c&&(c=0),setTimeout(function(){var b,c,g,h,i,k;if(b="socket"===f?e.readyState<2:0<(h=e.readyState)&&4>h){for(j.restart(),i=j.sources,k=[],c=0,g=i.length;g>c;c++){if(K=i[c],K instanceof a){K.watch.apply(K,d);break}k.push(void 0)}return k}},c))}),a=function(){function a(){var a=this;this.elements=[],y().on("request",function(){return a.watch.apply(a,arguments)})}return a.prototype.watch=function(a){var b,c,d,e;return d=a.type,b=a.request,e=a.url,I(e)?void 0:(c="socket"===d?new n(b):new o(b),this.elements.push(c))},a}(),o=function(){function a(a){var b,c,d,e,f,g,h=this;if(this.progress=0,null!=window.ProgressEvent)for(c=null,a.addEventListener("progress",function(a){return h.progress=a.lengthComputable?100*a.loaded/a.total:h.progress+(100-h.progress)/2},!1),g=["load","abort","timeout","error"],d=0,e=g.length;e>d;d++)b=g[d],a.addEventListener(b,function(){return h.progress=100},!1);else f=a.onreadystatechange,a.onreadystatechange=function(){var b;return 0===(b=a.readyState)||4===b?h.progress=100:3===a.readyState&&(h.progress=50),"function"==typeof f?f.apply(null,arguments):void 0}}return a}(),n=function(){function a(a){var b,c,d,e,f=this;for(this.progress=0,e=["error","open"],c=0,d=e.length;d>c;c++)b=e[c],a.addEventListener(b,function(){return f.progress=100},!1)}return a}(),d=function(){function a(a){var b,c,d,f;for(null==a&&(a={}),this.elements=[],null==a.selectors&&(a.selectors=[]),f=a.selectors,c=0,d=f.length;d>c;c++)b=f[c],this.elements.push(new e(b))}return a}(),e=function(){function a(a){this.selector=a,this.progress=0,this.check()}return a.prototype.check=function(){var a=this;return document.querySelector(this.selector)?this.done():setTimeout(function(){return a.check()},D.elements.checkInterval)},a.prototype.done=function(){return this.progress=100},a}(),c=function(){function a(){var a,b,c=this;this.progress=null!=(b=this.states[document.readyState])?b:100,a=document.onreadystatechange,document.onreadystatechange=function(){return null!=c.states[document.readyState]&&(c.progress=c.states[document.readyState]),"function"==typeof a?a.apply(null,arguments):void 0}}return a.prototype.states={loading:0,interactive:50,complete:100},a}(),f=function(){function a(){var a,b,c,d,e,f=this;this.progress=0,a=0,e=[],d=0,c=C(),b=setInterval(function(){var g;return g=C()-c-50,c=C(),e.push(g),e.length>D.eventLag.sampleCount&&e.shift(),a=q(e),++d>=D.eventLag.minSamples&&a<D.eventLag.lagThreshold?(f.progress=100,clearInterval(b)):f.progress=100*(3/(a+3))},50)}return a}(),m=function(){function a(a){this.source=a,this.last=this.sinceLastUpdate=0,this.rate=D.initialRate,this.catchup=0,this.progress=this.lastProgress=0,null!=this.source&&(this.progress=F(this.source,"progress"))}return a.prototype.tick=function(a,b){var c;return null==b&&(b=F(this.source,"progress")),b>=100&&(this.done=!0),b===this.last?this.sinceLastUpdate+=a:(this.sinceLastUpdate&&(this.rate=(b-this.last)/this.sinceLastUpdate),this.catchup=(b-this.progress)/D.catchupTime,this.sinceLastUpdate=0,this.last=b),b>this.progress&&(this.progress+=this.catchup*a),c=1-Math.pow(this.progress/100,D.easeFactor),this.progress+=c*this.rate*a,this.progress=Math.min(this.lastProgress+D.maxProgressPerFrame,this.progress),this.progress=Math.max(0,this.progress),this.progress=Math.min(100,this.progress),this.lastProgress=this.progress,this.progress},a}(),L=null,H=null,r=null,M=null,p=null,s=null,j.running=!1,z=function(){return D.restartOnPushState?j.restart():void 0},null!=window.history.pushState&&(T=window.history.pushState,window.history.pushState=function(){return z(),T.apply(window.history,arguments)}),null!=window.history.replaceState&&(W=window.history.replaceState,window.history.replaceState=function(){return z(),W.apply(window.history,arguments)}),l={ajax:a,elements:d,document:c,eventLag:f},(B=function(){var a,c,d,e,f,g,h,i;for(j.sources=L=[],g=["ajax","elements","document","eventLag"],c=0,e=g.length;e>c;c++)a=g[c],D[a]!==!1&&L.push(new l[a](D[a]));for(i=null!=(h=D.extraSources)?h:[],d=0,f=i.length;f>d;d++)K=i[d],L.push(new K(D));return j.bar=r=new b,H=[],M=new m})(),j.stop=function(){return j.trigger("stop"),j.running=!1,r.destroy(),s=!0,null!=p&&("function"==typeof t&&t(p),p=null),B()},j.restart=function(){return j.trigger("restart"),j.stop(),j.start()},j.go=function(){var a;return j.running=!0,r.render(),a=C(),s=!1,p=G(function(b,c){var d,e,f,g,h,i,k,l,n,o,p,q,t,u,v,w;for(l=100-r.progress,e=p=0,f=!0,i=q=0,u=L.length;u>q;i=++q)for(K=L[i],o=null!=H[i]?H[i]:H[i]=[],h=null!=(w=K.elements)?w:[K],k=t=0,v=h.length;v>t;k=++t)g=h[k],n=null!=o[k]?o[k]:o[k]=new m(g),f&=n.done,n.done||(e++,p+=n.tick(b));return d=p/e,r.update(M.tick(b,d)),r.done()||f||s?(r.update(100),j.trigger("done"),setTimeout(function(){return r.finish(),j.running=!1,j.trigger("hide")},Math.max(D.ghostTime,Math.max(D.minTime-(C()-a),0)))):c()})},j.start=function(a){v(D,a),j.running=!0;try{r.render()}catch(b){i=b}return document.querySelector(".pace")?(j.trigger("start"),j.go()):setTimeout(j.start,50)},"function"==typeof define&&define.amd?define(
vendor: 8,192 bytes, lines 3939-3942
3939function(){return j}):"object"==typeof exports?module.exports=j:D.startOnPageLoad&&j.start()}).call(this); 3940 3941 3942!function(i){"use strict";"function"==typeof define&&define.amd?define(["jquery"],i):"undefined"!=typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function(i){"use strict";var e=window.Slick||{};(e=function(){var e=0;return function(t,o){var s,n=this;n.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:i(t),appendDots:i(t),arrows:!0,asNavFor:null,prevArrow:'<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',nextArrow:'<button class="slick-next" aria-label="Next" type="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(e,t){return i('<button type="button" />').text(t+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,focusOnChange:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},n.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,scrolling:!1,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,swiping:!1,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},i.extend(n,n.initials),n.activeBreakpoint=null,n.animType=null,n.animProp=null,n.breakpoints=[],n.breakpointSettings=[],n.cssTransitions=!1,n.focussed=!1,n.interrupted=!1,n.hidden="hidden",n.paused=!0,n.positionProp=null,n.respondTo=null,n.rowCount=1,n.shouldClick=!0,n.$slider=i(t),n.$slidesCache=null,n.transformType=null,n.transitionType=null,n.visibilityChange="visibilitychange",n.windowWidth=0,n.windowTimer=null,s=i(t).data("slick")||{},n.options=i.extend({},n.defaults,o,s),n.currentSlide=n.options.initialSlide,n.originalSettings=n.options,void 0!==document.mozHidden?(n.hidden="mozHidden",n.visibilityChange="mozvisibilitychange"):void 0!==document.webkitHidden&&(n.hidden="webkitHidden",n.visibilityChange="webkitvisibilitychange"),n.autoPlay=i.proxy(n.autoPlay,n),n.autoPlayClear=i.proxy(n.autoPlayClear,n),n.autoPlayIterator=i.proxy(n.autoPlayIterator,n),n.changeSlide=i.proxy(n.changeSlide,n),n.clickHandler=i.proxy(n.clickHandler,n),n.selectHandler=i.proxy(n.selectHandler,n),n.setPosition=i.proxy(n.setPosition,n),n.swipeHandler=i.proxy(n.swipeHandler,n),n.dragHandler=i.proxy(n.dragHandler,n),n.keyHandler=i.proxy(n.keyHandler,n),n.instanceUid=e++,n.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,n.registerBreakpoints(),n.init(!0)}}()).prototype.activateADA=function(){this.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},e.prototype.addSlide=e.prototype.slickAdd=function(e,t,o){var s=this;if("boolean"==typeof t)o=t,t=null;else if(t<0||t>=s.slideCount)return!1;s.unload(),"number"==typeof t?0===t&&0===s.$slides.length?i(e).appendTo(s.$slideTrack):o?i(e).insertBefore(s.$slides.eq(t)):i(e).insertAfter(s.$slides.eq(t)):!0===o?i(e).prependTo(s.$slideTrack):i(e).appendTo(s.$slideTrack),s.$slides=s.$slideTrack.children(this.options.slide),s.$slideTrack.children(this.options.slide).detach(),s.$slideTrack.append(s.$slides),s.$slides.each(function(e,t){i(t).attr("data-slick-index",e)}),s.$slidesCache=s.$slides,s.reinit()},e.prototype.animateHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.animate({height:e},i.options.speed)}},e.prototype.animateSlide=function(e,t){var o={},s=this;s.animateHeight(),!0===s.options.rtl&&!1===s.options.vertical&&(e=-e),!1===s.transformsEnabled?!1===s.options.vertical?s.$slideTrack.animate({left:e},s.options.speed,s.options.easing,t):s.$slideTrack.animate({top:e},s.options.speed,s.options.easing,t):!1===s.cssTransitions?(!0===s.options.rtl&&(s.currentLeft=-s.currentLeft),i({animStart:s.currentLeft}).animate({animStart:e},{duration:s.options.speed,easing:s.options.easing,step:function(i){i=Math.ceil(i),!1===s.options.vertical?(o[s.animType]="translate("+i+"px, 0px)",s.$slideTrack.css(o)):(o[s.animType]="translate(0px,"+i+"px)",s.$slideTrack.css(o))},complete:function(){t&&t.call()}})):(s.applyTransition(),e=Math.ceil(e),!1===s.options.vertical?o[s.animType]="translate3d("+e+"px, 0px, 0px)":o[s.animType]="translate3d(0px,"+e+"px, 0px)",s.$slideTrack.css(o),t&&setTimeout(function(){s.disableTransition(),t.call()},s.options.speed))},e.prototype.getNavTarget=function(){var e=this,t=e.options.asNavFor;return t&&null!==t&&(t=i(t).not(e.$slider)),t},e.prototype.asNavFor=function(e){var t=this.getNavTarget();null!==t&&"object"==typeof t&&t.each(function(){var t=i(this).slick("getSlick");t.unslicked||t.slideHandler(e,!0)})},e.prototype.applyTransition=function(i){var e=this,t={};!1===e.options.fade?t[e.transitionType]=e.transformType+" "+e.options.speed+"ms "+e.options.cssEase:t[e.transitionType]="opacity "+e.options.speed+"ms "+e.options.cssEase,!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.autoPlay=function(){var i=this;i.autoPlayClear(),i.slideCount>i.options.slidesToShow&&(i.autoPlayTimer=setInterval(i.autoPlayIterator,i.options.autoplaySpeed))},e.prototype.autoPlayClear=function(){var i=this;i.autoPlayTimer&&clearInterval(i.autoPlayTimer)},e.prototype.autoPlayIterator=function(){var i=this,e=i.currentSlide+i.options.slidesToScroll;i.paused||i.interrupted||i.focussed||(!1===i.options.infinite&&(1===i.direction&&i.currentSlide+1===i.slideCount-1?i.direction=0:0===i.direction&&(e=i.currentSlide-i.options.slidesToScroll,i.currentSlide-1==0&&(i.direction=1))),i.slideHandler(e))},e.prototype.buildArrows=function(){var e=this;!0===e.options.arrows&&(e.$prevArrow=i(e.options.prevArrow).addClass("slick-arrow"),e.$nextArrow=i(e.options.nextArrow).addClass("slick-arrow"),e.slideCount>e.options.slidesToShow?(e.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.prependTo(e.options.appendArrows),e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.appendTo(e.options.appendArrows),!0!==e.options.infinite&&e.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):e.$prevArrow.add(e.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},e.prototype.buildDots=function(){var e,t,o=this;if(!0===o.options.dots){for(o.$slider.addClass("slick-dotted"),t=i("<ul />").addClass(o.options.dotsClass),e=0;e<=o.getDotCount();e+=1)t.append(i("<li />").append(o.options.customPaging.call(this,o,e)));o.$dots=t.appendTo(o.options.appendDots),o.$dots.find("li").first().addClass("slick-active")}},e.prototype.buildOut=function(){var e=this;e.$slides=e.$slider.children(e.options.slide+":not(.slick-cloned)").addClass("slick-slide"),e.slideCount=e.$slides.length,e.$slides.each(function(e,t){i(t).attr("data-slick-index",e).data("originalStyling",i(t).attr("style")||"")}),e.$slider.addClass("slick-slider"),e.$slideTrack=0===e.slideCount?i('<div class="slick-track"/>').appendTo(e.$slider):e.$slides.wrapAll('<div class="slick-track"/>').parent(),e.$list=e.$slideTrack.wrap('<div class="slick-list"/>').parent(),e.$slideTrack.css("opacity",0),!0!==e.options.centerMode&&!0!==e.options.swipeToSlide||(e.options.slidesToScroll=1),i("img[data-lazy]",e.$slider).not("[src]").addClass("slick-loading"),e.setupInfinite(),e.buildArrows(),e.buildDots(),e.updateDots(),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),!0===e.options.draggable&&e.$list.addClass("draggable")},e.prototype.buildRows=function(){var i,e,t,o,s,n,r,l=this;if(o=document.createDocumentFragment(),n=l.$slider.children(),l.o
vendor: 3,442 bytes, line 3942
3942ptions.rows>1){for(r=l.options.slidesPerRow*l.options.rows,s=Math.ceil(n.length/r),i=0;i<s;i++){var d=document.createElement("div");for(e=0;e<l.options.rows;e++){var a=document.createElement("div");for(t=0;t<l.options.slidesPerRow;t++){var c=i*r+(e*l.options.slidesPerRow+t);n.get(c)&&a.appendChild(n.get(c))}d.appendChild(a)}o.appendChild(d)}l.$slider.empty().append(o),l.$slider.children().children().children().css({width:100/l.options.slidesPerRow+"%",display:"inline-block"})}},e.prototype.checkResponsive=function(e,t){var o,s,n,r=this,l=!1,d=r.$slider.width(),a=window.innerWidth||i(window).width();if("window"===r.respondTo?n=a:"slider"===r.respondTo?n=d:"min"===r.respondTo&&(n=Math.min(a,d)),r.options.responsive&&r.options.responsive.length&&null!==r.options.responsive){s=null;for(o in r.breakpoints)r.breakpoints.hasOwnProperty(o)&&(!1===r.originalSettings.mobileFirst?n<r.breakpoints[o]&&(s=r.breakpoints[o]):n>r.breakpoints[o]&&(s=r.breakpoints[o]));null!==s?null!==r.activeBreakpoint?(s!==r.activeBreakpoint||t)&&(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):null!==r.activeBreakpoint&&(r.activeBreakpoint=null,r.options=r.originalSettings,!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e),l=s),e||!1===l||r.$slider.trigger("breakpoint",[r,l])}},e.prototype.changeSlide=function(e,t){var o,s,n,r=this,l=i(e.currentTarget);switch(l.is("a")&&e.preventDefault(),l.is("li")||(l=l.closest("li")),n=r.slideCount%r.options.slidesToScroll!=0,o=n?0:(r.slideCount-r.currentSlide)%r.options.slidesToScroll,e.data.message){case"previous":s=0===o?r.options.slidesToScroll:r.options.slidesToShow-o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide-s,!1,t);break;case"next":s=0===o?r.options.slidesToScroll:o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide+s,!1,t);break;case"index":var d=0===e.data.index?0:e.data.index||l.index()*r.options.slidesToScroll;r.slideHandler(r.checkNavigable(d),!1,t),l.children().trigger("focus");break;default:return}},e.prototype.checkNavigable=function(i){var e,t;if(e=this.getNavigableIndexes(),t=0,i>e[e.length-1])i=e[e.length-1];else for(var o in e){if(i<e[o]){i=t;break}t=e[o]}return i},e.prototype.cleanUpEvents=function(){var e=this;e.options.dots&&null!==e.$dots&&(i("li",e.$dots).off("click.slick",e.changeSlide).off("mouseenter.slick",i.proxy(e.interrupt,e,!0)).off("mouseleave.slick",i.proxy(e.interrupt,e,!1)),!0===e.options.accessibility&&e.$dots.off("keydown.slick",e.keyHandler)),e.$slider.off("focus.slick blur.slick"),!0===e.options.arrows&&e.slideCount>e.options.slidesToShow&&(e.$prevArrow&&e.$prevArrow.off("click.slick",e.changeSlide),e.$nextArrow&&e.$nextArrow.off("click.slick",e.changeSlide),!0===e.options.accessibility&&(e.$prevArrow&&e.$prevArrow.off("keydown.slick",e.keyHandler),e.$nextArrow&&e.$nextArrow.off("keydown.slick",e.keyHandler))),e.$list.off("touchstart.slick mousedown.slick",e.swipeHandler),e.$list.off("touchmove.slick mousemove.slick",e.swipeHandler),e.$list.off("touchend.slick mouseup.slick",e.swipeHandler),e.$list.off("touchcancel.slick mouseleave.
3942slick",e.swipeHandler),e.$list.off("click.slick",e.clickHandler),i(document).off(e.visibilityChange,e.visibility),e.cleanUpSlideEvents(),!0===e.options.accessibility&&e.$list.off("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().off("click.slick",e.selectHandler),i(window).off("orientationchange.slick.slick-"+e.instanceUid,e.orientationChange),i(window).off("resize.slick.slick-"+e.instanceUid,e.resize),i("[draggable!=true]",e.$slideTrack).off("dragstart",e.preventDefault),i(window).off("load.slick.slick-"+e.instanceUid,e.setPosition)},e.prototype.cleanUpSlideEvents=function(){var e=this;e.$list.off("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.off("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.cleanUpRows=function(){var i,e=this;e.options.rows>1&&((i=e.$slides.children().children()).removeAttr("style"),e.$slider.empty().append(i))},e.prototype.clickHandler=function(i){!1===this.shouldClick&&(i.stopImmediatePropagation(),i.stopPropagation(),i.preventDefault())},e.prototype.destroy=function(e){var t=this;t.autoPlayClear(),t.touchObject={},t.cleanUpEvents(),i(".slick-cloned",t.$slider).detach(),t.$dots&&t.$dots.remove(),t.$prevArrow&&t.$prevArrow.length&&(t.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.prevArrow)&&t.$prevArrow.remove()),t.$nextArrow&&t.$nextArrow.length&&(t.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.nextArrow)&&t.$nextArrow.remove()),t.$slides&&(t.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){i(this).attr("style",i(this).data("originalStyling"))}),t.$slideTrack.children(this.options.slide).detach(),t.$slideTrack.detach(),t.$list.detach(),t.$slider.append(t.$slides)),t.cleanUpRows(),t.$slider.removeClass("slick-slider"),t.$slider.removeClass("slick-initialized"),t.$slider.removeClass("slick-dotted"),t.unslicked=!0,e||t.$slider.trigger("destroy",[t])},e.prototype.disableTransition=function(i){var e=this,t={};t[e.transitionType]="",!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.fadeSlide=function(i,e){var t=this;!1===t.cssTransitions?(t.$slides.eq(i).css({zIndex:t.options.zIndex}),t.$slides.eq(i).animate({opacity:1},t.options.speed,t.options.easing,e)):(t.applyTransition(i),t.$slides.eq(i).css({opacity:1,zIndex:t.options.zIndex}),e&&setTimeout(function(){t.disableTransition(i),e.call()},t.options.speed))},e.prototype.fadeSlideOut=function(i){var e=this;!1===e.cssTransitions?e.$slides.eq(i).animate({opacity:0,zIndex:e.options.zIndex-2},e.options.speed,e.options.easing):(e.applyTransition(i),e.$slides.eq(i).css({opacity:0,zIndex:e.options.zIndex-2}))},e.prototype.filterSlides=e.prototype.slickFilter=function(i){var e=this;null!==i&&(e.$slidesCache=e.$slides,e.unload(),e.$slideTrack.children(this.options.slide).detach(),e.$slidesCache.filter(i).appendTo(e.$slideTrack),e.reinit())},e.prototype.focusHandler=function(){var e=this;e.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*",function(t){t.stopImmediatePropagation();var o=i(this);setTimeout(function(){e.options.pauseOnFocus&&(e.focussed=o.is(":focus"),e.autoPlay())},0)})},e.prototype.getCurrent=e.prototype.slickCurrentSlide=function(){return this.currentSlide},e.prototype.getDotCount=function(){var i=this,e=0,t=0,o=0;if(!0===i.options.infinite)if(i.slideCount<=i.options.slidesToShow)++o;else for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else if(!0===i.options.centerMode)o=i.slideCount;else if(i.options.asNavFor)for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else o=1+Math.ceil((i.slideCount-i.options.slidesToShow)/i.options.slidesToScroll);return o-1},e.prototype.getLeft=function(i){var e,t,o,s,n=this,r=0;return n.slideOffset=0,t=n.$slides.first().outerHeight(!0),!0===n.options.infinite?(n.slideCount>n.options.slidesToShow&&(n.slideOffset=n.slideWidth*n.options.slidesToShow*-1,s=-1,!0===n.options.vertical&&!0===n.options.centerMode&&(2===n.options.slidesToShow?s=-1.5:1===n.options.slidesToShow&&(s=-2)),r=t*n.options.slidesToShow*s),n.slideCount%n.options.slidesToScroll!=0&&i+n.options.slidesToScroll>n.slideCount&&n.slideCount>n.options.slidesToShow&&(i>n.slideCount?(n.slideOffset=(n.options.slidesToShow-(i-n.slideCount))*n.slideWidth*-1,r=(n.options.slidesToShow-(i-n.slideCount))*t*-1):(n.slideOffset=n.slideCount%n.options.slidesToScroll*n.slideWidth*-1,r=n.slideCount%n.options.slidesToScroll*t*-1))):i+n.options.slidesToShow>n.slideCount&&(n.slideOffset=(i+n.options.slidesToShow-n.slideCount)*n.slideWidth,r=(i+n.options.slidesToShow-n.slideCount)*t),n.slideCount<=n.options.slidesToShow&&(n.slideOffset=0,r=0),!0===n.options.centerMode&&n.slideCount<=n.options.slidesToShow?n.slideOffset=n.slideWidth*Math.floor(n.options.slidesToShow)/2-n.slideWidth*n.slideCount/2:!0===n.options.centerMode&&!0===n.options.infinite?n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)-n.slideWidth:!0===n.options.centerMode&&(n.slideOffset=0,n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)),e=!1===n.options.vertical?i*n.slideWidth*-1+n.slideOffset:i*t*-1+r,!0===n.options.variableWidth&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,!0===n.options.centerMode&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow+1),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,e+=(n.$list.width()-o.outerWidth())/2)),e},e.prototype.getOption=e.prototype.slickGetOption=function(i){return this.options[i]},e.prototype.getNavigableIndexes=function(){var i,e=this,t=0,o=0,s=[];for(!1===e.options.infinite?i=e.slideCount:(t=-1*e.options.slidesToScroll,o=-1*e.options.slidesToScroll,i=2*e.slideCount);t<i;)s.push(t),t=o+e.options.slidesToScroll,o+=e.options.slidesToScroll<=e.options.slidesToShow?e.options.slidesToScroll:e.options.slidesToShow;return s},e.prototype.getSlick=function(){return this},e.prototype.getSlideCount=function(){var e,t,o=this;return t=!0===o.options.centerMode?o.slideWidth*Math.floor(o.options.slidesToShow/2):0,!0===o.options.swipeToSlide?(o.$slideTrack.find(".slick-slide").each(function(s,n){if(n.offsetLeft-t+i(n).outerWidth()/2>-1*o.swipeLeft)return e=n,!1}),Math.abs(i(e).attr("data-slick-index")-o.currentSlide)||1):o.options.slidesToScroll},e.prototype.goTo=e.prototype.slickGoTo=function(i,e){this.changeSlide({data:{message:"index",index:
3942parseInt(i)}},e)},e.prototype.init=function(e){var t=this;i(t.$slider).hasClass("slick-initialized")||(i(t.$slider).addClass("slick-initialized"),t.buildRows(),t.buildOut(),t.setProps(),t.startLoad(),t.loadSlider(),t.initializeEvents(),t.updateArrows(),t.updateDots(),t.checkResponsive(!0),t.focusHandler()),e&&t.$slider.trigger("init",[t]),!0===t.options.accessibility&&t.initADA(),t.options.autoplay&&(t.paused=!1,t.autoPlay())},e.prototype.initADA=function(){var e=this,t=Math.ceil(e.slideCount/e.options.slidesToShow),o=e.getNavigableIndexes().filter(function(i){return i>=0&&i<e.slideCount});e.$slides.add(e.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),null!==e.$dots&&(e.$slides.not(e.$slideTrack.find(".slick-cloned")).each(function(t){var s=o.indexOf(t);i(this).attr({role:"tabpanel",id:"slick-slide"+e.instanceUid+t,tabindex:-1}),-1!==s&&i(this).attr({"aria-describedby":"slick-slide-control"+e.instanceUid+s})}),e.$dots.attr("role","tablist").find("li").each(function(s){var n=o[s];i(this).attr({role:"presentation"}),i(this).find("button").first().attr({role:"tab",id:"slick-slide-control"+e.instanceUid+s,"aria-controls":"slick-slide"+e.instanceUid+n,"aria-label":s+1+" of "+t,"aria-selected":null,tabindex:"-1"})}).eq(e.currentSlide).find("button").attr({"aria-selected":"true",tabindex:"0"}).end());for(var s=e.currentSlide,n=s+e.options.slidesToShow;s<n;s++)e.$slides.eq(s).attr("tabindex",0);e.activateADA()},e.prototype.initArrowEvents=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},i.changeSlide),i.$nextArrow.off("click.slick").on("click.slick",{message:"next"},i.changeSlide),!0===i.options.accessibility&&(i.$prevArrow.on("keydown.slick",i.keyHandler),i.$nextArrow.on("keydown.slick",i.keyHandler)))},e.prototype.initDotEvents=function(){var e=this;!0===e.options.dots&&(i("li",e.$dots).on("click.slick",{message:"index"},e.changeSlide),!0===e.options.accessibility&&e.$dots.on("keydown.slick",e.keyHandler)),!0===e.options.dots&&!0===e.options.pauseOnDotsHover&&i("li",e.$dots).on("mouseenter.slick",i.proxy(e.interrupt,e,!0)).on("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.initSlideEvents=function(){var e=this;e.options.pauseOnHover&&(e.$list.on("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.on("mouseleave.slick",i.proxy(e.interrupt,e,!1)))},e.prototype.initializeEvents=function(){var e=this;e.initArrowEvents(),e.initDotEvents(),e.initSlideEvents(),e.$list.on("touchstart.slick mousedown.slick",{action:"start"},e.swipeHandler),e.$list.on("touchmove.slick mousemove.slick",{action:"move"},e.swipeHandler),e.$list.on("touchend.slick mouseup.slick",{action:"end"}
3942,e.swipeHandler),e.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},e.swipeHandler),e.$list.on("click.slick",e.clickHandler),i(document).on(e.visibilityChange,i.proxy(e.visibility,e)),!0===e.options.accessibility&&e.$list.on("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),i(window).on("orientationchange.slick.slick-"+e.instanceUid,i.proxy(e.orientationChange,e)),i(window).on("resize.slick.slick-"+e.instanceUid,i.proxy(e.resize,e)),i("[draggable!=true]",e.$slideTrack).on("dragstart",e.preventDefault),i(window).on("load.slick.slick-"+e.instanceUid,e.setPosition),i(e.setPosition)},e.prototype.initUI=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.show(),i.$nextArrow.show()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.show()},e.prototype.keyHandler=function(i){var e=this;i.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===i.keyCode&&!0===e.options.accessibility?e.changeSlide({data:{message:!0===e.options.rtl?"next":"previous"}}):39===i.keyCode&&!0===e.options.accessibility&&e.changeSlide({data:{message:!0===e.options.rtl?"previous":"next"}}))},e.prototype.lazyLoad=function(){function e(e){i("img[data-lazy]",e).each(function(){var e=i(this),t=i(this).attr("data-lazy"),o=i(this).attr("data-srcset"),s=i(this).attr("data-sizes")||n.$slider.attr("data-sizes"),r=document.createElement("img");r.onload=function(){e.animate({opacity:0}
vendor: 5,619 bytes, line 3942
3942,100,function(){o&&(e.attr("srcset",o),s&&e.attr("sizes",s)),e.attr("src",t).animate({opacity:1},200,function(){e.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading")}),n.$slider.trigger("lazyLoaded",[n,e,t])})},r.onerror=function(){e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),n.$slider.trigger("lazyLoadError",[n,e,t])},r.src=t})}var t,o,s,n=this;if(!0===n.options.centerMode?!0===n.options.infinite?s=(o=n.currentSlide+(n.options.slidesToShow/2+1))+n.options.slidesToShow+2:(o=Math.max(0,n.currentSlide-(n.options.slidesToShow/2+1)),s=n.options.slidesToShow/2+1+2+n.currentSlide):(o=n.options.infinite?n.options.slidesToShow+n.currentSlide:n.currentSlide,s=Math.ceil(o+n.options.slidesToShow),!0===n.options.fade&&(o>0&&o--,s<=n.slideCount&&s++)),t=n.$slider.find(".slick-slide").slice(o,s),"anticipated"===n.options.lazyLoad)for(var r=o-1,l=s,d=n.$slider.find(".slick-slide"),a=0;a<n.options.slidesToScroll;a++)r<0&&(r=n.slideCount-1),t=(t=t.add(d.eq(r))).add(d.eq(l)),r--,l++;e(t),n.slideCount<=n.options.slidesToShow?e(n.$slider.find(".slick-slide")):n.currentSlide>=n.slideCount-n.options.slidesToShow?e(n.$slider.find(".slick-cloned").slice(0,n.options.slidesToShow)):0===n.currentSlide&&e(n.$slider.find(".slick-cloned").slice(-1*n.options.slidesToShow))},e.prototype.loadSlider=function(){var i=this;i.setPosition(),i.$slideTrack.css({opacity:1}),i.$slider.removeClass("slick-loading"),i.initUI(),"progressive"===i.options.lazyLoad&&i.progressiveLazyLoad()},e.prototype.next=e.prototype.slickNext=function(){this.changeSlide({data:{message:"next"}})},e.prototype.orientationChange=function(){var i=this;i.checkResponsive(),i.setPosition()},e.prototype.pause=e.prototype.slickPause=function(){var i=this;i.autoPlayClear(),i.paused=!0},e.prototype.play=e.prototype.slickPlay=function(){var i=this;i.autoPlay(),i.options.autoplay=!0,i.paused=!1,i.focussed=!1,i.interrupted=!1},e.prototype.postSlide=function(e){var t=this;t.unslicked||(t.$slider.trigger("afterChange",[t,e]),t.animating=!1,t.slideCount>t.options.slidesToShow&&t.setPosition(),t.swipeLeft=null,t.options.autoplay&&t.autoPlay(),!0===t.options.accessibility&&(t.initADA(),t.options.focusOnChange&&i(t.$slides.get(t.currentSlide)).attr("tabindex",0).focus()))},e.prototype.prev=e.prototype.slickPrev=function(){this.changeSlide({data:{message:"previous"}})},e.prototype.preventDefault=function(i){i.preventDefault()},e.prototype.progressiveLazyLoad=function(e){e=e||1;var t,o,s,n,r,l=this,d=i("img[data-lazy]",l.$slider);d.length?(t=d.first(),o=t.attr("data-lazy"),s=t.attr("data-srcset"),n=t.attr("data-sizes")||l.$slider.attr("data-sizes"),(r=document.createElement("img")).onload=function(){s&&(t.attr("srcset",s),n&&t.attr("sizes",n)),t.attr("src",o).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"),!0===l.options.adaptiveHeight&&l.setPosition(),l.$slider.trigger("lazyLoaded",[l,t,o]),l.progressiveLazyLoad()},r.onerror=function(){e<3?setTimeout(function(){l.progressiveLazyLoad(e+1)},500):(t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),l.$slider.trigger("lazyLoadError",[l,t,o]),l.progressiveLazyLoad())},r.src=o):l.$slider.trigger("allImagesLoaded",[l])},e.prototype.refresh=function(e){var t,o,s=this;o=s.slideCount-s.options.slidesToShow,!s.options.infinite&&s.currentSlide>o&&(s.currentSlide=o),s.slideCount<=s.options.slidesToShow&&(s.currentSlide=0),t=s.currentSlide,s.destroy(!0),i.extend(s,s.initials,{currentSlide:t}),s.init(),e||s.changeSlide({data:{message:"index",index:t}},!1)},e.prototype.registerBreakpoints=function(){var e,t,o,s=this,n=s.options.responsive||null;if("array"===i.type(n)&&n.length){s.respondTo=s.options.respondTo||"window";for(e in n)if(o=s.breakpoints.length-1,n.hasOwnProperty(e)){for(t=n[e].breakpoint;o>=0;)s.breakpoints[o]&&s.breakpoints[o]===t&&s.breakpoints.splice(o,1),o--;s.breakpoints.push(t),s.breakpointSettings[t]=n[e].settings}s.breakpoints.sort(function(i,e){return s.options.mobileFirst?i-e:e-i})}},e.prototype.reinit=function(){var e=this;e.$slides=e.$slideTrack.children(e.options.slide).addClass("slick-slide"),e.slideCount=e.$slides.length,e.currentSlide>=e.slideCount&&0!==e.currentSlide&&(e.currentSlide=e.currentSlide-e.options.slidesToScroll),e.slideCount<=e.options.slidesToShow&&(e.currentSlide=0),e.registerBreakpoints(),e.setProps(),e.setupInfinite(),e.buildArrows(),e.updateArrows(),e.initArrowEvents(),e.buildDots(),e.updateDots(),e.initDotEvents(),e.cleanUpSlideEvents(),e.initSlideEvents(),e.checkResponsive(!1,!0),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),e.setPosition(),e.focusHandler(),e.paused=!e.options.autoplay,e.autoPlay(),e.$slider.trigger("reInit",[e])},e.prototype.resize=function(){var e=this;i(window).width()!==e.windowWidth&&(clearTimeout(e.windowDelay),e.windowDelay=window.setTimeout(function(){e.windowWidth=i(window).width(),e.checkResponsive(),e.unslicked||e.setPosition()},50))},e.prototype.removeSlide=e.prototype.slickRemove=function(i,e,t){var o=this;if(i="boolean"==typeof i?!0===(e=i)?0:o.slideCount-1:!0===e?--i:i,o.slideCount<1||i<0||i>o.slideCount-1)return!1;o.unload(),!0===t?o.$slideTrack.children().remove():o.$slideTrack.children(this.options.slide).eq(i).remove(),o.$slides=o.$slideTrack.children(this.options.slide),o.$slideTrack.children(this.options.slide).detach(),o.$slideTrack.append(o.$slides),o.$slidesCache=o.$slides,o.reinit()},e.prototype.setCSS=function(i){var e,t,o=this,s={};
3942!0===o.options.rtl&&(i=-i),e="left"==o.positionProp?Math.ceil(i)+"px":"0px",t="top"==o.positionProp?Math.ceil(i)+"px":"0px",s[o.positionProp]=i,!1===o.transformsEnabled?o.$slideTrack.css(s):(s={},!1===o.cssTransitions?(s[o.animType]="translate("+e+", "+t+")",o.$slideTrack.css(s)):(s[o.animType]="translate3d("+e+", "+t+", 0px)",o.$slideTrack.css(s)))},e.prototype.setDimensions=function(){var i=this;!1===i.options.vertical?!0===i.options.centerMode&&i.$list.css({padding:"0px "+i.options.centerPadding}):(i.$list.height(i.$slides.first().outerHeight(!0)*i.options.slidesToShow),!0===i.options.centerMode&&i.$list.css({padding:i.options.centerPadding+" 0px"})),i.listWidth=i.$list.width(),i.listHeight=i.$list.height(),!1===i.options.vertical&&!1===i.options.variableWidth?(i.slideWidth=Math.ceil(i.listWidth/i.options.slidesToShow),i.$slideTrack.width(Math.ceil(i.slideWidth*i.$slideTrack.children(".slick-slide").length))):!0===i.options.variableWidth?i.$slideTrack.width(5e3*i.slideCount):(i.slideWidth=Math.ceil(i.listWidth),i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0)*i.$slideTrack.children(".slick-slide").length)));var e=i.$slides.first().outerWidth(!0)-i.$slides.first().width();!1===i.options.variableWidth&&i.$slideTrack.children(".slick-slide").width(i.slideWidth-e)},e.prototype.setFade=function(){var e,t=this;t.$slides.each(function(o,s){e=t.slideWidth*o*-1,!0===t.options.rtl?i(s).css({position:"relative",right:e,top:0,zIndex:t.options.zIndex-2,opacity:0}
3942):i(s).css({position:"relative",left:e,top:0,zIndex:t.options.zIndex-2,opacity:0})}),t.$slides.eq(t.currentSlide).css({zIndex:t.options.zIndex-1,opacity:1})},e.prototype.setHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.css("height",e)}},e.prototype.setOption=e.prototype.slickSetOption=function(){var e,t,o,s,n,r=this,l=!1;if("object"===i.type(arguments[0])?(o=arguments[0],l=arguments[1],n="multiple"):"string"===i.type(arguments[0])&&(o=arguments[0],s=arguments[1],l=arguments[2],"responsive"===arguments[0]&&"array"===i.type(arguments[1])?n="responsive":void 0!==arguments[1]&&(n="single")),"single"===n)r.options[o]=s;else if("multiple"===n)i.each(o,function(i,e){r.options[i]=e});else if("responsive"===n)for(t in s)if("array"!==i.type(r.options.responsive))r.options.responsive=[s[t]];else{for(e=r.options.responsive.length-1;e>=0;)r.options.responsive[e].breakpoint===s[t].breakpoint&&r.options.responsive.splice(e,1),e--;r.options.responsive.push(s[t])}l&&(r.unload(),r.reinit())},e.prototype.setPosition=function(){var i=this;i.setDimensions(),i.setHeight(),!1===i.options.fade?i.setCSS(i.getLeft(i.currentSlide)):i.setFade(),i.$slider.trigger("setPosition",[i])},e.prototype.setProps=function(){var i=this,e=document.body.style;i.positionProp=!0===i.options.vertical?"top":"left","top"===i.positionProp?i.$slider.addClass("slick-vertical"):i.$slider.removeClass("slick-vertical"),void 0===e.WebkitTransition&&void 0===e.MozTransition&&void 0===e.msTransition||!0===i.options.useCSS&&(i.cssTransitions=!0),i.options.fade&&("number"==typeof i.options.zIndex?i.options.zIndex<3&&(i.options.zIndex=3):i.options.zIndex=i.defaults.zIndex),void 0!==e.OTransform&&(i.animType="OTransform",i.transformType="-o-transform",i.transitionType="OTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.MozTransform&&(i.animType="MozTransform",i.transformType="-moz-transform",i.transitionType="MozTransition",void 0===e.perspectiveProperty&&void 0===e.MozPerspective&&(i.animType=!1)),void 0!==e.webkitTransform&&(i.animType="webkitTransform",i.transformType="-webkit-transform",i.transitionType="webkitTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.msTransform&&(i.animType="msTransform",i.transformType="-ms-transform",i.transitionType="msTransition",void 0===e.msTransform&&(i.animType=!1)),void 0!==e.transform&&!1!==i.animType&&(i.animType="transform",i.transformType="transform",i.transitionType="transition"),i.transformsEnabled=i.options.useTransform&&null!==i.animType&&!1!==i.animType},e.prototype.setSlideClasses=function(i){var e,t,o,s,n=this;if(t=n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),n.$slides.eq(i).addClass("slick-current"),!0===n.options.centerMode){var r=n.options.slidesToShow%2==0?1:0;e=Math.floor(n.options.slidesToShow/2),!0===n.options.infinite&&(i>=e&&i<=n.slideCount-1-e?n.$slides.slice(i-e+r,i+e+1).addClass("slick-active").attr("aria-hidden","false"):(o=n.options.slidesToShow+i,t.slice(o-e+1+r,o+e+2).addClass("slick-active").attr("aria-hidden","false")),0===i?t.eq(t.length-1-n.options.slidesToShow).addClass("slick-center"):i===n.slideCount-1&&t.eq(n.options.slidesToShow).addClass("slick-center")),n.$slides.eq(i).addClass("slick-center")}else i>=0&&i<=n.slideCount-n.options.slidesToShow?n.$slides.slice(i,i+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):t.length<=n.options.slidesToShow?t.addClass("slick-active").attr("aria-hidden","false"):(s=n.slideCount%n.options.slidesToShow,o=!0===n.options.infinite?n.options.slidesToShow+i:i,n.options.slidesToShow==n.options.slidesToScroll&&n.slideCount-i<n.options.slidesToShow?t.slice(o-(n.options.slidesToShow-s),o+s).addClass("slick-active").attr("aria-hidden","false"):t.slice(o,o+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"));"ondemand"!==n.options.lazyLoad&&"anticipated"!==n.options.lazyLoad||n.lazyLoad()},e.prototype.setupInfinite=function(){var e,t,o,s=this;if(!0===s.options.fade&&(s.options.centerMode=!1),!0===s.options.infinite&&!1===s.options.fade&&(t=null,s.slideCount>s.options.slidesToShow)){for(o=!0===s.options.centerMode?s.options.slidesToShow+1:s.options.slidesToShow,e=s.slideCount;e>s.slideCount-o;e-=1)t=e-1,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t-s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned");for(e=0;e<o+s.slideCount;e+=1)t=e,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t+s.slideCount).appendTo(s.$slideTrack).addClass("slick-cloned");s.$slideTrack.find(".slick-cloned").find("[id]").each(function(){i(this).attr("id","")})}},e.prototype.interrupt=function(i){var e=this;i||e.autoPlay(),e.interrupted=i},e.prototype.selectHandler=function(e){var t=this,o=i(e.target).is(".slick-slide")?i(e.target):i(e.target).parents(".slick-slide"),s=parseInt(o.attr("data-slick-index"));s||(s=0),t.slideCount<=t.options.slidesToShow?t.slideHandler(s,!1,!0):t.slideHandler(s)},e.prototype.slideHandler=function(i,e,t){var o,s,n,r,l,d=null,a=this;if(e=e||!1,!(!0===a.animating&&!0===a.options.waitForAnimate||!0===a.options.fade&&a.currentSlide===i))if(!1===e&&a.asNavFor(i),o=i,d=a.getLeft(o),r=a.getLeft(a.currentSlide),a.currentLeft=null===a.swipeLeft?r:a.swipeLeft,!1===a.options.infinite&&!1===a.options.centerMode&&(i<0||i>a.getDotCount()*a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else if(!1===a.options.infinite&&!0===a.options.centerMode&&(i<0||i>a.slideCount-a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else{if(a.options.autoplay&&clearInterval(a.autoPlayTimer),s=o<0?a.slideCount%a.options.slidesToScroll!=0?a.slideCount-a.slideCount%a.options.slidesToScroll:a.slideCount+
3942o:o>=a.slideCount?a.slideCount%a.options.slidesToScroll!=0?0:o-a.slideCount:o,a.animating=!0,a.$slider.trigger("beforeChange",[a,a.currentSlide,s]),n=a.currentSlide,a.currentSlide=s,a.setSlideClasses(a.currentSlide),a.options.asNavFor&&(l=(l=a.getNavTarget()).slick("getSlick")).slideCount<=l.options.slidesToShow&&l.setSlideClasses(a.currentSlide),a.updateDots(),a.updateArrows(),!0===a.options.fade)return!0!==t?(a.fadeSlideOut(n),a.fadeSlide(s,function(){a.postSlide(s)})):a.postSlide(s),void a.animateHeight();!0!==t?a.animateSlide(d,function(){a.postSlide(s)}):a.postSlide(s)}},e.prototype.startLoad=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.hide(),i.$nextArrow.hide()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.hide(),i.$slider.addClass("slick-loading")},e.prototype.swipeDirection=function(){var i,e,t,o,s=this;return i=s.touchObject.startX-s.touchObject.curX,e=s.touchObject.startY-s.touchObject.curY,t=Math.atan2(e,i),(o=Math.round(180*t/Math.PI))<0&&(o=360-Math.abs(o)),o<=45&&o>=0?!1===s.options.rtl?"left":"right":o<=360&&o>=315?!1===s.options.rtl?"left":"right":o>=135&&o<=225?!1===s.options.rtl?"right":"left":!0===s.options.verticalSwiping?o>=35&&o<=135?"down":"up":"vertical"},e.prototype.swipeEnd=function(i){var e,t,o=this;if(o.dragging=!1,o.swiping=!1,o.scrolling)return o.scrolling=!1,!1;if(o.interrupted=!1,o.shouldClick=!(o.touchObject.swipeLength>10),void 0===o.touchObject.curX)return!1;if(!0===o.touchObject.edgeHit&&o.$slider.trigger("edge",[o,o.swipeDirection()]),o.touchObject.swipeLength>=o.touchObject.minSwipe){switch(t=o.swipeDirection()){case"left":case"down":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide+o.getSlideCount()):o.currentSlide+o.getSlideCount(),o.currentDirection=0;break;case"right":case"up":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide-o.getSlideCount()):o.currentSlide-o.getSlideCount(),o.currentDirection=1}"vertical"!=t&&(o.slideHandler(e),o.touchObject={},o.$slider.trigger("swipe",[o,t]))}else o.touchObject.startX!==o.touchObject.curX&&(o.slideHandler(o.currentSlide),o.touchObject={})},e.prototype.swipeHandler=function(i){var e=this;if(!(!1===e.options.swipe||"ontouchend"in document&&!1===e.options.swipe||!1===e.options.draggable&&-1!==i.type.indexOf("mouse")))switch(e.touchObject.fingerCount=i.originalEvent&&void 0!==i.originalEvent.touches?i.originalEvent.touches.length:1,e.touchObject.minSwipe=e.listWidth/e.options.touchThreshold,!0===e.options.verticalSwiping&&(e.touchObject.minSwipe=e.listHeight/e.options.touchThreshold),i.data.action){case"start":e.swipeStart(i);break;case"move":e.swipeMove(i);break;case"end":e.swipeEnd(i)}},e.prototype.swipeMove=function(i){var e,t,o,s,n,r,l=this;return n=void 0!==i.originalEvent?i.originalEvent.touches:null,!(!l.dragging||l.scrolling||n&&1!==n.length)&&(e=l.getLeft(l.currentSlide),l.touchObject.curX=void 0!==n?n[0].pageX:i.clientX,l.touchObject.curY=void 0!==n?n[0].pageY:i.clientY,l.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(l.touchObject.curX-l.touchObject.startX,2))),r=Math.round(Math.sqrt(Math.pow(l.touchObject.curY-l.touchObject.startY,2))),!l.options.verticalSwiping&&!l.swiping&&r>4?(l.scrolling=!0,!1):(!0===l.options.verticalSwiping&&(l.touchObject.swipeLength=r),t=l.swipeDirection(),void 0!==i.originalEvent&&l.touchObject.swipeLength>4&&(l.swiping=!0,i.preventDefault()),s=(!1===l.options.rtl?1:-1)*(l.touchObject.curX>l.touchObject.startX?1:-1),!0===l.options.verticalSwiping&&(s=l.touchObject.curY>l.touchObject.startY?1:-1),o=l.touchObject.swipeLength,l.touchObject.edgeHit=!1,!1===l.options.infinite&&(0===l.currentSlide&&"right"===t||l.currentSlide>=l.getDotCount()&&"left"===t)&&(o=l.touchObject.swipeLength*l.options.edgeFriction,l.touchObject.edgeHit=!0),!1===l.options.vertical?l.swipeLeft=e+o*s:l.swipeLeft=e+o*(l.$list.height()/l.listWidth)*s,!0===l.options.verticalSwiping&&(l.swipeLeft=e+o*s),!0!==l.options.fade&&!1!==l.options.touchMove&&(!0===l.animating?(l.swipeLeft=null,!1):void l.setCSS(l.swipeLeft))))},e.prototype.swipeStart=function(i){var e,t=this;if(t.interrupted=!0,1!==t.touchObject.fingerCount||t.slideCount<=t.options.slidesToShow)return t.touchObject={},!1;void 0!==i.originalEvent&&void 0!==i.originalEvent.touches&&(e=i.originalEvent.touches[0]),t.touchObject.startX=t.touchObject.curX=void 0!==e?e.pageX:i.clientX,t.touchObject.startY=t.touchObject.curY=void 0!==e?e.pageY:i.clientY,t.dragging=!0},e.prototype.unfilterSlides=e.prototype.slickUnfilter=function(){var i=this;null!==i.$slidesCache&&(i.unload(),i.$slideTrack.children(this.options.slide).detach(),i.$slidesCache.appendTo(i.$slideTrack),i.reinit())},e.prototype.unload=function(){var e=this;i(".slick-cloned",e.$slider).remove(),e.$dots&&e.$dots.remove(),e.$prevArrow&&e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.remove(),e.$nextArrow&&e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.remove(),e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")}
3942,e.prototype.unslick=function(i){var e=this;e.$slider.trigger("unslick",[e,i]),e.destroy()},e.prototype.updateArrows=function(){var i=this;Math.floor(i.options.slidesToShow/2),!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&!i.options.infinite&&(i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===i.currentSlide?(i.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-i.options.slidesToShow&&!1===i.options.centerMode?(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-1&&!0===i.options.centerMode&&(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},e.prototype.updateDots=function(){var i=this;null!==i.$dots&&(i.$dots.find("li").removeClass("slick-active").end(),i.$dots.find("li").eq(Math.floor(i.currentSlide/i.options.slidesToScroll)).addClass("slick-active"))},e.prototype.visibility=function(){var i=this;i.options.autoplay&&(document[i.hidden]?i.interrupted=!0:i.interrupted=!1)},i.fn.slick=function(){var i,t,o=this,s=arguments[0],n=Array.prototype.slice.call(arguments,1),r=o.length;for(i=0;i<r;i++)if("object"==typeof s||void 0===s?o[i].slick=new e(o[i],s):t=o[i].slick[s].apply(o[i].slick,n),void 0!==t)return t;return o}}); 3943 3944$(document).ready(function() { 3945 if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { 3946 var isMobile = true; 3947 } else { 3948 var isMobile = false; 3949 } 3950 3951 3952 addErrorClassToRecaptcha(); 3953 3954 $(".backendlayout-cs_simple #page-content h2").first().addClass( "highlight" ); 3955 $(".form-overlay-content form fieldset").last().addClass( "forminfo" ); 3956 $("#page-content form fieldset").last().addClass( "forminfo" ); 3957 3958 3959 setTimeout(function () { 3960 var divs = $("#p1 .tx-blog-post-list.grid > .grid-item"); 3961 for(var i = 0; i < divs.length; i+=2) { 3962 divs.slice(i, i+2).wrapAll("<div class='grid-col-wrapper grid-col'></div>"); 3963 } 3964 3965 $("#p1 .tx-blog-post-list.grid .grid-col-wrapper:nth-child(3n+1)").addClass("grid-col--1") 3966 $("#p1 .tx-blog-post-list.grid .grid-col-wrapper:nth-child(3n-1)").addClass("grid-col--2") 3967 $("#p1 .tx-blog-post-list.grid .grid-col-wrapper:nth-child(3n)").addClass("grid-col--3") 3968 3969 if (typeof $('#p1 .tx-blog-post-list.grid').colcade !== "undefined") { 3970 $('#p1 .tx-blog-post-list.grid').colcade({ 3971 columns: '.grid-col', 3972 items: '.grid-item', 3973 }); 3974 } 3975 }, 500); 3976 3977 3978 3979 // UPDATE V11 3980 var container = document.querySelectorAll('.gallery-row'); 3981 container.forEach(function(el){ 3982 var inner = el.querySelectorAll('div').length; 3983 if(inner == 1) { 3984 el.classList.add('only-one-div'); 3985 } 3986 else { 3987 3988 } 3989 }); 3990 3991 3992 $('.burger, .overlay').click(function(){ 3993 $('.burger').toggleClass('clicked'); 3994 $('.top-menu').toggleClass('clicked'); 3995 $('.overlay').toggleClass('show'); 3996 $('#mainnavigation').toggleClass('show'); 3997 $('body').toggleClass('overflow'); 3998 $("#mainnavigation").removeClass("haslevel2"); 3999 $("#mainnavigation .level2-wrapper").removeClass("active"); 4000 }); 4001 4002 // FORM OVERLAY 4003 /*$('.overlaybutton, .overlay-form').click(function(){ 4004 $('.overlaybutton').toggleClass('clicked'); 4005 $('.overlay-form').toggleClass('show'); 4006 $('.form-overlay-content').toggleClass('show'); 4007 $('body').toggleClass('overflow'); 4008 }); 4009 // FORM CLOSE BUTTON 4010 $('.form-overlay-content .close-icon').click(function(){ 4011 $('.overlaybutton').removeClass('clicked'); 4012 $('.overlay-form').removeClass('show'); 4013 $('.form-overlay-content').removeClass('show'); 4014 $('body').removeClass('overflow'); 4015 });*/ 4016 // SEARCH OVERLAY 4017 $('.searchbutton, .overlay-search').click(function(){ 4018 $('.searchbutton').toggleClass('clicked'); 4019 $('.overlay-search').toggleClass('show'); 4020 $('.searchcontent').toggleClass('show'); 4021 $('body').toggleClass('overflow'); 4022 }); 4023 // FORM CLOSE BUTTON 4024 $('.form-overlay-content .close-icon').click(function(){ 4025 $('.searchbutton').removeClass('clicked'); 4026 $('.overlay-search').removeClass('show'); 4027 $('.searchcontent').removeClass('show'); 4028 $('body').removeClass('overflow'); 4029 }); 4030 4031 //MENU DESKTOP OVERLAY 4032 if ($(window).width() >= 992) { 4033 $("body").addClass("desktop"); 4034 $("#mainnavigation .dropdown .dropdown-menu").wrapAll( "<div class='level2
4034-wrapper'></div>" ); 4035 $(".level2-wrapper").prependTo("#mainnavigation"); 4036 $("#mainnavigation .dropdown").click(function(e) { 4037 e.preventDefault(); 4038 var currentId = $(this).find('a').attr('id'); 4039 $("#mainnavigation .level2-wrapper .dropdown-menu, #mainnavigation .navbar-nav > li ").removeClass("show"); 4040 if (!$("#mainnavigation").hasClass('haslevel2')){ 4041 $("#mainnavigation").addClass("haslevel2"); 4042 $("#mainnavigation .level2-wrapper").addClass("active"); 4043 } 4044 $(this).toggleClass("show"); + $("#mainnavigation .level2-wrapper").find("." + currentId).toggleClass("show"); 4045 return false; 4046 }); 4047 } 4048 4049 //MOBILE MENU 4050 if ($(window).width() < 992) { 4051 $("#mainnavigation > .navbar-nav > .nav-item > a").click(function(e) { 4052 e.preventDefault(); 4053 $(this).parent().find(".dropdown-menu").toggleClass("show"); 4054 $(this).toggleClass("open"); 4055 return false; 4056 }); 4057 } 4058 4059 slickSlider(); 4060 4061 if (navigator.userAgent.match(/msie/i) || navigator.userAgent.match(/trident/i) ){ 4062 $("body").addClass("internet_explorer"); 4063 } 4064 4065 /////////////////////////////////////////////////////////////////////// 4066 ////////////////// SCROLLING ANIMATION CIRCLES START ////////////////// 4067 /////////////////////////////////////////////////////////////////////// 4068 if (!isMobile) { 4069 if (typeof ScrollMagic !== "undefined" && TimelineMax !== "undefined") { 4070 const controller = new ScrollMagic.Controller(); 4071 //SMALL SCREEN 4072 $('.frame-layout-special-text-image .row .col-lg-6:last-child .gallery-item:nth-child(2),.frame-layout-special-text-image .row .col-lg-6:first-child .gallery-item:nth-child(2)').each(function () { 4073 const tl = new TimelineMax(); 4074 const child = $(this).find('picture'); 4075 tl.to(child, 1, {y: -200, scale: 1.1, ease: 'none'}); 4076 const scene = new ScrollMagic.Scene({ 4077 triggerElement: this, 4078 //triggerHook: 1, 4079 duration: '200%', 4080 }) 4081 .setTween(tl) 4082 //.addIndicators() 4083 .addTo(controller); 4084 }); 4085 //ICON 4086 $('.frame-layout-special-text-image .row .col-lg-6:first-child .gallery-item:first-child,.frame-layout-special-text-image .row .col-lg-6:last-child .gallery-item:first-child').each(function () { 4087 const tl = new TimelineMax(); 4088 const child = $(this).find('picture'); 4089 tl.to(child, 1, {y: +200, scale: 1.1, ease: 'none'}); 4090 const scene = new ScrollMagic.Scene({ 4091 triggerElement: this, 4092 //triggerHook: 1, 4093 duration: '200%', 4094 }) 4095 .setTween(tl) 4096 .addTo(controller); 4097 }); 4098 //REFERENZEN IMG 4099 $('.frame-layout-customer_teaser').each(function () { 4100 const tl = new TimelineMax(); 4101 const child = $(this).find('img'); 4102 tl.to(child, 1, {y: +50, scale: 1.2, ease: 'none'}); 4103 const scene = new ScrollMagic.Scene({ 4104 triggerElement: this, 4105 //triggerHook: 1, 4106 duration: '200%', 4107 }) 4108 .setTween(tl) 4109 .addTo(controller); 4110 }); 4111 //HEADER TEASER BILD 4112 $('body.backendlayout-cs_simple .hero-simple .frame-container .textpic-gallery').each(function () { 4113 const tl = new TimelineMax(); 4114 const child = $(this).find('img'); 4115 tl.to(child, 1, {y: -100, scale: 1.2, ease: 'none'}); 4116 const scene = new ScrollMagic.Scene({ 4117 triggerElement: this, 4118 //triggerHook: 1, 4119 duration: '200%', 4120 }) 4121 .setTween(tl) 4122 .addTo(controller); 4123 }); 4124 } 4125 4126 }
4127 /////////////////////////////////////////////////////////////////////// 4128 ////////////////// SCROLLING ANIMATION CIRCLES ENDE /////////////////// 4129 /////////////////////////////////////////////////////////////////////// 4130 4131 4132 // cookie consent 4133 window.consentConfig = { 4134 privacyPolicy: '/datenschutz', 4135 apps : [ 4136 { 4137 name : 'google-analytics', 4138 default: true, 4139 title : 'Google Analytics', 4140 purposes : ['statistics'], 4141 cookies : [/^ga/i], 4142 callback : function(consent, app){ 4143 //this is an example callback function... 4144 }, 4145 }, 4146 //... 4147 ], 4148 } 4149 4150}); 4151 4152$( window ).resize(function() { 4153 //MENU DESKTOP OVERLAY 4154 if ($(window).width() > 992) { 4155 $("body").addClass("desktop"); 4156 } else { 4157 $("body").removeClass("desktop"); 4158 } 4159}); 4160 4161$(window).on("load", function () { 4162 startVideo(); 4163 //videoStartAttribute(); 4164 4165}) 4166 4167// ############################### 4168// ########## FUNCTIONS ########## 4169// ############################### 4170function startVideo(){ 4171 if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { 4172 var isMobile = true; 4173 } else { 4174 var isMobile = false; 4175 } 4176 if (jQuery('body.backendlayout-cs_special_start video').length){ 4177 4178 var videoElement = jQuery('body.backendlayout-cs_special_start video'); 4179 if (videoElement.length && !isMobile){ 4180 videoElement.find('source').each(function() { 4181 var sourceFile = $(this).attr("data-src"); 4182 $(this).attr("src", sourceFile); 4183 var video = this.parentElement; 4184 video.load(); 4185 jQuery('div.hero > .frame-type-image').hide(); 4186 jQuery('div.hero > .frame-type-html').show(); 4187 video.play(); 4188 }); 4189 } 4190 } 4191} 4192function addErrorClassToRecaptcha() { 4193 if (jQuery(".tx-powermail .powermail_message.powermail_message_error")[0]){ 4194 jQuery(".tx-powermail .powermail_fieldwrap_type_recaptcha").addClass("error"); 4195 } else { 4196 return false; 4197 } 4198} 4199 4200function videoStartAttribute() { 4201 var vid = $(".video video"); 4202 console.log(vid); 4203 vid.attr('autoplay',true); 4204 vid.attr('loop',true); 4205 vid.attr('muted',"muted"); 4206 vid.attr('playsinline',true); 4207 vid[0].play(); 4208} 4209 4210function slickSlider() { 4211 $('.section-slider > div').wrapAll("<div class='slider-wrapper'></div>"); 4212 $('<div class="frame-container wrapper-pagingInfo"><div class="pagingInfo"></div></div>').prependTo('.section-slider'); 4213 var $status = $('.pagingInfo'); 4214 var $slickElement = $('.section-slider > .slider-wrapper'); 4215 $slickElement.on('init reInit afterChange', function (event, slick, currentSlide, nextSlide) { 4216 // no dots -> no slides 4217 if(!slick.$dots){ 4218 return; 4219 } 4220 //currentSlide is undefined on init -- set it to 0 in this case (currentSlide is 0 based) 4221 var i = (currentSlide ? currentSlide : 0) + 1; 4222 // use dots to get some count information 4223 $status.text(i + '/' + (slick.$dots[0].children.length)); 4224 }); 4225 $slickElement.slick({ 4226 autoplay: false, 4227 //autoplaySpeed: 1500, 4228 speed: 800, 4229 dots: true, 4230 arrows: true, 4231 pauseOnHover: true, 4232 infinite: true, 4233 fade: false, 4234 slide: 'div', 4235 slidesToShow:1, 4236 slidesToScroll: 1, 4237 adaptiveHeight: true, 4238 cssEase: 'linear', 4239 responsive: [{ 4240 breakpoint: 992, 4241 settings: { 4242 slidesToShow:1, 4243 slidesToScroll: 1, 4244 } 4245 }] 4246 }); 4247}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.