{"version":3,"sources":["../assets/plugins/cubeportfolio/js/jquery.cubeportfolio.js"],"names":["$","window","document","undefined","CubePortfolio","obj","options","callback","t","this","data","Error","$obj","extend","fn","cubeportfolio","isAnimating","defaultFilter","registeredEvents","queue","addedWrapp","isFunction","registerEvent","children","addClass","length","first","hasClass","wrapInner","$ul","wrapper","blocks","blocksOn","plugins","each","key","value","triggerEvent","loadImages","display","prototype","storeData","indexStart","index","el","item","width","height","widthInitial","heightInitial","widthAndGap","gapVertical","heightAndGap","gapHorizontal","left","leftNew","top","topNew","pack","items","classAttr","i","div","createElement","setAttribute","childNodes","appendChild","removeAttrImage","img","removeAttribute","elems","requestAnimationFrame","imgs","find","map","hasAttribute","style","getAttribute","checkSrc","on","off","srcset","attr","sizes","src","imgsLength","call","node","complete","naturalWidth","layoutAndAdjustment","runQueue","delayFrame","resizeEvent","trigger","private","resize","initEvent","instance","outerWidth","gridAdjustment","maxWidth","gridAdjust","responsiveLayout","removeAttr","bound","getBoundingClientRect","columnWidthTruncate","right","Math","round","bottom","widthAvailable","layout","computeBlocks","filterConcat","layoutMode","sliderLayoutReset","sliderLayout","mosaicLayoutReset","mosaicLayout","positionateItems","resizeMainContainer","computeFilter","expression","filterLayout","blocksOff","removeClass","filterFinish","blocksAreSorted","sortBlocks","blocksOnInitial","filter","not","cols","isArray","mediaQueries","columnWidth","getMosaicWidthReference","getColsMosaic","parent","imgWidth","parseInt","imgHeight","ratio","parseFloat","toFixed","push","arrWidth","sort","a","b","mosaicWidthReference","ceil","floor","min","max","getColumnsAuto","getColumnsBreakpoints","mediaQuery","gridWidth","freeSpaces","slice","topStart","rightEdge","modernBrowser","one","transitionend","replace","pushQueue","name","deferred","when","apply","then","proxy","clearQueue","callbackFunction","oneTime","func","param","len","splice","addItems","position","css","last","animationend","addItemsFinish","merge","itemsLen","public","showCounter","removeItems","removeItemsFinish","index2","el2","removeEl","remove","method","init","constructor","jQuery","sortToPreventGaps","leftStart","leftEnd","topEnd","pow","blocksLen","spaceIndexAndBlock","getSpaceIndexAndBlock","sortBlocksToPreventGaps","generateF1F2","spaceIndex","dataBlock","generateG1G2G3G4","cleanFreeSpaces","addHeightToBlocks","index1","space","widthSpace","heightSpace","block","F1","F2","spaces","intersectSpace","intersectSpaces","generateG1","generateG2","generateG3","generateG4","space1","space2","correctSubPixelValues","removeNonMaximalFreeSpaces","uniqueFreeSpaces","result","indexSpace","indexBlock","block1","block2","data1","data2","compare","filters","search","drag","auto","autoTimeout","autoPauseOnHover","showNavigation","showPagination","rewindNav","scrollByPage","filterDeeplinking","animationType","caption","displayType","displayTypeSpeed","lightboxDelegate","lightboxGallery","lightboxTitleSrc","lightboxCounter","singlePageDelegate","singlePageDeeplinking","singlePageStickyNavigation","singlePageCounter","singlePageAnimation","singlePageCallback","singlePageInlineDelegate","singlePageInlineDeeplinking","singlePageInlinePosition","singlePageInlineInFocus","singlePageInlineCallback","$window","publicEvents","eventName","time","beforeEventCallback","events","scrollEvent","destroyEvent","val","timeout","clearTimeout","setTimeout","checkInstance","browserInfo","transition","animation","perspective","appVersion","navigator","indexOf","browser","ActiveXObject","test","styleSupport","WebkitTransition","WebkitAnimation","animationDuration","animationDelay","transform","prop","supportedProp","webkitProp","charAt","toUpperCase","innerHeight","screen","destroy","removeData","elem","unwrap","destroySlider","url","location","href","encodeURIComponent","singlePage","singlePageInline","isOpen","close","count","text","appendItems","els","append","prepend","updateSliderPagination","pages","navPagination","empty","class","data-slider-action","appendTo","navPaginationItems","enableDisableNavSlider","stopSliderAuto","nextSlider","isEndSlider","isRewindNav","sliderActive","goToSlider","prevSlider","isStartSlider","jumpToSlider","jumpDragToSlider","pos","jumpWidth","offset","dragLeft","abs","updateSliderPosition","startSliderAuto","isDrag","page","navPrev","navNext","eq","customPagination","customPaginationItems","customPaginationClass","sliderItemsLength","sliderFreeSpaces","getFreeSpacesForSlider","dragSlider","dragStart","e","isTouch","touchStartEvent","preventDefault","target","posInitial","pointerEventToXY","x","ulPosition","ulMaxWidth","$document","move","dragMove","end","dragEnd","afterDragEnd","mouseIsEntered","originalEvent","touches","pageX","y","pageY","maxTouchPoints","msMaxTouchPoints","start","Object","create","F","lastTime","vendors","cancelAnimationFrame","element","currTime","Date","getTime","timeToCall","id","Plugin","blocksOn2On","blocksOn2Off","blocksOff2On","animationClassic","inArray","removeChild","ulClone","cloneNode","insertBefore","animationClone","clone","onLength","offLength","animationCloneDelay","animationWrapper","captionOn","opt","hasOwnProperty","defaultWrap","activeWrap","next","endStyle","outerHeight","startStyle","temp","captionExpand","Deferred","resolve","displayBottomToTop","displayFadeIn","displayFadeInToTop","displaySequentially","filterData","filterFromUrl","registerFilter","arr","split","siblings","wrap","mouseover.cbp","mouseleave.cbp","filterName","dropdown","header","headerText","filtersCallback","f","filterJoin","join","isEmptyObject","html","match","exec","decodeURIComponent","gapVerticalInitial","gapHorizontalInitial","changeGapOnMediaQueries","inlineSlider","runInit","InitSlider","slider","active","total","updateLeft","activeImage","image","lazyLoad","lazyLoadScroll","loadingClass","threshold","screenHeight","parentNode","isElementInScreen","dataSrc","removeLazyLoad","loadMore","selector","loadItems","populateItems","action","ajax","type","dataType","done","resultFlat","trim","parseHTML","add","fail","populateInsertItems","insertItems","foundItem","click","appendCallback","itemsInLoadMore","getNewItems","isActive","scrollTop","loadMoreScroll","loadMoreAction","lightboxShowCounter","singlePageShowCounter","run","delay","popup","currentBlock","resizeImage","localOptions","lightbox","createMarkupSinglePageInline","links","shift","link","openSinglePageInline","createMarkup","contentWrap","clientWidth","navigationWrap","navigation","self","gallery","closest","openSinglePage","fakeLink","animationCls","data-action","stopEvents","content","bg","closeButton","title","nextButton","prevButton","counter","indexFound","dataArray","counterTotal","hide","singlePageJumpTo","current","stopImmediatePropagation","lightboxIsOpen","keyCode","prev","body","openLightbox","currentBlockHref","tempHref","videoLink","indexVideo","lastIndexOf","substring","dataActionImg","show","originalStyle","overflow","marginRight","innerWidth","finishOpen","navigationMobile","updateSinglePageIsOpen","addEventListener","totalScroll","scrollHeight","currentScroll","offsetHeight","fromOpen","tempCurrent","cbpitem","storeBlocks","storeCurrentBlock","parents","topDifference","blocksToMove","currentEl","topEl","endEl","deferredInline","goToScroll","animate","promise","resizeSinglePageInline","marginTop","revertResizeSinglePageInline","appendScriptsToWrap","scripts","loadScripts","script","readyState","onreadystatechange","onload","updateSinglePage","isWrap","counterMarkup","getCounterMarkup","fromAJAX","selectorSlider","coverRatio","checkForSocialLinks","createFacebookShare","createTwitterShare","createGooglePlusShare","createPinterestShare","media","firstImg","updateSinglePageInline","singlePageInlineIsOpen","finishLoading","isImage","Image","tooggleLoading","updateImagesMarkup","isVimeo","updateVideoMarkup","isYoutube","isTed","isSoundCloud","isSelfHostedVideo","updateSelfHostedVideo","isSelfHostedAudio","updateSelfHostedAudio","markup","mapObj","matched","preloadNearbyImages","lightboxJumpTo","getIndex","resetWrap","finishClose","detach","checkFocusInline","stopScroll","state","figure","lightboxInit","singlePageInit","p","scope","detectScope","cbp","oldDate","newDate","popUp","searchInput","runEvent","searchNothing","searchNothingHeight","searchNothingHTML","searchData","reg","RegExp","blocksNew","innerText","pagination","paginationClass","stopPropagation","sliderStopEvents","sliderMarkup","updateSlider","nav","controls"],"mappings":"CAAA,SAAAA,EAAAC,EAAAC,EAAAC,GACA,YAEA,SAAAC,GAAAC,EAAAC,EAAAC,GAEA,GAAAC,GAAAC,IAEA,IAAAT,EAAAU,KAAAL,EAAA,iBACA,KAAA,IAAAM,OAAA,4EAIAH,GAAAH,IAAAA,EAGAG,EAAAI,KAAAZ,EAAAK,GAGAL,EAAAU,KAAAF,EAAAH,IAAA,gBAAAG,GAGAA,EAAAF,QAAAN,EAAAa,UAAAb,EAAAc,GAAAC,cAAAT,QAAAA,EAAAE,EAAAI,KAAAF,KAAA,gBAGAF,EAAAQ,aAAA,EAGAR,EAAAS,cAAAT,EAAAF,QAAAW,cAGAT,EAAAU,oBAGAV,EAAAW,SAGAX,EAAAY,YAAA,EAGApB,EAAAqB,WAAAd,IACAC,EAAAc,cAAA,aAAAf,GAAA,EAIA,IAAAgB,GAAAf,EAAAI,KAAAW,UAEAf,GAAAI,KAAAY,SAAA,QAEA,IAAAD,EAAAE,QAAAF,EAAAG,QAAAC,SAAA,eACAnB,EAAAoB,UAAApB,EAAAH,IAAA,eACAG,EAAAY,YAAA,GAIAZ,EAAAqB,IAAArB,EAAAI,KAAAW,WAAAC,SAAA,eAGAhB,EAAAoB,UAAApB,EAAAH,IAAA,qBAEAG,EAAAsB,QAAAtB,EAAAI,KAAAW,SAAA,sBAEAf,EAAAuB,OAAAvB,EAAAqB,IAAAN,SAAA,aACAf,EAAAwB,SAAAxB,EAAAuB,OAGAvB,EAAAoB,UAAApB,EAAAuB,OAAA,oBAGAvB,EAAAyB,WACAjC,EAAAkC,KAAA9B,EAAA6B,QAAA,SAAAE,EAAAC,GACA,GAAAtB,GAAAsB,EAAA5B,EAEAM,KACAN,EAAAyB,QAAAE,GAAArB,KAKAN,EAAA6B,aAAA,gBAGA7B,EAAA8B,WAAA9B,EAAAI,KAAAJ,EAAA+B,SAIAvC,EAAAa,OAAAT,EAAAoC,WACAC,UAAA,SAAAV,EAAAW,GACA,GAAAlC,GAAAC,IAEAiC,GAAAA,GAAA,EAEAX,EAAAG,KAAA,SAAAS,EAAAC,GACA,GAAAC,GAAA7C,EAAA4C,GACAE,EAAAD,EAAAC,QACAC,EAAAF,EAAAE,QAEAF,GAAAnC,KAAA,OACAiC,MAAAD,EAAAC,EACAb,QAAAe,EAAAtB,SAAA,qBAEAyB,aAAAF,EACAG,cAAAF,EAEAD,MAAAA,EACAC,OAAAA,EAEAG,YAAAJ,EAAAtC,EAAAF,QAAA6C,YACAC,aAAAL,EAAAvC,EAAAF,QAAA+C,cAEAC,KAAA,KACAC,QAAA,KACAC,IAAA,KACAC,OAAA,KAEAC,MAAA,OAOA9B,UAAA,SAAA+B,EAAAC,GACA,GACAf,GAAAgB,EAAAC,CAIA,IAFAF,EAAAA,GAAA,KAEAD,EAAAlC,QAAAkC,EAAAlC,OAAA,GAMA,QArIA,KAiIAkC,EAAAlC,SACAkC,GAAAA,IAGAE,EAAAF,EAAAlC,OAAA,EAAAoC,GAAA,EAAAA,IAAA,CAOA,IANAhB,EAAAc,EAAAE,GAEAC,EAAA5D,EAAA6D,cAAA,OAEAD,EAAAE,aAAA,QAAAJ,GAEAf,EAAAoB,WAAAxC,QACAqC,EAAAI,YAAArB,EAAAoB,WAAA,GAGApB,GAAAqB,YAAAJ,KAIAK,gBAAA,SAAAC,GACAA,EAAAC,gBAAA,SACAD,EAAAC,gBAAA,UACAD,EAAAC,gBAAA,UAOA/B,WAAA,SAAAgC,EAAA/D,GACA,GAAAC,GAAAC,IAGA8D,uBAAA,WACA,GAAAC,GAAAF,EAAAG,KAAA,OAAAC,IAAA,SAAA/B,EAAAC,GAEA,GAAAA,EAAA+B,aAAA,UAAA/B,EAAA+B,aAAA,UAAA,CAIA,GAHA/B,EAAAgC,MAAA9B,MAAAF,EAAAiC,aAAA,SAAA,KACAjC,EAAAgC,MAAA7B,OAAAH,EAAAiC,aAAA,UAAA,KAEAjC,EAAA+B,aAAA,gBACA,MAAA,KAGA,IAAA,OAAAnE,EAAAsE,SAAAlC,GACApC,EAAA2D,gBAAAvB,OACA,CACA,GAAAwB,GAAApE,EAAA,QAEAoE,GAAAW,GAAA,qBAAA,WACA/E,EAAAS,MAAAuE,IAAA,sBACAxE,EAAA2D,gBAAAvB,KAGAA,EAAAqC,QACAb,EAAAc,KAAA,QAAAtC,EAAAuC,OAAA,SACAf,EAAAc,KAAA,SAAAtC,EAAAqC,SAEAb,EAAAc,KAAA,MAAAtC,EAAAwC,KAIA,MAAA,MAEA,MAAA5E,GAAAsE,SAAAlC,KAIAyC,EAAAb,EAAA/C,MAEA,IAAA,IAAA4D,EAEA,WADA9E,GAAA+E,KAAA9E,EAIAR,GAAAkC,KAAAsC,EAAA,SAAAX,EAAAjB,GACA,GAAAwB,GAAApE,EAAA,QAEAoE,GAAAW,GAAA,qBAAA,WACA/E,EAAAS,MAAAuE,IAAA,sBAIA,MAFAK,GAGA9E,EAAA+E,KAAA9E,KAKAoC,EAAAqC,QACAb,EAAAc,KAAA,QAAAtC,EAAAuC,OACAf,EAAAc,KAAA,SAAAtC,EAAAqC,SAEAb,EAAAc,KAAA,MAAAtC,EAAAwC,UAOAN,SAAA,SAAAlC,GACA,GAAAqC,GAAArC,EAAAqC,OACAG,EAAAxC,EAAAwC,GAEA,IAAA,KAAAA,EACA,MAAA,KAGA,IAAAhB,GAAApE,EAAA,QAEAiF,IACAb,EAAAc,KAAA,QAAAtC,EAAAuC,OAAA,SACAf,EAAAc,KAAA,SAAAD,IAEAb,EAAAc,KAAA,MAAAE,EAGA,IAAAG,GAAAnB,EAAA,EAEA,OAAAmB,GAAAC,cAxPA,KAwPAD,EAAAE,cAAA,IAAAF,EAAAE,aACA,KAGAF,GAOAhD,QAAA,WACA,GAAA/B,GAAAC,IAGAD,GAAAiC,UAAAjC,EAAAuB,QAEAvB,EAAA6B,aAAA,iBACA7B,EAAA6B,aAAA,kBAGA7B,EAAAkF,sBAEAlF,EAAA6B,aAAA,eACA7B,EAAA6B,aAAA,gBAGA7B,EAAAI,KAAAY,SAAA,aAEAhB,EAAAmF,SAAA,aAAAnF,EAAAoF,aAIAA,WAAA,WACA,GAAApF,GAAAC,IAEA8D,uBAAA,WACA/D,EAAAqF,cAEArF,EAAA6B,aAAA,cAGA7B,EAAAQ,aAAA,EAGAR,EAAAI,KAAAkF,QAAA,uBAQAD,YAAA,WACA,GAAArF,GAAAC,IAEAL,GAAA2F,QAAAC,OAAAC,WACAC,SAAA1F,EACAM,GAAA,WAEAN,EAAA6B,aAAA,oBAEA7B,EAAAsC,QAAAtC,EAAAI,KAAAuF,eAEA,gBAAA3F,EAAAF,QAAA8F,iBACA5F,EAAAsB,QAAA,GAAA8C,MAAAyB,SAAA,IAIA7F,EAAAkF,sBAEAlF,EAAA6B,aAAA,eAGA7B,EAAA6B,aAAA,oBAMAiE,WAAA,WACA,GAAA9F,GAAAC,IAGAD,GAAAsC,MAAAtC,EAAAI,KAAAuF,aAGA,eAAA3F,EAAAF,QAAA8F,eACA5F,EAAA+F,oBAMA/F,EAAAuB,OAAAyE,WAAA,SAEAhG,EAAAuB,OAAAG,KAAA,SAAAS,EAAAC,GACA,GAAAlC,GAAAV,EAAA4C,GAAAlC,KAAA,OACA+F,EAAA7D,EAAA8D,wBACA5D,EAAAtC,EAAAmG,oBAAAF,EAAAG,MAAAH,EAAAnD,MACAP,EAAA8D,KAAAC,MAAAL,EAAAM,OAAAN,EAAAjD,IAEA9C,GAAAqC,OAAAA,EACArC,EAAA0C,aAAAL,EAAAvC,EAAAF,QAAA+C,cAEA3C,EAAAoC,MAAAA,EACApC,EAAAwC,YAAAJ,EAAAtC,EAAAF,QAAA6C,cAGA3C,EAAAwG,eAAAxG,EAAAsC,MAAAtC,EAAAF,QAAA6C,aAIA3C,EAAA6B,aAAA,eAIAqD,oBAAA,WACA,GAAAlF,GAAAC,IAEAD,GAAA8F,aAEA9F,EAAAyG,UAOAA,OAAA,WACA,GAAAzG,GAAAC,IAEAD,GAAA0G,cAAA1G,EAAA2G,aAAA3G,EAAAS,gBAEA,WAAAT,EAAAF,QAAA8G,YACA5G,EAAA6G,oBACA7G,EAAA8G,iBAEA9G,EAAA+G,oBACA/G,EAAAgH,gBAIAhH,EAAAiH,mBAGAjH,EAAAkH,uBAIAC,cAAA,SAAAC,GACA,GAAApH,GAAAC,IAEAD,GAAA0G,cAAAU,GAEApH,EAAA+G,oBACA/G,EAAAgH,eAGAhH,EAAAqH,gBAOAA,aAAA,WACA,GAAArH,GAAAC,IAEAD,GAAAsH,UAAAtG,SAAA,gBAEAhB,EAAAwB,SAAA+F,YAAA,gBACA7F,KAAA,SAAAS,EAAAC,GACA,GAAAlC,GAAAV,EAAA4C,GAAAlC,KAAA,MAEAA,GAAA4C,KAAA5C,EAAA6C,QACA7C,EAAA8C,IAAA9C,EAAA+C,OAEAb,EAAAgC,MAAAtB,KAAA5C,EAAA4C,KAAA,KACAV,EAAAgC,MAAApB,IAAA9C,EAAA8C,IAAA,OAIAhD,EAAAkH,sBAEAlH,EAAAwH,gBAOAA,aAAA,WACA,GAAAxH,GAAAC,IAIAD,GAAAyH,iBACAzH,EAAA0H,WAAA1H,EAAAuB,OAAA,SAGAvB,EAAAQ,aAAA,EAEAR,EAAAI,KAAAkF,QAAA,sBACAtF,EAAA6B,aAAA,iBAIA6E,cAAA,SAAAU,GACA,GAAApH,GAAAC,IAGAD,GAAA2H,gBAAA3H,EAAAwB,SAGAxB,EAAAwB,SAAAxB,EAAAuB,OAAAqG,OAAAR,GAGApH,EAAAsH,UAAAtH,EAAAuB,OAAAsG,IAAAT,GAEApH,EAAA6B,aAAA,sBAAAuF,IAOArB,iBAAA,WACA,GAAA/F,GAAAC,IAGAD,GAAA8H,KAAA9H,EAAAR,EAAAuI,QAAA/H,EAAAF,QAAAkI,cAAA,wBAAA,oBAEAhI,EAAAiI,YAAAjI,EAAAmG,qBAAAnG,EAAAsC,MAAAtC,EAAAF,QAAA6C,aAAA3C,EAAA8H,MAEA9H,EAAAwG,eAAAxG,EAAAiI,YAAAjI,EAAA8H,KAEA,WAAA9H,EAAAF,QAAA8G,YACA5G,EAAAkI,0BAGAlI,EAAAuB,OAAAG,KAAA,SAAAS,EAAAC,GACA,GAEAE,GAFApC,EAAAV,EAAA4C,GAAAlC,KAAA,OACA4H,EAAA,CAGA,YAAA9H,EAAAF,QAAA8G,aACAkB,EAAA9H,EAAAmI,cAAAjI,EAAAsC,eAGAF,EAAAtC,EAAAiI,YAAAH,EAAA9H,EAAAF,QAAA6C,YAEAP,EAAAgC,MAAA9B,MAAAA,EAAA,KACApC,EAAAoC,MAAAA,EACApC,EAAAwC,YAAAJ,EAAAtC,EAAAF,QAAA6C,YAGAP,EAAAgC,MAAA7B,OAAA,IAGA,IAAAyB,KAEAhE,GAAAuB,OAAAG,KAAA,SAAAS,EAAAC,GACA5C,EAAAkC,KAAAlC,EAAA4C,GAAA6B,KAAA,OAAA2D,OAAA,mBAAA,SAAAzF,EAAAC,GACA,GAAAE,GAAA9C,EAAA4C,GAAAgG,SAAA9F,QACA+F,EAAAC,SAAAlG,EAAAiC,aAAA,SAAA,IACAkE,EAAAD,SAAAlG,EAAAiC,aAAA,UAAA,IACAmE,EAAAC,YAAAJ,EAAAE,GAAAG,QAAA,IAEA1E,GAAA2E,MACAvG,GAAAA,EACAE,MAAAA,EACAC,OAAA8D,KAAAC,MAAAhE,EAAAkG,SAKAhJ,EAAAkC,KAAAsC,EAAA,SAAA7B,EAAAE,GACAA,EAAAD,GAAAE,MAAAD,EAAAC,MACAD,EAAAD,GAAAG,OAAAF,EAAAE,OACAF,EAAAD,GAAAgC,MAAA9B,MAAAD,EAAAC,MAAA,KACAD,EAAAD,GAAAgC,MAAA7B,OAAAF,EAAAE,OAAA,OAGAvC,EAAAuB,OAAAG,KAAA,SAAAS,EAAAC,GACA,GAAAlC,GAAAV,EAAA4C,GAAAlC,KAAA,OACA+F,EAAA7D,EAAA8D,wBACA3D,EAAA8D,KAAAC,MAAAL,EAAAM,OAAAN,EAAAjD,IAEA9C,GAAAqC,OAAAA,EACArC,EAAA0C,aAAAL,EAAAvC,EAAAF,QAAA+C,iBAKAqF,wBAAA,WACA,GAAAlI,GAAAC,KACA2I,IAEA5I,GAAAuB,OAAAG,KAAA,SAAAS,EAAAC,GACA,GAAAlC,GAAAV,EAAA4C,GAAAlC,KAAA,MACA0I,GAAAD,KAAAzI,EAAAsC,gBAGAoG,EAAAC,KAAA,SAAAC,EAAAC,GACA,MAAAD,GAAAC,IAGAH,EAAA,GACA5I,EAAAgJ,qBAAAJ,EAAA,GAEA5I,EAAAgJ,qBAAAhJ,EAAAiI,aAKAE,cAAA,SAAA3F,GACA,GAAAxC,GAAAC,IAEA,IAAAuC,IAAAxC,EAAAsC,MACA,MAAAtC,GAAA8H,IAGA,IAAAU,GAAAhG,EAAAxC,EAAAgJ,oBAQA,OALAR,GADAA,EAAA,GAAA,IACAnC,KAAA4C,KAAAT,GAEAnC,KAAA6C,MAAAV,GAGAnC,KAAA8C,IAAA9C,KAAA+C,IAAAZ,EAAA,GAAAxI,EAAA8H,OAOAuB,eAAA,WACA,GAAArJ,GAAAC,IAEA,IAAA,IAAAD,EAAAuB,OAAAN,OACA,MAAA,EAGA,IAAAgH,GAAAjI,EAAAuB,OAAAL,QAAAhB,KAAA,OAAAsC,aAAAxC,EAAAF,QAAA6C,WAEA,OAAA0D,MAAA+C,IAAA/C,KAAAC,MAAAtG,EAAAsC,MAAA2F,GAAA,IAOAqB,sBAAA,WACA,GAEAC,GAFAvJ,EAAAC,KACAuJ,EAAAxJ,EAAAsC,KAiBA,OAdA9C,GAAAkC,KAAA1B,EAAAF,QAAAkI,aAAA,SAAA7F,EAAAtC,GACA,GAAA2J,GAAA3J,EAAAyC,MAEA,MADAiH,GAAA1J,GACA,IAIA0J,IACAA,EAAAvJ,EAAAF,QAAAkI,aAAAhI,EAAAF,QAAAkI,aAAA/G,OAAA,IAIAjB,EAAA6B,aAAA,iBAAA0H,EAAAzJ,SAEAyJ,EAAAzB,MAoBA3B,oBAAA,SAAAvE,GACA,MAAAyE,MAAA6C,MAAAtH,IAIAqF,iBAAA,WACA,GACA/G,GADAF,EAAAC,IAGAD,GAAAwB,SAAA+F,YAAA,gBACA7F,KAAA,SAAAS,EAAAC,GACAlC,EAAAV,EAAA4C,GAAAlC,KAAA,OAEAA,EAAA4C,KAAA5C,EAAA6C,QACA7C,EAAA8C,IAAA9C,EAAA+C,OAEAb,EAAAgC,MAAAtB,KAAA5C,EAAA4C,KAAA,KACAV,EAAAgC,MAAApB,IAAA9C,EAAA8C,IAAA,OAGAhD,EAAAsH,UAAAtG,SAAA,gBAIAhB,EAAAyH,iBACAzH,EAAA0H,WAAA1H,EAAAuB,OAAA,UAQA2F,oBAAA,WACA,GAEArB,GAFA7F,EAAAC,KACAsC,EAAA8D,KAAA+C,IAAApJ,EAAAyJ,WAAAC,OAAA,GAAA,GAAAC,SAAA3J,EAAAF,QAAA+C,cAAA,EAoBA,IAhBA,gBAAA7C,EAAAF,QAAA8F,iBACAC,EAAA,EAEA7F,EAAAwB,SAAAE,KAAA,SAAAS,EAAAC,GACA,GAAAlC,GAAAV,EAAA4C,GAAAlC,KAAA,OACA0J,EAAA1J,EAAA4C,KAAA5C,EAAAoC,KAEAsH,GAAA/D,IACAA,EAAA+D,KAIA5J,EAAAsB,QAAA,GAAA8C,MAAAyB,SAAAA,EAAA,MAIAtD,IAAAvC,EAAAuC,OAEA,WADAvC,GAAA6B,aAAA,sBAIA7B,GAAAH,IAAAuE,MAAA7B,OAAAA,EAAA,SA7rBA,KAgsBAvC,EAAAuC,SACA3C,EAAA2F,QAAAsE,cACA7J,EAAAI,KAAA0J,IAAAlK,EAAA2F,QAAAwE,cAAA,WACA/J,EAAAI,KAAAkF,QAAA,sBAGAtF,EAAAI,KAAAkF,QAAA,qBAIAtF,EAAAuC,OAAAA,EAEAvC,EAAA6B,aAAA,wBAIA8E,aAAA,SAAAiB,GACA,MAAAA,GAAAoC,QAAA,OAAA,KAIAC,UAAA,SAAAC,EAAAC,GACA,GAAAnK,GAAAC,IAEAD,GAAAW,MAAAuJ,GAAAlK,EAAAW,MAAAuJ,OACAlK,EAAAW,MAAAuJ,GAAAvB,KAAAwB,IAIAhF,SAAA,SAAA+E,EAAA5J,GACA,GAAAN,GAAAC,KACAU,EAAAX,EAAAW,MAAAuJ,MAEA1K,GAAA4K,KAAAC,MAAA7K,EAAAmB,GAAA2J,KAAA9K,EAAA+K,MAAAjK,EAAAN,KAIAwK,WAAA,SAAAN,GACAjK,KAEAU,MAAAuJ,OAOApJ,cAAA,SAAAoJ,EAAAO,EAAAC,GACA,GAAA1K,GAAAC,IAEAD,GAAAU,iBAAAwJ,KACAlK,EAAAU,iBAAAwJ,OAGAlK,EAAAU,iBAAAwJ,GAAAvB,MACAgC,KAAAF,EACAC,QAAAA,IAAA,KAQA7I,aAAA,SAAAqI,EAAAU,GACA,GACAvH,GAAAwH,EADA7K,EAAAC,IAGA,IAAAD,EAAAU,iBAAAwJ,GACA,IAAA7G,EAAA,EAAAwH,EAAA7K,EAAAU,iBAAAwJ,GAAAjJ,OAAAoC,EAAAwH,EAAAxH,IACArD,EAAAU,iBAAAwJ,GAAA7G,GAAAsH,KAAA7F,KAAA9E,EAAA4K,GAEA5K,EAAAU,iBAAAwJ,GAAA7G,GAAAqH,UACA1K,EAAAU,iBAAAwJ,GAAAY,OAAAzH,EAAA,GAIAA,IACAwH,MAOAE,SAAA,SAAA5H,EAAApD,EAAAiL,GACA,GAAAhL,GAAAC,IAGAD,GAAAoB,UAAA+B,EAAA,oBAEAnD,EAAAqB,IAAA2J,GAAA7H,EAAAnC,SAAA,oBAAAiK,KACAjI,IAAA,OACAF,KAAA,KAGAlD,EAAA2F,QAAAsE,cACA1G,EAAA+H,OAAApB,IAAAlK,EAAA2F,QAAA4F,aAAA,WACAnL,EAAAoL,eAAAjI,EAAApD,KAGAC,EAAAoL,eAAAjI,EAAApD,GAGAC,EAAA8B,WAAAqB,EAAA,WAGA,GAFAnD,EAAAI,KAAAY,SAAA,mBAEA,WAAAgK,EAEAhL,EAAAiC,UAAAkB,EAAAnD,EAAAuB,OAAAN,QACAzB,EAAA6L,MAAArL,EAAAuB,OAAA4B,OACA,CAEAnD,EAAAiC,UAAAkB,EAEA,IAAAmI,GAAAnI,EAAAlC,MACAjB,GAAAuB,OAAAG,KAAA,SAAAS,EAAAC,GACA5C,EAAA4C,GAAAlC,KAAA,OAAAiC,MAAAmJ,EAAAnJ,IAIAnC,EAAAuB,OAAA/B,EAAA6L,MAAAlI,EAAAnD,EAAAuB,QAGAvB,EAAA6B,aAAA,gBAAAsB,GAEAnD,EAAAkF,sBAGAlF,EAAA8D,OACAlE,EAAA2L,OAAAC,YAAA1G,KAAA9E,EAAAH,IAAAG,EAAA8D,UAMAsH,eAAA,SAAAjI,EAAApD,GACA,GAAAC,GAAAC,IAEAD,GAAAQ,aAAA,EAEAR,EAAAI,KAAAmH,YAAA,mBACApE,EAAAoE,YAAA,oBAEA/H,EAAAqB,WAAAd,IACAA,EAAA+E,KAAA9E,EAAAmD,GAIAnD,EAAAI,KAAAkF,QAAA,uBAAAnC,KAGAsI,YAAA,SAAAtI,EAAApD,GACA,GAAAC,GAAAC,IAEAD,GAAAI,KAAAY,SAAA,mBAEApB,EAAA2F,QAAAsE,cACA1G,EAAA+H,OAAApB,IAAAlK,EAAA2F,QAAA4F,aAAA,WACAnL,EAAA0L,kBAAAvI,EAAApD,KAGAC,EAAA0L,kBAAAvI,EAAApD,GAGAoD,EAAAzB,KAAA,SAAAS,EAAAC,GACApC,EAAAuB,OAAAG,KAAA,SAAAiK,EAAAC,GACA,GAAAxJ,IAAAwJ,EAAA,CACA,GAAAC,GAAArM,EAAAoM,EAGA5L,GAAAuB,OAAAuJ,OAAAa,EAAA,GAEA/L,EAAA2F,QAAAsE,eACAgC,EAAA/B,IAAAlK,EAAA2F,QAAA4F,aAAA,WACAU,EAAAC,WAEAD,EAAA7K,SAAA,mBAEA6K,EAAAC,cAMA9L,EAAAuB,OAAAG,KAAA,SAAAS,EAAAC,GACA5C,EAAA4C,GAAAlC,KAAA,OAAAiC,MAAAA,IAGAnC,EAAAkF,sBAGAlF,EAAA8D,OACAlE,EAAA2L,OAAAC,YAAA1G,KAAA9E,EAAAH,IAAAG,EAAA8D,QAKA4H,kBAAA,SAAAvI,EAAApD,GACA,GAAAC,GAAAC,IAEAD,GAAAQ,aAAA,EAEAR,EAAAI,KAAAmH,YAAA,mBAEA/H,EAAAqB,WAAAd,IACAA,EAAA+E,KAAA9E,EAAAmD,MASA3D,EAAAc,GAAAC,cAAA,SAAAwL,EAAAjM,EAAAC,GACA,MAAAE,MAAAyB,KAAA,WACA,GAAA,gBAAAqK,KAAAA,EACA,MAAAnM,GAAA2L,OAAAS,KAAAlH,KAAA7E,KAAA8L,EAAAjM,EACA,IAAAF,EAAA2L,OAAAQ,GACA,MAAAnM,GAAA2L,OAAAQ,GAAAjH,KAAA7E,KAAAH,EAAAC,EAGA,MAAA,IAAAI,OAAA,UAAA4L,EAAA,iDAIAnM,EAAA6B,WACAjC,EAAAc,GAAAC,cAAA0L,YAAArM,GACAsM,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAEA,IAAAC,GAAAJ,EAAAc,GAAAC,cAAA0L,WAEAzM,GAAAa,OAAAT,EAAAoC,WACA+E,kBAAA,WACA,GAAA/G,GAAAC,IAGAD,GAAAyH,iBAAA,EAIAzH,EAAAwB,SAAAE,KAAA,SAAAS,EAAAC,GACA5C,EAAA4C,GAAAlC,KAAA,OAAAgD,MAAA,EAEAlD,EAAAF,QAAAqM,oBACA/J,EAAAgC,MAAA7B,OAAA,MAKAvC,EAAAyJ,aACA2C,UAAA,EACAC,QAAArM,EAAAwG,eACAmD,SAAA,EACA2C,OAAAjG,KAAAkG,IAAA,EAAA,OAKAvF,aAAA,WAGA,IAAA,GAFAhH,GAAAC,KAEAoD,EAAA,EAAAmJ,EAAAxM,EAAAwB,SAAAP,OAAAoC,EAAAmJ,EAAAnJ,IAAA,CACA,GAAAoJ,GAAAzM,EAAA0M,uBAGA,IAAA,OAAAD,EASA,MARAzM,GAAA+G,oBAGA/G,EAAA2M,8BAGA3M,GAAAgH,cAKAhH,GAAA4M,aAAAH,EAAAI,WAAAJ,EAAAK,WAEA9M,EAAA+M,iBAAAN,EAAAK,WAEA9M,EAAAgN,kBAEAhN,EAAAiN,oBAIAjN,EAAAyH,iBACAzH,EAAA0H,WAAA1H,EAAAwB,SAAA,WAYAkL,sBAAA,WACA,GAAA1M,GAAAC,KACAwM,EAAA,IA2CA,OAzCAjN,GAAAkC,KAAA1B,EAAAyJ,WAAA,SAAAyD,EAAAC,GACA,GAAAC,GAAAD,EAAAd,QAAAc,EAAAf,UACAiB,EAAAF,EAAAb,OAAAa,EAAAxD,QA2BA,OAzBA3J,GAAAwB,SAAAE,KAAA,SAAAiK,EAAA2B,GACA,GAAApN,GAAAV,EAAA8N,GAAApN,KAAA,MAEA,KAAA,IAAAA,EAAAgD,KAIA,MAAAhD,GAAAwC,aAAA0K,GAAAlN,EAAA0C,cAAAyK,GAEAnN,EAAAgD,MAAA,EAEAuJ,GACAI,WAAAK,EACAJ,UAAA5M,GAGAA,EAAA6C,QAAAoK,EAAAf,UACAlM,EAAA+C,OAAAkK,EAAAxD,UAGA,OAbA,MAkBA3J,EAAAyH,iBAAAzH,EAAAF,QAAAqM,mBAAAe,EAAA,GACAT,EAAA,MAEA,GAIA,OAAAA,OAAA,KAKAA,GASAG,aAAA,SAAAC,EAAAS,GACA,GAAAtN,GAAAC,KACAkN,EAAAnN,EAAAyJ,WAAAoD,GAEAU,GACAnB,UAAAe,EAAAf,UAAAkB,EAAA5K,YACA2J,QAAAc,EAAAd,QACA1C,SAAAwD,EAAAxD,SACA2C,OAAAa,EAAAb,QAGAkB,GACApB,UAAAe,EAAAf,UACAC,QAAAc,EAAAd,QACA1C,SAAAwD,EAAAxD,SAAA2D,EAAA1K,aACA0J,OAAAa,EAAAb,OAIAtM,GAAAyJ,WAAAqB,OAAA+B,EAAA,GAEAU,EAAAlB,QAAAkB,EAAAnB,WAAAmB,EAAAjB,OAAAiB,EAAA5D,WACA3J,EAAAyJ,WAAAqB,OAAA+B,EAAA,EAAAU,GACAV,KAGAW,EAAAnB,QAAAmB,EAAApB,WAAAoB,EAAAlB,OAAAkB,EAAA7D,UACA3J,EAAAyJ,WAAAqB,OAAA+B,EAAA,EAAAW,IAQAT,iBAAA,SAAAO,GACA,GAAAtN,GAAAC,KAEAwN,IAEAjO,GAAAkC,KAAA1B,EAAAyJ,WAAA,SAAAtH,EAAAgL,GACA,GAAAO,GAAA1N,EAAA2N,gBAAAR,EAAAG,EAGA,IAAA,OAAAI,EAEA,WADAD,GAAA9E,KAAAwE,EAIAnN,GAAA4N,WAAAT,EAAAO,EAAAD,GACAzN,EAAA6N,WAAAV,EAAAO,EAAAD,GACAzN,EAAA8N,WAAAX,EAAAO,EAAAD,GACAzN,EAAA+N,WAAAZ,EAAAO,EAAAD,KAGAzN,EAAAyJ,WAAAgE,GAQAE,gBAAA,SAAAK,EAAAV,GACA,GACAW,IACA7B,UAAAkB,EAAAvK,QACAsJ,QAAAiB,EAAAvK,QAAAuK,EAAA5K,YACAiH,SAAA2D,EAAArK,OACAqJ,OAAAgB,EAAArK,OAAAqK,EAAA1K,aAGA,IAAAoL,EAAA5B,YAAA6B,EAAA7B,WACA4B,EAAA3B,UAAA4B,EAAA5B,SACA2B,EAAArE,WAAAsE,EAAAtE,UACAqE,EAAA1B,SAAA2B,EAAA3B,OACA,MAAA,KAGA,IAAAF,GAAA/F,KAAA+C,IAAA4E,EAAA5B,UAAA6B,EAAA7B,WACAC,EAAAhG,KAAA8C,IAAA6E,EAAA3B,QAAA4B,EAAA5B,SACA1C,EAAAtD,KAAA+C,IAAA4E,EAAArE,SAAAsE,EAAAtE,UACA2C,EAAAjG,KAAA8C,IAAA6E,EAAA1B,OAAA2B,EAAA3B,OAEA,OAAAD,IAAAD,GAAAE,GAAA3C,EACA,MAIAyC,UAAAA,EACAC,QAAAA,EACA1C,SAAAA,EACA2C,OAAAA,IAQAsB,WAAA,SAAAT,EAAAO,EAAAD,GACAN,EAAAxD,WAAA+D,EAAA/D,UAIA8D,EAAA9E,MACAyD,UAAAe,EAAAf,UACAC,QAAAc,EAAAd,QACA1C,SAAAwD,EAAAxD,SACA2C,OAAAoB,EAAA/D,YAQAkE,WAAA,SAAAV,EAAAO,EAAAD,GACAN,EAAAd,UAAAqB,EAAArB,SAIAoB,EAAA9E,MACAyD,UAAAsB,EAAArB,QACAA,QAAAc,EAAAd,QACA1C,SAAAwD,EAAAxD,SACA2C,OAAAa,EAAAb,UAQAwB,WAAA,SAAAX,EAAAO,EAAAD,GACAN,EAAAb,SAAAoB,EAAApB,QAIAmB,EAAA9E,MACAyD,UAAAe,EAAAf,UACAC,QAAAc,EAAAd,QACA1C,SAAA+D,EAAApB,OACAA,OAAAa,EAAAb,UAQAyB,WAAA,SAAAZ,EAAAO,EAAAD,GACAN,EAAAf,YAAAsB,EAAAtB,WAIAqB,EAAA9E,MACAyD,UAAAe,EAAAf,UACAC,QAAAqB,EAAAtB,UACAzC,SAAAwD,EAAAxD,SACA2C,OAAAa,EAAAb,UASAU,gBAAA,WACA,GAAAhN,GAAAC,IAGAD,GAAAyJ,WAAAZ,KAAA,SAAAmF,EAAAC,GACA,MAAAD,GAAArE,SAAAsE,EAAAtE,SACA,EACAqE,EAAArE,SAAAsE,EAAAtE,UACA,EAEAqE,EAAA5B,UAAA6B,EAAA7B,UACA,EACA4B,EAAA5B,UAAA6B,EAAA7B,WACA,EAEA,IAKApM,EAAAkO,wBAEAlO,EAAAmO,8BAOAD,sBAAA,WACA,GACA7K,GAAAwH,EAAAmD,EAAAC,EADAjO,EAAAC,IAGA,KAAAoD,EAAA,EAAAwH,EAAA7K,EAAAyJ,WAAAxI,OAAA,EAAAoC,EAAAwH,EAAAxH,IACA2K,EAAAhO,EAAAyJ,WAAApG,GACA4K,EAAAjO,EAAAyJ,WAAApG,EAAA,GAEA4K,EAAAtE,SAAAqE,EAAArE,UAAA,IACAsE,EAAAtE,SAAAqE,EAAArE,WAUAwE,2BAAA,WACA,GAAAnO,GAAAC,IAEAD,GAAAoO,mBAEApO,EAAAyJ,WAAAjK,EAAA0E,IAAAlE,EAAAyJ,WAAA,SAAAuE,EAAAd,GAiBA,MAhBA1N,GAAAkC,KAAA1B,EAAAyJ,WAAA,SAAAkC,EAAAsC,GAEA,GAAAf,IAAAvB,EAIA,MAAAsC,GAAA7B,WAAA4B,EAAA5B,WACA6B,EAAA5B,SAAA2B,EAAA3B,SACA4B,EAAAtE,UAAAqE,EAAArE,UACAsE,EAAA3B,QAAA0B,EAAA1B,QAEA0B,EAAA,MACA,OANA,KAUAA,KAQAI,iBAAA,WACA,GAAApO,GAAAC,KACAoO,IAEA7O,GAAAkC,KAAA1B,EAAAyJ,WAAA,SAAAyD,EAAAc,GACAxO,EAAAkC,KAAA2M,EAAA,SAAA1C,EAAAsC,GACA,GAAAA,EAAA7B,YAAA4B,EAAA5B,WACA6B,EAAA5B,UAAA2B,EAAA3B,SACA4B,EAAAtE,WAAAqE,EAAArE,UACAsE,EAAA3B,SAAA0B,EAAA1B,OAGA,MADA0B,GAAA,MACA,IAIA,OAAAA,GACAK,EAAA1F,KAAAqF,KAIAhO,EAAAyJ,WAAA4E,GAQApB,kBAAA,WACA,GAAAjN,GAAAC,IAEAT,GAAAkC,KAAA1B,EAAAyJ,WAAA,SAAA6E,EAAAnB,GACAnN,EAAAwB,SAAAE,KAAA,SAAA6M,EAAAjB,GACA,GAAApN,GAAAV,EAAA8N,GAAApN,KAAA,MAEA,KAAA,IAAAA,EAAAgD,MAIAlD,EAAA2N,gBAAAR,EAAAjN,GAAA,EAMA,IAFAiN,EAAAxD,SAAAzJ,EAAA+C,OAAA/C,EAAA0C,eAGA0K,EAAAlJ,MAAA7B,OAAArC,EAAAqC,OAAA,EAAA,YAUAoK,wBAAA,WACA,GAAA3M,GAAAC,IAEAD,GAAAyH,iBAAA,EAEAzH,EAAAwB,SAAAqH,KAAA,SAAA2F,EAAAC,GACA,GAAAC,GAAAlP,EAAAgP,GAAAtO,KAAA,OACAyO,EAAAnP,EAAAiP,GAAAvO,KAAA,MAGA,OAAAwO,GAAAhM,YAAAiM,EAAAjM,YACA,EACAgM,EAAAhM,YAAAiM,EAAAjM,aACA,EAGAgM,EAAA9L,aAAA+L,EAAA/L,aACA,EACA8L,EAAA9L,aAAA+L,EAAA/L,cACA,EAGA8L,EAAAvM,MAAAwM,EAAAxM,MACA,EACAuM,EAAAvM,MAAAwM,EAAAxM,OACA,MADA,MAYAuF,WAAA,SAAAnG,EAAAqN,GAGArN,EAAAsH,KAAA,SAAA2F,EAAAC,GACA,GAAAC,GAAAlP,EAAAgP,GAAAtO,KAAA,OACAyO,EAAAnP,EAAAiP,GAAAvO,KAAA,MAGA,OAAAwO,GAAAE,GAAAD,EAAAC,GACA,EACAF,EAAAE,GAAAD,EAAAC,IACA,EAEAF,EAAA3L,QAAA4L,EAAA5L,QACA,EACA2L,EAAA3L,QAAA4L,EAAA5L,SACA,EAEA,QAMAmJ,OAAAzM,OAAAC,UAEAwM,OAAA5L,GAAAC,cAAAT,SAKA+O,QAAA,GAOAC,OAAA,GAMAlI,WAAA,OAOAuF,mBAAA,EAOA4C,MAAA,EAOAC,MAAA,EAQAC,YAAA,IAOAC,kBAAA,EAOAC,gBAAA,EAOAC,gBAAA,EAOAC,WAAA,EAOAC,cAAA,EAOA7O,cAAA,IAOA8O,mBAAA,EA4BAC,cAAA,UAQA5J,eAAA,aAkBAoC,cAAA,EAMAnF,cAAA,GAMAF,YAAA,GAsBA8M,QAAA,UAUAC,YAAA,SAMAC,iBAAA,IAMAC,iBAAA,gBAMAC,iBAAA,EAMAC,iBAAA,aAMAC,gBAAA,yEAMAC,mBAAA,kBAMAC,uBAAA,EAMAC,4BAAA,EAMAC,kBAAA,2EAQAC,oBAAA,OAOAC,mBAAA,KAMAC,yBAAA,wBAMAC,6BAAA,EASAC,yBAAA,MAMAC,yBAAA,EAOAC,yBAAA,KAMAjP,YAEA,SAAAjC,EAAAC,EAAAC,EAAAC,GACA,YAEA,IAAAC,GAAAJ,EAAAc,GAAAC,cAAA0L,YACA0E,EAAAnR,EAAAC,EAEAG,GAAA2F,SACAqL,aAAA,SAAAC,EAAAC,EAAAC,GACA,GAAA/Q,GAAAC,IAGAD,GAAAgR,UAEAhR,EAAAyF,UAAA,SAAA5F,GACA,IAAAG,EAAAgR,OAAA/P,QACAjB,EAAAiR,cAGAjR,EAAAgR,OAAArI,KAAA9I,IAGAG,EAAAkR,aAAA,SAAAxL,GACA1F,EAAAgR,OAAAxR,EAAA0E,IAAAlE,EAAAgR,OAAA,SAAAG,EAAAhP,GACA,GAAAgP,EAAAzL,WAAAA,EACA,MAAAyL,KAIA,IAAAnR,EAAAgR,OAAA/P,QAEA0P,EAAAnM,IAAAqM,IAIA7Q,EAAAiR,YAAA,WACA,GAAAG,EAGAT,GAAApM,GAAAsM,EAAA,WACAQ,aAAAD,GAEAA,EAAAE,WAAA,WACA9R,EAAAqB,WAAAkQ,IAAAA,EAAAjM,KAAA9E,IAIAR,EAAAkC,KAAA1B,EAAAgR,OAAA,SAAA7O,EAAAgP,GACAA,EAAA7Q,GAAAwE,KAAAqM,EAAAzL,aAEAoL,OAQAS,cAAA,SAAAxF,GACA,GAAA/L,GAAAR,EAAAU,KAAAD,KAAA,gBAEA,KAAAD,EACA,KAAA,IAAAG,OAAA,kEAAA4L,EAAA,WAKA,OAFA/L,GAAA6B,aAAA,gBAEA7B,GAMAwR,YAAA,WACA,GAEAC,GAAAC,EAAAC,EAFA3R,EAAAJ,EAAA2F,QACAqM,EAAAC,UAAAD,YAGA,IAAAA,EAAAE,QAAA,WACA9R,EAAA+R,QAAA,OACA,IAAAH,EAAAE,QAAA,WACA9R,EAAA+R,QAAA,OACA,IAAAH,EAAAE,QAAA,YACA9R,EAAA+R,QAAA,OACAtS,EAAAuS,eAAA,iBAAAvS,GACAO,EAAA+R,QAAA,OACA,YAAAE,KAAAL,GACA5R,EAAA+R,QAAA,UACA,qBAAAE,KAAAL,GACA5R,EAAA+R,QAAA,MACA,WAAAE,KAAAL,GACA5R,EAAA+R,QAAA,SAEA/R,EAAA+R,QAAA,OA5FA,YAgGAJ,EAAA3R,EAAAkS,aAAA,kBAOAT,EAAAzR,EAAAkS,aAAA,cAEAlS,EAAA+J,eACAoI,iBAAA,sBACAV,WAAA,iBACAA,GAEAC,EAAA1R,EAAAkS,aAAA,aAEAlS,EAAAmL,cACAiH,gBAAA,qBACAV,UAAA,gBACAA,GAEA1R,EAAAqS,mBACAD,gBAAA,0BACAV,UAAA,qBACAA,GAEA1R,EAAAsS,gBACAF,gBAAA,uBACAV,UAAA,kBACAA,GAEA1R,EAAAuS,UAAAvS,EAAAkS,aAAA,aAEAT,GAAAC,GAAA1R,EAAAuS,YACAvS,EAAA6J,eAAA,KAQAqI,aAAA,SAAAM,GACA,GAAAC,GAEAC,EAAA,SAAAF,EAAAG,OAAA,GAAAC,cAAAJ,EAAA9I,MAAA,GACApG,EAAA5D,EAAA6D,cAAA,MAYA,OATAiP,KAAAlP,GAAAc,MACAqO,EAAAD,EACAE,IAAApP,GAAAc,QACAqO,EAAAC,GAIApP,EAAA,KAEAmP,IAKA7S,EAAA2F,QAAAiM,cAEA5R,EAAA2F,QAAAC,OAAA,GAAA5F,GAAA2F,QAAAqL,aAAA,aAAA,GAAA,WACA,GAAAnR,EAAAoT,aAAAC,OAAAvQ,OAEA,OAAA,KAGA2J,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAEA,IAAAC,GAAAJ,EAAAc,GAAAC,cAAA0L,WAEArM,GAAA2L,QAKAS,KAAA,SAAAlM,EAAAC,GACA,GAAAH,GAAAK,KAAAH,EAAAC,IAMAgT,QAAA,SAAAhT,GACA,GAAAC,GAAAJ,EAAA2F,QAAAgM,cAAAzM,KAAA7E,KAAA,UAEAD,GAAA6B,aAAA,iBAGArC,EAAAwT,WAAA/S,KAAA,iBAGAD,EAAAuB,OAAAyR,WAAA,OAGAhT,EAAAI,KAAAmH,YAAA,aAAAvB,WAAA,SAGAhG,EAAAqB,IAAAkG,YAAA,eAGA3H,EAAA2F,QAAAC,OAAA0L,aAAAlR,GAEAA,EAAAI,KAAAoE,IAAA,QAGAxE,EAAAuB,OAAAgG,YAAA,gBAAAvB,WAAA,SAEAhG,EAAAuB,OAAA0C,KAAA,qBAAAvC,KAAA,SAAAS,EAAAC,GACA,GAAA6Q,GAAAzT,EAAA4C,GACArB,EAAAkS,EAAAlS,UAEAA,GAAAE,OACAF,EAAAmS,SAEAD,EAAAnH,WAIA9L,EAAAmT,eACAnT,EAAAmT,gBAIAnT,EAAAqB,IAAA6R,SAGAlT,EAAAY,YACAZ,EAAAuB,OAAA2R,SAGA,IAAAlT,EAAAuB,OAAAN,QACAjB,EAAAqB,IAAAyK,SAGAtM,EAAAkC,KAAA1B,EAAAyB,QAAA,SAAAE,EAAAC,GACA,kBAAAA,GAAAmR,SACAnR,EAAAmR,YAIAvT,EAAAqB,WAAAd,IACAA,EAAA+E,KAAA9E,GAGAA,EAAA6B,aAAA,iBAMA+F,OAAA,SAAAgD,EAAA7K,GACA,GACAqH,GADApH,EAAAJ,EAAA2F,QAAAgM,cAAAzM,KAAA7E,KAAA,SAGA,KAAAD,EAAAQ,YAAA,CAWA,GAPAR,EAAAQ,aAAA,EAGAhB,EAAAqB,WAAAd,IACAC,EAAAc,cAAA,eAAAf,GAAA,GAGAP,EAAAqB,WAAA+J,IAGA,OAvGA,MAqGAxD,EAAAwD,EAAA9F,KAAA9E,EAAAA,EAAAuB,SAGA,KAAA,IAAApB,OAAA,sIAEA,CACA,GAAAH,EAAAF,QAAAyP,kBAAA,CACA,GAAA6D,GAAAC,SAAAC,KAAAtJ,QAAA,0BAAA,GACAqJ,UAAAC,KAAAF,EAAA,SAAAG,mBAAA3I,GAEA5K,EAAAwT,YAAAxT,EAAAwT,WAAAJ,MACApT,EAAAwT,WAAAJ,IAAAC,SAAAC,MAIAtT,EAAAS,cAAAmK,EACAxD,EAAApH,EAAA2G,aAAA3G,EAAAS,eAGAT,EAAA6B,aAAA,cAAAuF,GAEApH,EAAAyT,kBAAAzT,EAAAyT,iBAAAC,OACA1T,EAAAyT,iBAAAE,MAAA,WACA5T,SAAA,WACAC,EAAAmH,cAAAC,MAIApH,EAAAmH,cAAAC,KAOAoE,YAAA,SAAA1H,EAAA/D,GACA,GAAAC,GAAAJ,EAAA2F,QAAAgM,cAAAzM,KAAA7E,KAAA,cAGAT,GAAAqB,WAAAd,IACAC,EAAAc,cAAA,oBAAAf,GAAA,GAGAC,EAAA8D,MAAAA,EAEAA,EAAApC,KAAA,WACA,GAAAU,GAAA5C,EAAAS,MAEA2T,EAAA5T,EAAAuB,OAAAqG,OAAAxF,EAAAlC,KAAA,WAAAe,MACAmB,GAAA6B,KAAA,uBAAA4P,KAAAD,KAGA5T,EAAA6B,aAAA,oBAAAiC,IAIAgQ,YAAA,SAAAC,EAAAhU,GACAH,EAAA2L,OAAAyI,OAAAlP,KAAA7E,KAAA8T,EAAAhU,IAMAiU,OAAA,SAAAD,EAAAhU,GACA,GAAAC,GAAAJ,EAAA2F,QAAAgM,cAAAzM,KAAA7E,KAAA,UACAkD,EAAA3D,EAAAuU,GAAAnM,OAAA,YAEA,IAAA5H,EAAAQ,aAAA2C,EAAAlC,OAAA,EAKA,YAJAzB,EAAAqB,WAAAd,IACAA,EAAA+E,KAAA9E,EAAAmD,GAMAnD,GAAAQ,aAAA,EAEAR,EAAAyT,kBAAAzT,EAAAyT,iBAAAC,OACA1T,EAAAyT,iBAAAE,MAAA,WACA5T,SAAA,WACAC,EAAA+K,SAAA5H,EAAApD,EAAA,aAIAC,EAAA+K,SAAA5H,EAAApD,EAAA,WAOAkU,QAAA,SAAAF,EAAAhU,GACA,GAAAC,GAAAJ,EAAA2F,QAAAgM,cAAAzM,KAAA7E,KAAA,WACAkD,EAAA3D,EAAAuU,GAAAnM,OAAA,YAEA,IAAA5H,EAAAQ,aAAA2C,EAAAlC,OAAA,EAKA,YAJAzB,EAAAqB,WAAAd,IACAA,EAAA+E,KAAA9E,EAAAmD,GAMAnD,GAAAQ,aAAA,EAEAR,EAAAyT,kBAAAzT,EAAAyT,iBAAAC,OACA1T,EAAAyT,iBAAAE,MAAA,WACA5T,SAAA,WACAC,EAAA+K,SAAA5H,EAAApD,EAAA,cAIAC,EAAA+K,SAAA5H,EAAApD,EAAA,YAQA+L,OAAA,SAAAiI,EAAAhU,GACA,GAAAC,GAAAJ,EAAA2F,QAAAgM,cAAAzM,KAAA7E,KAAA,UACAkD,EAAA3D,EAAAuU,GAAAnM,OAAA,YAEA,IAAA5H,EAAAQ,aAAA2C,EAAAlC,OAAA,EAKA,YAJAzB,EAAAqB,WAAAd,IACAA,EAAA+E,KAAA9E,EAAAmD,GAMAnD,GAAAQ,aAAA,EAEAR,EAAAyT,kBAAAzT,EAAAyT,iBAAAC,OACA1T,EAAAyT,iBAAAE,MAAA,WACA5T,SAAA,WACAC,EAAAyL,YAAAtI,EAAApD,MAIAC,EAAAyL,YAAAtI,EAAApD,MAIAmM,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAEA,IAAAC,GAAAJ,EAAAc,GAAAC,cAAA0L,WAIAzM,GAAAa,OAAAT,EAAAoC,WACAkS,uBAAA,WACA,GACAC,GACA9Q,EAFArD,EAAAC,IAIA,IAAAD,EAAAF,QAAAsP,eAAA,CAKA,IAHA+E,EAAA9N,KAAA4C,KAAAjJ,EAAAwB,SAAAP,OAAAjB,EAAA8H,MACA9H,EAAAoU,cAAAC,QAEAhR,EAAA8Q,EAAA,EAAA9Q,GAAA,EAAAA,IACA7D,EAAA,UACA8U,MAAA,0BACAC,qBAAA,WACAC,SAAAxU,EAAAoU,cAGApU,GAAAyU,mBAAAzU,EAAAoU,cAAArT,WAIAf,EAAA0U,0BAGAvB,cAAA,WACA,GAAAnT,GAAAC,IAEA,YAAAD,EAAAF,QAAA8G,aAIA5G,EAAAI,KAAAmH,YAAA,mBAEAvH,EAAAqB,IAAA2E,WAAA,SAEAhG,EAAAqB,IAAAmD,IAAA,QAEAhF,EAAAE,GAAA8E,IAAA,QAEAxE,EAAAF,QAAAkP,MACAhP,EAAA2U,mBAIAC,WAAA,SAAAxS,GACA,GAAApC,GAAAC,IAEA,IAAAD,EAAA6U,cAAA,CACA,IAAA7U,EAAA8U,cAGA,MAFA9U,GAAA+U,aAAA,MAKA/U,GAAAF,QAAAwP,aACAtP,EAAA+U,aAAA1O,KAAA8C,IAAAnJ,EAAA+U,aAAA/U,EAAA8H,KAAA9H,EAAAwB,SAAAP,OAAAjB,EAAA8H,MAEA9H,EAAA+U,cAAA,CAIA/U,GAAAgV,cAGAC,WAAA,SAAA7S,GACA,GAAApC,GAAAC,IAEA,IAAAD,EAAAkV,gBAAA,CACA,IAAAlV,EAAA8U,cAGA,MAFA9U,GAAA+U,aAAA/U,EAAAwB,SAAAP,OAAAjB,EAAA8H,SAKA9H,GAAAF,QAAAwP,aACAtP,EAAA+U,aAAA1O,KAAA+C,IAAA,EAAApJ,EAAA+U,aAAA/U,EAAA8H,MAEA9H,EAAA+U,cAAA,CAIA/U,GAAAgV,cAGAG,aAAA,SAAA/S,GACA,GAAApC,GAAAC,KACAkC,EAAAkE,KAAA8C,IAAA/G,EAAAD,QAAAnC,EAAA8H,KAAA9H,EAAAwB,SAAAP,OAAAjB,EAAA8H,KAEA3F,KAAAnC,EAAA+U,eAIA/U,EAAA+U,aAAA5S,EAEAnC,EAAAgV,eAGAI,iBAAA,SAAAC,GACA,GACAC,GACAC,EAEApT,EAJAnC,EAAAC,KAKAuV,EAAAH,EAAA,CAEArV,GAAAF,QAAAwP,cACAgG,EAAAtV,EAAA8H,KAAA9H,EAAAiI,YACAsN,EAAAvV,EAAA8H,OAEAwN,EAAAtV,EAAAiI,YACAsN,EAAA,GAGAF,EAAAhP,KAAAoP,IAAAJ,GACAlT,EAAAkE,KAAA6C,MAAAmM,EAAAC,GAAAC,EAEAF,EAAAC,EAAA,KACAnT,GAAAoT,GAIAvV,EAAA+U,aADAS,EACAnP,KAAA8C,IAAAnJ,EAAA+U,aAAA5S,EAAAnC,EAAAwB,SAAAP,OAAAjB,EAAA8H,MAEAzB,KAAA+C,IAAA,EAAApJ,EAAA+U,aAAA5S,GAGAnC,EAAAgV,cAGAE,cAAA,WACA,MAAA,KAAAjV,KAAA8U,cAGAF,YAAA,WACA,GAAA7U,GAAAC,IACA,OAAAD,GAAA+U,aAAA/U,EAAA8H,KAAA9H,EAAAwB,SAAAP,OAAA,GAGA+T,WAAA,WACA,GAAAhV,GAAAC,IAGAD,GAAA0U,yBAEA1U,EAAA0V,wBAGAC,gBAAA,WACA,GAAA3V,GAAAC,IAEA,IAAAD,EAAA4V,OAEA,WADA5V,GAAA2U,gBAIA3U,GAAAoR,QAAAE,WAAA,WAEAtR,EAAA4U,aAGA5U,EAAA2V,mBAEA3V,EAAAF,QAAAmP,cAGA0F,eAAA,WACAtD,aAAApR,KAAAmR,UAGAsD,uBAAA,WACA,GACAmB,GACA9J,EAFA/L,EAAAC,IAIAD,GAAA8U,gBACA/I,EAAA/L,EAAAkV,gBAAA,WAAA,cACAlV,EAAA8V,QAAA/J,GAAA,gBAEAA,EAAA/L,EAAA6U,cAAA,WAAA,cACA7U,EAAA+V,QAAAhK,GAAA,iBAGA/L,EAAAF,QAAAsP,iBAEAyG,EADA7V,EAAAF,QAAAwP,aACAjJ,KAAA4C,KAAAjJ,EAAA+U,aAAA/U,EAAA8H,MAEA9H,EAAA6U,cACA7U,EAAAyU,mBAAAxT,OAAA,EAEAoF,KAAA6C,MAAAlJ,EAAA+U,aAAA/U,EAAA8H,MAKA9H,EAAAyU,mBAAAlN,YAAA,6BACAyO,GAAAH,GACA7U,SAAA,8BAGAhB,EAAAiW,mBAEAJ,EADA7V,EAAAF,QAAAwP,aACAjJ,KAAA4C,KAAAjJ,EAAA+U,aAAA/U,EAAA8H,MAEA9H,EAAA6U,cACA7U,EAAAkW,sBAAAjV,OAAA,EAEAoF,KAAA6C,MAAAlJ,EAAA+U,aAAA/U,EAAA8H,MAKA9H,EAAAkW,sBAAA3O,YAAAvH,EAAAmW,uBACAH,GAAAH,GACA7U,SAAAhB,EAAAmW,yBAOArB,YAAA,WACA,GAAA9U,GAAAC,IAEA,QAAAD,EAAAF,QAAAqP,kBAIAnP,EAAAwB,SAAAP,QAAAjB,EAAA8H,SAIA9H,EAAAF,QAAAuP,WAOA+G,kBAAA,WACA,MAAAnW,MAAAuB,SAAAP,QAAAhB,KAAA6H,MAMAhB,aAAA,WACA,GAAA9G,GAAAC,IAEAD,GAAAwB,SAAAE,KAAA,SAAAS,EAAAC,GACA,GAAAlC,GAAAV,EAAA4C,GAAAlC,KAAA,MAGAA,GAAA6C,QAAA/C,EAAAiI,YAAA9F,EACAjC,EAAA+C,OAAA,EAEAjD,EAAAqW,iBAAA1N,MACAgB,SAAAzJ,EAAA0C,iBAIA5C,EAAAsW,yBAEAtW,EAAAqB,IAAAiB,MAAAtC,EAAAiI,YAAAjI,EAAAwB,SAAAP,OAAAjB,EAAAF,QAAA6C,cAGA2T,uBAAA,WACA,GAAAtW,GAAAC,IAEAD,GAAAyJ,WAAAzJ,EAAAqW,iBAAA3M,MAAA1J,EAAA+U,aAAA/U,EAAA+U,aAAA/U,EAAA8H,MAEA9H,EAAAyJ,WAAAZ,KAAA,SAAAmF,EAAAC,GACA,MAAAD,GAAArE,SAAAsE,EAAAtE,SACA,EACAqE,EAAArE,SAAAsE,EAAAtE,UACA,MADA,MAMA+L,qBAAA,WACA,GAAA1V,GAAAC,KACA2B,GAAA5B,EAAA+U,aAAA/U,EAAAiI,WAEArI,GAAA2F,QAAAsE,cACA7J,EAAAqB,IAAA,GAAA+C,MAAAxE,EAAA2F,QAAAgN,WAAA,eAAA3Q,EAAA,cAEA5B,EAAAqB,IAAA,GAAA+C,MAAAtB,KAAAlB,EAAA,KAGA5B,EAAAsW,yBAEAtW,EAAAkH,uBAGAqP,WAAA,WAmCA,QAAAC,GAAAC,GACA,IAAAzW,EAAAoW,oBAAA,CAcA,GAVAM,EAGAC,EAAAF,EAFAA,EAAAG,iBAKA5W,EAAAF,QAAAkP,MACAhP,EAAA2U,iBAGAnU,EAIA,WAHAhB,GAAAqX,GAAA/M,IAAA,YAAA,WACA,OAAA,GAKA+M,GAAArX,EAAAiX,EAAAI,QACAC,EAAAC,EAAAN,GAAAO,EACA3B,EAAA,EACA4B,GAAAjX,EAAA+U,aAAA/U,EAAAiI,YACAiP,EAAAlX,EAAAiI,aAAAjI,EAAAwB,SAAAP,OAAAjB,EAAA8H,MAEAqP,EAAA5S,GAAAyM,EAAAoG,KAAAC,GACAF,EAAA5S,GAAAyM,EAAAsG,IAAAC,GAEAvX,EAAAI,KAAAY,SAAA,8BAGA,QAAAuW,GAAAd,GACAzW,EAAAI,KAAAmH,YAAA,6BAGA/G,GAAA,EAEA,IAAA6U,GACAwB,EAAA/M,IAAA,YAAA,SAAA2M,GACA,OAAA,IAIA1S,sBAAA,WACA/D,EAAAoV,iBAAAC,GACArV,EAAAqB,IAAAyI,IAAAlK,EAAA2F,QAAAwE,cAAAyN,MAGAA,EAAA1S,KAAA9E,GAGAmX,EAAA3S,IAAAwM,EAAAoG,MACAD,EAAA3S,IAAAwM,EAAAsG,KAGA,QAAAD,GAAAZ,GACApB,EAAAyB,EAAAC,EAAAN,GAAAO,GAEA3B,EAAA,GAAAA,GAAA,IACAoB,EAAAG,iBAGA5W,EAAA4V,QAAA,CAEA,IAAAhU,GAAAqV,EAAA5B,CAEAA,GAAA,GAAAA,EAAA4B,EACArV,GAAAqV,EAAA5B,GAAA,EACAA,EAAA,GAAA4B,EAAA5B,GAAA6B,IACAtV,GAAAsV,EAAAD,EAAA5B,GAAA,EAAA6B,GAGAtX,EAAA2F,QAAAsE,cACA7J,EAAAqB,IAAA,GAAA+C,MAAAxE,EAAA2F,QAAAgN,WAAA,eAAA3Q,EAAA,cAEA5B,EAAAqB,IAAA,GAAA+C,MAAAtB,KAAAlB,EAAA,KAIA,QAAA4V,KAIA,GAHAhX,GAAA,EACAR,EAAA4V,QAAA,EAEA5V,EAAAF,QAAAkP,KAAA,CACA,GAAAhP,EAAAyX,eACA,MAGAzX,GAAA2V,mBAIA,QAAAoB,GAAAN,GAKA,MAJAA,GAAAiB,gBAAA/X,GAAA8W,EAAAiB,cAAAC,UAAAhY,IACA8W,EAAAA,EAAAiB,cAAAC,QAAA,KAIAX,EAAAP,EAAAmB,MACAC,EAAApB,EAAAqB,OAxIA,GAEAhB,GACAzB,EACAwB,EACAI,EACAC,EAIAP,EAVA3W,EAAAC,KACAkX,EAAA3X,EAAAE,GAMAc,GAAA,EACAwQ,KACA0F,GAAA,CAIA1W,GAAA4V,QAAA,EAEA,gBAAAnW,IACAoS,UAAAkG,eAAA,GACAlG,UAAAmG,iBAAA,GAEAhH,GACAiH,MAAA,iBACAb,KAAA,gBACAE,IAAA,gBAGAZ,GAAA,GAEA1F,GACAiH,MAAA,gBACAb,KAAA,gBACAE,IAAA,eA8GAtX,EAAAqB,IAAAkD,GAAAyM,EAAAiH,MAAAzB,IAMA3P,kBAAA,WACA,GAAA7G,GAAAC,IAEAD,GAAAyJ,cAEAzJ,EAAAqW,wBAGAnK,OAAAzM,OAAAC,UACA,kBAAAwY,QAAAC,SACAD,OAAAC,OAAA,SAAAtY,GACA,QAAAuY,MAEA,MADAA,GAAApW,UAAAnC,EACA,GAAAuY,KAQA,WAIA,IAAA,GAHAC,GAAA,EACAC,GAAA,MAAA,UAEAtB,EAAA,EAAAA,EAAAsB,EAAArX,SAAAxB,OAAAsE,sBAAAiT,IACAvX,OAAAsE,sBAAAtE,OAAA6Y,EAAAtB,GAAA,yBACAvX,OAAA8Y,qBAAA9Y,OAAA6Y,EAAAtB,GAAA,yBAAAvX,OAAA6Y,EAAAtB,GAAA,8BAGAvX,QAAAsE,wBACAtE,OAAAsE,sBAAA,SAAAhE,EAAAyY,GACA,GAAAC,IAAA,GAAAC,OAAAC,UACAC,EAAAvS,KAAA+C,IAAA,EAAA,IAAAqP,EAAAJ,IACAQ,EAAApZ,OAAA6R,WAAA,WACAvR,EAAA0Y,EAAAG,IAEAA,EAEA,OADAP,GAAAI,EAAAG,EACAC,IAIApZ,OAAA8Y,uBACA9Y,OAAA8Y,qBAAA,SAAAM,GACAxH,aAAAwH,QAIA,SAAArZ,EAAAC,EAAAC,EAAAC,GACA,YAIA,SAAAmZ,GAAA1Q,GACA,GAAApI,GAAAC,IAEAD,GAAAoI,OAAAA,EAEAA,EAAAf,aAAArH,EAAAqH,aAEAe,EAAAtH,cAAA,sBAAA,SAAAsG,GACAgB,EAAA2Q,YAAA3Q,EAAAT,gBAAAC,OAAAR,GACAgB,EAAA4Q,aAAA5Q,EAAAT,gBAAAE,IAAAT,KAXA,GAAAxH,GAAAJ,EAAAc,GAAAC,cAAA0L,WAgBA6M,GAAA9W,UAAAqF,aAAA,WAsCA,QAAA8D,KACAnL,EAAAuB,OAAAgG,YAAA,kDACA7F,KAAA,SAAAS,EAAAC,GACA,GAAAlC,GAAAV,EAAA4C,GAAAlC,KAAA,MAEAA,GAAA4C,KAAA5C,EAAA6C,QACA7C,EAAA8C,IAAA9C,EAAA+C,OAEAb,EAAAgC,MAAAtB,KAAA5C,EAAA4C,KAAA,KACAV,EAAAgC,MAAApB,IAAA9C,EAAA8C,IAAA,KAEAZ,EAAAgC,MAAAxE,EAAA2F,QAAAgN,WAAA,KAGAvS,EAAAsH,UAAAtG,SAAA,gBAEAhB,EAAAI,KAAAmH,YAAA,iBAAAvH,EAAAF,QAAA0P,eAEAxP,EAAAwH,eAvDA,GAAAxH,GAAAC,IAEAD,GAAAI,KAAAY,SAAA,iBAAAhB,EAAAF,QAAA0P,eAGAxP,EAAA+Y,YAAA/X,SAAA,kBACAU,KAAA,SAAAS,EAAAC,GACA,GAAAlC,GAAAV,EAAA4C,GAAAlC,KAAA,MACAkC,GAAAgC,MAAAxE,EAAA2F,QAAAgN,WAAA,gBAAArS,EAAA6C,QAAA7C,EAAA4C,MAAA,QAAA5C,EAAA+C,OAAA/C,EAAA8C,KAAA,WAIAhD,EAAAgZ,aAAAhY,SAAA,mBAGAhB,EAAAiZ,aAAAjZ,EAAAwB,SACAoG,OAAA,iBACAL,YAAA,gBACAvG,SAAA,mBACAU,KAAA,SAAAS,EAAAC,GACA,GAAAlC,GAAAV,EAAA4C,GAAAlC,KAAA,MAEAkC,GAAAgC,MAAAtB,KAAA5C,EAAA6C,QAAA,KACAX,EAAAgC,MAAApB,IAAA9C,EAAA+C,OAAA,OAGAjD,EAAAgZ,aAAA/X,OACAjB,EAAAgZ,aAAA9N,OAAAhL,KAAA,OAAAoB,QAAAwI,IAAAlK,EAAA2F,QAAA4F,aAAAA,GACAnL,EAAAiZ,aAAAhY,OACAjB,EAAAiZ,aAAA/N,OAAAhL,KAAA,OAAAoB,QAAAwI,IAAAlK,EAAA2F,QAAA4F,aAAAA,GAEAA,IAIAnL,EAAAkH,uBAwBA4R,EAAA9W,UAAA+Q,QAAA,WACA,GAAA3K,GAAAnI,KAAAmI,MACAA,GAAAhI,KAAAmH,YAAA,iBAAAa,EAAAtI,QAAA0P,gBAGA5P,EAAA6B,QAAAyX,iBAAA,SAAA9Q,GACA,OAAAxI,EAAA2F,QAAAsE,eAAArK,EAAA2Z,QAAA/Q,EAAAtI,QAAA0P,eAAA,YAAA,UAAA,aAAA,UAAA,YAAA,aAAA,SAAA,EACA,KAGA,GAAAsJ,GAAA1Q,KAEA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAIA,SAAAmZ,GAAA1Q,GACA,GAAApI,GAAAC,IAEAD,GAAAoI,OAAAA,EAEAA,EAAAf,aAAArH,EAAAqH,aAPA,GAAAzH,GAAAJ,EAAAc,GAAAC,cAAA0L,WAWA6M,GAAA9W,UAAAqF,aAAA,WAuCA,QAAA8D,KACAnL,EAAAsB,QAAA,GAAA8X,YAAAC,GAEA,iBAAArZ,EAAAF,QAAA0P,eACAxP,EAAAwB,SAAAE,KAAA,SAAAS,EAAAC,GACA5C,EAAA4C,GAAAlC,KAAA,OAAAoB,QAAA,GAAA8C,MAAAxE,EAAA2F,QAAA+M,gBAAA,KAIAtS,EAAAI,KAAAmH,YAAA,iBAAAvH,EAAAF,QAAA0P,eAEAxP,EAAAwH,eAjDA,GAAAxH,GAAAC,KACAoZ,EAAArZ,EAAAqB,IAAA,GAAAiY,WAAA,EAEAD,GAAA7V,aAAA,QAAA,sBACAxD,EAAAsB,QAAA,GAAAiY,aAAAF,EAAArZ,EAAAqB,IAAA,IAEA0C,sBAAA,WACA/D,EAAAI,KAAAY,SAAA,iBAAAhB,EAAAF,QAAA0P,eAEAxP,EAAAsH,UAAAtG,SAAA,gBAEAhB,EAAAwB,SAAA+F,YAAA,gBACA7F,KAAA,SAAAS,EAAAC,GACA,GAAAlC,GAAAV,EAAA4C,GAAAlC,KAAA,MAEAA,GAAA4C,KAAA5C,EAAA6C,QACA7C,EAAA8C,IAAA9C,EAAA+C,OAEAb,EAAAgC,MAAAtB,KAAA5C,EAAA4C,KAAA,KACAV,EAAAgC,MAAApB,IAAA9C,EAAA8C,IAAA,KAEA,iBAAAhD,EAAAF,QAAA0P,gBACAtP,EAAAoB,QAAA,GAAA8C,MAAAxE,EAAA2F,QAAA+M,gBAAA,GAAAnQ,EAAA,QAIAnC,EAAAwB,SAAAP,OACAjB,EAAAwB,SAAA0J,OAAAhL,KAAA,OAAAoB,QAAAwI,IAAAlK,EAAA2F,QAAA4F,aAAAA,GACAnL,EAAA2H,gBAAA1G,OACAjB,EAAA2H,gBAAAuD,OAAAhL,KAAA,OAAAoB,QAAAwI,IAAAlK,EAAA2F,QAAA4F,aAAAA,GAEAA,IAIAnL,EAAAkH,yBAkBA4R,EAAA9W,UAAA+Q,QAAA,WACA,GAAA3K,GAAAnI,KAAAmI,MACAA,GAAAhI,KAAAmH,YAAA,iBAAAa,EAAAtI,QAAA0P,gBAGA5P,EAAA6B,QAAA+X,eAAA,SAAApR,GACA,OAAAxI,EAAA2F,QAAAsE,eAAArK,EAAA2Z,QAAA/Q,EAAAtI,QAAA0P,eAAA,aAAA,YAAA,iBAAA,EACA,KAGA,GAAAsJ,GAAA1Q,KAEA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAIA,SAAAmZ,GAAA1Q,GACA,GAAApI,GAAAC,IAEAD,GAAAoI,OAAAA,EAEAA,EAAAf,aAAArH,EAAAqH,aAPA,GAAAzH,GAAAJ,EAAAc,GAAAC,cAAA0L,WAWA6M,GAAA9W,UAAAqF,aAAA,WAgDA,QAAA8D,KACAnL,EAAAsB,QAAA,GAAA8X,YAAAC,EAAA,IAEArZ,EAAAI,KAAAmH,YAAA,iBAAAvH,EAAAF,QAAA0P,eAEAxP,EAAAuB,OAAAG,KAAA,SAAAS,EAAAC,GACA5C,EAAA4C,GAAAlC,KAAA,OAAAoB,QAAA,GAAA8C,MAAAxE,EAAA2F,QAAA+M,gBAAA,KAGAtS,EAAAwH,eAxDA,GAAAxH,GAAAC,KACAoZ,EAAArZ,EAAAqB,IAAAoY,OAAA,GAAA,EAEAJ,GAAA,GAAA7V,aAAA,QAAA,sBACAxD,EAAAsB,QAAA,GAAAiY,aAAAF,EAAA,GAAArZ,EAAAqB,IAAA,GAIA,IAAA8B,GAAAkW,EAAApV,KAAA,aAAA4D,IAAA,gBACA7H,GAAA0H,WAAAvE,EAAA,OACAA,EAAApC,SAAA,qBAAAW,KAAA,SAAAS,EAAAC,GACAA,EAAAgC,MAAAxE,EAAA2F,QAAA+M,gBAAA,GAAAnQ,EAAA,OAGA4B,sBAAA,WACA/D,EAAAI,KAAAY,SAAA,iBAAAhB,EAAAF,QAAA0P,eAEAxP,EAAAsH,UAAAtG,SAAA,gBAEAhB,EAAAwB,SAAA+F,YAAA,gBACA7F,KAAA,SAAAS,EAAAC,GACA,GAAAlC,GAAAV,EAAA4C,GAAAlC,KAAA,MAEAA,GAAA4C,KAAA5C,EAAA6C,QACA7C,EAAA8C,IAAA9C,EAAA+C,OAEAb,EAAAgC,MAAAtB,KAAA5C,EAAA4C,KAAA,KACAV,EAAAgC,MAAApB,IAAA9C,EAAA8C,IAAA,KAEA9C,EAAAoB,QAAA,GAAA8C,MAAAxE,EAAA2F,QAAA+M,gBAAA,GAAAnQ,EAAA,MAGA,IAAAuX,GAAA1Z,EAAAwB,SAAAP,OACA0Y,EAAAxW,EAAAlC,MAEA,KAAAyY,GAAA,IAAAC,EACAxO,IACAuO,EAAAC,EACAxW,EAAA+H,OAAAnK,SAAA,qBAAA+I,IAAAlK,EAAA2F,QAAA4F,aAAAA,GAEAnL,EAAAwB,SAAA0J,OAAAhL,KAAA,OAAAoB,QAAAwI,IAAAlK,EAAA2F,QAAA4F,aAAAA,GAIAnL,EAAAkH,yBAgBA4R,EAAA9W,UAAA+Q,QAAA,WACA,GAAA3K,GAAAnI,KAAAmI,MACAA,GAAAhI,KAAAmH,YAAA,iBAAAa,EAAAtI,QAAA0P,gBAGA5P,EAAA6B,QAAAmY,oBAAA,SAAAxR,GACA,OAAAxI,EAAA2F,QAAAsE,eAAArK,EAAA2Z,QAAA/Q,EAAAtI,QAAA0P,eAAA,SAAA,eAAA,WAAA,WAAA,aAAA,cAAA,YAAA,aAAA,WAAA,EACA,KAGA,GAAAsJ,GAAA1Q,KAEA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAIA,SAAAmZ,GAAA1Q,GACA,GAAApI,GAAAC,IAEAD,GAAAoI,OAAAA,EAEAA,EAAAf,aAAArH,EAAAqH,aAPA,GAAAzH,GAAAJ,EAAAc,GAAAC,cAAA0L,WAWA6M,GAAA9W,UAAAqF,aAAA,WAmCA,QAAA8D,KACAnL,EAAAsB,QAAA,GAAA8X,YAAAC,GAEArZ,EAAAI,KAAAmH,YAAA,iBAAAvH,EAAAF,QAAA0P,eAEAxP,EAAAwH,eAvCA,GAAAxH,GAAAC,KACAoZ,EAAArZ,EAAAqB,IAAA,GAAAiY,WAAA,EAEAD,GAAA7V,aAAA,QAAA,sBACAxD,EAAAsB,QAAA,GAAAiY,aAAAF,EAAArZ,EAAAqB,IAAA,IAEA0C,sBAAA,WACA/D,EAAAI,KAAAY,SAAA,iBAAAhB,EAAAF,QAAA0P;0DAEAxP,EAAAsH,UAAAtG,SAAA,gBAEAhB,EAAAwB,SAAA+F,YAAA,gBACA7F,KAAA,SAAAS,EAAAC,GACA,GAAAlC,GAAAV,EAAA4C,GAAAlC,KAAA,MAEAA,GAAA4C,KAAA5C,EAAA6C,QACA7C,EAAA8C,IAAA9C,EAAA+C,OAEAb,EAAAgC,MAAAtB,KAAA5C,EAAA4C,KAAA,KACAV,EAAAgC,MAAApB,IAAA9C,EAAA8C,IAAA,OAGAhD,EAAAwB,SAAAP,OACAjB,EAAAqB,IAAAyI,IAAAlK,EAAA2F,QAAA4F,aAAAA,GACAnL,EAAA2H,gBAAA1G,OACAzB,EAAA6Z,GAAAvP,IAAAlK,EAAA2F,QAAA4F,aAAAA,GAEAA,IAIAnL,EAAAkH,yBAYA4R,EAAA9W,UAAA+Q,QAAA,WACA,GAAA3K,GAAAnI,KAAAmI,MACAA,GAAAhI,KAAAmH,YAAA,iBAAAa,EAAAtI,QAAA0P,gBAGA5P,EAAA6B,QAAAoY,iBAAA,SAAAzR,GACA,OAAAxI,EAAA2F,QAAAsE,eAAArK,EAAA2Z,QAAA/Q,EAAAtI,QAAA0P,eAAA,eAAA,aAAA,YAAA,aAAA,EACA,KAGA,GAAAsJ,GAAA1Q,KAEA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAIA,SAAAmZ,GAAA1Q,GACA,GAAApI,GAAAC,KACAH,EAAAsI,EAAAtI,OAEAE,GAAAoI,OAAAA,EAEApI,EAAA8Z,UAAAha,EAAA2P,QAEArH,EAAAtH,cAAA,iBAAA,SAAAiZ,GACAA,GAAAA,EAAAC,eAAA,WACAha,EAAA8Z,YAAAC,EAAAtK,UACAzP,EAAA+S,UACA/S,EAAA8Z,UAAAC,EAAAtK,QACAzP,EAAAgM,QAEAhM,EAAA8Z,YAAAha,EAAA2P,UACAzP,EAAA+S,UACA/S,EAAA8Z,UAAAha,EAAA2P,QACAzP,EAAAgM,UAIAhM,EAAAgM,OAxBA,GAAApM,GAAAJ,EAAAc,GAAAC,cAAA0L,WA2BA6M,GAAA9W,UAAAgK,KAAA,WACA,GAAAhM,GAAAC,IAGA,KAAAD,EAAA8Z,YAIA,WAAA9Z,EAAA8Z,WAAAla,EAAA2F,QAAAsE,gBACA7J,EAAAoI,OAAAtI,QAAA2P,QAAAzP,EAAA8Z,UAAA,WAKA9Z,EAAAoI,OAAAhI,KAAAY,SAAA,kCAAAhB,EAAA8Z,aAGAhB,EAAA9W,UAAA+Q,QAAA,WACA9S,KAAAmI,OAAAhI,KAAAmH,YAAA,kCAAAtH,KAAA6Z,YAGAla,EAAA6B,QAAAgO,QAAA,SAAArH,GACA,MAAA,IAAA0Q,GAAA1Q,KAEA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAIA,SAAAmZ,GAAA1Q,GACAnI,KAEAmI,OAAAA,EAEAA,EAAAtH,cAAA,aAAA,WACAsH,EAAAhI,KAAAmE,GAAA,YAAA,2BAAA,SAAAkS,GAGA,GAFAA,EAAAG,kBAEAxO,EAAA5H,YAAA,CAIA4H,EAAA5H,aAAA,CAEA,IAAAyZ,GAAAza,EAAAS,MACAia,EAAAD,EAAAE,OACA1K,EAAAwK,EAAA7R,SACAgS,GACApP,SAAA,WACAzI,OAAA2X,EAAAG,aAAA,IAEAC,GACAtP,SAAA,WACAzI,OAAA,EAMA,IAHA6F,EAAAhI,KAAAY,SAAA,6BAGAyO,EAAAtO,SAAA,2BAAA,CACA,GAAAoZ,GAAAD,CACAA,GAAAF,EACAA,EAAAG,EACA9K,EAAAlI,YAAA,2BAGA2S,EAAAjP,IAAAmP,GAEAhS,EAAAhI,KAAA0J,IAAA,mBAAA,WACA1B,EAAA5H,aAAA,EACA4H,EAAAhI,KAAAmH,YAAA,6BAEA,IAAA6S,EAAA7X,SACAkN,EAAAlI,YAAA,2BACA2S,EAAAxV,KAAA,QAAA,OAKA0D,EAAAlD,sBAGAgV,EAAAjP,IAAAqP,GAGAvW,sBAAA,WACA0L,EAAAzO,SAAA,2BAEAkZ,EAAAjP,IAAAmP,GAGAhS,EAAAvG,aAAA,cAEAuG,EAAAvG,aAAA,qBAGA,GArEA,GAAAjC,GAAAJ,EAAAc,GAAAC,cAAA0L,WAwEA6M,GAAA9W,UAAA+Q,QAAA,WACA9S,KAAAmI,OAAAhI,KAAA6D,KAAA,4BAAAO,IAAA,aAAA4D,SAAAb,YAAA,8BAGA3H,EAAA6B,QAAA+Y,cAAA,SAAApS,GACA,MAAA,WAAAA,EAAAtI,QAAA2P,QACA,KAGA,GAAAqJ,GAAA1Q,KAEA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAIA,SAAAmZ,GAAA1Q,GACA,GAAA+B,GAAA3K,EAAAib,UAEArS,GAAA6B,UAAA,aAAAE,GAEA/B,EAAAtH,cAAA,eAAA,WACAsH,EAAA5G,SAAAE,KAAA,SAAAS,EAAAC,GACAA,EAAAgC,MAAAxE,EAAA2F,QAAA+M,gBAAAnQ,EAAAiG,EAAAtI,QAAA6P,iBAAA,OAGAvH,EAAAhI,KAAAY,SAAA,+BAGAoH,EAAA5G,SAAA0J,OAAApB,IAAAlK,EAAA2F,QAAA4F,aAAA,WACA/C,EAAAhI,KAAAmH,YAAA,+BAEAa,EAAA5G,SAAAE,KAAA,SAAAS,EAAAC,GACAA,EAAAgC,MAAAxE,EAAA2F,QAAA+M,gBAAA,KAIAnI,EAAAuQ,cAEA,GAzBA,GAAA9a,GAAAJ,EAAAc,GAAAC,cAAA0L,WA4BArM,GAAA6B,QAAAkZ,mBAAA,SAAAvS,GACA,MAAAxI,GAAA2F,QAAAsE,eAAA,gBAAAzB,EAAAtI,QAAA4P,aAAA,IAAAtH,EAAA5G,SAAAP,OAIA,GAAA6X,GAAA1Q,GAHA,OAKA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAIA,SAAAmZ,GAAA1Q,GACA,GAAA+B,GAAA3K,EAAAib,UAEArS,GAAA6B,UAAA,aAAAE,GAEA/B,EAAAtH,cAAA,eAAA,WACAsH,EAAAvI,IAAAuE,MAAAxE,EAAA2F,QAAA8M,mBAAAjK,EAAAtI,QAAA6P,iBAAA,KAEAvH,EAAAhI,KAAAY,SAAA,0BAEAoH,EAAAhI,KAAA0J,IAAAlK,EAAA2F,QAAA4F,aAAA,WACA/C,EAAAhI,KAAAmH,YAAA,0BAEAa,EAAAvI,IAAAuE,MAAAxE,EAAA2F,QAAA8M,mBAAA,GAGAlI,EAAAuQ,cAEA,GApBA,GAAA9a,GAAAJ,EAAAc,GAAAC,cAAA0L,WAuBArM,GAAA6B,QAAAmZ,cAAA,SAAAxS,GACA,OAAAxI,EAAA2F,QAAAsE,eAAA,gBAAAzB,EAAAtI,QAAA4P,aAAA,WAAAtH,EAAAtI,QAAA4P,aAAA,IAAAtH,EAAA5G,SAAAP,OACA,KAGA,GAAA6X,GAAA1Q,KAEA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAIA,SAAAmZ,GAAA1Q,GACA,GAAA+B,GAAA3K,EAAAib,UAEArS,GAAA6B,UAAA,aAAAE,GAEA/B,EAAAtH,cAAA,eAAA,WACAsH,EAAAvI,IAAAuE,MAAAxE,EAAA2F,QAAA8M,mBAAAjK,EAAAtI,QAAA6P,iBAAA,KAEAvH,EAAAhI,KAAAY,SAAA,+BAEAoH,EAAAhI,KAAA0J,IAAAlK,EAAA2F,QAAA4F,aAAA,WACA/C,EAAAhI,KAAAmH,YAAA,+BAEAa,EAAAvI,IAAAuE,MAAAxE,EAAA2F,QAAA8M,mBAAA,GAGAlI,EAAAuQ,cAEA,GApBA,GAAA9a,GAAAJ,EAAAc,GAAAC,cAAA0L,WAuBArM,GAAA6B,QAAAoZ,mBAAA,SAAAzS,GACA,MAAAxI,GAAA2F,QAAAsE,eAAA,gBAAAzB,EAAAtI,QAAA4P,aAAA,IAAAtH,EAAA5G,SAAAP,OAIA,GAAA6X,GAAA1Q,GAHA,OAKA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAIA,SAAAmZ,GAAA1Q,GACA,GAAA+B,GAAA3K,EAAAib,UAEArS,GAAA6B,UAAA,aAAAE,GAEA/B,EAAAtH,cAAA,eAAA,WACAsH,EAAA5G,SAAAE,KAAA,SAAAS,EAAAC,GACAA,EAAAgC,MAAAxE,EAAA2F,QAAA+M,gBAAAnQ,EAAAiG,EAAAtI,QAAA6P,iBAAA,OAGAvH,EAAAhI,KAAAY,SAAA,gCAGAoH,EAAA5G,SAAA0J,OAAApB,IAAAlK,EAAA2F,QAAA4F,aAAA,WACA/C,EAAAhI,KAAAmH,YAAA,gCAEAa,EAAA5G,SAAAE,KAAA,SAAAS,EAAAC,GACAA,EAAAgC,MAAAxE,EAAA2F,QAAA+M,gBAAA,KAIAnI,EAAAuQ,cAEA,GAzBA,GAAA9a,GAAAJ,EAAAc,GAAAC,cAAA0L,WA4BArM,GAAA6B,QAAAqZ,oBAAA,SAAA1S,GACA,MAAAxI,GAAA2F,QAAAsE,eAAA,iBAAAzB,EAAAtI,QAAA4P,aAAA,IAAAtH,EAAA5G,SAAAP,OAIA,GAAA6X,GAAA1Q,GAHA,OAKA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAIA,SAAAmZ,GAAA1Q,GACA,GAAApI,GAAAC,IAEAD,GAAAoI,OAAAA,EAEApI,EAAA6O,QAAArP,EAAA4I,EAAAtI,QAAA+O,SACA7O,EAAA+a,cAEA3S,EAAAtH,cAAA,eAAA,SAAAgD,GAEA9D,EAAAgb,gBACAhb,EAAAib,mBAIA7S,EAAAtH,cAAA,qBAAA,WACA,GAAAoa,GAAA9S,EAAAtI,QAAAW,cAAA0a,MAAA,IAEAnb,GAAA6O,QAAAnN,KAAA,SAAAS,EAAAC,GACA,GAAAe,GAAA3D,EAAA4C,GAAA6B,KAAA,mBAEAzE,GAAAkC,KAAAwZ,EAAA,SAAA/Y,EAAAgP,GACA,GAAA9O,GAAAc,EAAAyE,OAAA,iBAAAuJ,EAAA,KACA,IAAA9O,EAAApB,OAGA,MAFAoB,GAAArB,SAAA,0BAAAoa,WAAA7T,YAAA,0BACA2T,EAAApQ,OAAA3I,EAAA,IACA,MAKAiG,EAAA3H,cAAA2H,EAAAtI,QAAAW,gBAjCA,GAAAb,GAAAJ,EAAAc,GAAAC,cAAA0L,WAqCA6M,GAAA9W,UAAAiZ,eAAA,WACA,GAAAjb,GAAAC,KACAmI,EAAApI,EAAAoI,OAEA8S,EAAA9S,EAAA3H,cAAA0a,MAAA,IAEAnb,GAAAqb,KAAArb,EAAA6O,QAAA5K,KAAA,+BACAM,IACA+W,gBAAA,WACA9b,EAAAS,MAAAe,SAAA,oCAEAua,iBAAA,WACA/b,EAAAS,MAAAsH,YAAA,sCAIAvH,EAAA6O,QAAAnN,KAAA,SAAAS,EAAAC,GACA,GAAAwF,GAAApI,EAAA4C,GACAoZ,EAAA,IACArY,EAAAyE,EAAA3D,KAAA,oBACAwX,IAEA7T,GAAAzG,SAAA,4BACAsa,EAAAJ,KAAAzT,EAAA3D,KAAA,+BACAwX,EAAAC,OAAA9T,EAAA3D,KAAA,iCACAwX,EAAAE,WAAAF,EAAAC,OAAA7H,QAIAzL,EAAAhI,KAAAG,cAAA,cAAA4C,GAEA3D,EAAAkC,KAAAwZ,EAAA,SAAA/Y,EAAAgP,GACA,GAAAhO,EAAAyE,OAAA,iBAAAuJ,EAAA,MAAAlQ,OAGA,MAFAua,GAAArK,EACA+J,EAAApQ,OAAA3I,EAAA,IACA,IAIA3C,EAAAU,KAAAkC,EAAA,aAAAoZ,GACAxb,EAAA+a,WAAApS,KAAAvG,GAEApC,EAAA4b,gBAAAH,EAAAtY,EAAAyE,OAAA,iBAAA4T,EAAA,OAEArY,EAAAoB,GAAA,YAAA,WACA,GAAAlC,GAAA7C,EAAAS,KAEA,KAAAoC,EAAAlB,SAAA,4BAAAiH,EAAA5H,YAAA,CAIAR,EAAA4b,gBAAAH,EAAApZ,GAEA7C,EAAAU,KAAAkC,EAAA,aAAAC,EAAAnC,KAAA,UAEA,IAAAgK,GAAA1K,EAAA0E,IAAAlE,EAAA+a,WAAA,SAAA3Y,EAAAD,GACA,GAAA0Z,GAAArc,EAAAU,KAAAkC,EAAA,aACA,OAAA,KAAAyZ,GAAA,MAAAA,EAAAA,EAAA,MAGA3R,GAAAjJ,OAAA,IACAiJ,GAAA,KAGA,IAAA4R,GAAA5R,EAAA6R,KAAA,IAEA3T,GAAA3H,gBAAAqb,GAEA1T,EAAAhI,KAAAG,cAAA,SAAAub,SAMAhD,EAAA9W,UAAA4Z,gBAAA,SAAAH,EAAApZ,GACA7C,EAAAwc,cAAAP,KACAA,EAAAJ,KAAA/V,QAAA,kBAEAmW,EAAAE,WACAF,EAAAE,WAAA,GAEAF,EAAAC,OAAAO,KAAA5Z,EAAA4Z,SAIA5Z,EAAArB,SAAA,0BAAAoa,WAAA7T,YAAA,2BAMAuR,EAAA9W,UAAAgZ,cAAA,WACA,GAAAkB,GAAA,0BAAAC,KAAA9I,SAAAC,KAEA,QAAA4I,IACAjc,KAAAmI,OAAA3H,cAAA2b,mBAAAF,EAAA,MAIApD,EAAA9W,UAAA+Q,QAAA,WACA,GAAA/S,GAAAC,IAEAD,GAAA6O,QAAA5K,KAAA,oBAAAO,IAAA,QACAxE,EAAAqb,KAAA7W,IAAA,SAGA5E,EAAA6B,QAAAoN,QAAA,SAAAzG,GACA,MAAA,KAAAA,EAAAtI,QAAA+O,QACA,KAGA,GAAAiK,GAAA1Q,KAEA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAIA,SAAAmZ,GAAA1Q,GACA,GAAAiU,GAAAjU,EAAAtI,QAAA6C,YACA2Z,EAAAlU,EAAAtI,QAAA+C,aAEAuF,GAAAtH,cAAA,iBAAA,SAAAiZ,GACA3R,EAAAtI,QAAA6C,YAAAoX,GAAAA,EAAAC,eAAA,eAAAD,EAAApX,YAAA0Z,EACAjU,EAAAtI,QAAA+C,cAAAkX,GAAAA,EAAAC,eAAA,iBAAAD,EAAAlX,cAAAyZ,EAEAlU,EAAA7G,OAAAG,KAAA,SAAAS,EAAAC,GACA,GAAAlC,GAAAV,EAAA4C,GAAAlC,KAAA,MAEAA,GAAAwC,YAAAxC,EAAAoC,MAAA8F,EAAAtI,QAAA6C,YACAzC,EAAA0C,aAAA1C,EAAAqC,OAAA6F,EAAAtI,QAAA+C,kBAdArD,EAAAc,GAAAC,cAAA0L,YAmBAxK,QAAA8a,wBAAA,SAAAnU,GACA,MAAA,IAAA0Q,GAAA1Q,KAEA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAMA,SAAAmZ,GAAA1Q,GACA,GAAApI,GAAAC,IAEAD,GAAAoI,OAAAA,EAEApI,EAAAF,QAAAN,EAAAa,UAAAP,EAAAE,EAAAoI,OAAAtI,QAAA2B,QAAA+a,cAEAxc,EAAAyc,UAEArU,EAAAtH,cAAA,gBAAA,WACAd,EAAAyc,YAKA,QAAAC,GAAAC,GACA,GAAA3c,GAAAC,IAEA0c,GAAAxb,SAAA,6BAIAwb,EAAA3b,SAAA,2BAEAhB,EAAAmD,MAAAwZ,EAAA1Y,KAAA,uBAAAlD,SAAA,oBAEAf,EAAA4c,OAAA5c,EAAAmD,MAAAyE,OAAA,4BAAAzF,QACAnC,EAAA6c,MAAA7c,EAAAmD,MAAAlC,OAAA,EAEAjB,EAAA8c,aAEAH,EAAA1Y,KAAA,oBAAAM,GAAA,YAAA,SAAAkS,GACAA,EAAAG,iBAEA5W,EAAA4c,OAAA5c,EAAA6c,OACA7c,EAAA4c,SACA5c,EAAA8c,cACA9c,EAAA4c,SAAA5c,EAAA6c,QACA7c,EAAA4c,OAAA,EACA5c,EAAA8c,gBAIAH,EAAA1Y,KAAA,oBAAAM,GAAA,YAAA,SAAAkS,GACAA,EAAAG,iBAEA5W,EAAA4c,OAAA,GACA5c,EAAA4c,SACA5c,EAAA8c,cACA,IAAA9c,EAAA4c,SACA5c,EAAA4c,OAAA5c,EAAA6c,MACA7c,EAAA8c,iBAvDA,GAAAhd,MAEAF,EAAAJ,EAAAc,GAAAC,cAAA0L,WA0DAyQ,GAAA1a,UAAA8a,WAAA,WACA,GAAA9c,GAAAC,IAEAD,GAAAmD,MAAAoE,YAAA,2BACAvH,EAAAmD,MAAA6S,GAAAhW,EAAA4c,QAAA5b,SAAA,2BAEAhB,EAAAmD,MAAAzB,KAAA,SAAAS,EAAAC,GACAA,EAAAgC,MAAAtB,KAAAX,EAAAnC,EAAA4c,OAAA,SAIA9D,EAAA9W,UAAAya,QAAA,WACA,GAAAzc,GAAAC,IAEAD,GAAAoI,OAAAhI,KAAA6D,KAAA,sBAAA4D,IAAA,4BAAAnG,KAAA,SAAAS,EAAAC,GACA,GAAAua,GAAAnd,EAAA4C,GACA2a,EAAAJ,EAAA1Y,KAAA,4BAAAA,KAAA,OAAA,EAEA8Y,GAAA5Y,aAAA,gBACAnE,EAAAoI,OAAAhI,KAAAmE,GAAA,eAAA,SAAAkS,EAAAuG,GACAA,EAAApY,MAAAmY,EAAAnY,KACA,GAAA8X,GAAAC,KAIA,GAAAD,GAAAC,MAKA7D,EAAA9W,UAAA+Q,QAAA,WACA,GAAA/S,GAAAC,IAEAD,GAAAoI,OAAAhI,KAAA6D,KAAA,oBAAAO,IAAA,aACAxE,EAAAoI,OAAAhI,KAAA6D,KAAA,oBAAAO,IAAA,aAEAxE,EAAAoI,OAAAhI,KAAAoE,IAAA,gBAEAxE,EAAAoI,OAAAhI,KAAA6D,KAAA,sBAAAvC,KAAA,SAAAS,EAAAC,GACA,GAAAua,GAAAnd,EAAA4C,EAEAua,GAAApV,YAAA,0BAEA,IAAApE,GAAAwZ,EAAA1Y,KAAA,mBACAd,GAAAoE,YAAA,2BAEApE,EAAA6C,WAAA,SAEA7C,EAAA6S,GAAA,GAAAhV,SAAA,8BAIApB,EAAA6B,QAAA+a,aAAA,SAAApU,GACA,MAAA,IAAA0Q,GAAA1Q,KAEA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAaA,SAAAmZ,GAAA1Q,GACA,GAAApI,GAAAC,IAEAD,GAAAoI,OAAAA,EAEApI,EAAAF,QAAAN,EAAAa,UAAAP,EAAAE,EAAAoI,OAAAtI,QAAA2B,QAAAwb,UAEA7U,EAAAtH,cAAA,aAAA,WACAd,EAAA8B,aAEAsG,EAAAtH,cAAA,sBAAA,WACAd,EAAA8B,eAGAsG,EAAAtH,cAAA,eAAA,WACAd,EAAA8B,eAGAlC,EAAA2F,QAAA2X,eAAAzX,WACAC,SAAA1F,EACAM,GAAAN,EAAA8B,eAEA,GAjCA,GAAAhC,IACAqd,aAAA,eACAC,UAAA,KAGAxd,EAAAJ,EAAAc,GAAAC,cAAA0L,YACA0E,EAAAnR,EAAAC,EAGAG,GAAA2F,QAAA2X,eAAA,GAAAtd,GAAA2F,QAAAqL,aAAA,qBAAA,IA4BAkI,EAAA9W,UAAAF,WAAA,WACA,GAAA9B,GAAAC,KAEA+D,EAAAhE,EAAAoI,OAAAhI,KAAA6D,KAAA,OAAA2D,OAAA,iBAEA,KAAA5D,EAAA/C,SAIAjB,EAAAqd,aAAA1M,EAAApO,SAEAyB,EAAAtC,KAAA,SAAAS,EAAAC,GACA,GAAAkb,GAAA9d,EAAA4C,EAAAkb,WAEA,KAAAtd,EAAAud,kBAAAnb,GAEA,WADAkb,GAAAtc,SAAAhB,EAAAF,QAAAqd,aAIA,IAAAK,GAAApb,EAAAiC,aAAA,eAEA,QAAArE,EAAAoI,OAAA9D,SAAA9E,EAAA,SAAAkF,KAAA,MAAA8Y,KACAxd,EAAAyd,eAAArb,EAAAob,GACAF,EAAA/V,YAAAvH,EAAAF,QAAAqd,gBAEAG,EAAAtc,SAAAhB,EAAAF,QAAAqd,cACA3d,EAAA,SAAA+E,GAAA,qBAAA,WACAvE,EAAAyd,eAAArb,EAAAob,EAAAF,KACA5Y,KAAA,MAAA8Y,QAKA1E,EAAA9W,UAAAyb,eAAA,SAAArb,EAAAob,EAAAF,GACA,GAAAtd,GAAAC,IAEAmC,GAAAwC,IAAA4Y,EACApb,EAAAyB,gBAAA,gBACA7D,EAAAoI,OAAAzE,gBAAAvB,GAGApC,EAAAoI,OAAAhI,KAAAkF,QAAA,eAAAlD,GAEAkb,IACA1d,EAAA2F,QAAAsE,cACArK,EAAA4C,GAAA0H,IAAAlK,EAAA2F,QAAAwE,cAAA,WACAuT,EAAA/V,YAAAvH,EAAAF,QAAAqd,gBAGAG,EAAA/V,YAAAvH,EAAAF,QAAAqd,gBAKArE,EAAA9W,UAAAub,kBAAA,SAAAnb,GACA,GAAApC,GAAAC,KAEAgG,EAAA7D,EAAA8D,wBACAK,EAAAN,EAAAM,OAAAvG,EAAAF,QAAAsd,UACAC,EAAArd,EAAAqd,aAAA9W,GAAAN,EAAAjD,IAAAhD,EAAAF,QAAAsd,UAEA,OAAA7W,IAAA,GAAAA,GAAA8W,GAGAvE,EAAA9W,UAAA+Q,QAAA,WACAnT,EAAA2F,QAAA2X,eAAAhM,aAAAjR,OAGAL,EAAA6B,QAAAwb,SAAA,SAAA7U,GACA,MAAA,IAAA0Q,GAAA1Q,KAEA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAyBA,SAAAmZ,GAAA1Q,GACA,GAAApI,GAAAC,IAEAD,GAAAoI,OAAAA,EAEApI,EAAAF,QAAAN,EAAAa,UAAAP,EAAAE,EAAAoI,OAAAtI,QAAA2B,QAAAic,UAEA1d,EAAA0d,SAAAle,EAAAQ,EAAAF,QAAA6d,UAAA1Z,KAAA,wBAGA,IAAAjE,EAAA0d,SAAAzc,SAIAjB,EAAA4d,UAAA5d,EAAA0d,SAAAzZ,KAAA,6BAEA,MAAAjE,EAAA4d,UAAA/J,QACA7T,EAAA0d,SAAA1c,SAAA,uBAGAoH,EAAAtH,cAAA,cAAA,SAAA8G,GACA5H,EAAA6d,gBAAAvT,KAAA,WACA,GAAAgB,GAAAtL,EAAAmD,MAAAyE,OAAAA,GAAA3G,MAEAqK,GAAA,GACAtL,EAAA0d,SAAAnW,YAAA,uBACAvH,EAAA4d,UAAA3B,KAAA3Q,IAEAtL,EAAA0d,SAAA1c,SAAA,2BAKAhB,EAAAA,EAAAF,QAAAge,WAxDA,GAAAhe,IAKA6d,SAAA,GAQAG,OAAA,QAKAF,UAAA,GAGAhe,EAAAJ,EAAAc,GAAAC,cAAA0L,WAsCA6M,GAAA9W,UAAA6b,cAAA,WACA,GAAA7d,GAAAC,IAEA,OAAAD,GAAAmD,MACA3D,EAAAib,WAAAC,WAGA1a,EAAAmD,MAAA3D,IAGAA,EAAAue,MACA3K,IAAApT,EAAA0d,SAAAhZ,KAAA,QACAsZ,KAAA,MACAC,SAAA,SACAC,KAAA,SAAA7P,GACA,GAAA8P,GAAA3e,EAAA0E,IAAAmK,EAAA8M,MAAA,SAAA,SAAA9Y,EAAAF,GACA,MAAA3C,GAAA4e,KAAA/b,KACA0Z,KAAA,GAEA,KAAAoC,EAAAld,QAIAzB,EAAAkC,KAAAlC,EAAA6e,UAAAF,GAAA,SAAAhc,EAAAC,GACA5C,EAAA4C,GAAAjB,SAAA,YACAnB,EAAAmD,MAAAnD,EAAAmD,MAAAmb,IAAAlc,GAEA5C,EAAAkC,KAAAU,EAAArB,SAAA,SAAAoB,EAAAyJ,GACApM,EAAAoM,GAAAzK,SAAA,cACAnB,EAAAmD,MAAAnD,EAAAmD,MAAAmb,IAAA1S,UAKA2S,KAAA,WACAve,EAAAmD,MAAA,KACAnD,EAAA0d,SAAAnW,YAAA,8BAIAuR,EAAA9W,UAAAwc,oBAAA,SAAAze,GACA,GAAAC,GAAAC,KACAwe,KACA7W,EAAA5H,EAAAoI,OAAA3H,cAEAie,EAAA,CA0BA,IAzBA1e,EAAAmD,MAAAzB,KAAA,SAAAS,EAAAC,GACA,GAAAsc,IAAA1e,EAAAF,QAAA8d,UACA,OAAA,CAGAhW,IAAA,MAAAA,EAMApI,EAAA4C,GAAAwF,OAAAA,GAAA3G,SACAwd,EAAA9V,KAAAvG,GACApC,EAAAmD,MAAAhB,GAAA,KAEAuc,MATAD,EAAA9V,KAAAvG,GACApC,EAAAmD,MAAAhB,GAAA,KAEAuc,OAWA1e,EAAAmD,MAAAnD,EAAAmD,MAAAe,IAAA,SAAA/B,EAAAC,GACA,MAAAA,KAIA,IAAAqc,EAAAxd,OAEA,WADAjB,GAAA0d,SAAAnW,YAAA,0BAAAvG,SAAA,sBAIAhB,GAAAoI,OAAAhI,KAAAG,cAAA,SAAAke,EAAA1e,IAGA+Y,EAAA9W,UAAA2c,MAAA,WAkBA,QAAAC,KAEA5e,EAAA0d,SAAAnW,YAAA,yBAEA,IACAsX,GADAjX,EAAA5H,EAAAoI,OAAA3H,aAMAoe,GAHAjX,GAAA,MAAAA,EAGA5H,EAAAmD,MAAAyE,OAAAA,GAAA3G,OAFAjB,EAAAmD,MAAAlC,OAMA,IAAA4d,EACA7e,EAAA0d,SAAA1c,SAAA,uBAEAhB,EAAA4d,UAAA3B,KAAA4C,GAlCA,GAAA7e,GAAAC,IAEAD,GAAA0d,SAAAnZ,GAAA,YAAA,SAAAkS,GACAA,EAAAG,iBAEA5W,EAAAoI,OAAA5H,aAAAR,EAAA0d,SAAAvc,SAAA,yBAKAnB,EAAA0d,SAAA1c,SAAA,0BAEAhB,EAAA6d,gBAAAvT,KAAA,WACAtK,EAAAwe,oBAAAI,SA0BA9F,EAAA9W,UAAAgN,KAAA,WAmCA,QAAA8P,KACA,IAAAC,IAAA/e,EAAA0d,SAAAvc,SAAA,uBAAA,CAKAnB,EAAA0d,SAAAnI,SAAAvS,IAAA,IACA2N,EAAAqO,YAAArO,EAAApO,WAOAwc,GAAA,EAEA/e,EAAA6d,gBAAAvT,KAAA,WACAtK,EAAAwe,oBAAAI,KACAL,KAAA,WAEAQ,GAAA,MAIA,QAAAH,KACA,GAAAC,GACAjX,EAAA5H,EAAAoI,OAAA3H,aAKAoe,GAHAjX,GAAA,MAAAA,EAGA5H,EAAAmD,MAAAyE,OAAAA,GAAA3G,OAFAjB,EAAAmD,MAAAlC,OAMA,IAAA4d,EACA7e,EAAA0d,SAAAnW,YAAA,0BAAAvG,SAAA,wBAEAhB,EAAA4d,UAAA3B,KAAA4C,GAEAlO,EAAArL,QAAA,oBAIAyZ,GAAA,EAGA,IAAA/e,EAAAmD,MAAAlC,SACArB,EAAA2F,QAAA0Z,eAAA/N,aAAAlR,GACAA,EAAAoI,OAAAhI,KAAAoE,IAAA,uBAnFA,GAAAxE,GAAAC,KACA0Q,EAAAnR,EAAAC,GACAsf,GAAA,CAGAnf,GAAA2F,QAAA0Z,eAAA,GAAArf,GAAA2F,QAAAqL,aAAA,kBAAA,KAEA5Q,EAAAoI,OAAAhI,KAAA0J,IAAA,mBAAA,WAEA9J,EAAA0d,SACA1c,SAAA,0BACAuD,GAAA,YAAA,SAAAkS,GACAA,EAAAG,mBAGAhX,EAAA2F,QAAA0Z,eAAAxZ,WACAC,SAAA1F,EACAM,GAAA,WACAN,EAAAoI,OAAA5H,aAEAse,OAMA9e,EAAAoI,OAAAhI,KAAAmE,GAAA,qBAAA,WACAua,MAIAA,OAyDAhG,EAAA9W,UAAA+Q,QAAA,WACA9S,KAAAyd,SAAAlZ,IAAA,QAEA5E,EAAA2F,QAAA0Z,gBACArf,EAAA2F,QAAA0Z,eAAA/N,aAAAjR,OAIAL,EAAA6B,QAAAic,SAAA,SAAAtV,GACA,GAAA3G,GAAA2G,EAAAtI,QAAA2B,OAoBA,OAjBA2G,GAAAtI,QAAA4d,WACAjc,EAAAic,WACAjc,EAAAic,aAGAjc,EAAAic,SAAAC,SAAAvV,EAAAtI,QAAA4d,UAIAtV,EAAAtI,QAAAof,iBACAzd,EAAAic,WACAjc,EAAAic,aAGAjc,EAAAic,SAAAI,OAAA1V,EAAAtI,QAAAof,gBAGAzd,EAAAic,UAAAjc,EAAAic,SAAAC,SAIA,GAAA7E,GAAA1Q,GAHA,OAKA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YA8iDA,SAAAmZ,GAAA1Q,GACA,GAAApI,GAAAC,IAEAD,GAAAoI,OAAAA,GAGA,IAAAA,EAAAtI,QAAAqf,sBACA/W,EAAAtI,QAAAiQ,gBAAA,KAIA,IAAA3H,EAAAtI,QAAAsf,wBACAhX,EAAAtI,QAAAqQ,kBAAA,IAIA/H,EAAAtH,cAAA,gBAAA,WACAd,EAAAqf,QACA,GA9jDA,GAAAzf,GAAAJ,EAAAc,GAAAC,cAAA0L,YAEAnM,GACAwf,MAAA,GAGAC,GAMAvT,KAAA,SAAAzL,EAAAyd,GACA,GACAwB,GADAxf,EAAAC,IAsBA,IAlBAD,EAAAO,cAAAA,EAGAP,EAAAge,KAAAA,EAGAhe,EAAA0T,QAAA,EAEA1T,EAAAF,QAAAE,EAAAO,cAAAT,QAEA,aAAAke,IACAhe,EAAAO,cAAAO,cAAA,eAAA,WACAd,EAAAyf,gBAGAzf,EAAA0f,aAAAlgB,EAAAa,UAAAP,EAAAE,EAAAO,cAAAT,QAAA2B,QAAAke,WAGA,qBAAA3B,EAAA,CAaA,GAZAhe,EAAAuC,OAAA,EAGAvC,EAAA4f,+BAEA5f,EAAAO,cAAAO,cAAA,aAAA,WACAd,EAAA0T,QAEA1T,EAAA2T,UAIA3T,EAAAF,QAAAyQ,4BAAA,CACAvQ,EAAAoT,IAAAC,SAAAC,KAEA,MAAAtT,EAAAoT,IAAA1J,OAAA,KACA1J,EAAAoT,IAAApT,EAAAoT,IAAA1J,MAAA,GAAA,GAGA,IAAAmW,GAAA7f,EAAAoT,IAAA+H,MAAA,UACA/H,EAAAyM,EAAAC,OAEAtgB,GAAAkC,KAAAme,EAAA,SAAA1d,EAAA4d,GAUA,GATA/f,EAAAO,cAAAiB,SAAAE,KAAA,SAAAwL,EAAA9K,GACA,GAAAqR,GAAAjU,EAAA4C,GAAA6B,KAAAjE,EAAAF,QAAAwQ,yBAAA,UAAAyP,EAAA,KAEA,IAAAtM,EAAAxS,OAEA,MADAue,GAAA/L,GACA,IAIA+L,EACA,OAAA,IAIAA,GACAxf,EAAAO,cAAAO,cAAA,aAAA,WACAd,EAAAggB,qBAAAhgB,EAAAO,cAAAiB,SAAAge,EAAA,MACA,GAMA,YAFAxf,EAAA0f,aAAAlgB,EAAAa,UAAAP,EAAAE,EAAAO,cAAAT,QAAA2B,QAAAgS,mBAQA,GAFAzT,EAAAigB,eAEA,eAAAjC,EAAA,CAgBA,GAfAhe,EAAAO,cAAAO,cAAA,eAAA,WACA,GAAAd,EAAAF,QAAAoQ,2BAAA,CAEA,GAAA5N,GAAAtC,EAAAkgB,YAAA,GAAAC,WAEA7d,GAAA,IACAtC,EAAAogB,eAAA9d,MAAAA,GAGAtC,EAAAqgB,WAAA/d,MAAAA,OAMAtC,EAAAF,QAAAmQ,sBAAA,CACAjQ,EAAAoT,IAAAC,SAAAC,KAEA,MAAAtT,EAAAoT,IAAA1J,OAAA,KACA1J,EAAAoT,IAAApT,EAAAoT,IAAA1J,MAAA,GAAA,GAGA,IAAAmW,GAAA7f,EAAAoT,IAAA+H,MAAA,SACA/H,EAAAyM,EAAAC,OAiBA,IAfAtgB,EAAAkC,KAAAme,EAAA,SAAA1d,EAAA4d,GAUA,GATA/f,EAAAO,cAAAiB,SAAAE,KAAA,SAAAwL,EAAA9K,GACA,GAAAoR,GAAAhU,EAAA4C,GAAA6B,KAAAjE,EAAAF,QAAAkQ,mBAAA,UAAA+P,EAAA,KAEA,IAAAvM,EAAAvS,OAEA,MADAue,GAAAhM,GACA,IAIAgM,EACA,OAAA,IAIAA,EAAA,CACAxf,EAAAoT,IAAAA,CAEA,IAAAkN,GAAAd,EACAe,EAAAD,EAAA5b,KAAA,uBACAnD,IAEAgf,GACAhf,EAAA+e,EAAAE,QAAAhhB,EAAA,cAAAyE,KAAA,yBAAAsc,EAAA,MAEAvgB,EAAAO,cAAAiB,SAAAE,KAAA,SAAAS,EAAAC,GACA,GAAAC,GAAA7C,EAAA4C,EAEAC,GAAAwF,IAAA,kBACAxF,EAAA4B,KAAAjE,EAAAF,QAAAkQ,oBAAAtO,KAAA,SAAAiK,EAAAC,GACApM,EAAAoM,GAAAlH,KAAA,wBACAnD,EAAAoH,KAAAiD,OAOA5L,EAAAygB,eAAAlf,EAAAie,EAAA,QACA,IAAAK,EAAA5e,OAAA,CACA,GAAAyf,GAAAhhB,EAAA6D,cAAA,IACAmd,GAAAld,aAAA,OAAAqc,EAAA,IACA7f,EAAAygB,gBAAAC,GAAAA,IAIA1gB,EAAA0f,aAAAlgB,EAAAa,UAAAP,EAAAE,EAAAO,cAAAT,QAAA2B,QAAA+R,cAOAyM,aAAA,WACA,GAAAjgB,GAAAC,KACA0gB,EAAA,EAEA,gBAAA3gB,EAAAge,MACA,SAAAhe,EAAAF,QAAAsQ,sBACAuQ,EAAA,yBAAA3gB,EAAAF,QAAAsQ,qBAKApQ,EAAAqb,KAAA7b,EAAA,UACA8U,MAAA,4BAAAtU,EAAAge,KAAA2C,EACAC,cAAA,aAAA5gB,EAAAge,KAAA,QAAA,KACAzZ,GAAA,YAAA,SAAAkS,GACA,IAAAzW,EAAA6gB,WAAA,CAIA,GAAA/C,GAAAte,EAAAiX,EAAAI,QAAAnS,KAAA,cAEA1E,GAAA8d,KACA9d,EAAA8d,KACArH,EAAAG,qBAIA,eAAA5W,EAAAge,MACAhe,EAAAkgB,YAAA1gB,EAAA,UACA8U,MAAA,2BACAE,SAAAxU,EAAAqb,MAEA,QAAAzb,EAAA2F,QAAAwM,SACA/R,EAAAkgB,YAAAjV,IAAA,WAAA,QAIAjL,EAAA8gB,QAAAthB,EAAA,UACA8U,MAAA,sBACAE,SAAAxU,EAAAkgB,cAGAlgB,EAAA8gB,QAAAthB,EAAA,UACA8U,MAAA,sBACAE,SAAAxU,EAAAqb,MAIA7b,EAAA,UACA8U,MAAA,yBACAE,SAAAxU,EAAAqb,MAGA,QAAAzb,EAAA2F,QAAAwM,UACA/R,EAAA+gB,GAAAvhB,EAAA,UACA8U,MAAA,kBACAsM,cAAA,aAAA5gB,EAAAge,KAAA,QAAA,KACAxJ,SAAAxU,EAAAqb,OAGA,eAAArb,EAAAge,OACA,IAAAhe,EAAAF,QAAAoQ,2BAEAlQ,EAAAogB,eAAA5gB,EAAA,UACA8U,MAAA,8BACAE,SAAAxU,EAAAkgB,aASAlgB,EAAAogB,eAAA5gB,EAAA,UACA8U,MAAA,8BACAE,SAAAxU,EAAAqb,MAIArb,EAAAqgB,WAAA7gB,EAAA,UACA8U,MAAA,yBACAE,SAAAxU,EAAAogB,gBAGApgB,EAAAghB,YAAAxhB,EAAA,UACA8U,MAAA,kBACA2M,MAAA,wBACAL,cAAA,UACApM,SAAAxU,EAAAqgB,YAGArgB,EAAAkhB,WAAA1hB,EAAA,UACA8U,MAAA,iBACA2M,MAAA,yBACAL,cAAA,SACApM,SAAAxU,EAAAqgB,YAIArgB,EAAAmhB,WAAA3hB,EAAA,UACA8U,MAAA,iBACA2M,MAAA,4BACAL,cAAA,SACApM,SAAAxU,EAAAqgB,YAGA,eAAArgB,EAAAge,OACAhe,EAAAF,QAAAqQ,oBAEAnQ,EAAAohB,QAAA5hB,EAAAQ,EAAAF,QAAAqQ,mBAAAqE,SAAAxU,EAAAqgB,YACArgB,EAAAohB,QAAAvN,KAAA,KAGA7T,EAAA8gB,QAAAvc,GAAA,YAAAvE,EAAAF,QAAAkQ,mBAAA,SAAAyG,GACAA,EAAAG,gBAEA,IAAAvT,GAGAge,EAFAxW,EAAA7K,EAAAshB,UAAArgB,OACAqS,EAAArT,KAAAoE,aAAA,OAGA,KAAAhB,EAAA,EAAAA,EAAAwH,EAAAxH,IACA,GAAArD,EAAAshB,UAAAje,GAAA+P,MAAAE,EAAA,CACA+N,EAAAhe,CACA,OAIA,OA3SA,KA2SAge,EAAA,CACA,GAAAX,GAAAhhB,EAAA6D,cAAA,IACAmd,GAAAld,aAAA,OAAA8P,GAEAtT,EAAAshB,YACAlO,IAAAE,EACAkF,QAAAkI,IAIA1gB,EAAAuhB,aAAA,EAEAvhB,EAAAkhB,WAAAM,OACAxhB,EAAAmhB,WAAAK,OAEAxhB,EAAAyhB,iBAAA,OAEAzhB,GAAAyhB,iBAAAJ,EAAArhB,EAAA0hB,WAMA1hB,EAAAkgB,YAAA3b,GAAA,oCAAA,SAAAkS,GACAA,EAAAkL,8BAIAniB,EAAAE,GAAA6E,GAAA,cAAA,SAAAkS,GAEAzW,EAAA0T,SAKA1T,EAAA6gB,aAIAe,GACAnL,EAAAkL,2BAGA,KAAAlL,EAAAoL,QACA7hB,EAAA8hB,OACA,KAAArL,EAAAoL,QACA7hB,EAAAma,OACA,KAAA1D,EAAAoL,SACA7hB,EAAA2T,aAKAiM,6BAAA,WACA,GAAA5f,GAAAC,IAGAD,GAAAqb,KAAA7b,EAAA,UACA8U,MAAA,+BACA/P,GAAA,YAAA,SAAAkS,GACA,IAAAzW,EAAA6gB,WAAA,CAIA,GAAA/C,GAAAte,EAAAiX,EAAAI,QAAAnS,KAAA,cAEAoZ,IAAA9d,EAAA8d,KACA9d,EAAA8d,KACArH,EAAAG,qBAKA5W,EAAA8gB,QAAAthB,EAAA,UACA8U,MAAA,sBACAE,SAAAxU,EAAAqb,MAQArb,EAAAqgB,WAAA7gB,EAAA,UACA8U,MAAA,yBACAE,SAAAxU,EAAAqb,MAGArb,EAAAghB,YAAAxhB,EAAA,UACA8U,MAAA,kBACA2M,MAAA,wBACAL,cAAA,UACApM,SAAAxU,EAAAqgB,aAGAtN,QAAA,WACA,GAAA/S,GAAAC,KACA8hB,EAAAviB,EAAA,OAGAA,GAAAE,GAAA8E,IAAA,eAGAud,EAAAvd,IAAA,YAAAxE,EAAAF,QAAA8P,kBACAmS,EAAAvd,IAAA,YAAAxE,EAAAF,QAAAkQ,oBAEAhQ,EAAA8gB,QAAAtc,IAAA,YAAAxE,EAAAF,QAAAkQ,oBAEAhQ,EAAAO,cAAAH,KAAAoE,IAAA,YAAAxE,EAAAF,QAAAwQ,0BACAtQ,EAAAO,cAAAH,KAAAoE,IAAA,YAAAxE,EAAAF,QAAA8P,kBACA5P,EAAAO,cAAAH,KAAAoE,IAAA,YAAAxE,EAAAF,QAAAkQ,oBAEAhQ,EAAAO,cAAAH,KAAAmH,YAAA,uBAEAvH,EAAAO,cAAAH,KAAA6D,KAAA,aAAAsD,YAAA,+BAEAvH,EAAAqb,KAAAvP,UAGAkW,aAAA,SAAAzgB,EAAAie,GACA,GAEAyC,GACAzJ,EAHAxY,EAAAC,KACAoD,EAAA,EACA6e,IAGA,KAAAliB,EAAA0T,OAAA,CAmBA,GAfAkO,GAAA,EAGA5hB,EAAA0T,QAAA,EAGA1T,EAAA6gB,YAAA,EAGA7gB,EAAAshB,aAGAthB,EAAA0hB,QAAA,KAGA,QADAO,EAAAzC,EAAAnb,aAAA,SAEA,KAAA,IAAAlE,OAAA,2DAGAX,GAAAkC,KAAAH,EAAA,SAAAY,EAAAE,GACA,GAGA8f,GAHA7O,EAAAjR,EAAAgC,aAAA,QACAO,EAAA0O,EACA0K,EAAA,SAGA,KAAA,IAAAxe,EAAA2Z,QAAA7F,EAAA4O,GAAA,CACA,GAAAD,IAAA3O,EACAtT,EAAA0hB,QAAAre,MACA,KAAArD,EAAAF,QAAA+P,gBACA,MAGA,IAAA,cAAAoC,KAAAqB,GAAA,CACA,GAAA8O,GAAA9O,EAAA+O,YAAA,MAAA,CAEA,KAAAD,IACAA,EAAA9O,EAAA+O,YAAA,KAAA,GAGAF,EAAA7O,EAAAgP,UAAAF,GAEA,aAAAnQ,KAAAkQ,KACAA,GAAA,eAGAA,EAAAA,EAAAnY,QAAA,OAAA,KAGApF,EAAA,2BAAAud,EAEAnE,EAAA,gBACA,cAAA/L,KAAAqB,IACA6O,EAAA7O,EAAAgP,UAAAhP,EAAA+O,YAAA,KAAA,GAEA,aAAApQ,KAAAkQ,KACAA,GAAA,eAGAA,EAAAA,EAAAnY,QAAA,OAAA,KAGApF,EAAA,4BAAAud,EAEAnE,EAAA,WACA,iBAAA/L,KAAAqB,IAEA1O,EAAA,8BAAA0O,EAAAgP,UAAAhP,EAAA+O,YAAA,KAAA,GAAA,QAEArE,EAAA,SACA,mBAAA/L,KAAAqB,IAEA1O,EAAA0O,EAEA0K,EAAA,gBACA,oCAAA/L,KAAAqB,IAGA1O,GAFA,IAAA0O,EAAAxB,QAAA,KAEAwB,EAAA6H,MAAA,KAGA7H,EAAA6H,MAAA,OAGA6C,EAAA,qBACA,UAAA/L,KAAAqB,KACA1O,EAAA0O,EACA0K,EAAA,oBAGAhe,GAAAshB,UAAA3Y,MACA/D,IAAAA,EACAqc,MAAA5e,EAAAgC,aAAArE,EAAAF,QAAAgQ,kBACAkO,KAAAA,IAGA3a,IAGA6e,EAAAvZ,KAAA2K,KAIAtT,EAAAuhB,aAAAvhB,EAAAshB,UAAArgB,OAEA,IAAAjB,EAAAuhB,cACAvhB,EAAAkhB,WAAAM,OACAxhB,EAAAmhB,WAAAK,OACAxhB,EAAAuiB,cAAA,KAEAviB,EAAAkhB,WAAAsB,OACAxiB,EAAAmhB,WAAAqB,OACAxiB,EAAAuiB,cAAA,sBAIAviB,EAAAqb,KAAA7G,SAAA9U,EAAAqiB,MAEA/hB,EAAAgf,UAAAxf,EAAAC,GAAAuf,YAEAhf,EAAAyiB,cAAAjjB,EAAA,QAAAkF,KAAA,SAEAlF,EAAA,QAAAyL,KACAyX,SAAA,SACAC,YAAAljB,EAAAmjB,WAAApjB,EAAAE,GAAA4C,UAGAtC,EAAAqb,KAAAra,SAAA,2BAGAhB,EAAAqb,KAAAmH,OAGAhK,EAAAxY,EAAAshB,UAAAthB,EAAA0hB,SAGA1hB,EAAAwY,EAAAwF,MAAAxF,KAGAiI,eAAA,SAAAlf,EAAAie,GACA,GAEAyC,GAFAjiB,EAAAC,KACAoD,EAAA,EACA6e,IAEA,KAAAliB,EAAA0T,OAAA,CAsBA,GAjBA1T,EAAAO,cAAAkT,kBAAAzT,EAAAO,cAAAkT,iBAAAC,QACA1T,EAAAO,cAAAkT,iBAAAE,QAIA3T,EAAA0T,QAAA,EAGA1T,EAAA6gB,YAAA,EAGA7gB,EAAAshB,aAGAthB,EAAA0hB,QAAA,KAGA,QADAO,EAAAzC,EAAAnb,aAAA,SAEA,KAAA,IAAAlE,OAAA,2DA+GA,IA5GAX,EAAAkC,KAAAH,EAAA,SAAAY,EAAAE,GACA,GAAAiR,GAAAjR,EAAAgC,aAAA,SAEA,IAAA7E,EAAA2Z,QAAA7F,EAAA4O,KACAD,IAAA3O,IACAtT,EAAA0hB,QAAAre,GAGArD,EAAAshB,UAAA3Y,MACAyK,IAAAE,EACAkF,QAAAnW,IAGAgB,KAGA6e,EAAAvZ,KAAA2K,KAIAtT,EAAAuhB,aAAAvhB,EAAAshB,UAAArgB,OAEA,IAAAjB,EAAAuhB,cACAvhB,EAAAkhB,WAAAM,OACAxhB,EAAAmhB,WAAAK,SAEAxhB,EAAAkhB,WAAAsB,OACAxiB,EAAAmhB,WAAAqB,QAIAxiB,EAAAqb,KAAA7G,SAAA9U,EAAAqiB,MAEA/hB,EAAAgf,UAAAxf,EAAAC,GAAAuf,YAGAhf,EAAAkgB,YAAAlB,UAAA,GAGAhf,EAAAqb,KAAAmH,OAGAxiB,EAAA6iB,WAAA,EAGA7iB,EAAA8iB,iBAAAtjB,IACAQ,EAAAqb,KAAAvR,IAAAlK,EAAA2F,QAAAwE,cAAA,WACAvK,EAAA,QAAAyL,KACAyX,SAAA,SACAC,YAAAljB,EAAAmjB,WAAApjB,EAAAE,GAAA4C,UAGAtC,EAAAqb,KAAAra,SAAA,2BAGAhB,EAAAF,QAAAoQ,6BAEAlQ,EAAAqb,KAAAra,SAAA,+BACAhB,EAAAogB,eAAA9d,MAAAtC,EAAAkgB,YAAA,GAAAC,gBAGAngB,EAAA6iB,YAEA,GACA7iB,EAAA+iB,uBAAAje,KAAA9E,KAIA,QAAAJ,EAAA2F,QAAAwM,SAAA,QAAAnS,EAAA2F,QAAAwM,UACAvS,EAAA,QAAAyL,KACAyX,SAAA,SACAC,YAAAljB,EAAAmjB,WAAApjB,EAAAE,GAAA4C,UAGAtC,EAAAqb,KAAAra,SAAA,2BAGAhB,EAAAF,QAAAoQ,6BACAlQ,EAAAogB,eAAA9d,MAAAtC,EAAAkgB,YAAA,GAAAC,aAEA7O,WAAA,WACAtR,EAAAqb,KAAAra,SAAA,gCACA,MAGAhB,EAAA6iB,cAGA7iB,EAAAqb,KAAAra,SAAA,qBAGAhB,EAAAqb,KAAA9F,SACAvV,EAAAqb,KAAAra,SAAA,6BAGAhB,EAAAF,QAAAmQ,wBAEAjQ,EAAAoT,IAAApT,EAAAoT,IAAA+H,MAAA,SAAA,GACA9H,SAAAC,KAAAtT,EAAAoT,IAAA,QAAApT,EAAAshB,UAAAthB,EAAA0hB,SAAAtO,KAIA5T,EAAAqB,WAAAb,EAAAF,QAAAuQ,qBACArQ,EAAAF,QAAAuQ,mBAAAvL,KAAA9E,EAAAA,EAAAshB,UAAAthB,EAAA0hB,SAAAtO,IAAApT,EAAAshB,UAAAthB,EAAA0hB,SAAAlJ,SAKA,QAAA5Y,EAAA2F,QAAAwM,QAAA,CACA,GAAAyG,GAAAxY,EAAAkgB,YAAA,EAEA1H,GAAAwK,iBAAA,aAAA,WACA,GAAAhgB,GAAAwV,EAAAwG,UACAiE,EAAAzK,EAAA0K,aACAC,EAAAngB,EAAAwV,EAAA4K,YAEA,KAAApgB,EACAwV,EAAAwG,UAAA,EACAmE,IAAAF,IACAzK,EAAAwG,UAAAhc,EAAA,QAMAgd,qBAAA,SAAAze,EAAAie,EAAA6D,GACA,GAEApB,GACAqB,EACAC,EAJAvjB,EAAAC,IAeA,IARAojB,EAAAA,IAAA,EAEArjB,EAAAqjB,SAAAA,EAEArjB,EAAAwjB,YAAAjiB,EACAvB,EAAAyjB,kBAAAjE,EAGAxf,EAAA0T,OAaA,MAZA4P,GAAAtjB,EAAAO,cAAAiB,SAAAW,MAAA3C,EAAAggB,GAAAgB,QAAA,mBAEAxgB,EAAAshB,UAAAthB,EAAA0hB,SAAAtO,MAAAoM,EAAAnb,aAAA,SAAArE,EAAA0hB,UAAA4B,EACAtjB,EAAAO,cAAAkT,iBAAAE,MAAA,QACApS,OAAAA,EACAie,aAAAA,EACA6D,UAAA,IAGArjB,EAAA2T,QAmBA,IAZA3T,EAAA0T,QAAA,EAGA1T,EAAA6gB,YAAA,EAGA7gB,EAAAshB,aAGAthB,EAAA0hB,QAAA,KAGA,QADAO,EAAAzC,EAAAnb,aAAA,SAEA,KAAA,IAAAlE,OAAA,2DAyBA,IAtBAojB,EAAA/jB,EAAAggB,GAAAgB,QAAA,aAAA,GAEAjf,EAAAG,KAAA,SAAAS,EAAAC,GACAmhB,IAAAnhB,IACApC,EAAA0hB,QAAAvf,KAIAnC,EAAAshB,UAAAthB,EAAA0hB,UACAtO,IAAA6O,EACAzJ,QAAAgH,GAGAhgB,EAAAQ,EAAAshB,UAAAthB,EAAA0hB,SAAAlJ,SAAAkL,QAAA,aAAA1iB,SAAA,+BAGAhB,EAAAuhB,aAAAhgB,EAAAN,OAEAjB,EAAAqb,KAAA9B,aAAAvZ,EAAAO,cAAAe,SAEAtB,EAAA2jB,cAAA,EAEA,QAAA3jB,EAAAF,QAAA0Q,yBACAxQ,EAAA4jB,aAAAriB,EACAvB,EAAAgD,IAAA,MACA,IAAA,WAAAhD,EAAAF,QAAA0Q,yBACAxQ,EAAA4jB,aAAApkB,IACAQ,EAAAgD,IAAAhD,EAAAO,cAAAgC,WACA,IAAA,UAAAvC,EAAAF,QAAA0Q,yBAAA,CACA,GAAAqT,GAAArkB,EAAA+B,EAAAvB,EAAA0hB,UACA1e,EAAA6gB,EAAA3jB,KAAA,OAAA8C,IACAsU,EAAAtU,EAAA6gB,EAAAthB,QAEAvC,GAAAgD,IAAAA,EAEAhD,EAAA4jB,aAAApkB,IAEA+B,EAAAG,KAAA,SAAAS,EAAAC,GACA,GAAAoW,GAAAhZ,EAAA4C,GAEA0hB,EAAAtL,EAAAtY,KAAA,OAAA8C,IACA+gB,EAAAD,EAAAtL,EAAAjW,QAEAwhB,IAAA/gB,IAIA8gB,GAAA9gB,IACAhD,EAAA4jB,aAAA5jB,EAAA4jB,aAAAtF,IAAAlc,IAGA0hB,EAAA9gB,GAAA+gB,EAAA/gB,IACAhD,EAAAgD,IAAA+gB,EAAA/jB,EAAAF,QAAA+C,cAEAkhB,EAAA/gB,EAAAhD,EAAA2jB,gBACA3jB,EAAA2jB,cAAAI,EAAA/gB,EAAAhD,EAAAF,QAAA+C,mBAKA7C,EAAAgD,IAAAqD,KAAA+C,IAAApJ,EAAAgD,IAAAhD,EAAAF,QAAA+C,cAAA,OACA,CACA,GAAAghB,GAAArkB,EAAA+B,EAAAvB,EAAA0hB,UACA1e,EAAA6gB,EAAA3jB,KAAA,OAAA8C,IACAsU,EAAAtU,EAAA6gB,EAAAthB,QAEAvC,GAAAgD,IAAAsU,EAEAtX,EAAA4jB,aAAApkB,IAEA+B,EAAAG,KAAA,SAAAS,EAAAC,GACA,GAAAoW,GAAAhZ,EAAA4C,GACAG,EAAAiW,EAAAjW,SAEAuhB,EAAAtL,EAAAtY,KAAA,OAAA8C,IACA+gB,EAAAD,EAAAvhB,CAEA,MAAAwhB,GAAAzM,GAIA,MAAAwM,IAAAxM,EAAA/U,EAAA,OACAvC,EAAA4jB,aAAA5jB,EAAA4jB,aAAAtF,IAAAlc,SAIA2hB,EAAAzM,GAAAwM,EAAAxM,IACAyM,EAAA/jB,EAAAgD,MACAhD,EAAAgD,IAAA+gB,GAGAA,EAAAzM,EAAAtX,EAAA2jB,gBACA3jB,EAAA2jB,cAAAI,EAAAzM,OAWA,GALAtX,EAAAqb,KAAA,GAAAjX,MAAA7B,OAAAvC,EAAAqb,KAAAhB,aAAA,GAAA,KAGAra,EAAAgkB,eAAAxkB,EAAAib,WAEAza,EAAAF,QAAA2Q,wBAAA,CACAzQ,EAAAgf,UAAAxf,EAAAC,GAAAuf,WAEA,IAAAiF,GAAAjkB,EAAAO,cAAAH,KAAAmV,SAAAvS,IAAAhD,EAAAgD,IAAA,GAEAhD,GAAAgf,YAAAiF,EACAzkB,EAAA,aAAA0kB,SACAlF,UAAAiF,GACA,KACAE,UACA7Z,KAAA,WACAtK,EAAAokB,yBACApkB,EAAAgkB,eAAAtJ,aAGA1a,EAAAokB,yBACApkB,EAAAgkB,eAAAtJ,eAGA1a,GAAAokB,yBACApkB,EAAAgkB,eAAAtJ,SAGA1a,GAAAO,cAAAH,KAAAY,SAAA,mCAEAhB,EAAAqb,KAAApQ,KACAjI,IAAAhD,EAAAgD,MAIAhD,EAAAF,QAAAyQ,8BAEAvQ,EAAAoT,IAAApT,EAAAoT,IAAA+H,MAAA,UAAA,GACA9H,SAAAC,KAAAtT,EAAAoT,IAAA,SAAApT,EAAAshB,UAAAthB,EAAA0hB,SAAAtO,KAIA5T,EAAAqB,WAAAb,EAAAF,QAAA4Q,2BACA1Q,EAAAF,QAAA4Q,yBAAA5L,KAAA9E,EAAAA,EAAAshB,UAAAthB,EAAA0hB,SAAAtO,IAAApT,EAAAshB,UAAAthB,EAAA0hB,SAAAlJ,UAIA4L,uBAAA,WACA,GAAApkB,GAAAC,IAEAD,GAAAuC,OAAA,IAAAvC,EAAAgD,KAAAhD,EAAAgD,MAAAhD,EAAAO,cAAAgC,OAAAvC,EAAAqb,KAAAhB,aAAA,GAAAra,EAAAqb,KAAAhB,aAAA,GAAAra,EAAAF,QAAA+C,cAEA7C,EAAAuC,QAAAvC,EAAA2jB,cAEA3jB,EAAAwjB,YAAA9hB,KAAA,SAAAS,EAAAC,GACAxC,EAAA2F,QAAAsE,cACAzH,EAAAgC,MAAAxE,EAAA2F,QAAAgN,WAAA,GAEAnQ,EAAAgC,MAAAigB,UAAA,KAIArkB,EAAA4jB,aAAAliB,KAAA,SAAAS,EAAAC,GACAxC,EAAA2F,QAAAsE,cACAzH,EAAAgC,MAAAxE,EAAA2F,QAAAgN,WAAA,oBAAAvS,EAAAuC,OAAA,SAEAH,EAAAgC,MAAAigB,UAAArkB,EAAAuC,OAAA,OAIAvC,EAAAO,cAAAV,IAAAuE,MAAA7B,OAAAvC,EAAAO,cAAAgC,OAAAvC,EAAAuC,OAAA,MAGA+hB,6BAAA,WACA,GAAAtkB,GAAAC,IAGAD,GAAAgkB,eAAAxkB,EAAAib,WAEAza,EAAAwjB,YAAA9hB,KAAA,SAAAS,EAAAC,GACAxC,EAAA2F,QAAAsE,cACAzH,EAAAgC,MAAAxE,EAAA2F,QAAAgN,WAAA,GAEAnQ,EAAAgC,MAAAigB,UAAA,KAIArkB,EAAAO,cAAAV,IAAAuE,MAAA7B,OAAAvC,EAAAO,cAAAgC,OAAA,MAGAgiB,oBAAA,SAAAC,GACA,GAAAxkB,GAAAC,KACAkC,EAAA,EACAsiB,EAAA,SAAApiB,GACA,GAAAqiB,GAAAhlB,EAAA6D,cAAA,UACAqB,EAAAvC,EAAAuC,GAEA8f,GAAA1G,KAAA,kBAEA0G,EAAAC,WACAD,EAAAE,mBAAA,WACA,UAAAF,EAAAC,YAAA,YAAAD,EAAAC,aACAD,EAAAE,mBAAA,KACAziB,IACAqiB,EAAAriB,IACAsiB,EAAAD,EAAAriB,MAKAuiB,EAAAG,OAAA,WACA1iB,IACAqiB,EAAAriB,IACAsiB,EAAAD,EAAAriB,KAKAyC,EACA8f,EAAA9f,IAAAA,EAEA8f,EAAA7Q,KAAAxR,EAAAwR,KAGA7T,EAAA8gB,QAAA,GAAApd,YAAAghB,GAIAD,GAAAD,EAAA,KAGAM,iBAAA,SAAA7I,EAAAuI,EAAAO,GACA,GACAC,GADAhlB,EAAAC,IAIAD,GAAA8gB,QAAA9f,SAAA,qBAAAuG,YAAA,4BAEA,IAAAwd,GACA/kB,EAAA8gB,QAAAvZ,YAAA,qBAAAvG,SAAA,2BAIAhB,EAAAohB,UACA4D,EAAAxlB,EAAAQ,EAAAilB,iBAAAjlB,EAAAF,QAAAqQ,kBAAAnQ,EAAA0hB,QAAA,EAAA1hB,EAAAuhB,eACAvhB,EAAAohB,QAAAvN,KAAAmR,EAAAnR,SAGA7T,EAAAklB,UACAjJ,KAAAA,EACAuI,QAAAA,KAGAxkB,EAAA6iB,YAEA,GACA7iB,EAAA+iB,uBAAAje,KAAA9E,IAIA+iB,uBAAA,WACA,GACAoC,GADAnlB,EAAAC,IAGAD,GAAAqb,KAAAra,SAAA,mBACAhB,EAAAqb,KAAA9T,YAAA,qBAEAvH,EAAA8gB,QAAA7E,KAAAjc,EAAAklB,SAAAjJ,MAEAjc,EAAAklB,SAAAV,SACAxkB,EAAAukB,oBAAAvkB,EAAAklB,SAAAV,SAGAxkB,EAAAklB,YAIAllB,EAAAO,cAAAH,KAAAkF,QAAA,6BAGA6f,EAAAnlB,EAAA8gB,QAAA7c,KAAA,eACAkhB,EAAAlkB,QACAkkB,EAAAlhB,KAAA,oBAAAjD,SAAA,YACAhB,EAAA2c,OAAAwI,EAAA5kB,eACAqG,WAAA,SACAoB,eACA1F,MAAA,EACAwF,KAAA,IAEAjF,cAAA,EACAF,YAAA,EACA8M,QAAA,GACA2V,WAAA,MAGAplB,EAAA2c,OAAA,KAIA3c,EAAAqlB,oBAAArlB,EAAA8gB,SAGA9gB,EAAAO,cAAAH,KAAAkF,QAAA,iCAGA+f,oBAAA,SAAAvE,GACA,GAAA9gB,GAAAC,IAEAD,GAAAslB,oBAAAxE,EAAA7c,KAAA,mBACAjE,EAAAulB,mBAAAzE,EAAA7c,KAAA,wBACAjE,EAAAwlB,sBAAA1E,EAAA7c,KAAA,2BACAjE,EAAAylB,qBAAA3E,EAAA7c,KAAA,2BAGAqhB,oBAAA,SAAAjjB,GACAA,EAAApB,SAAAoB,EAAAqC,KAAA,YACArC,EAAAqC,KAAA,UAAA,qDAAA6O,mBAAA9T,EAAA4T,SAAAC,MAAA,4FAIAiS,mBAAA,SAAAljB,GACAA,EAAApB,SAAAoB,EAAAqC,KAAA,YACArC,EAAAqC,KAAA,UAAA,wDAAA6O,mBAAA9T,EAAA4T,SAAAC,MAAA,SAAAC,mBAAA7T,EAAAuhB,OAAA,4FAIAuE,sBAAA,SAAAnjB,GACAA,EAAApB,SAAAoB,EAAAqC,KAAA,YACArC,EAAAqC,KAAA,UAAA,kDAAA6O,mBAAA9T,EAAA4T,SAAAC,MAAA,4FAIAmS,qBAAA,SAAApjB,GACA,GAAAA,EAAApB,SAAAoB,EAAAqC,KAAA,WAAA,CACA,GAAAghB,GAAA,GACAC,EAAA1lB,KAAA6gB,QAAA7c,KAAA,OAAA,EAEA0hB,KACAD,EAAAC,EAAA/gB,KAGAvC,EAAAqC,KAAA,UAAA,4DAAA6O,mBAAA9T,EAAA4T,SAAAC,MAAA,UAAAoS,EAAA,6FAIAE,uBAAA,SAAA3J,EAAAuI,GACA,GAAAxkB,GAAAC,IAEAD,GAAA8gB,QAAA7E,KAAAA,GAEAuI,GACAxkB,EAAAukB,oBAAAC,GAIAxkB,EAAAO,cAAAH,KAAAkF,QAAA,mCAEA,IAAAtF,EAAA0f,aAAAJ,MACAhO,WAAA,WACAtR,EAAA6lB,uBAAA/gB,KAAA9E,IACAA,EAAA0f,aAAAJ,OAEAtf,EAAA6lB,uBAAA/gB,KAAA9E,IAIA6lB,uBAAA,WAGA,QAAAC,KACA9lB,EAAAqb,KAAAra,SAAA,oCACAhB,EAAAqb,KAAA,GAAAjX,MAAA7B,OAAA,GAEAvC,EAAAokB,yBAGApkB,EAAAO,cAAAH,KAAAkF,QAAA,sCATA,GAAAtF,GAAAC,IAaAD,GAAAO,cAAAuB,WAAA9B,EAAAqb,KAAA,WAEA,GAAA8J,GAAAnlB,EAAA8gB,QAAA7c,KAAA,cAEAkhB,GAAAlkB,QACAkkB,EAAAlhB,KAAA,oBAAAjD,SAAA,YAEAmkB,EAAArb,IAAA,mBAAA,WACA9J,EAAAgkB,eAAA9F,KAAA4H,KAGAX,EAAA5gB,GAAA,mBAAA,WACAvE,EAAAgkB,eAAA9F,KAAA4H,KAGA9lB,EAAA2c,OAAAwI,EAAA5kB,eACAqG,WAAA,SACA8I,YAAA,UACA1H,eACA1F,MAAA,EACAwF,KAAA,IAEAjF,cAAA,EACAF,YAAA,EACA8M,QAAA,GACA2V,WAAA,OAGAplB,EAAA2c,OAAA,KACA3c,EAAAgkB,eAAA9F,KAAA4H;0BAIA9lB,EAAAqlB,oBAAArlB,EAAA8gB,YAIAiF,QAAA,SAAA3jB,GACA,GAAApC,GAAAC,IACA,IAAA+lB,MAEAhmB,GAAAimB,gBAAA,GAEAjmB,EAAAO,cAAAuB,WAAAtC,EAAA,kBAAA4C,EAAAwC,IAAA,YAAA,WACA5E,EAAAkmB,mBAAA9jB,EAAAwC,IAAAxC,EAAA6e,MAAAjhB,EAAAilB,iBAAAjlB,EAAAF,QAAAiQ,gBAAA/P,EAAA0hB,QAAA,EAAA1hB,EAAAuhB,eAEAvhB,EAAAimB,gBAAA,MAIAE,QAAA,SAAA/jB,GACA,GAAApC,GAAAC,IACAD,GAAAomB,kBAAAhkB,EAAAwC,IAAAxC,EAAA6e,MAAAjhB,EAAAilB,iBAAAjlB,EAAAF,QAAAiQ,gBAAA/P,EAAA0hB,QAAA,EAAA1hB,EAAAuhB,gBAGA8E,UAAA,SAAAjkB,GACA,GAAApC,GAAAC,IACAD,GAAAomB,kBAAAhkB,EAAAwC,IAAAxC,EAAA6e,MAAAjhB,EAAAilB,iBAAAjlB,EAAAF,QAAAiQ,gBAAA/P,EAAA0hB,QAAA,EAAA1hB,EAAAuhB,gBAGA+E,MAAA,SAAAlkB,GACA,GAAApC,GAAAC,IACAD,GAAAomB,kBAAAhkB,EAAAwC,IAAAxC,EAAA6e,MAAAjhB,EAAAilB,iBAAAjlB,EAAAF,QAAAiQ,gBAAA/P,EAAA0hB,QAAA,EAAA1hB,EAAAuhB,gBAGAgF,aAAA,SAAAnkB,GACA,GAAApC,GAAAC,IACAD,GAAAomB,kBAAAhkB,EAAAwC,IAAAxC,EAAA6e,MAAAjhB,EAAAilB,iBAAAjlB,EAAAF,QAAAiQ,gBAAA/P,EAAA0hB,QAAA,EAAA1hB,EAAAuhB,gBAGAiF,kBAAA,SAAApkB,GACA,GAAApC,GAAAC,IACAD,GAAAymB,sBAAArkB,EAAAwC,IAAAxC,EAAA6e,MAAAjhB,EAAAilB,iBAAAjlB,EAAAF,QAAAiQ,gBAAA/P,EAAA0hB,QAAA,EAAA1hB,EAAAuhB,gBAGAmF,kBAAA,SAAAtkB,GACA,GAAApC,GAAAC,IACAD,GAAA2mB,sBAAAvkB,EAAAwC,IAAAxC,EAAA6e,MAAAjhB,EAAAilB,iBAAAjlB,EAAAF,QAAAiQ,gBAAA/P,EAAA0hB,QAAA,EAAA1hB,EAAAuhB,gBAGA0D,iBAAA,SAAA2B,EAAAlF,EAAA7E,GACA,IAAA+J,EAAA3lB,OACA,MAAA,EAGA,IAAA4lB,IACAnF,QAAAA,EACA7E,MAAAA,EAGA,OAAA+J,GAAA5c,QAAA,8BAAA,SAAA8c,GACA,MAAAD,GAAAC,EAAApd,MAAA,GAAA,OAIA+c,sBAAA,SAAA7hB,EAAAqc,EAAAG,GACA,GACA/d,GADArD,EAAAC,IAGAD,GAAAqb,KAAAra,SAAA,8BAEA,IAAA4lB,GAAA,sGAGA,KAAAvjB,EAAA,EAAAA,EAAAuB,EAAA3D,OAAAoC,IACA,WAAA4O,KAAArN,EAAAvB,IACAujB,GAAA,gBAAAhiB,EAAAvB,GAAA,sBACA,mBAAA4O,KAAArN,EAAAvB,IACAujB,GAAA,gBAAAhiB,EAAAvB,GAAA,sBACA,YAAA4O,KAAArN,EAAAvB,MACAujB,GAAA,gBAAAhiB,EAAAvB,GAAA,uBAIAujB,IAAA,+FAGA,EAAA,yCAAA3F,EAAA,SAAA,IACAG,EACA,eAGAphB,EAAA8gB,QAAA7E,KAAA2K,GACA5mB,EAAAqb,KAAAra,SAAA,mBACAhB,EAAA+mB,uBAGAJ,sBAAA,SAAA/hB,EAAAqc,EAAAG,GACA,GAAAphB,GAAAC,IAGAD,GAAAqb,KAAAra,SAAA,8BAEA,IAAA4lB,GAAA,+IAEAhiB,EAAA,yHAIA,EAAA,yCAAAqc,EAAA,SAAA,IACAG,EACA,cAGAphB,GAAA8gB,QAAA7E,KAAA2K,GACA5mB,EAAAqb,KAAAra,SAAA,mBACAhB,EAAA+mB,uBAGAX,kBAAA,SAAAxhB,EAAAqc,EAAAG,GACA,GAAAphB,GAAAC,IACAD,GAAAqb,KAAAra,SAAA,8BAEA,IAAA4lB,GAAA,uDACAhiB,EAAA,qGAEA,EAAA,yCAAAqc,EAAA,SAAA,IACAG,EACA,cAGAphB,GAAA8gB,QAAA7E,KAAA2K,GACA5mB,EAAAqb,KAAAra,SAAA,mBACAhB,EAAA+mB,uBAGAb,mBAAA,SAAAthB,EAAAqc,EAAAG,GACA,GAAAphB,GAAAC,IAEAD,GAAAqb,KAAA9T,YAAA,8BAEA,IAAAqf,GAAA,oDACAhiB,EAAA,oCAAA5E,EAAAuiB,cAAA,8CAEA,EAAA,yCAAAtB,EAAA,SAAA,IACAG,EACA,cAGAphB,GAAA8gB,QAAA7E,KAAA2K,GACA5mB,EAAAqb,KAAAra,SAAA,mBACAhB,EAAAyf,cACAzf,EAAA+mB,uBAGA5M,KAAA,WACA,GAAAna,GAAAC,IACAD,GAAAA,EAAAge,KAAA,UAAA,IAGA8D,KAAA,WACA,GAAA9hB,GAAAC,IACAD,GAAAA,EAAAge,KAAA,WAAA,IAGAgJ,eAAA,SAAA7kB,GACA,GACAC,GADApC,EAAAC,IAGAD,GAAA0hB,QAAA1hB,EAAAinB,SAAAjnB,EAAA0hB,QAAAvf,GAGAC,EAAApC,EAAAshB,UAAAthB,EAAA0hB,SAGA1hB,EAAAoC,EAAA4b,MAAA5b,IAGAqf,iBAAA,SAAAtf,GACA,GAAAnC,GAAAC,IAEAD,GAAA0hB,QAAA1hB,EAAAinB,SAAAjnB,EAAA0hB,QAAAvf,GAGA3C,EAAAqB,WAAAb,EAAAF,QAAAuQ,sBACArQ,EAAAknB,YAGAlnB,EAAAkgB,YAAAlB,UAAA,GAEAhf,EAAAqb,KAAAra,SAAA,qBAEAhB,EAAA2c,QACA/c,EAAA2F,QAAAC,OAAA0L,aAAA1R,EAAAU,KAAAF,EAAA2c,OAAA,GAAA,kBAGA3c,EAAAF,QAAAuQ,mBAAAvL,KAAA9E,EAAAA,EAAAshB,UAAAthB,EAAA0hB,SAAAtO,IAAApT,EAAAshB,UAAAthB,EAAA0hB,SAAAlJ,SAEAxY,EAAAF,QAAAmQ,wBACAoD,SAAAC,KAAAtT,EAAAoT,IAAA,QAAApT,EAAAshB,UAAAthB,EAAA0hB,SAAAtO,OAKA8T,UAAA,WACA,GAAAlnB,GAAAC,IAEA,gBAAAD,EAAAge,MAAAhe,EAAAF,QAAAmQ,wBACAoD,SAAAC,KAAAtT,EAAAoT,IAAA,KAGA,qBAAApT,EAAAge,MAAAhe,EAAAF,QAAAyQ,8BACA8C,SAAAC,KAAAtT,EAAAoT,IAAA,MAIA6T,SAAA,SAAA9kB,GACA,GAAAnC,GAAAC,IAUA,OAPAkC,IAAAnC,EAAAuhB,aAGApf,EAAA,IACAA,EAAAnC,EAAAuhB,aAAApf,GAGAA,GAGAwR,MAAA,SAAA5H,EAAA7L,GAGA,QAAAinB,KAEAnnB,EAAA2c,QACA/c,EAAA2F,QAAAC,OAAA0L,aAAA1R,EAAAU,KAAAF,EAAA2c,OAAA,GAAA,kBAIA3c,EAAA8gB,QAAA7E,KAAA,IAGAjc,EAAAqb,KAAA+L,SAEApnB,EAAAO,cAAAH,KAAAmH,YAAA,oEAEA,YAAAwE,GACAvM,EAAAqB,WAAAX,EAAAH,WACAG,EAAAH,SAAA+E,KAAA9E,EAAAO,eAKA,QAAA8mB,KAEA,GAAArI,GAAAxf,EAAAC,GAAAuf,WACAhf,GAAAknB,YACA1nB,EAAAC,GAAAuf,UAAAA,GAEAhf,EAAAF,QAAA2Q,yBAAA,YAAA1E,EACAvM,EAAA,aAAA0kB,SACAlF,UAAAhf,EAAAgf,WACA,KACAmF,UACA7Z,KAAA,WACA6c,MAGAA,IAtCA,GAAAnnB,GAAAC,IA2CAD,GAAA0T,QAAA,EAEA,qBAAA1T,EAAAge,KACA,SAAAjS,GACA/L,EAAAqb,KAAA9T,YAAA,oCACA/H,EAAAQ,EAAAshB,UAAAthB,EAAA0hB,SAAAlJ,SAAAgI,QAAA,aAAAjZ,YAAA,+BACAvH,EAAAggB,qBAAA9f,EAAAqB,OAAArB,EAAAsf,aAAAtf,EAAAmjB,YAEArjB,EAAAuC,OAAA,EAEAvC,EAAAskB,+BACAtkB,EAAAqb,KAAA9T,YAAA,oCACAvH,EAAAO,cAAAH,KAAAY,SAAA,oCACAhB,EAAAO,cAAAH,KAAA6D,KAAA,aAAAsD,YAAA,+BAEA3H,EAAA2F,QAAAsE,cACA7J,EAAAqb,KAAAvR,IAAAlK,EAAA2F,QAAAwE,cAAA,WACAsd,MAGAA,KAIA,eAAArnB,EAAAge,MACAhe,EAAAknB,YAEA1nB,EAAAC,GAAAuf,UAAAhf,EAAAgf,WAEAhf,EAAAsnB,YAAA,EAEAtnB,EAAAqb,KAAA9T,YAAA,iGAEA/H,EAAA,QAAAyL,KACAyX,SAAA,GACAC,YAAA,GACA3X,SAAA,KAGA,QAAApL,EAAA2F,QAAAwM,SAAA,QAAAnS,EAAA2F,QAAAwM,UAEA/R,EAAA2c,QACA/c,EAAA2F,QAAAC,OAAA0L,aAAA1R,EAAAU,KAAAF,EAAA2c,OAAA,GAAA,kBAIA3c,EAAA8gB,QAAA7E,KAAA,IAGAjc,EAAAqb,KAAA+L,UAGApnB,EAAAqb,KAAAvR,IAAAlK,EAAA2F,QAAAwE,cAAA,WAEA/J,EAAA2c,QACA/c,EAAA2F,QAAAC,OAAA0L,aAAA1R,EAAAU,KAAAF,EAAA2c,OAAA,GAAA,kBAIA3c,EAAA8gB,QAAA7E,KAAA,IAGAjc,EAAAqb,KAAA+L,aAGAxF,GAAA,EAEA5hB,EAAAyiB,cACAjjB,EAAA,QAAAkF,KAAA,QAAA1E,EAAAyiB,eAEAjjB,EAAA,QAAAyL,KACAyX,SAAA,GACAC,YAAA,KAIAnjB,EAAAC,GAAAuf,UAAAhf,EAAAgf,WAGAhf,EAAA2c,QACA/c,EAAA2F,QAAAC,OAAA0L,aAAA1R,EAAAU,KAAAF,EAAA2c,OAAA,GAAA,kBAIA3c,EAAA8gB,QAAA7E,KAAA,IAGAjc,EAAAqb,KAAA+L,WAIAnB,eAAA,SAAAsB,GACA,GAAAvnB,GAAAC,IAEAD,GAAA6gB,WAAA0G,EACAvnB,EAAAqb,KAAA,EAAA,WAAA,eAAA,sBAGAoE,YAAA,WAEA,GAAAxf,KAAAyT,OAAA,CAIA,GAAA9P,GAAA3D,KAAA6gB,QAAA7c,KAAA,OACAujB,EAAA5jB,EAAAwE,SACA7F,EAAA/C,EAAAC,GAAA8C,UAAAilB,EAAAnN,aAAA,GAAAmN,EAAAjlB,UAAAtC,KAAA6gB,QAAA7c,KAAA,8BAAAoW,aAAA,EAEAzW,GAAAqH,IAAA,aAAA1I,EAAA,QAGAwkB,oBAAA,WAWA,IAAA,GAVA/mB,GAAAC,KACAib,GACAlb,EAAAinB,SAAAjnB,EAAA0hB,QAAA,GACA1hB,EAAAinB,SAAAjnB,EAAA0hB,QAAA,GACA1hB,EAAAinB,SAAAjnB,EAAA0hB,QAAA,GACA1hB,EAAAinB,SAAAjnB,EAAA0hB,QAAA,GACA1hB,EAAAinB,SAAAjnB,EAAA0hB,QAAA,GACA1hB,EAAAinB,SAAAjnB,EAAA0hB,QAAA,IAGAre,EAAA6X,EAAAja,OAAA,EAAAoC,GAAA,EAAAA,IACA,YAAArD,EAAAshB,UAAApG,EAAA7X,IAAA2a,MACAhe,EAAAO,cAAA+D,SAAAtE,EAAAshB,UAAApG,EAAA7X,OA4BAue,GAAA,EACA6F,GAAA,EACAC,GAAA,CAEA5O,GAAA9W,UAAAqd,IAAA,WACA,GAAArf,GAAAC,KACA0nB,EAAA3nB,EAAAoI,OACA2Z,EAAAviB,EAAAE,EAAAqiB,KAGA4F,GAAAhI,SAAA,KAGAgI,EAAA7nB,QAAA8P,mBAAA6X,IAEAA,GAAA,EAEAE,EAAAhI,SAAAzH,OAAAC,OAAAoH,GACAoI,EAAAhI,SAAA3T,KAAA2b,EAAA,YAEA5F,EAAAxd,GAAA,YAAAojB,EAAA7nB,QAAA8P,iBAAA,SAAA6G,GACAA,EAAAG,gBAEA,IAAA0J,GAAA9gB,EAAAS,MACAsgB,EAAAD,EAAA5b,KAAA,qBACAkjB,EAAA5nB,EAAA6nB,YAAAvH,GACAwH,EAAAF,EAAA1nB,KAAA,iBACAqB,IAGAumB,GACAA,EAAAtmB,SAAAE,KAAA,SAAAS,EAAAC,GACA,GAAAC,GAAA7C,EAAA4C,EAEAC,GAAAwF,IAAA,kBACAxF,EAAA4B,KAAA0jB,EAAA7nB,QAAA8P,kBAAAlO,KAAA,SAAAiK,EAAAC,GACA2U,EACA/gB,EAAAoM,GAAAlH,KAAA,uBAAA6b,GACAhf,EAAAoH,KAAAiD,GAGArK,EAAAoH,KAAAiD,OAOArK,EADAgf,EACAqH,EAAA3jB,KAAA0jB,EAAA7nB,QAAA8P,iBAAA,sBAAA2Q,EAAA,KAEAqH,EAAA3jB,KAAA0jB,EAAA7nB,QAAA8P,kBAIA+X,EAAAhI,SAAAqC,aAAAzgB,EAAA+e,EAAA,OAKAqH,EAAAnU,WAAA,KAGAmU,EAAA7nB,QAAAkQ,qBAAA0X,IAEAA,GAAA,EAEAC,EAAAnU,WAAA0E,OAAAC,OAAAoH,GACAoI,EAAAnU,WAAAxH,KAAA2b,EAAA,cAEA5F,EAAAxd,GAAA,YAAAojB,EAAA7nB,QAAAkQ,mBAAA,SAAAyG,GACAA,EAAAG,gBAEA,IAAA0J,GAAA9gB,EAAAS,MACAsgB,EAAAD,EAAA5b,KAAA,uBACAkjB,EAAA5nB,EAAA6nB,YAAAvH,GACAwH,EAAAF,EAAA1nB,KAAA,iBACAqB,IAGAumB,GACAA,EAAAtmB,SAAAE,KAAA,SAAAS,EAAAC,GACA,GAAAC,GAAA7C,EAAA4C,EAEAC,GAAAwF,IAAA,kBACAxF,EAAA4B,KAAA0jB,EAAA7nB,QAAAkQ,oBAAAtO,KAAA,SAAAiK,EAAAC,GACA2U,EACA/gB,EAAAoM,GAAAlH,KAAA,yBAAA6b,GACAhf,EAAAoH,KAAAiD,GAGArK,EAAAoH,KAAAiD,OAOArK,EADAgf,EACAqH,EAAA3jB,KAAA0jB,EAAA7nB,QAAAkQ,mBAAA,wBAAAuQ,EAAA,KAEAqH,EAAA3jB,KAAA0jB,EAAA7nB,QAAAkQ,oBAIA2X,EAAAnU,WAAAiN,eAAAlf,EAAA+e,EAAA,OAKAqH,EAAAlU,iBAAA,KAGAkU,EAAA7nB,QAAAwQ,2BACAqX,EAAAlU,iBAAAyE,OAAAC,OAAAoH,GAEAoI,EAAAlU,iBAAAzH,KAAA2b,EAAA,oBAEAA,EAAAvnB,KAAAmE,GAAA,YAAAojB,EAAA7nB,QAAAwQ,yBAAA,SAAAmG,GACAA,EAAAG,gBAEA,IAAAmR,GAAAvoB,EAAAU,KAAAD,KAAA,cACA+nB,EAAAxoB,EAAAU,KAAAD,KAAA,cAAA,GAAAyY,SAEAqP,GAAAC,EAAAD,EAAA,MACAJ,EAAAlU,iBAAAuM,qBAAA2H,EAAAnmB,SAAAvB,UAMA6Y,EAAA9W,UAAA6lB,YAAA,SAAAxlB,GACA,GAAAoR,GACAD,EACAsU,CAGA,OADArU,GAAApR,EAAAme,QAAA,+BACA/M,EAAAxS,QACA6mB,EAAAzlB,EAAAme,QAAA,OAAA/M,EAAA,IACAqU,EAAA,OAAAA,EAAArU,IAGAD,EAAAnR,EAAAme,QAAA,yBACAhN,EAAAvS,QACA6mB,EAAAzlB,EAAAme,QAAA,OAAAhN,EAAA,IACAsU,EAAA,OAAAA,EAAAtU,IAGAsU,EAAAzlB,EAAAme,QAAA,QACAsH,EAAA,OAAAA,EAAAtoB,EAAAE,EAAAqiB,SAIAjJ,EAAA9W,UAAA+Q,QAAA,WACA,GAAA4U,GAAA1nB,KAAAmI,MAEA5I,GAAAE,EAAAqiB,MAAAvd,IAAA,aAGAijB,GAAA,EACAC,GAAA,EAGAC,EAAAhI,UACAgI,EAAAhI,SAAA5M,UAIA4U,EAAAnU,YACAmU,EAAAnU,WAAAT,UAIA4U,EAAAlU,kBACAkU,EAAAlU,iBAAAV,WAIAnT,EAAA6B,QAAAwmB,MAAA,SAAA7f,GACA,MAAA,IAAA0Q,GAAA1Q,KAEA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAIA,SAAAmZ,GAAA1Q,GACA,GAAApI,GAAAC,IAEAD,GAAAoI,OAAAA,EAEApI,EAAAkoB,YAAA1oB,EAAA4I,EAAAtI,QAAAgP,QAEA9O,EAAAkoB,YAAAxmB,KAAA,SAAAS,EAAAC,GACA,GAAAub,GAAAvb,EAAAiC,aAAA,cAEAsZ,KACAA,EAAA,KAGAne,EAAAU,KAAAkC,EAAA,cACAR,MAAAQ,EAAAR,MACAQ,GAAAub,KAIA,IAAAvM,GAAA,IAEApR,GAAAkoB,YAAA3jB,GAAA,sBAAA,SAAAkS,GACAA,EAAAG,gBAEA,IAAAxU,GAAA5C,EAAAS,KAEAoR,cAAAD,GACAA,EAAAE,WAAA,WACAtR,EAAAmoB,SAAArjB,KAAA9E,EAAAoC,IACA,OAGApC,EAAAooB,cAAApoB,EAAAkoB,YAAA9M,SAAA,uBAAAgM,SACApnB,EAAAqoB,oBAAA,KACAroB,EAAAsoB,kBAAAtoB,EAAAooB,cAAAnM,OAEAjc,EAAAkoB,YAAA9M,SAAA,oBAAA7W,GAAA,YAAA,SAAAkS,GACAA,EAAAG,iBAEA5W,EAAAmoB,SAAArjB,KAAA9E,EAAAR,EAAAS,MAAA6hB,OAAA3Q,IAAA,OA1CA,GAAAvR,GAAAJ,EAAAc,GAAAC,cAAA0L,WA8CA6M,GAAA9W,UAAAmmB,SAAA,SAAA/lB,GACA,GAAApC,GAAAC,KACA2B,EAAAQ,EAAA+O,MACAoX,EAAAnmB,EAAAlC,KAAA,cACAsoB,EAAA,GAAAC,QAAA7mB,EAAA,IAEA2mB,GAAA3mB,QAAAA,GAAA5B,EAAAoI,OAAA5H,cAIA+nB,EAAA3mB,MAAAA,EAEAA,EAAAX,OAAA,EACAmB,EAAAsC,KAAA,QAAA9C,GAEAQ,EAAA4D,WAAA,SAGAhG,EAAAoI,OAAAhI,KAAAG,cAAA,SAAA,SAAAgB,GACA,GAAAmnB,GAAAnnB,EAAAqG,OAAA,SAAAzF,EAAAmL,GAGA,GAFA9N,EAAA8N,GAAArJ,KAAAskB,EAAAnmB,IAAAyR,OAEA/E,OAAA0Z,IAAA,EACA,OAAA,GAIA,IAAA,IAAAE,EAAAznB,QAAAjB,EAAAooB,cAAAnnB,OAAA,CACA,GAAA0nB,GAAA3oB,EAAAsoB,kBAAAte,QAAA,YAAApI,EACA5B,GAAAooB,cAAAnM,KAAA0M,GAEA3oB,EAAAooB,cAAA5T,SAAAxU,EAAAoI,OAAAhI,MAEA,OAAAJ,EAAAqoB,sBACAroB,EAAAqoB,oBAAAroB,EAAAooB,cAAA/N,aAAA,IAGAra,EAAAoI,OAAAtH,cAAA,sBAAA,WACAd,EAAAoI,OAAA7F,OAAAvC,EAAAoI,OAAA7F,OAAAvC,EAAAqoB,oBACAroB,EAAAoI,OAAAvI,IAAAuE,MAAA7B,OAAAvC,EAAAoI,OAAA7F,OAAA,OACA,OAEAvC,GAAAooB,cAAAhB,QAMA,OAFApnB,GAAAoI,OAAAvG,aAAA,sBAEA6mB,GACA,WACAtmB,EAAAkD,QAAA,iBAIAwT,EAAA9W,UAAA+Q,QAAA,WACA,GAAA/S,GAAAC,IAEAD,GAAAkoB,YAAA1jB,IAAA,QACAxE,EAAAkoB,YAAA/N,KAAA,oBAAA3V,IAAA,QAEAxE,EAAAkoB,YAAAxmB,KAAA,SAAAS,EAAAC,GACA5C,EAAAwT,WAAA5Q,MAIAxC,EAAA6B,QAAAqN,OAAA,SAAA1G,GACA,MAAA,KAAAA,EAAAtI,QAAAgP,OACA,KAGA,GAAAgK,GAAA1Q,KAEA8D,OAAAzM,OAAAC,UACA,SAAAF,EAAAC,EAAAC,EAAAC,GACA,YAaA,SAAAmZ,GAAA1Q,GACA,GAAApI,GAAAC,IAEAD,GAAAoI,OAAAA,EAEApI,EAAAF,QAAAN,EAAAa,UAAAP,EAAAE,EAAAoI,OAAAtI,QAAA2B,QAAAkb,OAEA,IAAA1G,GAAAzW,EAAAQ,EAAAF,QAAA8oB,WAEA3S,GAAAhV,OAAA,IACAjB,EAAAoI,OAAA6N,iBAAAA,EACAjW,EAAAoI,OAAA8N,sBAAAD,EAAAlV,WACAf,EAAAoI,OAAA+N,sBAAAnW,EAAAF,QAAA+oB,gBAEA7oB,EAAAoI,OAAA8N,sBAAA3R,GAAA,YAAA,SAAAkS,GACAA,EAAAG,iBACAH,EAAAkL,2BACAlL,EAAAqS,kBAEA9oB,EAAAoI,OAAA2gB,kBAIA/oB,EAAAoI,OAAA+M,aAAA3V,EAAAS,UAIAD,EAAAoI,OAAAtH,cAAA,aAAA,WACAd,EAAAgpB,aAAAlkB,KAAA9E,EAAAoI,QAEApI,EAAAoI,OAAAtH,cAAA,aAAA,WACAd,EAAAipB,aAAAnkB,KAAA9E,EAAAoI,YAEA,GA5CA,GAAAtI,IAKA8oB,WAAA,GACAC,gBAAA,yBAGAjpB,EAAAJ,EAAAc,GAAAC,cAAA0L,WAyCA6M,GAAA9W,UAAAgnB,aAAA,WACA,GAAAhpB,GAAAC,IAEAD,GAAA+oB,kBAAA,EAEA/oB,EAAA+U,aAAA,EAEA/U,EAAAI,KAAA0J,IAAA,mBAAA,WACA9J,EAAAI,KAAAY,SAAA,qBAGAhB,EAAAkpB,IAAA1pB,EAAA,UACA8U,MAAA,YAGAtU,EAAAkpB,IAAA3kB,GAAA,YAAA,uBAAA,SAAAkS,GAKA,GAJAA,EAAAG,iBACAH,EAAAkL,2BACAlL,EAAAqS,mBAEA9oB,EAAA+oB,iBAAA,CAIA,GAAA3mB,GAAA5C,EAAAS,MACA6d,EAAA1b,EAAAsC,KAAA,qBAEA1E,GAAA8d,EAAA,WACA9d,EAAA8d,EAAA,UAAA1b,MAIApC,EAAAF,QAAAqP,iBACAnP,EAAAmpB,SAAA3pB,EAAA,UACA8U,MAAA,qBAGAtU,EAAA8V,QAAAtW,EAAA,UACA8U,MAAA,eACAC,qBAAA,SACAC,SAAAxU,EAAAmpB,UAEAnpB,EAAA+V,QAAAvW,EAAA,UACA8U,MAAA,eACAC,qBAAA,SACAC,SAAAxU,EAAAmpB,UAEAnpB,EAAAmpB,SAAA3U,SAAAxU,EAAAkpB,MAGAlpB,EAAAF,QAAAsP,iBACApP,EAAAoU,cAAA5U,EAAA,UACA8U,MAAA,uBACAE,SAAAxU,EAAAkpB,OAGAlpB,EAAAmpB,UAAAnpB,EAAAoU,gBACApU,EAAAkpB,IAAA1U,SAAAxU,EAAAI,MAGAJ,EAAAkU,yBAEAlU,EAAAF,QAAAkP,OACAhP,EAAAF,QAAAoP,mBACAlP,EAAAyX,gBAAA,EACAzX,EAAAI,KAAAmE,GAAA,iBAAA,SAAAkS,GACAzW,EAAAyX,gBAAA,EACAzX,EAAA2U,mBACApQ,GAAA,iBAAA,SAAAkS,GACAzW,EAAAyX,gBAAA,EACAzX,EAAA2V,qBAIA3V,EAAA2V,mBAGA3V,EAAAF,QAAAiP,MAAAnP,EAAA2F,QAAAsE,eACA7J,EAAAuW,cAIAuC,EAAA9W,UAAAinB,aAAA,WACA,GAAAjpB,GAAAC,IAEAD,GAAA0V,uBAEA1V,EAAAkU,0BAGA4E,EAAA9W,UAAA+Q,QAAA,WACA,GAAA/S,GAAAC,IAEAD,GAAAoI,OAAA8N,uBACAlW,EAAAoI,OAAA8N,sBAAA1R,IAAA,SAGAxE,EAAAoI,OAAA+gB,UAAAnpB,EAAAoI,OAAAgM,iBACApU,EAAAoI,OAAA8gB,IAAA1kB,IAAA,QACAxE,EAAAoI,OAAA8gB,IAAApd,WAIAlM,EAAA6B,QAAAkb,OAAA,SAAAvU,GACA,MAAA,WAAAA,EAAAtI,QAAA8G,WACA,KAGA,GAAAkS,GAAA1Q,KAEA8D,OAAAzM,OAAAC","file":"cubeportfolio.js","sourcesContent":["(function($, window, document, undefined) {\n 'use strict';\n\n function CubePortfolio(obj, options, callback) {\n /*jshint validthis: true */\n var t = this;\n\n if ($.data(obj, 'cubeportfolio')) {\n throw new Error('cubeportfolio is already initialized. Destroy it before initialize again!');\n }\n\n // js element\n t.obj = obj;\n\n // jquery element\n t.$obj = $(obj);\n\n // attached this instance to obj\n $.data(t.obj, 'cubeportfolio', t);\n\n // extend options\n t.options = $.extend({}, $.fn.cubeportfolio.options, options, t.$obj.data('cbp-options'));\n\n // store the state of the animation used for filters\n t.isAnimating = true;\n\n // default filter for plugin\n t.defaultFilter = t.options.defaultFilter;\n\n // registered events (observator & publisher pattern)\n t.registeredEvents = [];\n\n // queue for this plugin\n t.queue = [];\n\n // has wrapper\n t.addedWrapp = false;\n\n // register callback function\n if ($.isFunction(callback)) {\n t.registerEvent('initFinish', callback, true);\n }\n\n // when there are no .cbp-item\n var children = t.$obj.children();\n\n t.$obj.addClass('cbp');\n\n if (children.length === 0 || children.first().hasClass('cbp-item')) {\n t.wrapInner(t.obj, 'cbp-wrapper');\n t.addedWrapp = true;\n }\n\n // jquery wrapper element\n t.$ul = t.$obj.children().addClass('cbp-wrapper');\n\n // wrap the $ul in a outside wrapper\n t.wrapInner(t.obj, 'cbp-wrapper-outer');\n\n t.wrapper = t.$obj.children('.cbp-wrapper-outer');\n\n t.blocks = t.$ul.children('.cbp-item');\n t.blocksOn = t.blocks;\n\n // wrap .cbp-item-wrap div inside .cbp-item\n t.wrapInner(t.blocks, 'cbp-item-wrapper');\n\n // register and initialize plugins\n t.plugins = {};\n $.each(CubePortfolio.plugins, function(key, value) {\n var fn = value(t);\n\n if (fn) {\n t.plugins[key] = fn;\n }\n });\n\n // used by the filters plugin. @todo - remove from here and create proper API with position for plugins\n t.triggerEvent('afterPlugins');\n\n // wait to load all images and then go further\n t.loadImages(t.$obj, t.display);\n }\n\n\n $.extend(CubePortfolio.prototype, {\n storeData: function(blocks, indexStart) {\n var t = this;\n\n indexStart = indexStart || 0; // used by loadMore\n\n blocks.each(function(index, el) {\n var item = $(el),\n width = item.width(),\n height = item.height();\n\n item.data('cbp', {\n index: indexStart + index, // used when I sort the items and I need them to revert that sorting\n wrapper: item.children('.cbp-item-wrapper'),\n\n widthInitial: width,\n heightInitial: height,\n\n width: width, // used by drag & drop wp @todo - maybe I will use widthAndGap\n height: height,\n\n widthAndGap: width + t.options.gapVertical,\n heightAndGap: height + t.options.gapHorizontal,\n\n left: null,\n leftNew: null,\n top: null,\n topNew: null,\n\n pack: false,\n });\n });\n },\n\n\n // http://bit.ly/pure-js-wrap\n wrapInner: function(items, classAttr) {\n var t = this,\n item, i, div;\n\n classAttr = classAttr || '';\n\n if (items.length && items.length < 1) {\n return; // there are no .cbp-item\n } else if (items.length === undefined) {\n items = [items];\n }\n\n for (i = items.length - 1; i >= 0; i--) {\n item = items[i];\n\n div = document.createElement('div');\n\n div.setAttribute('class', classAttr);\n\n while (item.childNodes.length) {\n div.appendChild(item.childNodes[0]);\n }\n\n item.appendChild(div);\n }\n },\n\n removeAttrImage: function(img) {\n img.removeAttribute('width');\n img.removeAttribute('height');\n img.removeAttribute('style');\n },\n\n\n /**\n * Wait to load all images\n */\n loadImages: function(elems, callback) {\n var t = this;\n\n // wait a frame (Safari bug)\n requestAnimationFrame(function() {\n var imgs = elems.find('img').map(function(index, el) {\n // don't wait for images that have a width & height defined\n if (el.hasAttribute('width') && el.hasAttribute('height')) {\n el.style.width = el.getAttribute('width') + 'px';\n el.style.height = el.getAttribute('height') + 'px';\n\n if (el.hasAttribute('data-cbp-src')) {\n return null;\n }\n\n if (t.checkSrc(el) === null) {\n t.removeAttrImage(el);\n } else {\n var img = $('<img>');\n\n img.on('load.cbp error.cbp', function() {\n $(this).off('load.cbp error.cbp');\n t.removeAttrImage(el);\n });\n\n if (el.srcset) {\n img.attr('sizes', el.sizes || '100vw');\n img.attr('srcset', el.srcset);\n } else {\n img.attr('src', el.src);\n }\n }\n\n return null;\n } else {\n return t.checkSrc(el);\n }\n });\n\n var imgsLength = imgs.length;\n\n if (imgsLength === 0) {\n callback.call(t);\n return;\n }\n\n $.each(imgs, function(i, el) {\n var img = $('<img>');\n\n img.on('load.cbp error.cbp', function() {\n $(this).off('load.cbp error.cbp');\n\n imgsLength--;\n\n if (imgsLength === 0) {\n callback.call(t);\n }\n });\n\n // ie8 compatibility\n if (el.srcset) {\n img.attr('sizes', el.sizes);\n img.attr('srcset', el.srcset);\n } else {\n img.attr('src', el.src);\n }\n });\n });\n },\n\n\n checkSrc: function(el) {\n var srcset = el.srcset;\n var src = el.src;\n\n if (src === '') {\n return null;\n }\n\n var img = $('<img>');\n\n if (srcset) {\n img.attr('sizes', el.sizes || '100vw');\n img.attr('srcset', srcset);\n } else {\n img.attr('src', src);\n }\n\n var node = img[0];\n\n if (node.complete && node.naturalWidth !== undefined && node.naturalWidth !== 0) {\n return null;\n }\n\n return node;\n },\n\n\n /**\n * Show the plugin\n */\n display: function() {\n var t = this;\n\n // store to data values of t.blocks\n t.storeData(t.blocks);\n\n t.triggerEvent('initStartRead');\n t.triggerEvent('initStartWrite');\n\n // make layout\n t.layoutAndAdjustment();\n\n t.triggerEvent('initEndRead');\n t.triggerEvent('initEndWrite');\n\n // plugin is ready to show and interact\n t.$obj.addClass('cbp-ready');\n\n t.runQueue('delayFrame', t.delayFrame);\n },\n\n\n delayFrame: function() {\n var t = this;\n\n requestAnimationFrame(function() {\n t.resizeEvent();\n\n t.triggerEvent('initFinish');\n\n // animating is now false\n t.isAnimating = false;\n\n // trigger public event initComplete\n t.$obj.trigger('initComplete.cbp');\n });\n },\n\n\n /**\n * Add resize event when browser width changes\n */\n resizeEvent: function() {\n var t = this;\n\n CubePortfolio.private.resize.initEvent({\n instance: t,\n fn: function() {\n // used by wp fullWidth force option\n t.triggerEvent('beforeResizeGrid');\n\n if (t.width !== t.$obj.outerWidth()) {\n\n if (t.options.gridAdjustment === 'alignCenter') {\n t.wrapper[0].style.maxWidth = '';\n }\n\n // reposition the blocks with gridAdjustment set to true\n t.layoutAndAdjustment();\n\n t.triggerEvent('resizeGrid');\n }\n\n t.triggerEvent('resizeWindow');\n }\n });\n },\n\n\n gridAdjust: function() {\n var t = this;\n\n // update the current grid width\n t.width = t.$obj.outerWidth();\n\n // if responsive\n if (t.options.gridAdjustment === 'responsive') {\n t.responsiveLayout();\n } else {\n // reset the style attribute for all blocks so I can read a new width & height\n // for the current grid width. This is usefull for the styles defined in css\n // to create a custom responsive system.\n // Note: reset height if it was set for addHeightToBlocks\n t.blocks.removeAttr('style');\n\n t.blocks.each(function(index, el) {\n var data = $(el).data('cbp'),\n bound = el.getBoundingClientRect(),\n width = t.columnWidthTruncate(bound.right - bound.left),\n height = Math.round(bound.bottom - bound.top);\n\n data.height = height;\n data.heightAndGap = height + t.options.gapHorizontal;\n\n data.width = width;\n data.widthAndGap = width + t.options.gapVertical;\n });\n\n t.widthAvailable = t.width + t.options.gapVertical;\n }\n\n // used by slider layoutMode\n t.triggerEvent('gridAdjust');\n },\n\n\n layoutAndAdjustment: function() {\n var t = this;\n\n t.gridAdjust();\n\n t.layout();\n },\n\n\n /**\n * Build the layout\n */\n layout: function() {\n var t = this;\n\n t.computeBlocks(t.filterConcat(t.defaultFilter));\n\n if (t.options.layoutMode === 'slider') {\n t.sliderLayoutReset();\n t.sliderLayout();\n } else {\n t.mosaicLayoutReset();\n t.mosaicLayout();\n }\n\n // positionate the blocks\n t.positionateItems();\n\n // resize main container height\n t.resizeMainContainer();\n },\n\n\n computeFilter: function(expression) {\n var t = this;\n\n t.computeBlocks(expression);\n\n t.mosaicLayoutReset();\n t.mosaicLayout();\n\n // filter call layout\n t.filterLayout();\n },\n\n\n /**\n * Default filter layout if nothing overrides\n */\n filterLayout: function() {\n var t = this;\n\n t.blocksOff.addClass('cbp-item-off');\n\n t.blocksOn.removeClass('cbp-item-off')\n .each(function(index, el) {\n var data = $(el).data('cbp');\n\n data.left = data.leftNew;\n data.top = data.topNew;\n\n el.style.left = data.left + 'px';\n el.style.top = data.top + 'px';\n });\n\n // resize main container height\n t.resizeMainContainer();\n\n t.filterFinish();\n },\n\n\n /**\n * Trigger when a filter is finished\n */\n filterFinish: function() {\n var t = this;\n\n // if blocks are sorted (the index ascending is broken) revert\n // this state so the index is ascending again\n if (t.blocksAreSorted) {\n t.sortBlocks(t.blocks, 'index');\n }\n\n t.isAnimating = false;\n\n t.$obj.trigger('filterComplete.cbp');\n t.triggerEvent('filterFinish');\n },\n\n\n computeBlocks: function(expression) {\n var t = this;\n\n // blocks that are visible before applying the filter\n t.blocksOnInitial = t.blocksOn;\n\n // blocks visible after applying the filter\n t.blocksOn = t.blocks.filter(expression);\n\n // blocks off after applying the filter\n t.blocksOff = t.blocks.not(expression);\n\n t.triggerEvent('computeBlocksFinish', expression);\n },\n\n\n /**\n * Make this plugin responsive\n */\n responsiveLayout: function() {\n var t = this;\n\n // calculate numbers of cols\n t.cols = t[($.isArray(t.options.mediaQueries) ? 'getColumnsBreakpoints' : 'getColumnsAuto')]();\n\n t.columnWidth = t.columnWidthTruncate((t.width + t.options.gapVertical) / t.cols);\n\n t.widthAvailable = t.columnWidth * t.cols;\n\n if (t.options.layoutMode === 'mosaic') {\n t.getMosaicWidthReference();\n }\n\n t.blocks.each(function(index, el) {\n var data = $(el).data('cbp'),\n cols = 1, // grid & slider layoutMode must be 1\n width;\n\n if (t.options.layoutMode === 'mosaic') {\n cols = t.getColsMosaic(data.widthInitial);\n }\n\n width = t.columnWidth * cols - t.options.gapVertical;\n\n el.style.width = width + 'px';\n data.width = width;\n data.widthAndGap = width + t.options.gapVertical;\n\n // reset height if it was set for addHeightToBlocks\n el.style.height = '';\n });\n\n var imgs = [];\n\n t.blocks.each(function(index, el) {\n $.each($(el).find('img').filter('[width][height]'), function(index, el) {\n var width = $(el).parent().width();\n var imgWidth = parseInt(el.getAttribute('width'), 10);\n var imgHeight = parseInt(el.getAttribute('height'), 10);\n var ratio = parseFloat((imgWidth / imgHeight).toFixed(10));\n\n imgs.push({\n el: el,\n width: width,\n height: Math.round(width / ratio),\n });\n });\n });\n\n $.each(imgs, function(index, item) {\n item.el.width = item.width;\n item.el.height = item.height;\n item.el.style.width = item.width + 'px';\n item.el.style.height = item.height + 'px';\n });\n\n t.blocks.each(function(index, el) {\n var data = $(el).data('cbp'),\n bound = el.getBoundingClientRect(),\n height = Math.round(bound.bottom - bound.top);\n\n data.height = height;\n data.heightAndGap = height + t.options.gapHorizontal;\n });\n },\n\n\n getMosaicWidthReference: function() {\n var t = this,\n arrWidth = [];\n\n t.blocks.each(function(index, el) {\n var data = $(el).data('cbp');\n arrWidth.push(data.widthInitial);\n });\n\n arrWidth.sort(function(a, b) {\n return a - b;\n });\n\n if (arrWidth[0]) {\n t.mosaicWidthReference = arrWidth[0];\n } else {\n t.mosaicWidthReference = t.columnWidth;\n }\n },\n\n\n getColsMosaic: function(widthInitial) {\n var t = this;\n\n if (widthInitial === t.width) {\n return t.cols;\n }\n\n var ratio = widthInitial / t.mosaicWidthReference;\n\n if (ratio % 1 >= 0.79) {\n ratio = Math.ceil(ratio);\n } else {\n ratio = Math.floor(ratio);\n }\n\n return Math.min(Math.max(ratio, 1), t.cols);\n },\n\n\n /**\n * Get numbers of columns when t.options.mediaQueries is not an array\n */\n getColumnsAuto: function() {\n var t = this;\n\n if (t.blocks.length === 0) {\n return 1;\n }\n\n var columnWidth = t.blocks.first().data('cbp').widthInitial + t.options.gapVertical;\n\n return Math.max(Math.round(t.width / columnWidth), 1);\n },\n\n\n /**\n * Get numbers of columns if t.options.mediaQueries is an array\n */\n getColumnsBreakpoints: function() {\n var t = this,\n gridWidth = t.width,\n mediaQuery;\n\n $.each(t.options.mediaQueries, function(index, obj) {\n if (gridWidth >= obj.width) {\n mediaQuery = obj;\n return false;\n }\n });\n\n if (!mediaQuery) {\n mediaQuery = t.options.mediaQueries[t.options.mediaQueries.length - 1];\n }\n\n // the columns breakpoints is triggered\n t.triggerEvent('onMediaQueries', mediaQuery.options);\n\n return mediaQuery.cols;\n },\n\n\n /**\n * Defines how the columns dimension & position (width, left) will be truncated\n *\n * If you use `Math.*` there could be some issues with the items on the right side\n * that can have some pixels hidden(1 or 2, depends on the number of columns)\n * but this is a known limitation.\n *\n * If you don't use the built-in captions effects (overlay at hover over an item) returning\n * the possibly floated values may be a solution for the pixels hidden on the right side.\n *\n * The column width must be an integer because browsers have some visual issues\n * with transform properties for caption effects.\n *\n * The initial behaviour was return Math.floor\n *\n */\n columnWidthTruncate: function(value) {\n return Math.floor(value);\n },\n\n\n positionateItems: function() {\n var t = this,\n data;\n\n t.blocksOn.removeClass('cbp-item-off')\n .each(function(index, el) {\n data = $(el).data('cbp');\n\n data.left = data.leftNew;\n data.top = data.topNew;\n\n el.style.left = data.left + 'px';\n el.style.top = data.top + 'px';\n });\n\n t.blocksOff.addClass('cbp-item-off');\n\n // if blocks are sorted (the index ascending is broken) revert\n // this state so the index is ascending again\n if (t.blocksAreSorted) {\n t.sortBlocks(t.blocks, 'index');\n }\n },\n\n\n /**\n * Resize main container vertically\n */\n resizeMainContainer: function() {\n var t = this,\n height = Math.max(t.freeSpaces.slice(-1)[0].topStart - t.options.gapHorizontal, 0),\n maxWidth;\n\n // set max-width to center the grid if I need to\n if (t.options.gridAdjustment === 'alignCenter') {\n maxWidth = 0;\n\n t.blocksOn.each(function(index, el) {\n var data = $(el).data('cbp'),\n rightEdge = data.left + data.width;\n\n if (rightEdge > maxWidth) {\n maxWidth = rightEdge;\n }\n });\n\n t.wrapper[0].style.maxWidth = maxWidth + 'px';\n }\n\n // set container height for `overflow: hidden` to be applied\n if (height === t.height) {\n t.triggerEvent('resizeMainContainer');\n return;\n }\n\n t.obj.style.height = height + 'px';\n\n // if resizeMainContainer is called for the first time skip this event trigger\n if (t.height !== undefined) {\n if (CubePortfolio.private.modernBrowser) {\n t.$obj.one(CubePortfolio.private.transitionend, function() {\n t.$obj.trigger('pluginResize.cbp');\n });\n } else {\n t.$obj.trigger('pluginResize.cbp');\n }\n }\n\n t.height = height;\n\n t.triggerEvent('resizeMainContainer');\n },\n\n\n filterConcat: function(filter) {\n return filter.replace(/\\|/gi, '');\n },\n\n\n pushQueue: function(name, deferred) {\n var t = this;\n\n t.queue[name] = t.queue[name] || [];\n t.queue[name].push(deferred);\n },\n\n\n runQueue: function(name, fn) {\n var t = this,\n queue = t.queue[name] || [];\n\n $.when.apply($, queue).then($.proxy(fn, t));\n },\n\n\n clearQueue: function(name) {\n var t = this;\n\n t.queue[name] = [];\n },\n\n\n /**\n * Register event\n */\n registerEvent: function(name, callbackFunction, oneTime) {\n var t = this;\n\n if (!t.registeredEvents[name]) {\n t.registeredEvents[name] = [];\n }\n\n t.registeredEvents[name].push({\n func: callbackFunction,\n oneTime: oneTime || false\n });\n },\n\n\n /**\n * Trigger event\n */\n triggerEvent: function(name, param) {\n var t = this,\n i, len;\n\n if (t.registeredEvents[name]) {\n for (i = 0, len = t.registeredEvents[name].length; i < len; i++) {\n t.registeredEvents[name][i].func.call(t, param);\n\n if (t.registeredEvents[name][i].oneTime) {\n t.registeredEvents[name].splice(i, 1);\n // function splice change the t.registeredEvents[name] array\n // if event is one time you must set the i to the same value\n // next time and set the length lower\n i--;\n len--;\n }\n }\n }\n },\n\n\n addItems: function(items, callback, position) {\n var t = this;\n\n // wrap .cbp-item-wrap div inside .cbp-item\n t.wrapInner(items, 'cbp-item-wrapper');\n\n t.$ul[position](items.addClass('cbp-item-loading').css({\n top: '100%',\n left: 0\n }));\n\n if (CubePortfolio.private.modernBrowser) {\n items.last().one(CubePortfolio.private.animationend, function() {\n t.addItemsFinish(items, callback);\n });\n } else {\n t.addItemsFinish(items, callback); // @todo - on ie8 & ie9 callback triggers to early\n }\n\n t.loadImages(items, function() {\n t.$obj.addClass('cbp-updateItems');\n\n if (position === 'append') {\n // push to data values of items\n t.storeData(items, t.blocks.length);\n $.merge(t.blocks, items);\n } else {\n // push to data values of items\n t.storeData(items);\n\n var itemsLen = items.length;\n t.blocks.each(function(index, el) {\n $(el).data('cbp').index = itemsLen + index;\n });\n\n // push the new items to t.blocks\n t.blocks = $.merge(items, t.blocks);\n }\n\n t.triggerEvent('addItemsToDOM', items);\n\n t.layoutAndAdjustment();\n\n // if show count was actived, call show count function again\n if (t.elems) {\n CubePortfolio.public.showCounter.call(t.obj, t.elems);\n }\n });\n },\n\n\n addItemsFinish: function(items, callback) {\n var t = this;\n\n t.isAnimating = false;\n\n t.$obj.removeClass('cbp-updateItems');\n items.removeClass('cbp-item-loading');\n\n if ($.isFunction(callback)) {\n callback.call(t, items);\n }\n\n // trigger public event onAfterLoadMore\n t.$obj.trigger('onAfterLoadMore.cbp', [items]);\n },\n\n removeItems: function(items, callback) {\n var t = this;\n\n t.$obj.addClass('cbp-updateItems');\n\n if (CubePortfolio.private.modernBrowser) {\n items.last().one(CubePortfolio.private.animationend, function() {\n t.removeItemsFinish(items, callback);\n });\n } else {\n t.removeItemsFinish(items, callback); // @todo - on ie8 & ie9 callback triggers to early\n }\n\n items.each(function(index, el) {\n t.blocks.each(function(index2, el2) {\n if (el === el2) {\n var removeEl = $(el2);\n\n // remove element from blocks\n t.blocks.splice(index2, 1);\n\n if (CubePortfolio.private.modernBrowser) {\n removeEl.one(CubePortfolio.private.animationend, function() {\n removeEl.remove();\n });\n removeEl.addClass('cbp-removeItem');\n } else {\n removeEl.remove();\n }\n }\n });\n });\n\n t.blocks.each(function(index, el) {\n $(el).data('cbp').index = index;\n });\n\n t.layoutAndAdjustment();\n\n // if show count was actived, call show count function again\n if (t.elems) {\n CubePortfolio.public.showCounter.call(t.obj, t.elems);\n }\n },\n\n\n removeItemsFinish: function(items, callback) {\n var t = this;\n\n t.isAnimating = false;\n\n t.$obj.removeClass('cbp-updateItems');\n\n if ($.isFunction(callback)) {\n callback.call(t, items);\n }\n },\n });\n\n\n /**\n * jQuery plugin initializer\n */\n $.fn.cubeportfolio = function(method, options, callback) {\n return this.each(function() {\n if (typeof method === 'object' || !method) {\n return CubePortfolio.public.init.call(this, method, options);\n } else if (CubePortfolio.public[method]) {\n return CubePortfolio.public[method].call(this, options, callback);\n }\n\n throw new Error('Method ' + method + ' does not exist on jquery.cubeportfolio.js');\n });\n };\n\n CubePortfolio.plugins = {};\n $.fn.cubeportfolio.constructor = CubePortfolio;\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n $.extend(CubePortfolio.prototype, {\n mosaicLayoutReset: function() {\n var t = this;\n\n // flag to be set after the blocks sorting is done\n t.blocksAreSorted = false;\n\n // when I start the layout again all blocks must not be positionated\n // reset height if it was set for addHeightToBlocks\n t.blocksOn.each(function(index, el) {\n $(el).data('cbp').pack = false;\n\n if (t.options.sortToPreventGaps) {\n el.style.height = '';\n }\n });\n\n // array of objects where I keep the spaces available in the grid\n t.freeSpaces = [{\n leftStart: 0,\n leftEnd: t.widthAvailable,\n topStart: 0,\n topEnd: Math.pow(2, 18) // @todo - optimize\n }];\n },\n\n\n mosaicLayout: function() {\n var t = this;\n\n for (var i = 0, blocksLen = t.blocksOn.length; i < blocksLen; i++) {\n var spaceIndexAndBlock = t.getSpaceIndexAndBlock();\n\n // if space or block are null then start sorting\n if (spaceIndexAndBlock === null) {\n t.mosaicLayoutReset();\n\n // sort blocks\n t.sortBlocksToPreventGaps();\n\n // after the sort is finished start the layout again\n t.mosaicLayout();\n\n return;\n }\n\n t.generateF1F2(spaceIndexAndBlock.spaceIndex, spaceIndexAndBlock.dataBlock);\n\n t.generateG1G2G3G4(spaceIndexAndBlock.dataBlock);\n\n t.cleanFreeSpaces();\n\n t.addHeightToBlocks();\n }\n\n // sort the blocks from top to bottom to add properly displayAnimation and animationType\n if (t.blocksAreSorted) {\n t.sortBlocks(t.blocksOn, 'topNew');\n }\n },\n\n\n /**\n * Chose from freeSpaces the best space available\n * Find block by verifying if it can fit in bestSpace(top-left space available)\n * If block doesn't fit in the first space available & t.options.sortToPreventGaps\n * is set to true then sort the blocks and start the layout once again\n * Decide the free rectangle Fi from F to pack the rectangle R into.\n */\n getSpaceIndexAndBlock: function() {\n var t = this,\n spaceIndexAndBlock = null;\n\n $.each(t.freeSpaces, function(index1, space) {\n var widthSpace = space.leftEnd - space.leftStart,\n heightSpace = space.topEnd - space.topStart;\n\n t.blocksOn.each(function(index2, block) {\n var data = $(block).data('cbp');\n\n if (data.pack === true) {\n return;\n }\n\n if (data.widthAndGap <= widthSpace && data.heightAndGap <= heightSpace) {\n // now the rectagle can be positioned\n data.pack = true;\n\n spaceIndexAndBlock = {\n spaceIndex: index1,\n dataBlock: data\n };\n\n data.leftNew = space.leftStart;\n data.topNew = space.topStart;\n\n // if the block is founded => return from this loop\n return false;\n }\n });\n\n // if first space don't have a block and sortToPreventGaps is true => return from loop\n if (!t.blocksAreSorted && t.options.sortToPreventGaps && index1 > 0) {\n spaceIndexAndBlock = null;\n\n return false;\n }\n\n // if space & block is founded => return from loop\n if (spaceIndexAndBlock !== null) {\n return false;\n }\n });\n\n return spaceIndexAndBlock;\n },\n\n\n /**\n * Use the MAXRECTS split scheme to subdivide Fi(space) into F1 and F2 and\n * then remove that space from spaces\n * Insert F1 & F2 in F in place of Fi\n */\n generateF1F2: function(spaceIndex, block) {\n var t = this,\n space = t.freeSpaces[spaceIndex];\n\n var F1 = {\n leftStart: space.leftStart + block.widthAndGap,\n leftEnd: space.leftEnd,\n topStart: space.topStart,\n topEnd: space.topEnd\n };\n\n var F2 = {\n leftStart: space.leftStart,\n leftEnd: space.leftEnd,\n topStart: space.topStart + block.heightAndGap,\n topEnd: space.topEnd\n };\n\n // remove Fi from F\n t.freeSpaces.splice(spaceIndex, 1);\n\n if (F1.leftEnd > F1.leftStart && F1.topEnd > F1.topStart) {\n t.freeSpaces.splice(spaceIndex, 0, F1);\n spaceIndex++;\n }\n\n if (F2.leftEnd > F2.leftStart && F2.topEnd > F2.topStart) {\n t.freeSpaces.splice(spaceIndex, 0, F2);\n }\n },\n\n\n /**\n * Generate G1, G2, G3, G4 from intersaction of t.freeSpaces with block\n */\n generateG1G2G3G4: function(block) {\n var t = this;\n\n var spaces = [];\n\n $.each(t.freeSpaces, function(index, space) {\n var intersectSpace = t.intersectSpaces(space, block);\n\n // if block & space are the same push space in spaces and return\n if (intersectSpace === null) {\n spaces.push(space);\n return;\n }\n\n t.generateG1(space, intersectSpace, spaces);\n t.generateG2(space, intersectSpace, spaces);\n t.generateG3(space, intersectSpace, spaces);\n t.generateG4(space, intersectSpace, spaces);\n });\n\n t.freeSpaces = spaces;\n },\n\n\n /**\n * Return the intersected rectagle of Fi and block\n * If the two spaces don't intersect or are the same return null\n */\n intersectSpaces: function(space1, block) {\n var t = this,\n space2 = {\n leftStart: block.leftNew,\n leftEnd: block.leftNew + block.widthAndGap,\n topStart: block.topNew,\n topEnd: block.topNew + block.heightAndGap,\n };\n\n if (space1.leftStart === space2.leftStart &&\n space1.leftEnd === space2.leftEnd &&\n space1.topStart === space2.topStart &&\n space1.topEnd === space2.topEnd) {\n return null;\n }\n\n var leftStart = Math.max(space1.leftStart, space2.leftStart),\n leftEnd = Math.min(space1.leftEnd, space2.leftEnd),\n topStart = Math.max(space1.topStart, space2.topStart),\n topEnd = Math.min(space1.topEnd, space2.topEnd);\n\n if (leftEnd <= leftStart || topEnd <= topStart) {\n return null;\n }\n\n return {\n leftStart: leftStart,\n leftEnd: leftEnd,\n topStart: topStart,\n topEnd: topEnd\n };\n },\n\n\n /**\n * The top subdivide space\n */\n generateG1: function(space, intersectSpace, spaces) {\n if (space.topStart === intersectSpace.topStart) {\n return;\n }\n\n spaces.push({\n leftStart: space.leftStart,\n leftEnd: space.leftEnd,\n topStart: space.topStart,\n topEnd: intersectSpace.topStart\n });\n },\n\n\n /**\n * The right subdivide space\n */\n generateG2: function(space, intersectSpace, spaces) {\n if (space.leftEnd === intersectSpace.leftEnd) {\n return;\n }\n\n spaces.push({\n leftStart: intersectSpace.leftEnd,\n leftEnd: space.leftEnd,\n topStart: space.topStart,\n topEnd: space.topEnd\n });\n },\n\n\n /**\n * The bottom subdivide space\n */\n generateG3: function(space, intersectSpace, spaces) {\n if (space.topEnd === intersectSpace.topEnd) {\n return;\n }\n\n spaces.push({\n leftStart: space.leftStart,\n leftEnd: space.leftEnd,\n topStart: intersectSpace.topEnd,\n topEnd: space.topEnd\n });\n },\n\n\n /**\n * The left subdivide space\n */\n generateG4: function(space, intersectSpace, spaces) {\n if (space.leftStart === intersectSpace.leftStart) {\n return;\n }\n\n spaces.push({\n leftStart: space.leftStart,\n leftEnd: intersectSpace.leftStart,\n topStart: space.topStart,\n topEnd: space.topEnd\n });\n },\n\n\n /**\n * For every Fi check if is another Fj so Fj contains Fi\n * @todo - refactor\n */\n cleanFreeSpaces: function() {\n var t = this;\n\n // sort space from top to bottom and left to right\n t.freeSpaces.sort(function(space1, space2) {\n if (space1.topStart > space2.topStart) {\n return 1;\n } else if (space1.topStart < space2.topStart) {\n return -1;\n } else {\n if (space1.leftStart > space2.leftStart) {\n return 1;\n } else if (space1.leftStart < space2.leftStart) {\n return -1;\n } else {\n return 0;\n }\n }\n });\n\n t.correctSubPixelValues();\n\n t.removeNonMaximalFreeSpaces();\n },\n\n\n /**\n * If topStart values for spaces are <= 1px then align those spaces\n */\n correctSubPixelValues: function() {\n var t = this,\n i, len, diff, space1, space2;\n\n for (i = 0, len = t.freeSpaces.length - 1; i < len; i++) {\n space1 = t.freeSpaces[i];\n space2 = t.freeSpaces[i + 1];\n\n if ((space2.topStart - space1.topStart) <= 1) {\n space2.topStart = space1.topStart;\n }\n }\n },\n\n\n /**\n * Remove spaces that are not maximal\n * If Fi contains Fj then remove Fj from F\n */\n removeNonMaximalFreeSpaces: function() {\n var t = this;\n\n t.uniqueFreeSpaces();\n\n t.freeSpaces = $.map(t.freeSpaces, function(space1, index1) {\n $.each(t.freeSpaces, function(index2, space2) {\n // don't compare the same free spaces\n if (index1 === index2) {\n return;\n }\n\n if (space2.leftStart <= space1.leftStart &&\n space2.leftEnd >= space1.leftEnd &&\n space2.topStart <= space1.topStart &&\n space2.topEnd >= space1.topEnd) {\n\n space1 = null;\n return false;\n }\n });\n\n return space1;\n });\n },\n\n\n /**\n * Remove duplicates spaces from freeSpaces\n */\n uniqueFreeSpaces: function() {\n var t = this,\n result = [];\n\n $.each(t.freeSpaces, function(index1, space1) {\n $.each(result, function(index2, space2) {\n if (space2.leftStart === space1.leftStart &&\n space2.leftEnd === space1.leftEnd &&\n space2.topStart === space1.topStart &&\n space2.topEnd === space1.topEnd) {\n\n space1 = null;\n return false;\n }\n });\n\n if (space1 !== null) {\n result.push(space1);\n }\n });\n\n t.freeSpaces = result;\n },\n\n\n /**\n * If freeSpaces arrray has only one space and that space overlap the\n * height of the bottom blocks with 1px cut those blocks\n */\n addHeightToBlocks: function() {\n var t = this;\n\n $.each(t.freeSpaces, function(indexSpace, space) {\n t.blocksOn.each(function(indexBlock, block) {\n var data = $(block).data('cbp');\n\n if (data.pack !== true) {\n return;\n }\n\n if (!t.intersectSpaces(space, data)) {\n return;\n }\n\n var diff = space.topStart - data.topNew - data.heightAndGap;\n\n if (diff === -1) {\n block.style.height = (data.height - 1) + 'px';\n }\n });\n });\n },\n\n\n /**\n * Sort by the longer width first, followed by a comparison of the shorter height\n */\n sortBlocksToPreventGaps: function() {\n var t = this;\n\n t.blocksAreSorted = true;\n\n t.blocksOn.sort(function(block1, block2) {\n var data1 = $(block1).data('cbp'),\n data2 = $(block2).data('cbp');\n\n // order desc by width\n if (data1.widthAndGap < data2.widthAndGap) {\n return 1;\n } else if (data1.widthAndGap > data2.widthAndGap) {\n return -1;\n } else {\n // order desc by height\n if (data1.heightAndGap < data2.heightAndGap) {\n return 1;\n } else if (data1.heightAndGap > data2.heightAndGap) {\n return -1;\n } else {\n // order asc by index\n if (data1.index > data2.index) {\n return 1;\n } else if (data1.index < data2.index) {\n return -1;\n }\n }\n }\n });\n },\n\n\n /**\n * Generic sort block function from lower to highest values\n */\n sortBlocks: function(blocks, compare) {\n var t = this;\n\n blocks.sort(function(block1, block2) {\n var data1 = $(block1).data('cbp'),\n data2 = $(block2).data('cbp');\n\n // if the items are equally order them from left to right\n if (data1[compare] > data2[compare]) {\n return 1;\n } else if (data1[compare] < data2[compare]) {\n return -1;\n } else {\n if (data1.leftNew > data2.leftNew) {\n return 1;\n } else if (data1.leftNew < data2.leftNew) {\n return -1;\n } else {\n return 0;\n }\n }\n });\n }\n });\n})(jQuery, window, document);\r\n// Plugin default options\njQuery.fn.cubeportfolio.options = {\n /**\n * Define the wrapper for filters\n * Values: strings that represent the elements in the document (DOM selector).\n */\n filters: '',\n\n\n /**\n * Define the search input element\n * Values: strings that represent the element in the document (DOM selector).\n */\n search: '',\n\n /**\n * Layout Mode for this instance\n * Values: 'grid', 'mosaic' or 'slider'\n */\n layoutMode: 'grid',\n\n /**\n * Sort the items (bigger to smallest) if there are gaps in grid\n * Option available only for `layoutMode: 'mosaic'`\n * Values: true or false\n */\n sortToPreventGaps: false,\n\n /**\n * Mouse and touch drag support\n * Option available only for `layoutMode: 'slider'`\n * Values: true or false\n */\n drag: true,\n\n /**\n * Autoplay the slider\n * Option available only for `layoutMode: 'slider'`\n * Values: true or false\n */\n auto: false,\n\n /**\n * Autoplay interval timeout. Time is set in milisecconds\n * 1000 milliseconds equals 1 second.\n * Option available only for `layoutMode: 'slider'`\n * Values: only integers (ex: 1000, 2000, 5000)\n */\n autoTimeout: 5000,\n\n /**\n * Stops autoplay when user hover the slider\n * Option available only for `layoutMode: 'slider'`\n * Values: true or false\n */\n autoPauseOnHover: true,\n\n /**\n * Show `next` and `prev` buttons for slider\n * Option available only for `layoutMode: 'slider'`\n * Values: true or false\n */\n showNavigation: true,\n\n /**\n * Show pagination for slider\n * Option available only for `layoutMode: 'slider'`\n * Values: true or false\n */\n showPagination: true,\n\n /**\n * Enable slide to first item (last item)\n * Option available only for `layoutMode: 'slider'`\n * Values: true or false\n */\n rewindNav: true,\n\n /**\n * Scroll by page and not by item. This option affect next/prev buttons and drag support\n * Option available only for `layoutMode: 'slider'`\n * Values: true or false\n */\n scrollByPage: false,\n\n /**\n * Default filter for plugin\n * Option available only for `layoutMode: 'grid'`\n * Values: strings that represent the filter name(ex: *, .logo, .web-design, .design)\n */\n defaultFilter: '*',\n\n /**\n * Enable / disable the deeplinking feature when you click on filters\n * Option available only for `layoutMode: 'grid'`\n * Values: true or false\n */\n filterDeeplinking: false,\n\n /**\n * Defines which animation to use for items that will be shown or hidden after a filter has been activated.\n * Option available only for `layoutMode: 'grid'`\n * The plugin use the best browser features available (css3 transitions and transform, GPU acceleration).\n * Values: - fadeOut\n * - quicksand\n * - bounceLeft\n * - bounceTop\n * - bounceBottom\n * - moveLeft\n * - slideLeft\n * - fadeOutTop\n * - sequentially\n * - skew\n * - slideDelay\n * - rotateSides\n * - flipOutDelay\n * - flipOut\n * - unfold\n * - foldLeft\n * - scaleDown\n * - scaleSides\n * - frontRow\n * - flipBottom\n * - rotateRoom\n */\n animationType: 'fadeOut',\n\n /**\n * Adjust the layout grid\n * Values: - default (no adjustment applied)\n * - alignCenter (align the grid on center of the page)\n * - responsive (use a fluid algorithm to resize the grid)\n */\n gridAdjustment: 'responsive',\n\n /**\n * Define `media queries` for columns layout.\n * Format: [{width: a, cols: d}, {width: b, cols: e}, {width: c, cols: f}],\n * where a, b, c are the grid width and d, e, f are the columns displayed.\n * e.g. [{width: 1100, cols: 4}, {width: 800, cols: 3}, {width: 480, cols: 2}] means\n * if (gridWidth >= 1100) => show 4 columns,\n * if (gridWidth >= 800 && gridWidth < 1100) => show 3 columns,\n * if (gridWidth >= 480 && gridWidth < 800) => show 2 columns,\n * if (gridWidth < 480) => show 2 columns\n * Keep in mind that a > b > c\n * This option is available only when `gridAdjustment: 'responsive'`\n * Values: - array of objects of format: [{width: a, cols: d}, {width: b, cols: e}]\n * - you can define as many objects as you want\n * - if this option is `false` Cube Portfolio will adjust the items\n * width automatically (default option for backward compatibility)\n */\n mediaQueries: false,\n\n /**\n * Horizontal gap between items\n * Values: only integers (ex: 1, 5, 10)\n */\n gapHorizontal: 10,\n\n /**\n * Vertical gap between items\n * Values: only integers (ex: 1, 5, 10)\n */\n gapVertical: 10,\n\n /**\n * Caption - the overlay that is shown when you put the mouse over an item\n * NOTE: If you don't want to have captions set this option to an empty string ( caption: '')\n * Values: - pushTop\n * - pushDown\n * - revealBottom\n * - revealTop\n * - revealLeft\n * - moveRight\n * - overlayBottom\n * - overlayBottomPush\n * - overlayBottomReveal\n * - overlayBottomAlong\n * - overlayRightAlong\n * - minimal\n * - fadeIn\n * - zoom\n * - opacity\n * - ''\n */\n caption: 'pushTop',\n\n /**\n * The plugin will display his content based on the following values.\n * Values: - default (the content will be displayed without any animation)\n * - fadeIn (the plugin will fully preload the images before displaying the items with a fadeIn effect)\n * - fadeInToTop (the plugin will fully preload the images before displaying the items with a fadeIn effect from bottom to top)\n * - sequentially (the plugin will fully preload the images before displaying the items with a sequentially effect)\n * - bottomToTop (the plugin will fully preload the images before displaying the items with an animation from bottom to top)\n */\n displayType: 'fadeIn',\n\n /**\n * Defines the speed of displaying the items (when `displayType == default` this option will have no effect)\n * Values: only integers, values in ms (ex: 200, 300, 500)\n */\n displayTypeSpeed: 400,\n\n /**\n * This is used to define any clickable elements you wish to use to trigger lightbox popup on click.\n * Values: strings that represent the elements in the document (DOM selector)\n */\n lightboxDelegate: '.cbp-lightbox',\n\n /**\n * Enable / disable gallery mode\n * Values: true or false\n */\n lightboxGallery: true,\n\n /**\n * Attribute of the delegate item that contains caption for lightbox\n * Values: html atributte\n */\n lightboxTitleSrc: 'data-title',\n\n /**\n * Markup of the lightbox counter\n * Values: html markup\n */\n lightboxCounter: '<div class=\"cbp-popup-lightbox-counter\">{{current}} of {{total}}</div>',\n\n /**\n * This is used to define any clickable elements you wish to use to trigger singlePage popup on click.\n * Values: strings that represent the elements in the document (DOM selector)\n */\n singlePageDelegate: '.cbp-singlePage',\n\n /**\n * Enable / disable the deeplinking feature for singlePage popup\n * Values: true or false\n */\n singlePageDeeplinking: true,\n\n /**\n * Enable / disable the sticky navigation for singlePage popup\n * Values: true or false\n */\n singlePageStickyNavigation: true,\n\n /**\n * Markup of the singlePage counter\n * Values: html markup\n */\n singlePageCounter: '<div class=\"cbp-popup-singlePage-counter\">{{current}} of {{total}}</div>',\n\n /**\n * Defines which animation to use when singlePage appear\n * Values: - left\n * - fade\n * - right\n */\n singlePageAnimation: 'left',\n\n /**\n * Use this callback to update singlePage content.\n * The callback will trigger after the singlePage popup is open.\n * Values: function\n */\n singlePageCallback: null,\n\n /**\n * This is used to define any clickable elements you wish to use to trigger singlePageInline on click.\n * Values: strings that represent the elements in the document (DOM selector)\n */\n singlePageInlineDelegate: '.cbp-singlePageInline',\n\n /**\n * Enable / disable the deeplinking feature for singlePageInline\n * Values: true or false\n */\n singlePageInlineDeeplinking: false,\n\n /**\n * This is used to define the position of singlePageInline block\n * Values: - above ( above current element )\n * - below ( below current elemnet)\n * - top ( positon top )\n * - bottom ( positon bottom )\n */\n singlePageInlinePosition: 'top',\n\n /**\n * Push the open panel in focus and at close go back to the former stage\n * Values: true or false\n */\n singlePageInlineInFocus: true,\n\n /**\n * Use this callback to update singlePageInline content.\n * The callback will trigger after the singlePageInline is open.\n * Values: function\n */\n singlePageInlineCallback: null,\n\n /**\n * Used by the plugins registered to set local options for the current instance\n * Values: object\n */\n plugins: {},\n};\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n var $window = $(window);\n\n CubePortfolio.private = {\n publicEvents: function(eventName, time, beforeEventCallback) {\n var t = this;\n\n // array of objects: {instance: instance, fn: fn}\n t.events = [];\n\n t.initEvent = function(obj) {\n if (t.events.length === 0) {\n t.scrollEvent();\n }\n\n t.events.push(obj);\n };\n\n t.destroyEvent = function(instance) {\n t.events = $.map(t.events, function(val, index) {\n if (val.instance !== instance) {\n return val;\n }\n });\n\n if (t.events.length === 0) {\n // remove scroll event\n $window.off(eventName);\n }\n };\n\n t.scrollEvent = function() {\n var timeout;\n\n // resize\n $window.on(eventName, function() {\n clearTimeout(timeout);\n\n timeout = setTimeout(function() {\n if ($.isFunction(beforeEventCallback) && beforeEventCallback.call(t)) {\n return;\n }\n\n $.each(t.events, function(index, val) {\n val.fn.call(val.instance);\n });\n }, time);\n });\n };\n },\n\n /**\n * Check if cubeportfolio instance exists on current element\n */\n checkInstance: function(method) {\n var t = $.data(this, 'cubeportfolio');\n\n if (!t) {\n throw new Error('cubeportfolio is not initialized. Initialize it before calling ' + method + ' method!');\n }\n\n t.triggerEvent('publicMethod');\n\n return t;\n },\n\n /**\n * Get info about client browser\n */\n browserInfo: function() {\n var t = CubePortfolio.private,\n appVersion = navigator.appVersion,\n transition, animation, perspective;\n\n if (appVersion.indexOf('MSIE 8.') !== -1) { // ie8\n t.browser = 'ie8';\n } else if (appVersion.indexOf('MSIE 9.') !== -1) { // ie9\n t.browser = 'ie9';\n } else if (appVersion.indexOf('MSIE 10.') !== -1) { // ie10\n t.browser = 'ie10';\n } else if (window.ActiveXObject || 'ActiveXObject' in window) { // ie11\n t.browser = 'ie11';\n } else if ((/android/gi).test(appVersion)) { // android\n t.browser = 'android';\n } else if ((/iphone|ipad|ipod/gi).test(appVersion)) { // ios\n t.browser = 'ios';\n } else if ((/chrome/gi).test(appVersion)) {\n t.browser = 'chrome';\n } else {\n t.browser = '';\n }\n\n // check if perspective is available\n perspective = t.styleSupport('perspective');\n\n // if perspective is not available => no modern browser\n if (typeof perspective === undefined) {\n return;\n }\n\n transition = t.styleSupport('transition');\n\n t.transitionend = {\n WebkitTransition: 'webkitTransitionEnd',\n transition: 'transitionend'\n }[transition];\n\n animation = t.styleSupport('animation');\n\n t.animationend = {\n WebkitAnimation: 'webkitAnimationEnd',\n animation: 'animationend'\n }[animation];\n\n t.animationDuration = {\n WebkitAnimation: 'webkitAnimationDuration',\n animation: 'animationDuration'\n }[animation];\n\n t.animationDelay = {\n WebkitAnimation: 'webkitAnimationDelay',\n animation: 'animationDelay'\n }[animation];\n\n t.transform = t.styleSupport('transform');\n\n if (transition && animation && t.transform) {\n t.modernBrowser = true;\n }\n },\n\n\n /**\n * Feature testing for css3\n */\n styleSupport: function(prop) {\n var supportedProp,\n // capitalize first character of the prop to test vendor prefix\n webkitProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1),\n div = document.createElement('div');\n\n // browser supports standard CSS property name\n if (prop in div.style) {\n supportedProp = prop;\n } else if (webkitProp in div.style) {\n supportedProp = webkitProp;\n }\n\n // avoid memory leak in IE\n div = null;\n\n return supportedProp;\n },\n\n };\n\n CubePortfolio.private.browserInfo();\n\n CubePortfolio.private.resize = new CubePortfolio.private.publicEvents('resize.cbp', 50, function() {\n if (window.innerHeight == screen.height) {\n // this is fulll screen mode. don't need to trigger a resize\n return true;\n }\n });\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n CubePortfolio.public = {\n\n /*\n * Init the plugin\n */\n init: function(options, callback) {\n new CubePortfolio(this, options, callback);\n },\n\n /*\n * Destroy the plugin\n */\n destroy: function(callback) {\n var t = CubePortfolio.private.checkInstance.call(this, 'destroy');\n\n t.triggerEvent('beforeDestroy');\n\n // remove data\n $.removeData(this, 'cubeportfolio');\n\n // remove data from blocks\n t.blocks.removeData('cbp');\n\n // remove loading class and .cbp on container\n t.$obj.removeClass('cbp-ready').removeAttr('style');\n\n // remove class from ul\n t.$ul.removeClass('cbp-wrapper');\n\n // remove resize event\n CubePortfolio.private.resize.destroyEvent(t);\n\n t.$obj.off('.cbp');\n\n // reset blocks\n t.blocks.removeClass('cbp-item-off').removeAttr('style');\n\n t.blocks.find('.cbp-item-wrapper').each(function(index, el) {\n var elem = $(el),\n children = elem.children();\n\n if (children.length) {\n children.unwrap();\n } else {\n elem.remove();\n }\n });\n\n if (t.destroySlider) {\n t.destroySlider();\n }\n\n // remove .cbp-wrapper-outer\n t.$ul.unwrap();\n\n // remove .cbp-wrapper\n if (t.addedWrapp) {\n t.blocks.unwrap();\n }\n\n if (t.blocks.length === 0) {\n t.$ul.remove();\n }\n\n $.each(t.plugins, function(key, value) {\n if (typeof value.destroy === 'function') {\n value.destroy();\n }\n });\n\n if ($.isFunction(callback)) {\n callback.call(t);\n }\n\n t.triggerEvent('afterDestroy');\n },\n\n /*\n * Filter the plugin by filterName\n */\n filter: function(param, callback) {\n var t = CubePortfolio.private.checkInstance.call(this, 'filter'),\n expression;\n\n if (t.isAnimating) {\n return;\n }\n\n t.isAnimating = true;\n\n // register callback function\n if ($.isFunction(callback)) {\n t.registerEvent('filterFinish', callback, true);\n }\n\n if ($.isFunction(param)) {\n expression = param.call(t, t.blocks);\n\n if(expression === undefined) {\n throw new Error('When you call cubeportfolio API `filter` method with a param of type function you must return the blocks that will be visible.');\n }\n } else {\n if (t.options.filterDeeplinking) {\n var url = location.href.replace(/#cbpf=(.*?)([#\\?&]|$)/gi, '');\n location.href = url + '#cbpf=' + encodeURIComponent(param);\n\n if (t.singlePage && t.singlePage.url) {\n t.singlePage.url = location.href;\n }\n }\n\n t.defaultFilter = param;\n expression = t.filterConcat(t.defaultFilter);\n }\n\n t.triggerEvent('filterStart', expression);\n\n if (t.singlePageInline && t.singlePageInline.isOpen) {\n t.singlePageInline.close('promise', {\n callback: function() {\n t.computeFilter(expression);\n }\n });\n } else {\n t.computeFilter(expression);\n }\n },\n\n /*\n * Show counter for filters\n */\n showCounter: function(elems, callback) {\n var t = CubePortfolio.private.checkInstance.call(this, 'showCounter');\n\n // register callback function\n if ($.isFunction(callback)) {\n t.registerEvent('showCounterFinish', callback, true);\n }\n\n t.elems = elems;\n\n elems.each(function() {\n var el = $(this);\n\n var count = t.blocks.filter(el.data('filter')).length;\n el.find('.cbp-filter-counter').text(count);\n });\n\n t.triggerEvent('showCounterFinish', elems);\n },\n\n // alias for append public method\n appendItems: function(els, callback) {\n CubePortfolio.public.append.call(this, els, callback);\n },\n\n /*\n * Append elements\n */\n append: function(els, callback) {\n var t = CubePortfolio.private.checkInstance.call(this, 'append'),\n items = $(els).filter('.cbp-item');\n\n if (t.isAnimating || items.length < 1) {\n if ($.isFunction(callback)) {\n callback.call(t, items);\n }\n\n return;\n }\n\n t.isAnimating = true;\n\n if (t.singlePageInline && t.singlePageInline.isOpen) {\n t.singlePageInline.close('promise', {\n callback: function() {\n t.addItems(items, callback, 'append');\n }\n });\n } else {\n t.addItems(items, callback, 'append');\n }\n },\n\n /*\n * Prepend elements\n */\n prepend: function(els, callback) {\n var t = CubePortfolio.private.checkInstance.call(this, 'prepend'),\n items = $(els).filter('.cbp-item');\n\n if (t.isAnimating || items.length < 1) {\n if ($.isFunction(callback)) {\n callback.call(t, items);\n }\n\n return;\n }\n\n t.isAnimating = true;\n\n if (t.singlePageInline && t.singlePageInline.isOpen) {\n t.singlePageInline.close('promise', {\n callback: function() {\n t.addItems(items, callback, 'prepend');\n }\n });\n } else {\n t.addItems(items, callback, 'prepend');\n }\n },\n\n /*\n * Remove elements from the instance and DOM.\n * els - jQuery DOM Object\n */\n remove: function(els, callback) {\n var t = CubePortfolio.private.checkInstance.call(this, 'remove'),\n items = $(els).filter('.cbp-item');\n\n if (t.isAnimating || items.length < 1) {\n if ($.isFunction(callback)) {\n callback.call(t, items);\n }\n\n return;\n }\n\n t.isAnimating = true;\n\n if (t.singlePageInline && t.singlePageInline.isOpen) {\n t.singlePageInline.close('promise', {\n callback: function() {\n t.removeItems(items, callback);\n }\n });\n } else {\n t.removeItems(items, callback);\n }\n },\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n // @todo - gandit cum ar trebui sa fac aici ca nu prea ar merge un plugin\n // pt slider ca as extinde pe CubePortfolio.prototype la fiecare initializare\n $.extend(CubePortfolio.prototype, {\n updateSliderPagination: function() {\n var t = this,\n pages,\n i;\n\n if (t.options.showPagination) {\n // get number of pages\n pages = Math.ceil(t.blocksOn.length / t.cols);\n t.navPagination.empty();\n\n for (i = pages - 1; i >= 0; i--) {\n $('<div/>', {\n 'class': 'cbp-nav-pagination-item',\n 'data-slider-action': 'jumpTo'\n }).appendTo(t.navPagination);\n }\n\n t.navPaginationItems = t.navPagination.children();\n }\n\n // enable disable the nav\n t.enableDisableNavSlider();\n },\n\n destroySlider: function() {\n var t = this;\n\n if (t.options.layoutMode !== 'slider') {\n return;\n }\n\n t.$obj.removeClass('cbp-mode-slider');\n\n t.$ul.removeAttr('style');\n\n t.$ul.off('.cbp');\n\n $(document).off('.cbp'); // @todo - don't interfer with the lightbox\n\n if (t.options.auto) {\n t.stopSliderAuto();\n }\n },\n\n nextSlider: function(el) {\n var t = this;\n\n if (t.isEndSlider()) {\n if (t.isRewindNav()) {\n t.sliderActive = 0;\n } else {\n return;\n }\n } else {\n if (t.options.scrollByPage) {\n t.sliderActive = Math.min(t.sliderActive + t.cols, t.blocksOn.length - t.cols);\n } else {\n t.sliderActive += 1;\n }\n }\n\n t.goToSlider();\n },\n\n prevSlider: function(el) {\n var t = this;\n\n if (t.isStartSlider()) {\n if (t.isRewindNav()) {\n t.sliderActive = t.blocksOn.length - t.cols;\n } else {\n return;\n }\n } else {\n if (t.options.scrollByPage) {\n t.sliderActive = Math.max(0, t.sliderActive - t.cols);\n } else {\n t.sliderActive -= 1;\n }\n }\n\n t.goToSlider();\n },\n\n jumpToSlider: function(el) {\n var t = this,\n index = Math.min(el.index() * t.cols, t.blocksOn.length - t.cols);\n\n if (index === t.sliderActive) {\n return;\n }\n\n t.sliderActive = index;\n\n t.goToSlider();\n },\n\n jumpDragToSlider: function(pos) {\n var t = this,\n jumpWidth,\n offset,\n condition,\n index,\n dragLeft = (pos > 0) ? true : false;\n\n if (t.options.scrollByPage) {\n jumpWidth = t.cols * t.columnWidth;\n offset = t.cols;\n } else {\n jumpWidth = t.columnWidth;\n offset = 1;\n }\n\n pos = Math.abs(pos);\n index = Math.floor(pos / jumpWidth) * offset;\n\n if (pos % jumpWidth > 20) {\n index += offset;\n }\n\n if (dragLeft) { // drag to left\n t.sliderActive = Math.min(t.sliderActive + index, t.blocksOn.length - t.cols);\n } else { // drag to right\n t.sliderActive = Math.max(0, t.sliderActive - index);\n }\n\n t.goToSlider();\n },\n\n isStartSlider: function() {\n return this.sliderActive === 0;\n },\n\n isEndSlider: function() {\n var t = this;\n return (t.sliderActive + t.cols) > t.blocksOn.length - 1;\n },\n\n goToSlider: function() {\n var t = this;\n\n // enable disable the nav\n t.enableDisableNavSlider();\n\n t.updateSliderPosition();\n },\n\n startSliderAuto: function() {\n var t = this;\n\n if (t.isDrag) {\n t.stopSliderAuto();\n return;\n }\n\n t.timeout = setTimeout(function() {\n // go to next slide\n t.nextSlider();\n\n // start auto\n t.startSliderAuto();\n\n }, t.options.autoTimeout);\n },\n\n stopSliderAuto: function() {\n clearTimeout(this.timeout);\n },\n\n enableDisableNavSlider: function() {\n var t = this,\n page,\n method;\n\n if (!t.isRewindNav()) {\n method = (t.isStartSlider()) ? 'addClass' : 'removeClass';\n t.navPrev[method]('cbp-nav-stop');\n\n method = (t.isEndSlider()) ? 'addClass' : 'removeClass';\n t.navNext[method]('cbp-nav-stop');\n }\n\n if (t.options.showPagination) {\n if (t.options.scrollByPage) {\n page = Math.ceil(t.sliderActive / t.cols);\n } else {\n if (t.isEndSlider()) {\n page = t.navPaginationItems.length - 1;\n } else {\n page = Math.floor(t.sliderActive / t.cols);\n }\n }\n\n // add class active on pagination's items\n t.navPaginationItems.removeClass('cbp-nav-pagination-active')\n .eq(page)\n .addClass('cbp-nav-pagination-active');\n }\n\n if (t.customPagination) {\n if (t.options.scrollByPage) {\n page = Math.ceil(t.sliderActive / t.cols);\n } else {\n if (t.isEndSlider()) {\n page = t.customPaginationItems.length - 1;\n } else {\n page = Math.floor(t.sliderActive / t.cols);\n }\n }\n\n // add class active on pagination's items\n t.customPaginationItems.removeClass(t.customPaginationClass)\n .eq(page)\n .addClass(t.customPaginationClass);\n }\n },\n\n /**\n * If slider loop is enabled don't add classes to `next` and `prev` buttons\n */\n isRewindNav: function() {\n var t = this;\n\n if (!t.options.showNavigation) {\n return true;\n }\n\n if (t.blocksOn.length <= t.cols) {\n return false;\n }\n\n if (t.options.rewindNav) {\n return true;\n }\n\n return false;\n },\n\n sliderItemsLength: function() {\n return this.blocksOn.length <= this.cols;\n },\n\n /**\n * Arrange the items in a slider layout\n */\n sliderLayout: function() {\n var t = this;\n\n t.blocksOn.each(function(index, el) {\n var data = $(el).data('cbp');\n\n // update the values with the new ones\n data.leftNew = t.columnWidth * index;\n data.topNew = 0;\n\n t.sliderFreeSpaces.push({\n topStart: data.heightAndGap\n });\n });\n\n t.getFreeSpacesForSlider();\n\n t.$ul.width(t.columnWidth * t.blocksOn.length - t.options.gapVertical);\n },\n\n getFreeSpacesForSlider: function() {\n var t = this;\n\n t.freeSpaces = t.sliderFreeSpaces.slice(t.sliderActive, t.sliderActive + t.cols);\n\n t.freeSpaces.sort(function(space1, space2) {\n if (space1.topStart > space2.topStart) {\n return 1;\n } else if (space1.topStart < space2.topStart) {\n return -1;\n }\n });\n },\n\n updateSliderPosition: function() {\n var t = this,\n value = -t.sliderActive * t.columnWidth;\n\n if (CubePortfolio.private.modernBrowser) {\n t.$ul[0].style[CubePortfolio.private.transform] = 'translate3d(' + value + 'px, 0px, 0)';\n } else {\n t.$ul[0].style.left = value + 'px';\n }\n\n t.getFreeSpacesForSlider();\n\n t.resizeMainContainer();\n },\n\n dragSlider: function() {\n var t = this,\n $document = $(document),\n posInitial,\n pos,\n target,\n ulPosition,\n ulMaxWidth,\n isAnimating = false,\n events = {},\n isTouch = false,\n touchStartEvent,\n isHover = false;\n\n t.isDrag = false;\n\n if (('ontouchstart' in window) ||\n (navigator.maxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0)) {\n\n events = {\n start: 'touchstart.cbp',\n move: 'touchmove.cbp',\n end: 'touchend.cbp'\n };\n\n isTouch = true;\n } else {\n events = {\n start: 'mousedown.cbp',\n move: 'mousemove.cbp',\n end: 'mouseup.cbp'\n };\n }\n\n function dragStart(e) {\n if (t.sliderItemsLength()) {\n return;\n }\n\n if (!isTouch) {\n e.preventDefault();\n } else {\n touchStartEvent = e;\n }\n\n if (t.options.auto) {\n t.stopSliderAuto();\n }\n\n if (isAnimating) {\n $(target).one('click.cbp', function() {\n return false;\n });\n return;\n }\n\n target = $(e.target);\n posInitial = pointerEventToXY(e).x;\n pos = 0;\n ulPosition = -t.sliderActive * t.columnWidth;\n ulMaxWidth = t.columnWidth * (t.blocksOn.length - t.cols);\n\n $document.on(events.move, dragMove);\n $document.on(events.end, dragEnd);\n\n t.$obj.addClass('cbp-mode-slider-dragStart');\n }\n\n function dragEnd(e) {\n t.$obj.removeClass('cbp-mode-slider-dragStart');\n\n // put the state to animate\n isAnimating = true;\n\n if (pos !== 0) {\n target.one('click.cbp', function(e) {\n return false;\n });\n\n // wait a frame to be sure the .cbp-mode-slider-dragStart is removed from the dom\n requestAnimationFrame(function() {\n t.jumpDragToSlider(pos);\n t.$ul.one(CubePortfolio.private.transitionend, afterDragEnd);\n });\n } else {\n afterDragEnd.call(t);\n }\n\n $document.off(events.move);\n $document.off(events.end);\n }\n\n function dragMove(e) {\n pos = posInitial - pointerEventToXY(e).x;\n\n if (pos > 8 || pos < -8) {\n e.preventDefault();\n }\n\n t.isDrag = true;\n\n var value = ulPosition - pos;\n\n if (pos < 0 && pos < ulPosition) { // to right\n value = (ulPosition - pos) / 5;\n } else if (pos > 0 && (ulPosition - pos) < -ulMaxWidth) { // to left\n value = -ulMaxWidth + (ulMaxWidth + ulPosition - pos) / 5;\n }\n\n if (CubePortfolio.private.modernBrowser) {\n t.$ul[0].style[CubePortfolio.private.transform] = 'translate3d(' + value + 'px, 0px, 0)';\n } else {\n t.$ul[0].style.left = value + 'px';\n }\n }\n\n function afterDragEnd() {\n isAnimating = false;\n t.isDrag = false;\n\n if (t.options.auto) {\n if (t.mouseIsEntered) {\n return;\n }\n\n t.startSliderAuto();\n }\n }\n\n function pointerEventToXY(e) {\n if (e.originalEvent !== undefined && e.originalEvent.touches !== undefined) {\n e = e.originalEvent.touches[0];\n }\n\n return {\n x: e.pageX,\n y: e.pageY\n };\n }\n\n t.$ul.on(events.start, dragStart);\n },\n\n /**\n * Reset the slider layout\n */\n sliderLayoutReset: function() {\n var t = this;\n\n t.freeSpaces = [];\n\n t.sliderFreeSpaces = [];\n },\n });\n})(jQuery, window, document);\r\nif (typeof Object.create !== 'function') {\n Object.create = function(obj) {\n function F() {}\n F.prototype = obj;\n return new F();\n };\n}\n\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n// requestAnimationFrame polyfill by Erik M�ller. fixes from Paul Irish and Tino Zijdel\n// MIT license\n(function() {\n var lastTime = 0;\n var vendors = ['moz', 'webkit'];\n\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; x++) {\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\n window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\n }\n\n if (!window.requestAnimationFrame) {\n window.requestAnimationFrame = function(callback, element) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n var id = window.setTimeout(function() {\n callback(currTime + timeToCall);\n },\n timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n }\n\n if (!window.cancelAnimationFrame) {\n window.cancelAnimationFrame = function(id) {\n clearTimeout(id);\n };\n }\n}());\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var t = this;\n\n t.parent = parent;\n\n parent.filterLayout = t.filterLayout;\n\n parent.registerEvent('computeBlocksFinish', function(expression) {\n parent.blocksOn2On = parent.blocksOnInitial.filter(expression);\n parent.blocksOn2Off = parent.blocksOnInitial.not(expression);\n });\n }\n\n // here this value point to parent grid\n Plugin.prototype.filterLayout = function() {\n var t = this;\n\n t.$obj.addClass('cbp-animation-' + t.options.animationType);\n\n // [1] - blocks that are only moving with translate\n t.blocksOn2On.addClass('cbp-item-on2on')\n .each(function(index, el) {\n var data = $(el).data('cbp');\n el.style[CubePortfolio.private.transform] = 'translate3d(' + (data.leftNew - data.left) + 'px, ' + (data.topNew - data.top) + 'px, 0)';\n });\n\n // [2] - blocks than intialy are on but after applying the filter are off\n t.blocksOn2Off.addClass('cbp-item-on2off');\n\n // [3] - blocks that are off and it will be on\n t.blocksOff2On = t.blocksOn\n .filter('.cbp-item-off')\n .removeClass('cbp-item-off')\n .addClass('cbp-item-off2on')\n .each(function(index, el) {\n var data = $(el).data('cbp');\n\n el.style.left = data.leftNew + 'px';\n el.style.top = data.topNew + 'px';\n });\n\n if (t.blocksOn2Off.length) {\n t.blocksOn2Off.last().data('cbp').wrapper.one(CubePortfolio.private.animationend, animationend);\n } else if (t.blocksOff2On.length) {\n t.blocksOff2On.last().data('cbp').wrapper.one(CubePortfolio.private.animationend, animationend);\n } else {\n animationend();\n }\n\n // resize main container height\n t.resizeMainContainer();\n\n function animationend() {\n t.blocks.removeClass('cbp-item-on2off cbp-item-off2on cbp-item-on2on')\n .each(function(index, el) {\n var data = $(el).data('cbp');\n\n data.left = data.leftNew;\n data.top = data.topNew;\n\n el.style.left = data.left + 'px';\n el.style.top = data.top + 'px';\n\n el.style[CubePortfolio.private.transform] = '';\n });\n\n t.blocksOff.addClass('cbp-item-off');\n\n t.$obj.removeClass('cbp-animation-' + t.options.animationType);\n\n t.filterFinish();\n }\n };\n\n Plugin.prototype.destroy = function() {\n var parent = this.parent;\n parent.$obj.removeClass('cbp-animation-' + parent.options.animationType);\n };\n\n CubePortfolio.plugins.animationClassic = function(parent) {\n if (!CubePortfolio.private.modernBrowser || $.inArray(parent.options.animationType, ['boxShadow', 'fadeOut', 'flipBottom', 'flipOut', 'quicksand', 'scaleSides', 'skew']) < 0) {\n return null;\n }\n\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var t = this;\n\n t.parent = parent;\n\n parent.filterLayout = t.filterLayout;\n }\n\n // here this value point to parent grid\n Plugin.prototype.filterLayout = function() {\n var t = this,\n ulClone = t.$ul[0].cloneNode(true);\n\n ulClone.setAttribute('class', 'cbp-wrapper-helper');\n t.wrapper[0].insertBefore(ulClone, t.$ul[0]);\n\n requestAnimationFrame(function() {\n t.$obj.addClass('cbp-animation-' + t.options.animationType);\n\n t.blocksOff.addClass('cbp-item-off');\n\n t.blocksOn.removeClass('cbp-item-off')\n .each(function(index, el) {\n var data = $(el).data('cbp');\n\n data.left = data.leftNew;\n data.top = data.topNew;\n\n el.style.left = data.left + 'px';\n el.style.top = data.top + 'px';\n\n if (t.options.animationType === 'sequentially') {\n data.wrapper[0].style[CubePortfolio.private.animationDelay] = (index * 60) + 'ms';\n }\n });\n\n if (t.blocksOn.length) {\n t.blocksOn.last().data('cbp').wrapper.one(CubePortfolio.private.animationend, animationend);\n } else if (t.blocksOnInitial.length) {\n t.blocksOnInitial.last().data('cbp').wrapper.one(CubePortfolio.private.animationend, animationend);\n } else {\n animationend();\n }\n\n // resize main container height\n t.resizeMainContainer();\n });\n\n function animationend() {\n t.wrapper[0].removeChild(ulClone);\n\n if (t.options.animationType === 'sequentially') {\n t.blocksOn.each(function(index, el) {\n $(el).data('cbp').wrapper[0].style[CubePortfolio.private.animationDelay] = '';\n });\n }\n\n t.$obj.removeClass('cbp-animation-' + t.options.animationType);\n\n t.filterFinish();\n }\n };\n\n Plugin.prototype.destroy = function() {\n var parent = this.parent;\n parent.$obj.removeClass('cbp-animation-' + parent.options.animationType);\n };\n\n CubePortfolio.plugins.animationClone = function(parent) {\n if (!CubePortfolio.private.modernBrowser || $.inArray(parent.options.animationType, ['fadeOutTop', 'slideLeft', 'sequentially']) < 0) {\n return null;\n }\n\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var t = this;\n\n t.parent = parent;\n\n parent.filterLayout = t.filterLayout;\n }\n\n // here this value point to parent grid\n Plugin.prototype.filterLayout = function() {\n var t = this,\n ulClone = t.$ul.clone(true, true);\n\n ulClone[0].setAttribute('class', 'cbp-wrapper-helper');\n t.wrapper[0].insertBefore(ulClone[0], t.$ul[0]);\n\n // hack for safari osx because it doesn't want to work if I set animationDelay\n // on cbp-item-wrapper before I clone the t.$ul\n var items = ulClone.find('.cbp-item').not('.cbp-item-off');\n t.sortBlocks(items, 'top');\n items.children('.cbp-item-wrapper').each(function(index, el) {\n el.style[CubePortfolio.private.animationDelay] = (index * 50) + 'ms';\n });\n\n requestAnimationFrame(function() {\n t.$obj.addClass('cbp-animation-' + t.options.animationType);\n\n t.blocksOff.addClass('cbp-item-off');\n\n t.blocksOn.removeClass('cbp-item-off')\n .each(function(index, el) {\n var data = $(el).data('cbp');\n\n data.left = data.leftNew;\n data.top = data.topNew;\n\n el.style.left = data.left + 'px';\n el.style.top = data.top + 'px';\n\n data.wrapper[0].style[CubePortfolio.private.animationDelay] = (index * 50) + 'ms';\n });\n\n var onLength = t.blocksOn.length,\n offLength = items.length;\n\n if (onLength === 0 && offLength === 0) {\n animationend();\n } else if (onLength < offLength) {\n items.last().children('.cbp-item-wrapper').one(CubePortfolio.private.animationend, animationend);\n } else {\n t.blocksOn.last().data('cbp').wrapper.one(CubePortfolio.private.animationend, animationend);\n }\n\n // resize main container height\n t.resizeMainContainer();\n });\n\n function animationend() {\n t.wrapper[0].removeChild(ulClone[0]);\n\n t.$obj.removeClass('cbp-animation-' + t.options.animationType);\n\n t.blocks.each(function(index, el) {\n $(el).data('cbp').wrapper[0].style[CubePortfolio.private.animationDelay] = '';\n });\n\n t.filterFinish();\n }\n };\n\n Plugin.prototype.destroy = function() {\n var parent = this.parent;\n parent.$obj.removeClass('cbp-animation-' + parent.options.animationType);\n };\n\n CubePortfolio.plugins.animationCloneDelay = function(parent) {\n if (!CubePortfolio.private.modernBrowser || $.inArray(parent.options.animationType, ['3dflip', 'flipOutDelay', 'foldLeft', 'frontRow', 'rotateRoom', 'rotateSides', 'scaleDown', 'slideDelay', 'unfold']) < 0) {\n return null;\n }\n\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var t = this;\n\n t.parent = parent;\n\n parent.filterLayout = t.filterLayout;\n }\n\n // here this value point to parent grid\n Plugin.prototype.filterLayout = function() {\n var t = this,\n ulClone = t.$ul[0].cloneNode(true);\n\n ulClone.setAttribute('class', 'cbp-wrapper-helper');\n t.wrapper[0].insertBefore(ulClone, t.$ul[0]);\n\n requestAnimationFrame(function() {\n t.$obj.addClass('cbp-animation-' + t.options.animationType);\n\n t.blocksOff.addClass('cbp-item-off');\n\n t.blocksOn.removeClass('cbp-item-off')\n .each(function(index, el) {\n var data = $(el).data('cbp');\n\n data.left = data.leftNew;\n data.top = data.topNew;\n\n el.style.left = data.left + 'px';\n el.style.top = data.top + 'px';\n });\n\n if (t.blocksOn.length) {\n t.$ul.one(CubePortfolio.private.animationend, animationend);\n } else if (t.blocksOnInitial.length) {\n $(ulClone).one(CubePortfolio.private.animationend, animationend);\n } else {\n animationend();\n }\n\n // resize main container height\n t.resizeMainContainer();\n });\n\n function animationend() {\n t.wrapper[0].removeChild(ulClone);\n\n t.$obj.removeClass('cbp-animation-' + t.options.animationType);\n\n t.filterFinish();\n }\n };\n\n Plugin.prototype.destroy = function() {\n var parent = this.parent;\n parent.$obj.removeClass('cbp-animation-' + parent.options.animationType);\n };\n\n CubePortfolio.plugins.animationWrapper = function(parent) {\n if (!CubePortfolio.private.modernBrowser || $.inArray(parent.options.animationType, ['bounceBottom', 'bounceLeft', 'bounceTop', 'moveLeft']) < 0) {\n return null;\n }\n\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var t = this;\n var options = parent.options;\n\n t.parent = parent;\n\n t.captionOn = options.caption;\n\n parent.registerEvent('onMediaQueries', function(opt) {\n if (opt && opt.hasOwnProperty('caption')) {\n if (t.captionOn !== opt.caption) {\n t.destroy();\n t.captionOn = opt.caption;\n t.init();\n }\n } else if (t.captionOn !== options.caption) {\n t.destroy();\n t.captionOn = options.caption;\n t.init();\n }\n });\n\n t.init();\n }\n\n Plugin.prototype.init = function() {\n var t = this;\n\n // if caption is active\n if (t.captionOn == '') {\n return;\n }\n\n if (t.captionOn !== 'expand' && !CubePortfolio.private.modernBrowser) {\n t.parent.options.caption = t.captionOn = 'minimal';\n }\n\n // .cbp-caption-active is used only for css\n // so it will not generate a big css from sass if a caption is set\n t.parent.$obj.addClass('cbp-caption-active cbp-caption-' + t.captionOn);\n };\n\n Plugin.prototype.destroy = function() {\n this.parent.$obj.removeClass('cbp-caption-active cbp-caption-' + this.captionOn);\n };\n\n CubePortfolio.plugins.caption = function(parent) {\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var t = this;\n\n t.parent = parent;\n\n parent.registerEvent('initFinish', function() {\n parent.$obj.on('click.cbp', '.cbp-caption-defaultWrap', function(e) {\n e.preventDefault();\n\n if (parent.isAnimating) {\n return;\n }\n\n parent.isAnimating = true;\n\n var defaultWrap = $(this),\n activeWrap = defaultWrap.next(),\n caption = defaultWrap.parent(),\n endStyle = {\n position: 'relative',\n height: activeWrap.outerHeight(true)\n },\n startStyle = {\n position: 'relative',\n height: 0\n };\n\n parent.$obj.addClass('cbp-caption-expand-active');\n\n // swap endStyle & startStyle\n if (caption.hasClass('cbp-caption-expand-open')) {\n var temp = startStyle;\n startStyle = endStyle;\n endStyle = temp;\n caption.removeClass('cbp-caption-expand-open');\n }\n\n activeWrap.css(endStyle);\n\n parent.$obj.one('pluginResize.cbp', function() {\n parent.isAnimating = false;\n parent.$obj.removeClass('cbp-caption-expand-active');\n\n if (endStyle.height === 0) {\n caption.removeClass('cbp-caption-expand-open');\n activeWrap.attr('style', '');\n }\n });\n\n // reposition the blocks\n parent.layoutAndAdjustment();\n\n // set activeWrap to 0 so I can start animation in the next frame\n activeWrap.css(startStyle);\n\n // delay animation\n requestAnimationFrame(function() {\n caption.addClass('cbp-caption-expand-open');\n\n activeWrap.css(endStyle);\n\n // used by slider layoutMode\n parent.triggerEvent('gridAdjust');\n\n parent.triggerEvent('resizeGrid');\n });\n });\n }, true);\n }\n\n Plugin.prototype.destroy = function() {\n this.parent.$obj.find('.cbp-caption-defaultWrap').off('click.cbp').parent().removeClass('cbp-caption-expand-active');\n };\n\n CubePortfolio.plugins.captionExpand = function(parent) {\n if (parent.options.caption !== 'expand') {\n return null;\n }\n\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var deferred = $.Deferred();\n\n parent.pushQueue('delayFrame', deferred);\n\n parent.registerEvent('initEndWrite', function() {\n parent.blocksOn.each(function(index, el) {\n el.style[CubePortfolio.private.animationDelay] = (index * parent.options.displayTypeSpeed) + 'ms';\n });\n\n parent.$obj.addClass('cbp-displayType-bottomToTop');\n\n // get last element\n parent.blocksOn.last().one(CubePortfolio.private.animationend, function() {\n parent.$obj.removeClass('cbp-displayType-bottomToTop');\n\n parent.blocksOn.each(function(index, el) {\n el.style[CubePortfolio.private.animationDelay] = '';\n });\n\n // resolve event after the animation is finished\n deferred.resolve();\n });\n }, true);\n }\n\n CubePortfolio.plugins.displayBottomToTop = function(parent) {\n if (!CubePortfolio.private.modernBrowser || parent.options.displayType !== 'bottomToTop' || parent.blocksOn.length === 0) {\n return null;\n }\n\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var deferred = $.Deferred();\n\n parent.pushQueue('delayFrame', deferred);\n\n parent.registerEvent('initEndWrite', function() {\n parent.obj.style[CubePortfolio.private.animationDuration] = parent.options.displayTypeSpeed + 'ms';\n\n parent.$obj.addClass('cbp-displayType-fadeIn');\n\n parent.$obj.one(CubePortfolio.private.animationend, function() {\n parent.$obj.removeClass('cbp-displayType-fadeIn');\n\n parent.obj.style[CubePortfolio.private.animationDuration] = '';\n\n // resolve event after the animation is finished\n deferred.resolve();\n });\n }, true);\n }\n\n CubePortfolio.plugins.displayFadeIn = function(parent) {\n if (!CubePortfolio.private.modernBrowser || (parent.options.displayType !== 'lazyLoading' && parent.options.displayType !== 'fadeIn') || parent.blocksOn.length === 0) {\n return null;\n }\n\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var deferred = $.Deferred();\n\n parent.pushQueue('delayFrame', deferred);\n\n parent.registerEvent('initEndWrite', function() {\n parent.obj.style[CubePortfolio.private.animationDuration] = parent.options.displayTypeSpeed + 'ms';\n\n parent.$obj.addClass('cbp-displayType-fadeInToTop');\n\n parent.$obj.one(CubePortfolio.private.animationend, function() {\n parent.$obj.removeClass('cbp-displayType-fadeInToTop');\n\n parent.obj.style[CubePortfolio.private.animationDuration] = '';\n\n // resolve event after the animation is finished\n deferred.resolve();\n });\n }, true);\n }\n\n CubePortfolio.plugins.displayFadeInToTop = function(parent) {\n if (!CubePortfolio.private.modernBrowser || parent.options.displayType !== 'fadeInToTop' || parent.blocksOn.length === 0) {\n return null;\n }\n\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var deferred = $.Deferred();\n\n parent.pushQueue('delayFrame', deferred);\n\n parent.registerEvent('initEndWrite', function() {\n parent.blocksOn.each(function(index, el) {\n el.style[CubePortfolio.private.animationDelay] = (index * parent.options.displayTypeSpeed) + 'ms';\n });\n\n parent.$obj.addClass('cbp-displayType-sequentially');\n\n // get last element\n parent.blocksOn.last().one(CubePortfolio.private.animationend, function() {\n parent.$obj.removeClass('cbp-displayType-sequentially');\n\n parent.blocksOn.each(function(index, el) {\n el.style[CubePortfolio.private.animationDelay] = '';\n });\n\n // resolve event after the animation is finished\n deferred.resolve();\n });\n }, true);\n }\n\n CubePortfolio.plugins.displaySequentially = function(parent) {\n if (!CubePortfolio.private.modernBrowser || parent.options.displayType !== 'sequentially' || parent.blocksOn.length === 0) {\n return null;\n }\n\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var t = this;\n\n t.parent = parent;\n\n t.filters = $(parent.options.filters);\n t.filterData = [];\n\n parent.registerEvent('afterPlugins', function(elems) {\n // set default filter if it's present in url\n t.filterFromUrl();\n t.registerFilter();\n });\n\n // reset filters active class after the search is used\n parent.registerEvent('resetFiltersVisual', function() {\n var arr = parent.options.defaultFilter.split('|');\n\n t.filters.each(function(index, el) {\n var items = $(el).find('.cbp-filter-item');\n\n $.each(arr, function(index, val) {\n var item = items.filter('[data-filter=\"' + val + '\"]');\n if (item.length) {\n item.addClass('cbp-filter-item-active').siblings().removeClass('cbp-filter-item-active');\n arr.splice(index, 1);\n return false;\n }\n });\n });\n\n parent.defaultFilter = parent.options.defaultFilter;\n });\n }\n\n Plugin.prototype.registerFilter = function() {\n var t = this,\n parent = t.parent,\n filtersCallback,\n arr = parent.defaultFilter.split('|');\n\n t.wrap = t.filters.find('.cbp-l-filters-dropdownWrap')\n .on({\n 'mouseover.cbp': function() {\n $(this).addClass('cbp-l-filters-dropdownWrap-open');\n },\n 'mouseleave.cbp': function() {\n $(this).removeClass('cbp-l-filters-dropdownWrap-open');\n }\n });\n\n t.filters.each(function(index, el) {\n var filter = $(el),\n filterName = '*',\n items = filter.find('.cbp-filter-item'),\n dropdown = {};\n\n if (filter.hasClass('cbp-l-filters-dropdown')) {\n dropdown.wrap = filter.find('.cbp-l-filters-dropdownWrap');\n dropdown.header = filter.find('.cbp-l-filters-dropdownHeader');\n dropdown.headerText = dropdown.header.text();\n }\n\n // activate counter for filters\n parent.$obj.cubeportfolio('showCounter', items);\n\n $.each(arr, function(index, val) {\n if (items.filter('[data-filter=\"' + val + '\"]').length) {\n filterName = val;\n arr.splice(index, 1);\n return false;\n }\n });\n\n $.data(el, 'filterName', filterName);\n t.filterData.push(el);\n\n t.filtersCallback(dropdown, items.filter('[data-filter=\"' + filterName + '\"]'));\n\n items.on('click.cbp', function() {\n var item = $(this);\n\n if (item.hasClass('cbp-filter-item-active') || parent.isAnimating) {\n return;\n }\n\n t.filtersCallback(dropdown, item);\n\n $.data(el, 'filterName', item.data('filter'));\n\n var name = $.map(t.filterData, function(el, index) {\n var f = $.data(el, 'filterName');\n return (f !== \"\" && f !== '*') ? f : null;\n });\n\n if (name.length < 1) {\n name = ['*'];\n }\n\n var filterJoin = name.join('|');\n\n if (parent.defaultFilter !== filterJoin) {\n // filter the items\n parent.$obj.cubeportfolio('filter', filterJoin);\n }\n });\n });\n };\n\n Plugin.prototype.filtersCallback = function(dropdown, item) {\n if (!$.isEmptyObject(dropdown)) {\n dropdown.wrap.trigger('mouseleave.cbp');\n\n if (dropdown.headerText) {\n dropdown.headerText = '';\n } else {\n dropdown.header.html(item.html());\n }\n }\n\n item.addClass('cbp-filter-item-active').siblings().removeClass('cbp-filter-item-active');\n };\n\n /**\n * Check if filters are present in url\n */\n Plugin.prototype.filterFromUrl = function() {\n var match = /#cbpf=(.*?)([#\\?&]|$)/gi.exec(location.href);\n\n if (match !== null) {\n this.parent.defaultFilter = decodeURIComponent(match[1]);\n }\n };\n\n Plugin.prototype.destroy = function() {\n var t = this;\n\n t.filters.find('.cbp-filter-item').off('.cbp');\n t.wrap.off('.cbp');\n };\n\n CubePortfolio.plugins.filters = function(parent) {\n if (parent.options.filters === '') {\n return null;\n }\n\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var gapVerticalInitial = parent.options.gapVertical;\n var gapHorizontalInitial = parent.options.gapHorizontal;\n\n parent.registerEvent('onMediaQueries', function(opt) {\n parent.options.gapVertical = (opt && opt.hasOwnProperty('gapVertical'))? opt.gapVertical : gapVerticalInitial;\n parent.options.gapHorizontal = (opt && opt.hasOwnProperty('gapHorizontal'))? opt.gapHorizontal : gapHorizontalInitial;\n\n parent.blocks.each(function(index, el) {\n var data = $(el).data('cbp');\n\n data.widthAndGap = data.width + parent.options.gapVertical;\n data.heightAndGap = data.height + parent.options.gapHorizontal;\n });\n });\n }\n\n CubePortfolio.plugins.changeGapOnMediaQueries = function(parent) {\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var options = {};\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var t = this;\n\n t.parent = parent;\n\n t.options = $.extend({}, options, t.parent.options.plugins.inlineSlider);\n\n t.runInit();\n\n parent.registerEvent('addItemsToDOM', function() {\n t.runInit();\n });\n\n }\n\n function InitSlider(slider) {\n var t = this;\n\n if (slider.hasClass('cbp-slider-inline-ready')) {\n return;\n }\n\n slider.addClass('cbp-slider-inline-ready');\n\n t.items = slider.find('.cbp-slider-wrapper').children('.cbp-slider-item');\n\n t.active = t.items.filter('.cbp-slider-item--active').index();\n t.total = t.items.length - 1;\n\n t.updateLeft();\n\n slider.find('.cbp-slider-next').on('click.cbp', function(e) {\n e.preventDefault();\n\n if (t.active < t.total) {\n t.active++;\n t.updateLeft();\n } else if (t.active === t.total) {\n t.active = 0;\n t.updateLeft();\n }\n });\n\n slider.find('.cbp-slider-prev').on('click.cbp', function(e) {\n e.preventDefault();\n\n if (t.active > 0) {\n t.active--;\n t.updateLeft();\n } else if (t.active === 0) {\n t.active = t.total;\n t.updateLeft();\n }\n });\n };\n\n InitSlider.prototype.updateLeft = function() {\n var t = this;\n\n t.items.removeClass('cbp-slider-item--active');\n t.items.eq(t.active).addClass('cbp-slider-item--active');\n\n t.items.each(function(index, el) {\n el.style.left = (index - t.active) + '00%';\n });\n };\n\n Plugin.prototype.runInit = function() {\n var t = this;\n\n t.parent.$obj.find('.cbp-slider-inline').not('.cbp-slider-inline-ready').each(function(index, el) {\n var slider = $(el);\n var activeImage = slider.find('.cbp-slider-item--active').find('img')[0];\n\n if (activeImage.hasAttribute('data-cbp-src')) {\n t.parent.$obj.on('lazyLoad.cbp', function(e, image) {\n if (image.src === activeImage.src) {\n new InitSlider(slider);\n }\n });\n } else {\n new InitSlider(slider);\n }\n });\n };\n\n Plugin.prototype.destroy = function() {\n var t = this;\n\n t.parent.$obj.find('.cbp-slider-next').off('click.cbp');\n t.parent.$obj.find('.cbp-slider-prev').off('click.cbp');\n\n t.parent.$obj.off('lazyLoad.cbp');\n\n t.parent.$obj.find('.cbp-slider-inline').each(function(index, el) {\n var slider = $(el);\n\n slider.removeClass('cbp-slider-inline-ready');\n\n var items = slider.find('.cbp-slider-item');\n items.removeClass('cbp-slider-item--active');\n\n items.removeAttr('style');\n\n items.eq(0).addClass('cbp-slider-item--active');\n });\n };\n\n CubePortfolio.plugins.inlineSlider = function(parent) {\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var options = {\n loadingClass: 'cbp-lazyload',\n threshold: 400, // loads images 150px before they're visible\n };\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n var $window = $(window);\n\n // add scroll event to page for lazyLoad\n CubePortfolio.private.lazyLoadScroll = new CubePortfolio.private.publicEvents('scroll.cbplazyLoad', 50);\n\n function Plugin(parent) {\n var t = this;\n\n t.parent = parent;\n\n t.options = $.extend({}, options, t.parent.options.plugins.lazyLoad);\n\n parent.registerEvent('initFinish', function() {\n t.loadImages();\n\n parent.registerEvent('resizeMainContainer', function() {\n t.loadImages();\n });\n\n parent.registerEvent('filterFinish', function() {\n t.loadImages();\n });\n\n CubePortfolio.private.lazyLoadScroll.initEvent({\n instance: t,\n fn: t.loadImages\n });\n }, true);\n\n }\n\n Plugin.prototype.loadImages = function() {\n var t = this;\n\n var imgs = t.parent.$obj.find('img').filter('[data-cbp-src]');\n\n if (imgs.length === 0) {\n return;\n }\n\n t.screenHeight = $window.height();\n\n imgs.each(function(index, el) {\n var parentNode = $(el.parentNode);\n\n if (!t.isElementInScreen(el)) {\n parentNode.addClass(t.options.loadingClass);\n return;\n }\n\n var dataSrc = el.getAttribute('data-cbp-src');\n\n if (t.parent.checkSrc($('<img>').attr('src', dataSrc)) === null) {\n t.removeLazyLoad(el, dataSrc);\n parentNode.removeClass(t.options.loadingClass);\n } else {\n parentNode.addClass(t.options.loadingClass);\n $('<img>').on('load.cbp error.cbp', function() {\n t.removeLazyLoad(el, dataSrc, parentNode);\n }).attr('src', dataSrc); // for ie8\n }\n });\n };\n\n Plugin.prototype.removeLazyLoad = function(el, dataSrc, parentNode) {\n var t = this;\n\n el.src = dataSrc;\n el.removeAttribute('data-cbp-src');\n t.parent.removeAttrImage(el);\n\n // trigger public event\n t.parent.$obj.trigger('lazyLoad.cbp', el);\n\n if (parentNode) {\n if (CubePortfolio.private.modernBrowser) {\n $(el).one(CubePortfolio.private.transitionend, function() {\n parentNode.removeClass(t.options.loadingClass);\n });\n } else {\n parentNode.removeClass(t.options.loadingClass);\n }\n }\n };\n\n Plugin.prototype.isElementInScreen = function(el) {\n var t = this;\n\n var bound = el.getBoundingClientRect();\n var bottom = bound.bottom + t.options.threshold;\n var screenHeight = t.screenHeight + bottom - (bound.top - t.options.threshold);\n\n return bottom >= 0 && bottom <= screenHeight;\n };\n\n Plugin.prototype.destroy = function() {\n CubePortfolio.private.lazyLoadScroll.destroyEvent(this);\n };\n\n CubePortfolio.plugins.lazyLoad = function(parent) {\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var options = {\n /**\n * Define the wrapper for loadMore\n * Values: strings that represent the elements in the document (DOM selector).\n */\n selector: '',\n\n /**\n * How the loadMore functionality should behave. Load on click on the button or\n * automatically when you scroll the page\n * Values: - click\n * - auto\n */\n action: 'click',\n /**\n * How many items to load when you click on the loadMore button\n * Values: positive integer\n */\n loadItems: 3,\n };\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var t = this;\n\n t.parent = parent;\n\n t.options = $.extend({}, options, t.parent.options.plugins.loadMore);\n\n t.loadMore = $(t.options.selector).find('.cbp-l-loadMore-link');\n\n // load click or auto action\n if (t.loadMore.length === 0) {\n return;\n }\n\n t.loadItems = t.loadMore.find('.cbp-l-loadMore-loadItems');\n\n if (t.loadItems.text() === '0') {\n t.loadMore.addClass('cbp-l-loadMore-stop');\n }\n\n parent.registerEvent('filterStart', function(filter) {\n t.populateItems().then(function() {\n var itemsLen = t.items.filter(filter).length;\n\n if (itemsLen > 0) {\n t.loadMore.removeClass('cbp-l-loadMore-stop');\n t.loadItems.html(itemsLen);\n } else {\n t.loadMore.addClass('cbp-l-loadMore-stop');\n }\n });\n });\n\n t[t.options.action]();\n }\n\n Plugin.prototype.populateItems = function() {\n var t = this;\n\n if (t.items) {\n return $.Deferred().resolve();\n }\n\n t.items = $();\n\n // perform ajax request\n return $.ajax({\n url: t.loadMore.attr('href'),\n type: 'GET',\n dataType: 'HTML'\n }).done(function(result) {\n var resultFlat = $.map(result.split(/\\r?\\n/), function(item, index) {\n return $.trim(item);\n }).join('');\n\n if (resultFlat.length === 0) {\n return;\n }\n\n $.each($.parseHTML(resultFlat), function(index, el) {\n if ($(el).hasClass('cbp-item')) {\n t.items = t.items.add(el);\n } else {\n $.each(el.children, function(index, el2) {\n if ($(el2).hasClass('cbp-item')) {\n t.items = t.items.add(el2);\n }\n });\n }\n });\n }).fail(function() {\n t.items = null;\n t.loadMore.removeClass('cbp-l-loadMore-loading');\n });\n };\n\n Plugin.prototype.populateInsertItems = function(callback) {\n var t = this;\n var insertItems = [];\n var filter = t.parent.defaultFilter;\n\n var foundItem = 0;\n t.items.each(function(index, el) {\n if (foundItem === t.options.loadItems) {\n return false;\n }\n\n if (!filter || (filter === '*')) {\n insertItems.push(el);\n t.items[index] = null;\n\n foundItem++;\n } else {\n if ($(el).filter(filter).length) {\n insertItems.push(el);\n t.items[index] = null;\n\n foundItem++;\n }\n }\n });\n\n t.items = t.items.map(function(index, el) {\n return el;\n });\n\n // stop the loadMore\n if (insertItems.length === 0) {\n t.loadMore.removeClass('cbp-l-loadMore-loading').addClass('cbp-l-loadMore-stop');\n return;\n }\n\n t.parent.$obj.cubeportfolio('append', insertItems, callback);\n }\n\n Plugin.prototype.click = function() {\n var t = this;\n\n t.loadMore.on('click.cbp', function(e) {\n e.preventDefault();\n\n if (t.parent.isAnimating || t.loadMore.hasClass('cbp-l-loadMore-stop')) {\n return;\n }\n\n // set loading status\n t.loadMore.addClass('cbp-l-loadMore-loading');\n\n t.populateItems().then(function() {\n t.populateInsertItems(appendCallback);\n });\n });\n\n function appendCallback() {\n // remove class from t.loadMore\n t.loadMore.removeClass('cbp-l-loadMore-loading');\n\n var filter = t.parent.defaultFilter;\n var itemsInLoadMore;\n\n if (!filter || (filter === '*')) {\n itemsInLoadMore = t.items.length;\n } else {\n itemsInLoadMore = t.items.filter(filter).length;\n }\n\n // check if we have more loadMore\n if (itemsInLoadMore === 0) {\n t.loadMore.addClass('cbp-l-loadMore-stop');\n } else {\n t.loadItems.html(itemsInLoadMore);\n }\n }\n };\n\n Plugin.prototype.auto = function() {\n var t = this;\n var $window = $(window);\n var isActive = false;\n\n // add scroll event to page for loadMore\n CubePortfolio.private.loadMoreScroll = new CubePortfolio.private.publicEvents('scroll.loadMore', 100);\n\n t.parent.$obj.one('initComplete.cbp', function() {\n // add events for scroll\n t.loadMore\n .addClass('cbp-l-loadMore-loading')\n .on('click.cbp', function(e) {\n e.preventDefault();\n });\n\n CubePortfolio.private.loadMoreScroll.initEvent({\n instance: t,\n fn: function() {\n if (!t.parent.isAnimating) {\n // get new items on scroll\n getNewItems();\n }\n }\n });\n\n // when the filter is completed\n t.parent.$obj.on('filterComplete.cbp', function() {\n getNewItems();\n });\n\n // trigger method\n getNewItems();\n });\n\n function getNewItems() {\n if (isActive || t.loadMore.hasClass('cbp-l-loadMore-stop')) {\n return;\n }\n\n // add a treshold\n var topLoadMore = t.loadMore.offset().top - 200;\n var topWindow = $window.scrollTop() + $window.height();\n\n if (topLoadMore > topWindow) {\n return;\n }\n\n // this job is now busy\n isActive = true;\n\n t.populateItems().then(function() {\n t.populateInsertItems(appendCallback);\n }).fail(function() {\n // make the job inactive\n isActive = false;\n });\n }\n\n function appendCallback() {\n var itemsInLoadMore;\n var filter = t.parent.defaultFilter;\n\n if (!filter || (filter === '*')) {\n itemsInLoadMore = t.items.length;\n } else {\n itemsInLoadMore = t.items.filter(filter).length;\n }\n\n // check if we have more loadMore\n if (itemsInLoadMore === 0) {\n t.loadMore.removeClass('cbp-l-loadMore-loading').addClass('cbp-l-loadMore-stop');\n } else {\n t.loadItems.html(itemsInLoadMore);\n\n $window.trigger('scroll.loadMore');\n }\n\n // make the job inactive\n isActive = false;\n\n // remove events\n if (t.items.length === 0) {\n CubePortfolio.private.loadMoreScroll.destroyEvent(t);\n t.parent.$obj.off('filterComplete.cbp');\n }\n }\n };\n\n Plugin.prototype.destroy = function() {\n this.loadMore.off('.cbp');\n\n if (CubePortfolio.private.loadMoreScroll) {\n CubePortfolio.private.loadMoreScroll.destroyEvent(this);\n }\n };\n\n CubePortfolio.plugins.loadMore = function(parent) {\n var plugins = parent.options.plugins;\n\n // backward compatibility\n if (parent.options.loadMore) {\n if (!plugins.loadMore) {\n plugins.loadMore = {};\n }\n\n plugins.loadMore.selector = parent.options.loadMore;\n }\n\n // backward compatibility\n if (parent.options.loadMoreAction) {\n if (!plugins.loadMore) {\n plugins.loadMore = {};\n }\n\n plugins.loadMore.action = parent.options.loadMoreAction;\n }\n\n if (!plugins.loadMore || !plugins.loadMore.selector) {\n return null;\n }\n\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n var options = {\n delay: 0,\n };\n\n var popup = {\n /**\n * init function for popup\n * @param cubeportfolio = cubeportfolio instance\n * @param type = 'lightbox' or 'singlePage'\n */\n init: function(cubeportfolio, type) {\n var t = this,\n currentBlock;\n\n // remember cubeportfolio instance\n t.cubeportfolio = cubeportfolio;\n\n // remember if this instance is for lightbox or for singlePage\n t.type = type;\n\n // remember if the popup is open or not\n t.isOpen = false;\n\n t.options = t.cubeportfolio.options;\n\n if (type === 'lightbox') {\n t.cubeportfolio.registerEvent('resizeWindow', function() {\n t.resizeImage();\n });\n\n t.localOptions = $.extend({}, options, t.cubeportfolio.options.plugins.lightbox);\n }\n\n if (type === 'singlePageInline') {\n t.height = 0;\n\n // create markup, css and add events for SinglePageInline\n t.createMarkupSinglePageInline();\n\n t.cubeportfolio.registerEvent('resizeGrid', function() {\n if (t.isOpen) {\n // @todo must add support for this features in the future\n t.close(); // workaround\n }\n });\n\n if (t.options.singlePageInlineDeeplinking) {\n t.url = location.href;\n\n if (t.url.slice(-1) === '#') {\n t.url = t.url.slice(0, -1);\n }\n\n var links = t.url.split('#cbpi=');\n var url = links.shift(); // remove first item\n\n $.each(links, function(index, link) {\n t.cubeportfolio.blocksOn.each(function(index1, el) {\n var singlePageInline = $(el).find(t.options.singlePageInlineDelegate + '[href=\"' + link + '\"]');\n\n if (singlePageInline.length) {\n currentBlock = singlePageInline;\n return false;\n }\n });\n\n if (currentBlock) {\n return false;\n }\n });\n\n if (currentBlock) {\n t.cubeportfolio.registerEvent('initFinish', function() {\n t.openSinglePageInline(t.cubeportfolio.blocksOn, currentBlock[0]);\n }, true);\n }\n }\n\n t.localOptions = $.extend({}, options, t.cubeportfolio.options.plugins.singlePageInline);\n\n return;\n }\n\n // create markup, css and add events for lightbox and singlePage\n t.createMarkup();\n\n if (type === 'singlePage') {\n t.cubeportfolio.registerEvent('resizeWindow', function() {\n if (t.options.singlePageStickyNavigation) {\n\n var width = t.contentWrap[0].clientWidth;\n\n if (width > 0) {\n t.navigationWrap.width(width);\n\n // set navigation width='window width' to center the divs\n t.navigation.width(width);\n }\n\n }\n });\n\n if (t.options.singlePageDeeplinking) {\n t.url = location.href;\n\n if (t.url.slice(-1) === '#') {\n t.url = t.url.slice(0, -1);\n }\n\n var links = t.url.split('#cbp=');\n var url = links.shift(); // remove first item\n\n $.each(links, function(index, link) {\n t.cubeportfolio.blocksOn.each(function(index1, el) {\n var singlePage = $(el).find(t.options.singlePageDelegate + '[href=\"' + link + '\"]');\n\n if (singlePage.length) {\n currentBlock = singlePage;\n return false;\n }\n });\n\n if (currentBlock) {\n return false;\n }\n });\n\n if (currentBlock) {\n t.url = url;\n\n var self = currentBlock,\n gallery = self.attr('data-cbp-singlePage'),\n blocks = [];\n\n if (gallery) {\n blocks = self.closest($('.cbp-item')).find('[data-cbp-singlePage=\"' + gallery + '\"]');\n } else {\n t.cubeportfolio.blocksOn.each(function(index, el) {\n var item = $(el);\n\n if (item.not('.cbp-item-off')) {\n item.find(t.options.singlePageDelegate).each(function(index2, el2) {\n if (!$(el2).attr('data-cbp-singlePage')) {\n blocks.push(el2);\n }\n });\n }\n });\n }\n\n t.openSinglePage(blocks, currentBlock[0]);\n } else if (links.length) { // @todo - hack to load items from loadMore\n var fakeLink = document.createElement('a');\n fakeLink.setAttribute('href', links[0]);\n t.openSinglePage([fakeLink], fakeLink);\n }\n }\n\n t.localOptions = $.extend({}, options, t.cubeportfolio.options.plugins.singlePage);\n }\n },\n\n /**\n * Create markup, css and add events\n */\n createMarkup: function() {\n var t = this,\n animationCls = '';\n\n if (t.type === 'singlePage') {\n if (t.options.singlePageAnimation !== 'left') {\n animationCls = ' cbp-popup-singlePage-' + t.options.singlePageAnimation;\n }\n }\n\n // wrap element\n t.wrap = $('<div/>', {\n 'class': 'cbp-popup-wrap cbp-popup-' + t.type + animationCls,\n 'data-action': (t.type === 'lightbox') ? 'close' : ''\n }).on('click.cbp', function(e) {\n if (t.stopEvents) {\n return;\n }\n\n var action = $(e.target).attr('data-action');\n\n if (t[action]) {\n t[action]();\n e.preventDefault();\n }\n });\n\n if (t.type === 'singlePage') {\n t.contentWrap = $('<div/>', {\n 'class': 'cbp-popup-content-wrap'\n }).appendTo(t.wrap);\n\n if (CubePortfolio.private.browser === 'ios') {\n t.contentWrap.css('overflow', 'auto');\n }\n\n // content element\n t.content = $('<div/>', {\n 'class': 'cbp-popup-content'\n }).appendTo(t.contentWrap);\n } else {\n // content element\n t.content = $('<div/>', {\n 'class': 'cbp-popup-content'\n }).appendTo(t.wrap);\n }\n\n // append loading div\n $('<div/>', {\n 'class': 'cbp-popup-loadingBox'\n }).appendTo(t.wrap);\n\n // add background only for ie8\n if (CubePortfolio.private.browser === 'ie8') {\n t.bg = $('<div/>', {\n 'class': 'cbp-popup-ie8bg',\n 'data-action': (t.type === 'lightbox') ? 'close' : ''\n }).appendTo(t.wrap);\n }\n\n if (t.type === 'singlePage') {\n if (t.options.singlePageStickyNavigation === false) {\n // create navigation wrap\n t.navigationWrap = $('<div/>', {\n 'class': 'cbp-popup-navigation-wrap'\n }).appendTo(t.contentWrap);\n } else {\n // create navigation wrap\n t.navigationWrap = $('<div/>', {\n 'class': 'cbp-popup-navigation-wrap'\n }).appendTo(t.wrap);\n }\n } else {\n // create navigation wrap\n t.navigationWrap = $('<div/>', {\n 'class': 'cbp-popup-navigation-wrap'\n }).appendTo(t.wrap);\n }\n\n // create navigation block\n t.navigation = $('<div/>', {\n 'class': 'cbp-popup-navigation'\n }).appendTo(t.navigationWrap);\n\n // close\n t.closeButton = $('<div/>', {\n 'class': 'cbp-popup-close',\n 'title': 'Close (Esc arrow key)',\n 'data-action': 'close'\n }).appendTo(t.navigation);\n\n // next\n t.nextButton = $('<div/>', {\n 'class': 'cbp-popup-next',\n 'title': 'Next (Right arrow key)',\n 'data-action': 'next'\n }).appendTo(t.navigation);\n\n\n // prev\n t.prevButton = $('<div/>', {\n 'class': 'cbp-popup-prev',\n 'title': 'Previous (Left arrow key)',\n 'data-action': 'prev'\n }).appendTo(t.navigation);\n\n\n if (t.type === 'singlePage') {\n if (t.options.singlePageCounter) {\n // counter for singlePage\n t.counter = $(t.options.singlePageCounter).appendTo(t.navigation);\n t.counter.text('');\n }\n\n t.content.on('click.cbp', t.options.singlePageDelegate, function(e) {\n e.preventDefault();\n\n var i,\n len = t.dataArray.length,\n href = this.getAttribute('href'),\n indexFound;\n\n for (i = 0; i < len; i++) {\n if (t.dataArray[i].url === href) {\n indexFound = i;\n break;\n }\n }\n\n if (indexFound === undefined) {\n var fakeLink = document.createElement('a');\n fakeLink.setAttribute('href', href);\n\n t.dataArray = [{\n url: href,\n element: fakeLink\n }];\n\n // total numbers of elements\n t.counterTotal = 1;\n\n t.nextButton.hide();\n t.prevButton.hide();\n\n t.singlePageJumpTo(0);\n } else {\n t.singlePageJumpTo(indexFound - t.current);\n }\n\n });\n\n // if there are some events than overrides the default scroll behaviour don't go to them\n t.contentWrap.on('mousewheel.cbp' + ' DOMMouseScroll.cbp', function(e) {\n e.stopImmediatePropagation();\n });\n }\n\n $(document).on('keydown.cbp', function(e) {\n // if is not open => return\n if (!t.isOpen) {\n return;\n }\n\n // if all events are stopped => return\n if (t.stopEvents) {\n return;\n }\n\n if (lightboxIsOpen) {\n e.stopImmediatePropagation();\n }\n\n if (e.keyCode === 37) { // prev key\n t.prev();\n } else if (e.keyCode === 39) { // next key\n t.next();\n } else if (e.keyCode === 27) { //esc key\n t.close();\n }\n });\n },\n\n createMarkupSinglePageInline: function() {\n var t = this;\n\n // wrap element\n t.wrap = $('<div/>', {\n 'class': 'cbp-popup-singlePageInline'\n }).on('click.cbp', function(e) {\n if (t.stopEvents) {\n return;\n }\n\n var action = $(e.target).attr('data-action');\n\n if (action && t[action]) {\n t[action]();\n e.preventDefault();\n }\n });\n\n // content element\n t.content = $('<div/>', {\n 'class': 'cbp-popup-content'\n }).appendTo(t.wrap);\n\n // append loading div\n // $('<div/>', {\n // 'class': 'cbp-popup-loadingBox'\n // }).appendTo(t.wrap);\n\n // create navigation block\n t.navigation = $('<div/>', {\n 'class': 'cbp-popup-navigation'\n }).appendTo(t.wrap);\n\n // close\n t.closeButton = $('<div/>', {\n 'class': 'cbp-popup-close',\n 'title': 'Close (Esc arrow key)',\n 'data-action': 'close'\n }).appendTo(t.navigation);\n },\n\n destroy: function() {\n var t = this,\n body = $('body');\n\n // remove off key down\n $(document).off('keydown.cbp');\n\n // external lightbox and singlePageInline\n body.off('click.cbp', t.options.lightboxDelegate);\n body.off('click.cbp', t.options.singlePageDelegate);\n\n t.content.off('click.cbp', t.options.singlePageDelegate);\n\n t.cubeportfolio.$obj.off('click.cbp', t.options.singlePageInlineDelegate);\n t.cubeportfolio.$obj.off('click.cbp', t.options.lightboxDelegate);\n t.cubeportfolio.$obj.off('click.cbp', t.options.singlePageDelegate);\n\n t.cubeportfolio.$obj.removeClass('cbp-popup-isOpening');\n\n t.cubeportfolio.$obj.find('.cbp-item').removeClass('cbp-singlePageInline-active');\n\n t.wrap.remove();\n },\n\n openLightbox: function(blocks, currentBlock) {\n var t = this,\n i = 0,\n currentBlockHref, tempHref = [],\n element;\n\n if (t.isOpen) {\n return;\n }\n\n lightboxIsOpen = true;\n\n // remember that the lightbox is open now\n t.isOpen = true;\n\n // remember to stop all events after the lightbox has been shown\n t.stopEvents = false;\n\n // array with elements\n t.dataArray = [];\n\n // reset current\n t.current = null;\n\n currentBlockHref = currentBlock.getAttribute('href');\n if (currentBlockHref === null) {\n throw new Error('HEI! Your clicked element doesn\\'t have a href attribute.');\n }\n\n $.each(blocks, function(index, item) {\n var href = item.getAttribute('href'),\n src = href, // default if element is image\n type = 'isImage', // default if element is image\n videoLink;\n\n if ($.inArray(href, tempHref) === -1) {\n if (currentBlockHref === href) {\n t.current = i;\n } else if (!t.options.lightboxGallery) {\n return;\n }\n\n if (/youtu\\.?be/i.test(href)) {\n var indexVideo = href.lastIndexOf('v=') + 2;\n\n if (indexVideo === 1) {\n indexVideo = href.lastIndexOf('/') + 1;\n }\n\n videoLink = href.substring(indexVideo);\n\n if (!(/autoplay=/i.test(videoLink))) {\n videoLink += '&autoplay=1';\n }\n\n videoLink = videoLink.replace(/\\?|&/, '?');\n\n // create new href\n src = '//www.youtube.com/embed/' + videoLink;\n\n type = 'isYoutube';\n } else if (/vimeo\\.com/i.test(href)) {\n videoLink = href.substring(href.lastIndexOf('/') + 1);\n\n if (!(/autoplay=/i.test(videoLink))) {\n videoLink += '&autoplay=1';\n }\n\n videoLink = videoLink.replace(/\\?|&/, '?');\n\n // create new href\n src = '//player.vimeo.com/video/' + videoLink;\n\n type = 'isVimeo';\n } else if (/www\\.ted\\.com/i.test(href)) {\n // create new href\n src = 'http://embed.ted.com/talks/' + href.substring(href.lastIndexOf('/') + 1) + '.html';\n\n type = 'isTed';\n } else if (/soundcloud\\.com/i.test(href)) {\n // create new href\n src = href;\n\n type = 'isSoundCloud';\n } else if (/(\\.mp4)|(\\.ogg)|(\\.ogv)|(\\.webm)/i.test(href)) {\n if (href.indexOf('|') !== -1) {\n // create new href\n src = href.split('|');\n } else {\n // create new href\n src = href.split('%7C');\n }\n\n type = 'isSelfHostedVideo';\n } else if (/\\.mp3$/i.test(href)) {\n src = href;\n type = 'isSelfHostedAudio';\n }\n\n t.dataArray.push({\n src: src,\n title: item.getAttribute(t.options.lightboxTitleSrc),\n type: type\n });\n\n i++;\n }\n\n tempHref.push(href);\n });\n\n // total numbers of elements\n t.counterTotal = t.dataArray.length;\n\n if (t.counterTotal === 1) {\n t.nextButton.hide();\n t.prevButton.hide();\n t.dataActionImg = '';\n } else {\n t.nextButton.show();\n t.prevButton.show();\n t.dataActionImg = 'data-action=\"next\"';\n }\n\n // append to body\n t.wrap.appendTo(document.body);\n\n t.scrollTop = $(window).scrollTop();\n\n t.originalStyle = $('html').attr('style');\n\n $('html').css({\n overflow: 'hidden',\n marginRight: window.innerWidth - $(document).width()\n });\n\n t.wrap.addClass('cbp-popup-transitionend');\n\n // show the wrapper (lightbox box)\n t.wrap.show();\n\n // get the current element\n element = t.dataArray[t.current];\n\n // call function if current element is image or video (iframe)\n t[element.type](element);\n },\n\n openSinglePage: function(blocks, currentBlock) {\n var t = this,\n i = 0,\n currentBlockHref, tempHref = [];\n\n if (t.isOpen) {\n return;\n }\n\n // check singlePageInline and close it\n if (t.cubeportfolio.singlePageInline && t.cubeportfolio.singlePageInline.isOpen) {\n t.cubeportfolio.singlePageInline.close();\n }\n\n // remember that the lightbox is open now\n t.isOpen = true;\n\n // remember to stop all events after the popup has been showing\n t.stopEvents = false;\n\n // array with elements\n t.dataArray = [];\n\n // reset current\n t.current = null;\n\n currentBlockHref = currentBlock.getAttribute('href');\n if (currentBlockHref === null) {\n throw new Error('HEI! Your clicked element doesn\\'t have a href attribute.');\n }\n\n $.each(blocks, function(index, item) {\n var href = item.getAttribute('href');\n\n if ($.inArray(href, tempHref) === -1) {\n if (currentBlockHref === href) {\n t.current = i;\n }\n\n t.dataArray.push({\n url: href,\n element: item\n });\n\n i++;\n }\n\n tempHref.push(href);\n });\n\n // total numbers of elements\n t.counterTotal = t.dataArray.length;\n\n if (t.counterTotal === 1) {\n t.nextButton.hide();\n t.prevButton.hide();\n } else {\n t.nextButton.show();\n t.prevButton.show();\n }\n\n // append to body\n t.wrap.appendTo(document.body);\n\n t.scrollTop = $(window).scrollTop();\n\n // go to top of the page (reset scroll)\n t.contentWrap.scrollTop(0);\n\n // show the wrapper\n t.wrap.show();\n\n // finish the open animation\n t.finishOpen = 2;\n\n // if transitionend is not fulfilled\n t.navigationMobile = $();\n t.wrap.one(CubePortfolio.private.transitionend, function() {\n $('html').css({\n overflow: 'hidden',\n marginRight: window.innerWidth - $(document).width()\n });\n\n t.wrap.addClass('cbp-popup-transitionend');\n\n // make the navigation sticky\n if (t.options.singlePageStickyNavigation) {\n\n t.wrap.addClass('cbp-popup-singlePage-sticky');\n t.navigationWrap.width(t.contentWrap[0].clientWidth);\n }\n\n t.finishOpen--;\n\n if (t.finishOpen <= 0) {\n t.updateSinglePageIsOpen.call(t);\n }\n });\n\n if (CubePortfolio.private.browser === 'ie8' || CubePortfolio.private.browser === 'ie9') {\n $('html').css({\n overflow: 'hidden',\n marginRight: window.innerWidth - $(document).width()\n });\n\n t.wrap.addClass('cbp-popup-transitionend');\n\n // make the navigation sticky\n if (t.options.singlePageStickyNavigation) {\n t.navigationWrap.width(t.contentWrap[0].clientWidth);\n\n setTimeout(function() {\n t.wrap.addClass('cbp-popup-singlePage-sticky');\n }, 1000);\n }\n\n t.finishOpen--;\n }\n\n t.wrap.addClass('cbp-popup-loading');\n\n // force reflow and then add class\n t.wrap.offset();\n t.wrap.addClass('cbp-popup-singlePage-open');\n\n // change link\n if (t.options.singlePageDeeplinking) {\n // ignore old #cbp from href\n t.url = t.url.split('#cbp=')[0];\n location.href = t.url + '#cbp=' + t.dataArray[t.current].url;\n }\n\n // run callback function\n if ($.isFunction(t.options.singlePageCallback)) {\n t.options.singlePageCallback.call(t, t.dataArray[t.current].url, t.dataArray[t.current].element);\n }\n\n // ios bug to prevent\n // http://stackoverflow.com/questions/9280258/prevent-body-scrolling-but-allow-overlay-scrolling\n if (CubePortfolio.private.browser === 'ios') {\n var element = t.contentWrap[0];\n\n element.addEventListener('touchstart', function() {\n var top = element.scrollTop,\n totalScroll = element.scrollHeight,\n currentScroll = top + element.offsetHeight;\n\n if (top === 0) {\n element.scrollTop = 1;\n } else if (currentScroll === totalScroll) {\n element.scrollTop = top - 1;\n }\n });\n }\n },\n\n openSinglePageInline: function(blocks, currentBlock, fromOpen) {\n var t = this,\n start = 0,\n currentBlockHref,\n tempCurrent,\n cbpitem,\n parentElement;\n\n fromOpen = fromOpen || false;\n\n t.fromOpen = fromOpen;\n\n t.storeBlocks = blocks;\n t.storeCurrentBlock = currentBlock;\n\n // check singlePageInline and close it\n if (t.isOpen) {\n tempCurrent = t.cubeportfolio.blocksOn.index($(currentBlock).closest('.cbp-item'));\n\n if ((t.dataArray[t.current].url !== currentBlock.getAttribute('href')) || (t.current !== tempCurrent)) {\n t.cubeportfolio.singlePageInline.close('open', {\n blocks: blocks,\n currentBlock: currentBlock,\n fromOpen: true\n });\n } else {\n t.close();\n }\n\n return;\n }\n\n // remember that the lightbox is open now\n t.isOpen = true;\n\n // remember to stop all events after the popup has been showing\n t.stopEvents = false;\n\n // array with elements\n t.dataArray = [];\n\n // reset current\n t.current = null;\n\n currentBlockHref = currentBlock.getAttribute('href');\n if (currentBlockHref === null) {\n throw new Error('HEI! Your clicked element doesn\\'t have a href attribute.');\n }\n\n cbpitem = $(currentBlock).closest('.cbp-item')[0];\n\n blocks.each(function(index, el) {\n if (cbpitem === el) {\n t.current = index;\n }\n });\n\n t.dataArray[t.current] = {\n url: currentBlockHref,\n element: currentBlock\n };\n\n parentElement = $(t.dataArray[t.current].element).parents('.cbp-item').addClass('cbp-singlePageInline-active');\n\n // total numbers of elements\n t.counterTotal = blocks.length;\n\n t.wrap.insertBefore(t.cubeportfolio.wrapper);\n\n t.topDifference = 0;\n\n if (t.options.singlePageInlinePosition === 'top') {\n t.blocksToMove = blocks;\n t.top = 0;\n } else if (t.options.singlePageInlinePosition === 'bottom') {\n t.blocksToMove = $();\n t.top = t.cubeportfolio.height;\n } else if (t.options.singlePageInlinePosition === 'above') {\n var currentEl = $(blocks[t.current]);\n var top = currentEl.data('cbp').top;\n var end = top + currentEl.height();\n\n t.top = top;\n\n t.blocksToMove = $();\n\n blocks.each(function(index, el) {\n var element = $(el);\n\n var topEl = element.data('cbp').top;\n var endEl = topEl + element.height();\n\n if (endEl <= top) {\n return;\n }\n\n if (topEl >= top) {\n t.blocksToMove = t.blocksToMove.add(el);\n }\n\n if ((topEl < top) && (endEl > top)) {\n t.top = endEl + t.options.gapHorizontal;\n\n if ((endEl - top) > t.topDifference) {\n t.topDifference = endEl - top + t.options.gapHorizontal;\n }\n }\n });\n\n t.top = Math.max(t.top - t.options.gapHorizontal, 0);\n } else { // below\n var currentEl = $(blocks[t.current]);\n var top = currentEl.data('cbp').top;\n var end = top + currentEl.height();\n\n t.top = end;\n\n t.blocksToMove = $();\n\n blocks.each(function(index, el) {\n var element = $(el);\n var height = element.height();\n\n var topEl = element.data('cbp').top;\n var endEl = topEl + height;\n\n if (endEl <= end) {\n return;\n }\n\n if (topEl >= (end - height / 2)) {\n t.blocksToMove = t.blocksToMove.add(el);\n return;\n }\n\n if ((endEl > end) && (topEl < end)) {\n if (endEl > t.top) {\n t.top = endEl;\n }\n\n if ((endEl - end) > t.topDifference) {\n t.topDifference = endEl - end;\n }\n }\n });\n }\n\n t.wrap[0].style.height = t.wrap.outerHeight(true) + 'px';\n\n // debouncer for inline content\n t.deferredInline = $.Deferred();\n\n if (t.options.singlePageInlineInFocus) {\n t.scrollTop = $(window).scrollTop();\n\n var goToScroll = t.cubeportfolio.$obj.offset().top + t.top - 100;\n\n if (t.scrollTop !== goToScroll) {\n $('html,body').animate({\n scrollTop: goToScroll\n }, 350)\n .promise()\n .then(function() {\n t.resizeSinglePageInline();\n t.deferredInline.resolve();\n });\n } else {\n t.resizeSinglePageInline();\n t.deferredInline.resolve();\n }\n } else {\n t.resizeSinglePageInline();\n t.deferredInline.resolve();\n }\n\n t.cubeportfolio.$obj.addClass('cbp-popup-singlePageInline-open');\n\n t.wrap.css({\n top: t.top\n });\n\n // change link\n if (t.options.singlePageInlineDeeplinking) {\n // ignore old #cbpi from href\n t.url = t.url.split('#cbpi=')[0];\n location.href = t.url + '#cbpi=' + t.dataArray[t.current].url;\n }\n\n // register callback function\n if ($.isFunction(t.options.singlePageInlineCallback)) {\n t.options.singlePageInlineCallback.call(t, t.dataArray[t.current].url, t.dataArray[t.current].element);\n }\n },\n\n resizeSinglePageInline: function() {\n var t = this;\n\n t.height = ((t.top === 0) || (t.top === t.cubeportfolio.height)) ? t.wrap.outerHeight(true) : t.wrap.outerHeight(true) - t.options.gapHorizontal;\n\n t.height += t.topDifference;\n\n t.storeBlocks.each(function(index, el) {\n if (CubePortfolio.private.modernBrowser) {\n el.style[CubePortfolio.private.transform] = '';\n } else {\n el.style.marginTop = '';\n }\n });\n\n t.blocksToMove.each(function(index, el) {\n if (CubePortfolio.private.modernBrowser) {\n el.style[CubePortfolio.private.transform] = 'translate3d(0px, ' + t.height + 'px, 0)';\n } else {\n el.style.marginTop = t.height + 'px';\n }\n });\n\n t.cubeportfolio.obj.style.height = t.cubeportfolio.height + t.height + 'px';\n },\n\n revertResizeSinglePageInline: function() {\n var t = this;\n\n // reset deferred object\n t.deferredInline = $.Deferred();\n\n t.storeBlocks.each(function(index, el) {\n if (CubePortfolio.private.modernBrowser) {\n el.style[CubePortfolio.private.transform] = '';\n } else {\n el.style.marginTop = '';\n }\n });\n\n t.cubeportfolio.obj.style.height = t.cubeportfolio.height + 'px';\n },\n\n appendScriptsToWrap: function(scripts) {\n var t = this,\n index = 0,\n loadScripts = function(item) {\n var script = document.createElement('script'),\n src = item.src;\n\n script.type = 'text/javascript';\n\n if (script.readyState) { // ie\n script.onreadystatechange = function() {\n if (script.readyState == 'loaded' || script.readyState == 'complete') {\n script.onreadystatechange = null;\n index++;\n if (scripts[index]) {\n loadScripts(scripts[index]);\n }\n }\n };\n } else {\n script.onload = function() {\n index++;\n if (scripts[index]) {\n loadScripts(scripts[index]);\n }\n };\n }\n\n if (src) {\n script.src = src;\n } else {\n script.text = item.text;\n }\n\n t.content[0].appendChild(script);\n\n };\n\n loadScripts(scripts[0]);\n },\n\n updateSinglePage: function(html, scripts, isWrap) {\n var t = this,\n counterMarkup,\n animationFinish;\n\n t.content.addClass('cbp-popup-content').removeClass('cbp-popup-content-basic');\n\n if (isWrap === false) {\n t.content.removeClass('cbp-popup-content').addClass('cbp-popup-content-basic');\n }\n\n // update counter navigation\n if (t.counter) {\n counterMarkup = $(t.getCounterMarkup(t.options.singlePageCounter, t.current + 1, t.counterTotal));\n t.counter.text(counterMarkup.text());\n }\n\n t.fromAJAX = {\n html: html,\n scripts: scripts\n };\n\n t.finishOpen--;\n\n if (t.finishOpen <= 0) {\n t.updateSinglePageIsOpen.call(t);\n }\n },\n\n updateSinglePageIsOpen: function() {\n var t = this,\n selectorSlider;\n\n t.wrap.addClass('cbp-popup-ready');\n t.wrap.removeClass('cbp-popup-loading');\n\n t.content.html(t.fromAJAX.html);\n\n if (t.fromAJAX.scripts) {\n t.appendScriptsToWrap(t.fromAJAX.scripts);\n }\n\n t.fromAJAX = {};\n\n\n // trigger public event\n t.cubeportfolio.$obj.trigger('updateSinglePageStart.cbp');\n\n // instantiate slider if exists\n selectorSlider = t.content.find('.cbp-slider');\n if (selectorSlider.length) {\n selectorSlider.find('.cbp-slider-item').addClass('cbp-item');\n t.slider = selectorSlider.cubeportfolio({\n layoutMode: 'slider',\n mediaQueries: [{\n width: 1,\n cols: 1\n }],\n gapHorizontal: 0,\n gapVertical: 0,\n caption: '',\n coverRatio: '', // wp version only\n });\n } else {\n t.slider = null;\n }\n\n // check for social share icons\n t.checkForSocialLinks(t.content);\n\n // trigger public event\n t.cubeportfolio.$obj.trigger('updateSinglePageComplete.cbp');\n },\n\n checkForSocialLinks: function(content) {\n var t = this;\n\n t.createFacebookShare(content.find('.cbp-social-fb'));\n t.createTwitterShare(content.find('.cbp-social-twitter'));\n t.createGooglePlusShare(content.find('.cbp-social-googleplus'));\n t.createPinterestShare(content.find('.cbp-social-pinterest'));\n },\n\n createFacebookShare: function(item) {\n if (item.length && !item.attr('onclick')) {\n item.attr('onclick', \"window.open('http://www.facebook.com/sharer.php?u=\" + encodeURIComponent(window.location.href) + \"', '_blank', 'top=100,left=100,toolbar=0,status=0,width=620,height=400'); return false;\");\n }\n },\n\n createTwitterShare: function(item) {\n if (item.length && !item.attr('onclick')) {\n item.attr('onclick', \"window.open('https://twitter.com/intent/tweet?source=\" + encodeURIComponent(window.location.href) + \"&text=\" + encodeURIComponent(document.title) + \"', '_blank', 'top=100,left=100,toolbar=0,status=0,width=620,height=300'); return false;\");\n }\n },\n\n createGooglePlusShare: function(item) {\n if (item.length && !item.attr('onclick')) {\n item.attr('onclick', \"window.open('https://plus.google.com/share?url=\" + encodeURIComponent(window.location.href) + \"', '_blank', 'top=100,left=100,toolbar=0,status=0,width=620,height=450'); return false;\");\n }\n },\n\n createPinterestShare: function(item) {\n if (item.length && !item.attr('onclick')) {\n var media = '';\n var firstImg = this.content.find('img')[0];\n\n if (firstImg) {\n media = firstImg.src;\n }\n\n item.attr('onclick', \"window.open('http://pinterest.com/pin/create/button/?url=\" + encodeURIComponent(window.location.href) + \"&media=\" + media + \"', '_blank', 'top=100,left=100,toolbar=0,status=0,width=620,height=400'); return false;\");\n }\n },\n\n updateSinglePageInline: function(html, scripts) {\n var t = this;\n\n t.content.html(html);\n\n if (scripts) {\n t.appendScriptsToWrap(scripts);\n }\n\n // trigger public event\n t.cubeportfolio.$obj.trigger('updateSinglePageInlineStart.cbp');\n\n if (t.localOptions.delay !== 0) {\n setTimeout(function() {\n t.singlePageInlineIsOpen.call(t);\n }, t.localOptions.delay)\n } else {\n t.singlePageInlineIsOpen.call(t);\n }\n },\n\n singlePageInlineIsOpen: function() {\n var t = this;\n\n function finishLoading() {\n t.wrap.addClass('cbp-popup-singlePageInline-ready');\n t.wrap[0].style.height = '';\n\n t.resizeSinglePageInline();\n\n // trigger public event\n t.cubeportfolio.$obj.trigger('updateSinglePageInlineComplete.cbp');\n }\n\n // wait to load all images\n t.cubeportfolio.loadImages(t.wrap, function() {\n // instantiate slider if exists\n var selectorSlider = t.content.find('.cbp-slider');\n\n if (selectorSlider.length) {\n selectorSlider.find('.cbp-slider-item').addClass('cbp-item');\n\n selectorSlider.one('initComplete.cbp', function() {\n t.deferredInline.done(finishLoading);\n });\n\n selectorSlider.on('pluginResize.cbp', function() {\n t.deferredInline.done(finishLoading);\n });\n\n t.slider = selectorSlider.cubeportfolio({\n layoutMode: 'slider',\n displayType: 'default',\n mediaQueries: [{\n width: 1,\n cols: 1\n }],\n gapHorizontal: 0,\n gapVertical: 0,\n caption: '',\n coverRatio: '', // wp version only\n });\n } else {\n t.slider = null;\n t.deferredInline.done(finishLoading);\n }\n\n // check for social share icons\n t.checkForSocialLinks(t.content);\n });\n },\n\n isImage: function(el) {\n var t = this,\n img = new Image();\n\n t.tooggleLoading(true);\n\n t.cubeportfolio.loadImages($('<div><img src=\"' + el.src + '\"></div>'), function() {\n t.updateImagesMarkup(el.src, el.title, t.getCounterMarkup(t.options.lightboxCounter, t.current + 1, t.counterTotal));\n\n t.tooggleLoading(false);\n });\n },\n\n isVimeo: function(el) {\n var t = this;\n t.updateVideoMarkup(el.src, el.title, t.getCounterMarkup(t.options.lightboxCounter, t.current + 1, t.counterTotal));\n },\n\n isYoutube: function(el) {\n var t = this;\n t.updateVideoMarkup(el.src, el.title, t.getCounterMarkup(t.options.lightboxCounter, t.current + 1, t.counterTotal));\n },\n\n isTed: function(el) {\n var t = this;\n t.updateVideoMarkup(el.src, el.title, t.getCounterMarkup(t.options.lightboxCounter, t.current + 1, t.counterTotal));\n },\n\n isSoundCloud: function(el) {\n var t = this;\n t.updateVideoMarkup(el.src, el.title, t.getCounterMarkup(t.options.lightboxCounter, t.current + 1, t.counterTotal));\n },\n\n isSelfHostedVideo: function(el) {\n var t = this;\n t.updateSelfHostedVideo(el.src, el.title, t.getCounterMarkup(t.options.lightboxCounter, t.current + 1, t.counterTotal));\n },\n\n isSelfHostedAudio: function(el) {\n var t = this;\n t.updateSelfHostedAudio(el.src, el.title, t.getCounterMarkup(t.options.lightboxCounter, t.current + 1, t.counterTotal));\n },\n\n getCounterMarkup: function(markup, current, total) {\n if (!markup.length) {\n return '';\n }\n\n var mapObj = {\n current: current,\n total: total\n };\n\n return markup.replace(/\\{\\{current}}|\\{\\{total}}/gi, function(matched) {\n return mapObj[matched.slice(2, -2)];\n });\n },\n\n updateSelfHostedVideo: function(src, title, counter) {\n var t = this,\n i;\n\n t.wrap.addClass('cbp-popup-lightbox-isIframe');\n\n var markup = '<div class=\"cbp-popup-lightbox-iframe\">' +\n '<video controls=\"controls\" height=\"auto\" style=\"width: 100%\">';\n\n for (i = 0; i < src.length; i++) {\n if (/(\\.mp4)/i.test(src[i])) {\n markup += '<source src=\"' + src[i] + '\" type=\"video/mp4\">';\n } else if (/(\\.ogg)|(\\.ogv)/i.test(src[i])) {\n markup += '<source src=\"' + src[i] + '\" type=\"video/ogg\">';\n } else if (/(\\.webm)/i.test(src[i])) {\n markup += '<source src=\"' + src[i] + '\" type=\"video/webm\">';\n }\n }\n\n markup += 'Your browser does not support the video tag.' +\n '</video>' +\n '<div class=\"cbp-popup-lightbox-bottom\">' +\n ((title) ? '<div class=\"cbp-popup-lightbox-title\">' + title + '</div>' : '') +\n counter +\n '</div>' +\n '</div>';\n\n t.content.html(markup);\n t.wrap.addClass('cbp-popup-ready');\n t.preloadNearbyImages();\n },\n\n updateSelfHostedAudio: function(src, title, counter) {\n var t = this,\n i;\n\n t.wrap.addClass('cbp-popup-lightbox-isIframe');\n\n var markup = '<div class=\"cbp-popup-lightbox-iframe\">' +\n '<div class=\"cbp-misc-video\"><audio controls=\"controls\" height=\"auto\" style=\"width: 75%\">' +\n '<source src=\"' + src + '\" type=\"audio/mpeg\">' +\n 'Your browser does not support the audio tag.' +\n '</audio></div>' +\n '<div class=\"cbp-popup-lightbox-bottom\">' +\n ((title) ? '<div class=\"cbp-popup-lightbox-title\">' + title + '</div>' : '') +\n counter +\n '</div>' +\n '</div>';\n\n t.content.html(markup);\n t.wrap.addClass('cbp-popup-ready');\n t.preloadNearbyImages();\n },\n\n updateVideoMarkup: function(src, title, counter) {\n var t = this;\n t.wrap.addClass('cbp-popup-lightbox-isIframe');\n\n var markup = '<div class=\"cbp-popup-lightbox-iframe\">' +\n '<iframe src=\"' + src + '\" frameborder=\"0\" allowfullscreen scrolling=\"no\"></iframe>' +\n '<div class=\"cbp-popup-lightbox-bottom\">' +\n ((title) ? '<div class=\"cbp-popup-lightbox-title\">' + title + '</div>' : '') +\n counter +\n '</div>' +\n '</div>';\n\n t.content.html(markup);\n t.wrap.addClass('cbp-popup-ready');\n t.preloadNearbyImages();\n },\n\n updateImagesMarkup: function(src, title, counter) {\n var t = this;\n\n t.wrap.removeClass('cbp-popup-lightbox-isIframe');\n\n var markup = '<div class=\"cbp-popup-lightbox-figure\">' +\n '<img src=\"' + src + '\" class=\"cbp-popup-lightbox-img\" ' + t.dataActionImg + ' />' +\n '<div class=\"cbp-popup-lightbox-bottom\">' +\n ((title) ? '<div class=\"cbp-popup-lightbox-title\">' + title + '</div>' : '') +\n counter +\n '</div>' +\n '</div>';\n\n t.content.html(markup);\n t.wrap.addClass('cbp-popup-ready');\n t.resizeImage();\n t.preloadNearbyImages();\n },\n\n next: function() {\n var t = this;\n t[t.type + 'JumpTo'](1);\n },\n\n prev: function() {\n var t = this;\n t[t.type + 'JumpTo'](-1);\n },\n\n lightboxJumpTo: function(index) {\n var t = this,\n el;\n\n t.current = t.getIndex(t.current + index);\n\n // get the current element\n el = t.dataArray[t.current];\n\n // call function if current element is image or video (iframe)\n t[el.type](el);\n },\n\n singlePageJumpTo: function(index) {\n var t = this;\n\n t.current = t.getIndex(t.current + index);\n\n // register singlePageCallback function\n if ($.isFunction(t.options.singlePageCallback)) {\n t.resetWrap();\n\n // go to top of the page (reset scroll)\n t.contentWrap.scrollTop(0);\n\n t.wrap.addClass('cbp-popup-loading');\n\n if (t.slider) {\n CubePortfolio.private.resize.destroyEvent($.data(t.slider[0], 'cubeportfolio'));\n }\n\n t.options.singlePageCallback.call(t, t.dataArray[t.current].url, t.dataArray[t.current].element);\n\n if (t.options.singlePageDeeplinking) {\n location.href = t.url + '#cbp=' + t.dataArray[t.current].url;\n }\n }\n },\n\n resetWrap: function() {\n var t = this;\n\n if (t.type === 'singlePage' && t.options.singlePageDeeplinking) {\n location.href = t.url + '#';\n }\n\n if (t.type === 'singlePageInline' && t.options.singlePageInlineDeeplinking) {\n location.href = t.url + '#';\n }\n },\n\n getIndex: function(index) {\n var t = this;\n\n // go to interval [0, (+ or -)this.counterTotal.length - 1]\n index = index % t.counterTotal;\n\n // if index is less then 0 then go to interval (0, this.counterTotal - 1]\n if (index < 0) {\n index = t.counterTotal + index;\n }\n\n return index;\n },\n\n close: function(method, data) {\n var t = this;\n\n function finishClose() {\n // remove resize event\n if (t.slider) {\n CubePortfolio.private.resize.destroyEvent($.data(t.slider[0], 'cubeportfolio'));\n }\n\n // reset content\n t.content.html('');\n\n // hide the wrap\n t.wrap.detach();\n\n t.cubeportfolio.$obj.removeClass('cbp-popup-singlePageInline-open cbp-popup-singlePageInline-close');\n\n if (method === 'promise') {\n if ($.isFunction(data.callback)) {\n data.callback.call(t.cubeportfolio);\n }\n }\n }\n\n function checkFocusInline() {\n // add this to prevent the page to jump after the resetWrap\n var scrollTop = $(window).scrollTop();\n t.resetWrap();\n $(window).scrollTop(scrollTop);\n\n if (t.options.singlePageInlineInFocus && method !== 'promise') {\n $('html,body').animate({\n scrollTop: t.scrollTop\n }, 350)\n .promise()\n .then(function() {\n finishClose();\n });\n } else {\n finishClose();\n }\n }\n\n // now the popup is closed\n t.isOpen = false;\n\n if (t.type === 'singlePageInline') {\n if (method === 'open') {\n t.wrap.removeClass('cbp-popup-singlePageInline-ready');\n $(t.dataArray[t.current].element).closest('.cbp-item').removeClass('cbp-singlePageInline-active');\n t.openSinglePageInline(data.blocks, data.currentBlock, data.fromOpen);\n } else {\n t.height = 0;\n\n t.revertResizeSinglePageInline();\n t.wrap.removeClass('cbp-popup-singlePageInline-ready');\n t.cubeportfolio.$obj.addClass('cbp-popup-singlePageInline-close');\n t.cubeportfolio.$obj.find('.cbp-item').removeClass('cbp-singlePageInline-active');\n\n if (CubePortfolio.private.modernBrowser) {\n t.wrap.one(CubePortfolio.private.transitionend, function() {\n checkFocusInline();\n });\n } else {\n checkFocusInline();\n }\n }\n\n } else if (t.type === 'singlePage') {\n t.resetWrap();\n\n $(window).scrollTop(t.scrollTop);\n\n t.stopScroll = true;\n\n t.wrap.removeClass('cbp-popup-ready cbp-popup-transitionend cbp-popup-singlePage-open cbp-popup-singlePage-sticky');\n\n $('html').css({\n overflow: '',\n marginRight: '',\n position: ''\n });\n\n if (CubePortfolio.private.browser === 'ie8' || CubePortfolio.private.browser === 'ie9') {\n // remove resize event\n if (t.slider) {\n CubePortfolio.private.resize.destroyEvent($.data(t.slider[0], 'cubeportfolio'));\n }\n\n // reset content\n t.content.html('');\n\n // hide the wrap\n t.wrap.detach();\n }\n\n t.wrap.one(CubePortfolio.private.transitionend, function() {\n // remove resize event\n if (t.slider) {\n CubePortfolio.private.resize.destroyEvent($.data(t.slider[0], 'cubeportfolio'));\n }\n\n // reset content\n t.content.html('');\n\n // hide the wrap\n t.wrap.detach();\n });\n } else {\n lightboxIsOpen = false;\n\n if (t.originalStyle) {\n $('html').attr('style', t.originalStyle);\n } else {\n $('html').css({\n overflow: '',\n marginRight: ''\n });\n }\n\n $(window).scrollTop(t.scrollTop);\n\n // remove resize event\n if (t.slider) {\n CubePortfolio.private.resize.destroyEvent($.data(t.slider[0], 'cubeportfolio'));\n }\n\n // reset content\n t.content.html('');\n\n // hide the wrap\n t.wrap.detach();\n }\n },\n\n tooggleLoading: function(state) {\n var t = this;\n\n t.stopEvents = state;\n t.wrap[(state) ? 'addClass' : 'removeClass']('cbp-popup-loading');\n },\n\n resizeImage: function() {\n // if lightbox is not open go out\n if (!this.isOpen) {\n return;\n }\n\n var img = this.content.find('img');\n var figure = img.parent();\n var height = $(window).height() - (figure.outerHeight(true) - figure.height()) - this.content.find('.cbp-popup-lightbox-bottom').outerHeight(true);\n\n img.css('max-height', height + 'px');\n },\n\n preloadNearbyImages: function() {\n var t = this;\n var arr = [\n t.getIndex(t.current + 1),\n t.getIndex(t.current + 2),\n t.getIndex(t.current + 3),\n t.getIndex(t.current - 1),\n t.getIndex(t.current - 2),\n t.getIndex(t.current - 3),\n ];\n\n for (var i = arr.length - 1; i >= 0; i--) {\n if (t.dataArray[arr[i]].type === 'isImage') {\n t.cubeportfolio.checkSrc(t.dataArray[arr[i]]);\n }\n }\n }\n };\n\n function Plugin(parent) {\n var t = this;\n\n t.parent = parent;\n\n // if lightboxShowCounter is false, put lightboxCounter to ''\n if (parent.options.lightboxShowCounter === false) {\n parent.options.lightboxCounter = '';\n }\n\n // if singlePageShowCounter is false, put singlePageCounter to ''\n if (parent.options.singlePageShowCounter === false) {\n parent.options.singlePageCounter = '';\n }\n\n // @todo - schedule this in future\n parent.registerEvent('initStartRead', function() {\n t.run();\n }, true);\n }\n\n // little hack for keydown issue when lightbox & singlePage is open\n var lightboxIsOpen = false;\n var lightboxInit = false;\n var singlePageInit = false;\n\n Plugin.prototype.run = function() {\n var t = this,\n p = t.parent,\n body = $(document.body);\n\n // default value for lightbox\n p.lightbox = null;\n\n // LIGHTBOX\n if (p.options.lightboxDelegate && !lightboxInit) {\n // init only one time @todo\n lightboxInit = true;\n\n p.lightbox = Object.create(popup);\n p.lightbox.init(p, 'lightbox');\n\n body.on('click.cbp', p.options.lightboxDelegate, function(e) {\n e.preventDefault();\n\n var self = $(this),\n gallery = self.attr('data-cbp-lightbox'),\n scope = t.detectScope(self),\n cbp = scope.data('cubeportfolio'),\n blocks = [];\n\n // is inside a cbp\n if (cbp) {\n cbp.blocksOn.each(function(index, el) {\n var item = $(el);\n\n if (item.not('.cbp-item-off')) {\n item.find(p.options.lightboxDelegate).each(function(index2, el2) {\n if (gallery) {\n if ($(el2).attr('data-cbp-lightbox') === gallery) {\n blocks.push(el2);\n }\n } else {\n blocks.push(el2);\n }\n });\n }\n });\n } else {\n if (gallery) {\n blocks = scope.find(p.options.lightboxDelegate + '[data-cbp-lightbox=' + gallery + ']');\n } else {\n blocks = scope.find(p.options.lightboxDelegate);\n }\n }\n\n p.lightbox.openLightbox(blocks, self[0]);\n });\n }\n\n // default value for singlePage\n p.singlePage = null;\n\n // SINGLEPAGE\n if (p.options.singlePageDelegate && !singlePageInit) {\n // init only one time @todo\n singlePageInit = true;\n\n p.singlePage = Object.create(popup);\n p.singlePage.init(p, 'singlePage');\n\n body.on('click.cbp', p.options.singlePageDelegate, function(e) {\n e.preventDefault();\n\n var self = $(this),\n gallery = self.attr('data-cbp-singlePage'),\n scope = t.detectScope(self),\n cbp = scope.data('cubeportfolio'),\n blocks = [];\n\n // is inside a cbp\n if (cbp) {\n cbp.blocksOn.each(function(index, el) {\n var item = $(el);\n\n if (item.not('.cbp-item-off')) {\n item.find(p.options.singlePageDelegate).each(function(index2, el2) {\n if (gallery) {\n if ($(el2).attr('data-cbp-singlePage') === gallery) {\n blocks.push(el2);\n }\n } else {\n blocks.push(el2);\n }\n });\n }\n });\n } else {\n if (gallery) {\n blocks = scope.find(p.options.singlePageDelegate + '[data-cbp-singlePage=' + gallery + ']');\n } else {\n blocks = scope.find(p.options.singlePageDelegate);\n }\n }\n\n p.singlePage.openSinglePage(blocks, self[0]);\n });\n }\n\n // default value for singlePageInline\n p.singlePageInline = null;\n\n // SINGLEPAGEINLINE\n if (p.options.singlePageInlineDelegate) {\n p.singlePageInline = Object.create(popup);\n\n p.singlePageInline.init(p, 'singlePageInline');\n\n p.$obj.on('click.cbp', p.options.singlePageInlineDelegate, function(e) {\n e.preventDefault();\n\n var oldDate = $.data(this, 'cbp-locked'),\n newDate = $.data(this, 'cbp-locked', +new Date());\n\n if (!oldDate || ((newDate - oldDate) > 300)) {\n p.singlePageInline.openSinglePageInline(p.blocksOn, this);\n }\n });\n }\n };\n\n Plugin.prototype.detectScope = function(item) {\n var singlePageInline,\n singlePage,\n cbp;\n\n singlePageInline = item.closest('.cbp-popup-singlePageInline');\n if (singlePageInline.length) {\n cbp = item.closest('.cbp', singlePageInline[0]);\n return (cbp.length) ? cbp : singlePageInline;\n }\n\n singlePage = item.closest('.cbp-popup-singlePage');\n if (singlePage.length) {\n cbp = item.closest('.cbp', singlePage[0]);\n return (cbp.length) ? cbp : singlePage;\n }\n\n cbp = item.closest('.cbp');\n return (cbp.length) ? cbp : $(document.body);\n\n };\n\n Plugin.prototype.destroy = function() {\n var p = this.parent;\n\n $(document.body).off('click.cbp');\n\n // @todo - remove these from here\n lightboxInit = false;\n singlePageInit = false;\n\n // destroy lightbox if enabled\n if (p.lightbox) {\n p.lightbox.destroy();\n }\n\n // destroy singlePage if enabled\n if (p.singlePage) {\n p.singlePage.destroy();\n }\n\n // destroy singlePage inline if enabled\n if (p.singlePageInline) {\n p.singlePageInline.destroy();\n }\n };\n\n CubePortfolio.plugins.popUp = function(parent) {\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var t = this;\n\n t.parent = parent;\n\n t.searchInput = $(parent.options.search);\n\n t.searchInput.each(function(index, el) {\n var selector = el.getAttribute('data-search');\n\n if (!selector) {\n selector = '*';\n }\n\n $.data(el, 'searchData', {\n value: el.value,\n el: selector\n });\n });\n\n var timeout = null;\n\n t.searchInput.on('keyup.cbp paste.cbp', function(e) {\n e.preventDefault();\n\n var el = $(this);\n\n clearTimeout(timeout);\n timeout = setTimeout(function() {\n t.runEvent.call(t, el);\n }, 350);\n });\n\n t.searchNothing = t.searchInput.siblings('.cbp-search-nothing').detach();\n t.searchNothingHeight = null;\n t.searchNothingHTML = t.searchNothing.html();\n\n t.searchInput.siblings('.cbp-search-icon').on('click.cbp', function(e) {\n e.preventDefault();\n\n t.runEvent.call(t, $(this).prev().val(''));\n });\n }\n\n Plugin.prototype.runEvent = function(el) {\n var t = this,\n value = el.val(),\n searchData = el.data('searchData'),\n reg = new RegExp(value, 'i');\n\n if (searchData.value === value || t.parent.isAnimating) {\n return;\n }\n\n searchData.value = value;\n\n if (value.length > 0) {\n el.attr('value', value);\n } else {\n el.removeAttr('value');\n }\n\n t.parent.$obj.cubeportfolio('filter', function(blocks) {\n var blocksNew = blocks.filter(function(index, block) {\n var text = $(block).find(searchData.el).text();\n\n if (text.search(reg) > -1) {\n return true;\n }\n });\n\n if (blocksNew.length === 0 && t.searchNothing.length) {\n var innerText = t.searchNothingHTML.replace('{{query}}', value);\n t.searchNothing.html(innerText);\n\n t.searchNothing.appendTo(t.parent.$obj);\n\n if (t.searchNothingHeight === null) {\n t.searchNothingHeight = t.searchNothing.outerHeight(true);\n }\n\n t.parent.registerEvent('resizeMainContainer', function() {\n t.parent.height = t.parent.height + t.searchNothingHeight;\n t.parent.obj.style.height = t.parent.height + 'px';\n }, true);\n } else {\n t.searchNothing.detach();\n }\n\n // reset filters active class after the search is used\n t.parent.triggerEvent('resetFiltersVisual');\n\n return blocksNew;\n }, function() {\n el.trigger('keyup.cbp');\n });\n };\n\n Plugin.prototype.destroy = function() {\n var t = this;\n\n t.searchInput.off('.cbp');\n t.searchInput.next('.cbp-search-icon').off('.cbp');\n\n t.searchInput.each(function(index, el) {\n $.removeData(el);\n });\n };\n\n CubePortfolio.plugins.search = function(parent) {\n if (parent.options.search === '') {\n return null;\n }\n\n return new Plugin(parent);\n };\n})(jQuery, window, document);\r\n(function($, window, document, undefined) {\n 'use strict';\n\n var options = {\n /**\n * Pagination custom selector\n * Values: strings that represent the elements in the document (DOM selector).\n */\n pagination: '',\n paginationClass: 'cbp-pagination-active',\n };\n\n var CubePortfolio = $.fn.cubeportfolio.constructor;\n\n function Plugin(parent) {\n var t = this;\n\n t.parent = parent;\n\n t.options = $.extend({}, options, t.parent.options.plugins.slider);\n\n var customPagination = $(t.options.pagination);\n\n if (customPagination.length > 0) {\n t.parent.customPagination = customPagination;\n t.parent.customPaginationItems = customPagination.children();\n t.parent.customPaginationClass = t.options.paginationClass;\n\n t.parent.customPaginationItems.on('click.cbp', function(e) {\n e.preventDefault();\n e.stopImmediatePropagation();\n e.stopPropagation();\n\n if (t.parent.sliderStopEvents) {\n return;\n }\n\n t.parent.jumpToSlider($(this));\n });\n }\n\n t.parent.registerEvent('gridAdjust', function() {\n t.sliderMarkup.call(t.parent);\n\n t.parent.registerEvent('gridAdjust', function() {\n t.updateSlider.call(t.parent);\n });\n }, true);\n }\n\n /**\n * Create mark-up for slider layout\n */\n Plugin.prototype.sliderMarkup = function() {\n var t = this;\n\n t.sliderStopEvents = false;\n\n t.sliderActive = 0;\n\n t.$obj.one('initComplete.cbp', function() {\n t.$obj.addClass('cbp-mode-slider');\n });\n\n t.nav = $('<div/>', {\n 'class': 'cbp-nav'\n });\n\n t.nav.on('click.cbp', '[data-slider-action]', function(e) {\n e.preventDefault();\n e.stopImmediatePropagation();\n e.stopPropagation();\n\n if (t.sliderStopEvents) {\n return;\n }\n\n var el = $(this),\n action = el.attr('data-slider-action');\n\n if (t[action + 'Slider']) {\n t[action + 'Slider'](el);\n }\n });\n\n if (t.options.showNavigation) {\n t.controls = $('<div/>', {\n 'class': 'cbp-nav-controls'\n });\n\n t.navPrev = $('<div/>', {\n 'class': 'cbp-nav-prev',\n 'data-slider-action': 'prev'\n }).appendTo(t.controls);\n\n t.navNext = $('<div/>', {\n 'class': 'cbp-nav-next',\n 'data-slider-action': 'next'\n }).appendTo(t.controls);\n\n t.controls.appendTo(t.nav);\n }\n\n if (t.options.showPagination) {\n t.navPagination = $('<div/>', {\n 'class': 'cbp-nav-pagination'\n }).appendTo(t.nav);\n }\n\n if (t.controls || t.navPagination) {\n t.nav.appendTo(t.$obj);\n }\n\n t.updateSliderPagination();\n\n if (t.options.auto) {\n if (t.options.autoPauseOnHover) {\n t.mouseIsEntered = false;\n t.$obj.on('mouseenter.cbp', function(e) {\n t.mouseIsEntered = true;\n t.stopSliderAuto();\n }).on('mouseleave.cbp', function(e) {\n t.mouseIsEntered = false;\n t.startSliderAuto();\n });\n }\n\n t.startSliderAuto();\n }\n\n if (t.options.drag && CubePortfolio.private.modernBrowser) {\n t.dragSlider();\n }\n };\n\n Plugin.prototype.updateSlider = function() {\n var t = this;\n\n t.updateSliderPosition();\n\n t.updateSliderPagination();\n };\n\n Plugin.prototype.destroy = function() {\n var t = this;\n\n if (t.parent.customPaginationItems) {\n t.parent.customPaginationItems.off('.cbp');\n }\n\n if (t.parent.controls || t.parent.navPagination) {\n t.parent.nav.off('.cbp');\n t.parent.nav.remove();\n }\n };\n\n CubePortfolio.plugins.slider = function(parent) {\n if (parent.options.layoutMode !== 'slider') {\n return null;\n }\n\n return new Plugin(parent);\n };\n})(jQuery, window, document);"],"sourceRoot":"assets/scripts/"}