{"version":3,"sources":["webpack:///./node_modules/smooth-scroll/dist/smooth-scroll.js","webpack:///./node_modules/smooth-scroll/dist/smooth-scroll.polyfills.js"],"names":["root","factory","global","window","this","defaults","ignore","header","topOnEmptyHash","speed","speedAsDuration","durationMax","durationMin","clip","offset","easing","customEasing","updateURL","popstate","emitEvents","supports","document","Element","prototype","extend","merged","Array","forEach","call","arguments","obj","key","hasOwnProperty","reduceMotion","settings","matchMedia","matches","getHeight","elem","parseInt","getComputedStyle","height","escapeCharacters","id","charAt","substr","codeUnit","string","String","length","index","result","firstCodeUnit","charCodeAt","InvalidCharacterError","toString","easingPattern","time","pattern","getDocumentHeight","Math","max","body","scrollHeight","documentElement","offsetHeight","clientHeight","getEndLocation","anchor","headerHeight","location","offsetParent","offsetTop","min","innerHeight","getHeaderHeight","getSpeed","distance","abs","setHistory","options","history","replaceState","state","hash","smoothScroll","JSON","stringify","pageYOffset","title","href","isNum","pushState","adjustFocus","endLocation","focus","activeElement","setAttribute","style","outline","scrollTo","emitEvent","type","toggle","CustomEvent","event","bubbles","detail","dispatchEvent","SmoothScroll","selector","fixedHeader","animationInterval","cancelScroll","noEvent","cancelAnimationFrame","animateScroll","_settings","Object","anchorElem","tagName","startLocation","querySelector","start","percentage","position","documentHeight","timeLapsed","stopAnimateScroll","currentLocation","loopAnimateScroll","timestamp","floor","requestAnimationFrame","clickHandler","defaultPrevented","button","metaKey","ctrlKey","shiftKey","target","closest","toLowerCase","hostname","pathname","test","preventDefault","popstateHandler","destroy","removeEventListener","init","addEventListener","s","i","ownerDocument","querySelectorAll","el","item","parentElement","params","cancelable","undefined","evt","createEvent","initCustomEvent","Event","lastTime","vendors","x","callback","element","currTime","Date","getTime","timeToCall","setTimeout","clearTimeout"],"mappings":"sGAAA;;;;;;;IAQA,SAAWA,EAAMC,GAEf,EAAO,GAAI,EAAF,WACR,OAAOA,EAAQD,IACf,sCAJH,CAUqB,qBAAXE,EAAyBA,EAA2B,qBAAXC,OAAyBA,OAASC,MAAM,SAAWD,GAErG,aAMA,IAAIE,EAAW,CAGdC,OAAQ,uBACRC,OAAQ,KACRC,gBAAgB,EAGhBC,MAAO,IACPC,iBAAiB,EACjBC,YAAa,KACbC,YAAa,KACbC,MAAM,EACNC,OAAQ,EAGRC,OAAQ,iBACRC,aAAc,KAGdC,WAAW,EACXC,UAAU,EAGVC,YAAY,GAaTC,EAAW,WACd,MACC,kBAAmBC,UACnB,qBAAsBlB,GACtB,0BAA2BA,GAC3B,YAAaA,EAAOmB,QAAQC,WAS1BC,EAAS,WACZ,IAAIC,EAAS,GAOb,OANAC,MAAMH,UAAUI,QAAQC,KAAKC,WAAW,SAAWC,GAClD,IAAK,IAAIC,KAAOD,EAAK,CACpB,IAAKA,EAAIE,eAAeD,GAAM,OAC9BN,EAAOM,GAAOD,EAAIC,OAGbN,GAOJQ,EAAe,SAAUC,GAC5B,UAAI,eAAgB/B,KAAUA,EAAOgC,WAAW,4BAA4BC,UAWzEC,EAAY,SAAUC,GACzB,OAAOC,SAASpC,EAAOqC,iBAAiBF,GAAMG,OAAQ,KASnDC,EAAmB,SAAUC,GAGX,MAAjBA,EAAGC,OAAO,KACbD,EAAKA,EAAGE,OAAO,IAGhB,IAGIC,EAHAC,EAASC,OAAOL,GAChBM,EAASF,EAAOE,OAChBC,GAAS,EAETC,EAAS,GACTC,EAAgBL,EAAOM,WAAW,GACtC,QAASH,EAAQD,EAAQ,CAOxB,GANAH,EAAWC,EAAOM,WAAWH,GAMZ,IAAbJ,EACH,MAAM,IAAIQ,sBACT,iDAOAR,GAAY,GAAUA,GAAY,IAAuB,KAAZA,GAGnC,IAAVI,GAAeJ,GAAY,IAAUA,GAAY,IAIvC,IAAVI,GACAJ,GAAY,IAAUA,GAAY,IAChB,KAAlBM,EAIDD,GAAU,KAAOL,EAASS,SAAS,IAAM,IAiBzCJ,GARAL,GAAY,KACC,KAAbA,GACa,KAAbA,GACAA,GAAY,IAAUA,GAAY,IAClCA,GAAY,IAAUA,GAAY,IAClCA,GAAY,IAAUA,GAAY,IAGxBC,EAAOH,OAAOM,GAMf,KAAOH,EAAOH,OAAOM,GAKhC,MAAO,IAAMC,GAWVK,EAAgB,SAAUtB,EAAUuB,GACvC,IAAIC,EAmBJ,MAhBwB,eAApBxB,EAASnB,SAAyB2C,EAAUD,EAAOA,GAC/B,gBAApBvB,EAASnB,SAA0B2C,EAAUD,GAAQ,EAAIA,IACrC,kBAApBvB,EAASnB,SAA4B2C,EAAUD,EAAO,GAAM,EAAIA,EAAOA,GAAa,EAAI,EAAIA,GAAQA,EAArB,GAC3D,gBAApBvB,EAASnB,SAA0B2C,EAAUD,EAAOA,EAAOA,GACvC,iBAApBvB,EAASnB,SAA2B2C,IAAaD,EAAQA,EAAOA,EAAO,GACnD,mBAApBvB,EAASnB,SAA6B2C,EAAUD,EAAO,GAAM,EAAIA,EAAOA,EAAOA,GAAQA,EAAO,IAAM,EAAIA,EAAO,IAAM,EAAIA,EAAO,GAAK,GACjH,gBAApBvB,EAASnB,SAA0B2C,EAAUD,EAAOA,EAAOA,EAAOA,GAC9C,iBAApBvB,EAASnB,SAA2B2C,EAAU,KAAOD,EAAQA,EAAOA,EAAOA,GACvD,mBAApBvB,EAASnB,SAA6B2C,EAAUD,EAAO,GAAM,EAAIA,EAAOA,EAAOA,EAAOA,EAAO,EAAI,IAAOA,EAAQA,EAAOA,EAAOA,GAC1G,gBAApBvB,EAASnB,SAA0B2C,EAAUD,EAAOA,EAAOA,EAAOA,EAAOA,GACrD,iBAApBvB,EAASnB,SAA2B2C,EAAU,IAAOD,EAAQA,EAAOA,EAAOA,EAAOA,GAC9D,mBAApBvB,EAASnB,SAA6B2C,EAAUD,EAAO,GAAM,GAAKA,EAAOA,EAAOA,EAAOA,EAAOA,EAAO,EAAI,KAAQA,EAAQA,EAAOA,EAAOA,EAAOA,GAG5IvB,EAASlB,eAAc0C,EAAUxB,EAASlB,aAAayC,IAEtDC,GAAWD,GAOfE,EAAoB,WACvB,OAAOC,KAAKC,IACXxC,SAASyC,KAAKC,aAAc1C,SAAS2C,gBAAgBD,aACrD1C,SAASyC,KAAKG,aAAc5C,SAAS2C,gBAAgBC,aACrD5C,SAASyC,KAAKI,aAAc7C,SAAS2C,gBAAgBE,eAanDC,EAAiB,SAAUC,EAAQC,EAAcvD,EAAQD,GAC5D,IAAIyD,EAAW,EACf,GAAIF,EAAOG,aACV,GACCD,GAAYF,EAAOI,UACnBJ,EAASA,EAAOG,mBACRH,GAMT,OAJDE,EAAWV,KAAKC,IAAIS,EAAWD,EAAevD,EAAQ,GAClDD,IACHyD,EAAWV,KAAKa,IAAIH,EAAUX,IAAsBxD,EAAOuE,cAEpDJ,GAQLK,EAAkB,SAAUpE,GAC/B,OAAQA,EAAc8B,EAAU9B,GAAUA,EAAOiE,UAAhC,GASdI,EAAW,SAAUC,EAAU3C,GAClC,IAAIzB,EAAQyB,EAASxB,gBAAkBwB,EAASzB,MAAQmD,KAAKkB,IAAID,EAAW,IAAO3C,EAASzB,OAC5F,OAAIyB,EAASvB,aAAeF,EAAQyB,EAASvB,YAAoBuB,EAASvB,YACtEuB,EAAStB,aAAeH,EAAQyB,EAAStB,YAAoBsB,EAAStB,YACnE2B,SAAS9B,EAAO,KAGpBsE,EAAa,SAAUC,GAG1B,GAAKC,QAAQC,cAAiBF,EAAQ/D,YAAagE,QAAQE,MAA3D,CAGA,IAAIC,EAAOjF,EAAOmE,SAASc,KAC3BA,EAAOA,GAAc,GAGrBH,QAAQC,aACP,CACCG,aAAcC,KAAKC,UAAUP,GAC7BZ,OAAQgB,GAAcjF,EAAOqF,aAE9BnE,SAASoE,MACTL,GAAcjF,EAAOmE,SAASoB,QAW5BzE,EAAY,SAAUmD,EAAQuB,EAAOX,GAGpCW,GAGCV,QAAQW,WAAcZ,EAAQ/D,WAGnCgE,QAAQW,UACP,CACCP,aAAcC,KAAKC,UAAUP,GAC7BZ,OAAQA,EAAOzB,IAEhBtB,SAASoE,MACTrB,IAAW/C,SAAS2C,gBAAkB,OAAS,IAAMI,EAAOzB,KAW1DkD,EAAc,SAAUzB,EAAQ0B,EAAaH,GAGjC,IAAXvB,GACH/C,SAASyC,KAAKiC,QAIXJ,IAGJvB,EAAO2B,QACH1E,SAAS2E,gBAAkB5B,IAC9BA,EAAO6B,aAAa,WAAY,MAChC7B,EAAO2B,QACP3B,EAAO8B,MAAMC,QAAU,QAExBhG,EAAOiG,SAAS,EAAIN,KAWjBO,EAAY,SAAUC,EAAMtB,EAASZ,EAAQmC,GAChD,GAAKvB,EAAQ7D,YAA4C,oBAAvBhB,EAAOqG,YAAzC,CACA,IAAIC,EAAQ,IAAID,YAAYF,EAAM,CACjCI,SAAS,EACTC,OAAQ,CACPvC,OAAQA,EACRmC,OAAQA,KAGVlF,SAASuF,cAAcH,KAQpBI,EAAe,SAAUC,EAAU9B,GAMtC,IACI9C,EAAkBqE,EAAQQ,EAA2BC,EADrD3B,EAAe,GAWnBA,EAAa4B,aAAe,SAAUC,GACrCC,qBAAqBH,GACrBA,EAAoB,KAChBE,GACJb,EAAU,eAAgBnE,IAS3BmD,EAAa+B,cAAgB,SAAUhD,EAAQmC,EAAQvB,GAGtDK,EAAa4B,eAGb,IAAII,EAAY7F,EAAOU,GAAY7B,EAAU2E,GAAW,IAGpDW,EAAmD,oBAA3C2B,OAAO/F,UAAUgC,SAAS3B,KAAKwC,GACvCmD,EAAa5B,IAAUvB,EAAOoD,QAAU,KAAOpD,EACnD,GAAKuB,GAAU4B,EAAf,CACA,IAAIE,EAAgBtH,EAAOqF,YACvB6B,EAAU9G,SAAWwG,IAExBA,EAAc1F,SAASqG,cAAcL,EAAU9G,SAEhD,IAMIoH,EAAOC,EAAYC,EANnBxD,EAAeM,EAAgBoC,GAC/BjB,EAAcH,EAAQvB,EAASD,EAAeoD,EAAYlD,EAAc9B,SAAsC,oBAArB8E,EAAUvG,OAAwBuG,EAAUvG,OAAOsD,EAAQmC,GAAUc,EAAUvG,OAAS,IAAKuG,EAAUxG,MAChMgE,EAAWiB,EAAc2B,EACzBK,EAAiBnE,IACjBoE,EAAa,EACbtH,EAAQmE,EAASC,EAAUwC,GAS3BW,EAAoB,SAAUH,EAAU/B,GAG3C,IAAImC,EAAkB9H,EAAOqF,YAG7B,GAAIqC,GAAY/B,GAAemC,GAAmBnC,IAAiB2B,EAAgB3B,GAAe3F,EAAOuE,YAAcuD,IAAoBH,EAe1I,OAZAzC,EAAa4B,cAAa,GAG1BpB,EAAYzB,EAAQ0B,EAAaH,GAGjCU,EAAU,aAAcgB,EAAWjD,EAAQmC,GAG3CoB,EAAQ,KACRX,EAAoB,MAEb,GAQLkB,EAAoB,SAAUC,GAC5BR,IAASA,EAAQQ,GACtBJ,GAAcI,EAAYR,EAC1BC,EAAuB,IAAVnH,EAAc,EAAKsH,EAAatH,EAC7CmH,EAAcA,EAAa,EAAK,EAAIA,EACpCC,EAAWJ,EAAiB5C,EAAWrB,EAAc6D,EAAWO,GAChEzH,EAAOiG,SAAS,EAAGxC,KAAKwE,MAAMP,IACzBG,EAAkBH,EAAU/B,KAChCkB,EAAoB7G,EAAOkI,sBAAsBH,GACjDP,EAAQQ,IAQiB,IAAvBhI,EAAOqF,aACVrF,EAAOiG,SAAS,EAAG,GAIpBnF,EAAUmD,EAAQuB,EAAO0B,GAGzBhB,EAAU,cAAegB,EAAWjD,EAAQmC,GAG5ClB,EAAa4B,cAAa,GAC1B9G,EAAOkI,sBAAsBH,KAO9B,IAAII,EAAe,SAAU7B,GAG5B,IAAIxE,EAAaC,KAIbuE,EAAM8B,oBAGW,IAAjB9B,EAAM+B,QAAgB/B,EAAMgC,SAAWhC,EAAMiC,SAAWjC,EAAMkC,WAI7D,YAAalC,EAAMmC,SAGxBrC,EAASE,EAAMmC,OAAOC,QAAQ/B,GACzBP,GAA2C,MAAjCA,EAAOiB,QAAQsB,gBAAyBrC,EAAMmC,OAAOC,QAAQ3G,EAAS5B,SAGjFiG,EAAOwC,WAAa5I,EAAOmE,SAASyE,UAAYxC,EAAOyC,WAAa7I,EAAOmE,SAAS0E,UAAa,IAAIC,KAAK1C,EAAOb,OAArH,CAGA,IAGItB,EAHAgB,EAAO1C,EAAiB6D,EAAOnB,MAInC,GAAa,MAATA,EAAc,CACjB,IAAKlD,EAAS1B,eAAgB,OAC9B4D,EAAS/C,SAAS2C,qBAElBI,EAAS/C,SAASqG,cAActC,GAEjChB,EAAUA,GAAmB,SAATgB,EAA6ChB,EAA3B/C,SAAS2C,gBAG1CI,IACLqC,EAAMyC,iBACNnE,EAAW7C,GACXmD,EAAa+B,cAAchD,EAAQmC,MAOhC4C,EAAkB,SAAU1C,GAI/B,GAAsB,OAAlBxB,QAAQE,OAGPF,QAAQE,MAAME,cAAgBJ,QAAQE,MAAME,eAAiBC,KAAKC,UAAUrD,GAAjF,CAOA,IAAIkC,EAASa,QAAQE,MAAMf,OACL,kBAAXA,GAAuBA,IACjCA,EAAS/C,SAASqG,cAAchF,EAAiBuC,QAAQE,MAAMf,UAC1DA,IAINiB,EAAa+B,cAAchD,EAAQ,KAAM,CAACnD,WAAW,MAOtDoE,EAAa+D,QAAU,WAGjBlH,IAGLb,SAASgI,oBAAoB,QAASf,GAAc,GACpDnI,EAAOkJ,oBAAoB,WAAYF,GAAiB,GAGxD9D,EAAa4B,eAGb/E,EAAW,KACF,KACTqE,EAAS,KACTQ,EAAc,KACC,KACfC,EAAoB,OAQrB,IAAIsC,EAAO,WAGV,IAAKlI,IAAY,KAAM,iGAGvBiE,EAAa+D,UAGblH,EAAWV,EAAOnB,EAAU2E,GAAW,IACvC+B,EAAc7E,EAAS3B,OAASc,SAASqG,cAAcxF,EAAS3B,QAAU,KAG1Ec,SAASkI,iBAAiB,QAASjB,GAAc,GAG7CpG,EAASjB,WAAaiB,EAAShB,UAClCf,EAAOoJ,iBAAiB,WAAYJ,GAAiB,IAiBvD,OAPAG,IAOOjE,GAIR,OAAOwB,O,4CC/nBR;;;;;;;GAYI1G,OAAOmB,UAAYA,QAAQC,UAAUsH,UACxCvH,QAAQC,UAAUsH,QAAU,SAASW,GACpC,IACCC,EADGrH,GAAWhC,KAAKiB,UAAYjB,KAAKsJ,eAAeC,iBAAiBH,GAEpEI,EAAKxJ,KACN,EAAG,CACFqJ,EAAIrH,EAAQa,OACZ,QAASwG,GAAK,GAAKrH,EAAQyH,KAAKJ,KAAOG,UAC9BH,EAAI,IAAOG,EAAKA,EAAGE,gBAC7B,OAAOF,IAQT,WAEC,GAAkC,oBAAvBzJ,OAAOqG,YAA4B,OAAO,EAErD,SAASA,EAAYC,EAAOsD,GAC3BA,EAASA,GAAU,CAAErD,SAAS,EAAOsD,YAAY,EAAOrD,YAAQsD,GAChE,IAAIC,EAAM7I,SAAS8I,YAAY,eAE/B,OADAD,EAAIE,gBAAgB3D,EAAOsD,EAAOrD,QAASqD,EAAOC,WAAYD,EAAOpD,QAC9DuD,EAGR1D,EAAYjF,UAAYpB,OAAOkK,MAAM9I,UAErCpB,OAAOqG,YAAcA,EAbtB;;;;;;;;AAsBC,WAGA,IAFA,IAAI8D,EAAW,EACXC,EAAU,CAAC,KAAM,MAAO,SAAU,KAC9BC,EAAI,EAAGA,EAAID,EAAQtH,SAAW9C,OAAOkI,wBAAyBmC,EACrErK,OAAOkI,sBAAwBlI,OAAOoK,EAAQC,GAAG,yBACjDrK,OAAOgH,qBAAuBhH,OAAOoK,EAAQC,GAAG,yBAClBrK,OAAOoK,EAAQC,GAAG,+BAG5CrK,OAAOkI,wBACXlI,OAAOkI,sBAAwB,SAASoC,EAAUC,GACjD,IAAIC,GAAW,IAAIC,MAAOC,UACtBC,EAAalH,KAAKC,IAAI,EAAG,IAAM8G,EAAWL,IAC1C3H,EAAKxC,OAAO4K,YAAW,WAAcN,EAASE,EAAWG,KAC5DA,GAED,OADAR,EAAWK,EAAWG,EACfnI,IAIJxC,OAAOgH,uBACXhH,OAAOgH,qBAAuB,SAASxE,GACtCqI,aAAarI,KAtBhB,GA2BA,SAAW3C,EAAMC,GAEf,EAAO,GAAI,EAAF,WACR,OAAOA,EAAQD,IACf,qCAJH,CAUqB,qBAAXE,EAAyBA,EAA2B,qBAAXC,OAAyBA,OAASC,MAAM,SAAWD,GAErG,aAMA,IAAIE,EAAW,CAGdC,OAAQ,uBACRC,OAAQ,KACRC,gBAAgB,EAGhBC,MAAO,IACPC,iBAAiB,EACjBC,YAAa,KACbC,YAAa,KACbC,MAAM,EACNC,OAAQ,EAGRC,OAAQ,iBACRC,aAAc,KAGdC,WAAW,EACXC,UAAU,EAGVC,YAAY,GAaTC,EAAW,WACd,MACC,kBAAmBC,UACnB,qBAAsBlB,GACtB,0BAA2BA,GAC3B,YAAaA,EAAOmB,QAAQC,WAS1BC,EAAS,WACZ,IAAIC,EAAS,GAOb,OANAC,MAAMH,UAAUI,QAAQC,KAAKC,WAAW,SAAWC,GAClD,IAAK,IAAIC,KAAOD,EAAK,CACpB,IAAKA,EAAIE,eAAeD,GAAM,OAC9BN,EAAOM,GAAOD,EAAIC,OAGbN,GAOJQ,EAAe,SAAUC,GAC5B,UAAI,eAAgB/B,KAAUA,EAAOgC,WAAW,4BAA4BC,UAWzEC,EAAY,SAAUC,GACzB,OAAOC,SAASpC,EAAOqC,iBAAiBF,GAAMG,OAAQ,KASnDC,EAAmB,SAAUC,GAGX,MAAjBA,EAAGC,OAAO,KACbD,EAAKA,EAAGE,OAAO,IAGhB,IAGIC,EAHAC,EAASC,OAAOL,GAChBM,EAASF,EAAOE,OAChBC,GAAS,EAETC,EAAS,GACTC,EAAgBL,EAAOM,WAAW,GACtC,QAASH,EAAQD,EAAQ,CAOxB,GANAH,EAAWC,EAAOM,WAAWH,GAMZ,IAAbJ,EACH,MAAM,IAAIQ,sBACT,iDAOAR,GAAY,GAAUA,GAAY,IAAuB,KAAZA,GAGnC,IAAVI,GAAeJ,GAAY,IAAUA,GAAY,IAIvC,IAAVI,GACAJ,GAAY,IAAUA,GAAY,IAChB,KAAlBM,EAIDD,GAAU,KAAOL,EAASS,SAAS,IAAM,IAiBzCJ,GARAL,GAAY,KACC,KAAbA,GACa,KAAbA,GACAA,GAAY,IAAUA,GAAY,IAClCA,GAAY,IAAUA,GAAY,IAClCA,GAAY,IAAUA,GAAY,IAGxBC,EAAOH,OAAOM,GAMf,KAAOH,EAAOH,OAAOM,GAKhC,MAAO,IAAMC,GAWVK,EAAgB,SAAUtB,EAAUuB,GACvC,IAAIC,EAmBJ,MAhBwB,eAApBxB,EAASnB,SAAyB2C,EAAUD,EAAOA,GAC/B,gBAApBvB,EAASnB,SAA0B2C,EAAUD,GAAQ,EAAIA,IACrC,kBAApBvB,EAASnB,SAA4B2C,EAAUD,EAAO,GAAM,EAAIA,EAAOA,GAAa,EAAI,EAAIA,GAAQA,EAArB,GAC3D,gBAApBvB,EAASnB,SAA0B2C,EAAUD,EAAOA,EAAOA,GACvC,iBAApBvB,EAASnB,SAA2B2C,IAAaD,EAAQA,EAAOA,EAAO,GACnD,mBAApBvB,EAASnB,SAA6B2C,EAAUD,EAAO,GAAM,EAAIA,EAAOA,EAAOA,GAAQA,EAAO,IAAM,EAAIA,EAAO,IAAM,EAAIA,EAAO,GAAK,GACjH,gBAApBvB,EAASnB,SAA0B2C,EAAUD,EAAOA,EAAOA,EAAOA,GAC9C,iBAApBvB,EAASnB,SAA2B2C,EAAU,KAAOD,EAAQA,EAAOA,EAAOA,GACvD,mBAApBvB,EAASnB,SAA6B2C,EAAUD,EAAO,GAAM,EAAIA,EAAOA,EAAOA,EAAOA,EAAO,EAAI,IAAOA,EAAQA,EAAOA,EAAOA,GAC1G,gBAApBvB,EAASnB,SAA0B2C,EAAUD,EAAOA,EAAOA,EAAOA,EAAOA,GACrD,iBAApBvB,EAASnB,SAA2B2C,EAAU,IAAOD,EAAQA,EAAOA,EAAOA,EAAOA,GAC9D,mBAApBvB,EAASnB,SAA6B2C,EAAUD,EAAO,GAAM,GAAKA,EAAOA,EAAOA,EAAOA,EAAOA,EAAO,EAAI,KAAQA,EAAQA,EAAOA,EAAOA,EAAOA,GAG5IvB,EAASlB,eAAc0C,EAAUxB,EAASlB,aAAayC,IAEtDC,GAAWD,GAOfE,EAAoB,WACvB,OAAOC,KAAKC,IACXxC,SAASyC,KAAKC,aAAc1C,SAAS2C,gBAAgBD,aACrD1C,SAASyC,KAAKG,aAAc5C,SAAS2C,gBAAgBC,aACrD5C,SAASyC,KAAKI,aAAc7C,SAAS2C,gBAAgBE,eAanDC,EAAiB,SAAUC,EAAQC,EAAcvD,EAAQD,GAC5D,IAAIyD,EAAW,EACf,GAAIF,EAAOG,aACV,GACCD,GAAYF,EAAOI,UACnBJ,EAASA,EAAOG,mBACRH,GAMT,OAJDE,EAAWV,KAAKC,IAAIS,EAAWD,EAAevD,EAAQ,GAClDD,IACHyD,EAAWV,KAAKa,IAAIH,EAAUX,IAAsBxD,EAAOuE,cAEpDJ,GAQLK,EAAkB,SAAUpE,GAC/B,OAAQA,EAAc8B,EAAU9B,GAAUA,EAAOiE,UAAhC,GASdI,EAAW,SAAUC,EAAU3C,GAClC,IAAIzB,EAAQyB,EAASxB,gBAAkBwB,EAASzB,MAAQmD,KAAKkB,IAAID,EAAW,IAAO3C,EAASzB,OAC5F,OAAIyB,EAASvB,aAAeF,EAAQyB,EAASvB,YAAoBuB,EAASvB,YACtEuB,EAAStB,aAAeH,EAAQyB,EAAStB,YAAoBsB,EAAStB,YACnE2B,SAAS9B,EAAO,KAGpBsE,EAAa,SAAUC,GAG1B,GAAKC,QAAQC,cAAiBF,EAAQ/D,YAAagE,QAAQE,MAA3D,CAGA,IAAIC,EAAOjF,EAAOmE,SAASc,KAC3BA,EAAOA,GAAc,GAGrBH,QAAQC,aACP,CACCG,aAAcC,KAAKC,UAAUP,GAC7BZ,OAAQgB,GAAcjF,EAAOqF,aAE9BnE,SAASoE,MACTL,GAAcjF,EAAOmE,SAASoB,QAW5BzE,EAAY,SAAUmD,EAAQuB,EAAOX,GAGpCW,GAGCV,QAAQW,WAAcZ,EAAQ/D,WAGnCgE,QAAQW,UACP,CACCP,aAAcC,KAAKC,UAAUP,GAC7BZ,OAAQA,EAAOzB,IAEhBtB,SAASoE,MACTrB,IAAW/C,SAAS2C,gBAAkB,OAAS,IAAMI,EAAOzB,KAW1DkD,EAAc,SAAUzB,EAAQ0B,EAAaH,GAGjC,IAAXvB,GACH/C,SAASyC,KAAKiC,QAIXJ,IAGJvB,EAAO2B,QACH1E,SAAS2E,gBAAkB5B,IAC9BA,EAAO6B,aAAa,WAAY,MAChC7B,EAAO2B,QACP3B,EAAO8B,MAAMC,QAAU,QAExBhG,EAAOiG,SAAS,EAAIN,KAWjBO,EAAY,SAAUC,EAAMtB,EAASZ,EAAQmC,GAChD,GAAKvB,EAAQ7D,YAA4C,oBAAvBhB,EAAOqG,YAAzC,CACA,IAAIC,EAAQ,IAAID,YAAYF,EAAM,CACjCI,SAAS,EACTC,OAAQ,CACPvC,OAAQA,EACRmC,OAAQA,KAGVlF,SAASuF,cAAcH,KAQpBI,EAAe,SAAUC,EAAU9B,GAMtC,IACI9C,EAAkBqE,EAAQQ,EAA2BC,EADrD3B,EAAe,GAWnBA,EAAa4B,aAAe,SAAUC,GACrCC,qBAAqBH,GACrBA,EAAoB,KAChBE,GACJb,EAAU,eAAgBnE,IAS3BmD,EAAa+B,cAAgB,SAAUhD,EAAQmC,EAAQvB,GAGtDK,EAAa4B,eAGb,IAAII,EAAY7F,EAAOU,GAAY7B,EAAU2E,GAAW,IAGpDW,EAAmD,oBAA3C2B,OAAO/F,UAAUgC,SAAS3B,KAAKwC,GACvCmD,EAAa5B,IAAUvB,EAAOoD,QAAU,KAAOpD,EACnD,GAAKuB,GAAU4B,EAAf,CACA,IAAIE,EAAgBtH,EAAOqF,YACvB6B,EAAU9G,SAAWwG,IAExBA,EAAc1F,SAASqG,cAAcL,EAAU9G,SAEhD,IAMIoH,EAAOC,EAAYC,EANnBxD,EAAeM,EAAgBoC,GAC/BjB,EAAcH,EAAQvB,EAASD,EAAeoD,EAAYlD,EAAc9B,SAAsC,oBAArB8E,EAAUvG,OAAwBuG,EAAUvG,OAAOsD,EAAQmC,GAAUc,EAAUvG,OAAS,IAAKuG,EAAUxG,MAChMgE,EAAWiB,EAAc2B,EACzBK,EAAiBnE,IACjBoE,EAAa,EACbtH,EAAQmE,EAASC,EAAUwC,GAS3BW,EAAoB,SAAUH,EAAU/B,GAG3C,IAAImC,EAAkB9H,EAAOqF,YAG7B,GAAIqC,GAAY/B,GAAemC,GAAmBnC,IAAiB2B,EAAgB3B,GAAe3F,EAAOuE,YAAcuD,IAAoBH,EAe1I,OAZAzC,EAAa4B,cAAa,GAG1BpB,EAAYzB,EAAQ0B,EAAaH,GAGjCU,EAAU,aAAcgB,EAAWjD,EAAQmC,GAG3CoB,EAAQ,KACRX,EAAoB,MAEb,GAQLkB,EAAoB,SAAUC,GAC5BR,IAASA,EAAQQ,GACtBJ,GAAcI,EAAYR,EAC1BC,EAAuB,IAAVnH,EAAc,EAAKsH,EAAatH,EAC7CmH,EAAcA,EAAa,EAAK,EAAIA,EACpCC,EAAWJ,EAAiB5C,EAAWrB,EAAc6D,EAAWO,GAChEzH,EAAOiG,SAAS,EAAGxC,KAAKwE,MAAMP,IACzBG,EAAkBH,EAAU/B,KAChCkB,EAAoB7G,EAAOkI,sBAAsBH,GACjDP,EAAQQ,IAQiB,IAAvBhI,EAAOqF,aACVrF,EAAOiG,SAAS,EAAG,GAIpBnF,EAAUmD,EAAQuB,EAAO0B,GAGzBhB,EAAU,cAAegB,EAAWjD,EAAQmC,GAG5ClB,EAAa4B,cAAa,GAC1B9G,EAAOkI,sBAAsBH,KAO9B,IAAII,EAAe,SAAU7B,GAG5B,IAAIxE,EAAaC,KAIbuE,EAAM8B,oBAGW,IAAjB9B,EAAM+B,QAAgB/B,EAAMgC,SAAWhC,EAAMiC,SAAWjC,EAAMkC,WAI7D,YAAalC,EAAMmC,SAGxBrC,EAASE,EAAMmC,OAAOC,QAAQ/B,GACzBP,GAA2C,MAAjCA,EAAOiB,QAAQsB,gBAAyBrC,EAAMmC,OAAOC,QAAQ3G,EAAS5B,SAGjFiG,EAAOwC,WAAa5I,EAAOmE,SAASyE,UAAYxC,EAAOyC,WAAa7I,EAAOmE,SAAS0E,UAAa,IAAIC,KAAK1C,EAAOb,OAArH,CAGA,IAGItB,EAHAgB,EAAO1C,EAAiB6D,EAAOnB,MAInC,GAAa,MAATA,EAAc,CACjB,IAAKlD,EAAS1B,eAAgB,OAC9B4D,EAAS/C,SAAS2C,qBAElBI,EAAS/C,SAASqG,cAActC,GAEjChB,EAAUA,GAAmB,SAATgB,EAA6ChB,EAA3B/C,SAAS2C,gBAG1CI,IACLqC,EAAMyC,iBACNnE,EAAW7C,GACXmD,EAAa+B,cAAchD,EAAQmC,MAOhC4C,EAAkB,SAAU1C,GAI/B,GAAsB,OAAlBxB,QAAQE,OAGPF,QAAQE,MAAME,cAAgBJ,QAAQE,MAAME,eAAiBC,KAAKC,UAAUrD,GAAjF,CAOA,IAAIkC,EAASa,QAAQE,MAAMf,OACL,kBAAXA,GAAuBA,IACjCA,EAAS/C,SAASqG,cAAchF,EAAiBuC,QAAQE,MAAMf,UAC1DA,IAINiB,EAAa+B,cAAchD,EAAQ,KAAM,CAACnD,WAAW,MAOtDoE,EAAa+D,QAAU,WAGjBlH,IAGLb,SAASgI,oBAAoB,QAASf,GAAc,GACpDnI,EAAOkJ,oBAAoB,WAAYF,GAAiB,GAGxD9D,EAAa4B,eAGb/E,EAAW,KACF,KACTqE,EAAS,KACTQ,EAAc,KACC,KACfC,EAAoB,OAQrB,IAAIsC,EAAO,WAGV,IAAKlI,IAAY,KAAM,iGAGvBiE,EAAa+D,UAGblH,EAAWV,EAAOnB,EAAU2E,GAAW,IACvC+B,EAAc7E,EAAS3B,OAASc,SAASqG,cAAcxF,EAAS3B,QAAU,KAG1Ec,SAASkI,iBAAiB,QAASjB,GAAc,GAG7CpG,EAASjB,WAAaiB,EAAShB,UAClCf,EAAOoJ,iBAAiB,WAAYJ,GAAiB,IAiBvD,OAPAG,IAOOjE,GAIR,OAAOwB,O","file":"js/chunk-c3a92aea.0fc24421.js","sourcesContent":["/*!\n * smooth-scroll v16.0.3\n * Animate scrolling to anchor links\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/smooth-scroll\n */\n\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine([], (function () {\n\t\t\treturn factory(root);\n\t\t}));\n\t} else if (typeof exports === 'object') {\n\t\tmodule.exports = factory(root);\n\t} else {\n\t\troot.SmoothScroll = factory(root);\n\t}\n})(typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : this, (function (window) {\n\n\t'use strict';\n\n\t//\n\t// Default settings\n\t//\n\n\tvar defaults = {\n\n\t\t// Selectors\n\t\tignore: '[data-scroll-ignore]',\n\t\theader: null,\n\t\ttopOnEmptyHash: true,\n\n\t\t// Speed & Duration\n\t\tspeed: 500,\n\t\tspeedAsDuration: false,\n\t\tdurationMax: null,\n\t\tdurationMin: null,\n\t\tclip: true,\n\t\toffset: 0,\n\n\t\t// Easing\n\t\teasing: 'easeInOutCubic',\n\t\tcustomEasing: null,\n\n\t\t// History\n\t\tupdateURL: true,\n\t\tpopstate: true,\n\n\t\t// Custom Events\n\t\temitEvents: true\n\n\t};\n\n\n\t//\n\t// Utility Methods\n\t//\n\n\t/**\n\t * Check if browser supports required methods\n\t * @return {Boolean} Returns true if all required methods are supported\n\t */\n\tvar supports = function () {\n\t\treturn (\n\t\t\t'querySelector' in document &&\n\t\t\t'addEventListener' in window &&\n\t\t\t'requestAnimationFrame' in window &&\n\t\t\t'closest' in window.Element.prototype\n\t\t);\n\t};\n\n\t/**\n\t * Merge two or more objects together.\n\t * @param {Object} objects The objects to merge together\n\t * @returns {Object} Merged values of defaults and options\n\t */\n\tvar extend = function () {\n\t\tvar merged = {};\n\t\tArray.prototype.forEach.call(arguments, (function (obj) {\n\t\t\tfor (var key in obj) {\n\t\t\t\tif (!obj.hasOwnProperty(key)) return;\n\t\t\t\tmerged[key] = obj[key];\n\t\t\t}\n\t\t}));\n\t\treturn merged;\n\t};\n\n\t/**\n\t * Check to see if user prefers reduced motion\n\t * @param {Object} settings Script settings\n\t */\n\tvar reduceMotion = function (settings) {\n\t\tif ('matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\t/**\n\t * Get the height of an element.\n\t * @param {Node} elem The element to get the height of\n\t * @return {Number} The element's height in pixels\n\t */\n\tvar getHeight = function (elem) {\n\t\treturn parseInt(window.getComputedStyle(elem).height, 10);\n\t};\n\n\t/**\n\t * Escape special characters for use with querySelector\n\t * @author Mathias Bynens\n\t * @link https://github.com/mathiasbynens/CSS.escape\n\t * @param {String} id The anchor ID to escape\n\t */\n\tvar escapeCharacters = function (id) {\n\n\t\t// Remove leading hash\n\t\tif (id.charAt(0) === '#') {\n\t\t\tid = id.substr(1);\n\t\t}\n\n\t\tvar string = String(id);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then throw an\n\t\t\t// `InvalidCharacterError` exception and terminate these steps.\n\t\t\tif (codeUnit === 0x0000) {\n\t\t\t\tthrow new InvalidCharacterError(\n\t\t\t\t\t'Invalid character: the input contains U+0000.'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index === 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex === 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit === 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// http://dev.w3.org/csswg/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit === 0x002D ||\n\t\t\t\tcodeUnit === 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// http://dev.w3.org/csswg/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\n\t\t// Return sanitized hash\n\t\treturn '#' + result;\n\n\t};\n\n\t/**\n\t * Calculate the easing pattern\n\t * @link https://gist.github.com/gre/1650294\n\t * @param {String} type Easing pattern\n\t * @param {Number} time Time animation should take to complete\n\t * @returns {Number}\n\t */\n\tvar easingPattern = function (settings, time) {\n\t\tvar pattern;\n\n\t\t// Default Easing Patterns\n\t\tif (settings.easing === 'easeInQuad') pattern = time * time; // accelerating from zero velocity\n\t\tif (settings.easing === 'easeOutQuad') pattern = time * (2 - time); // decelerating to zero velocity\n\t\tif (settings.easing === 'easeInOutQuad') pattern = time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration\n\t\tif (settings.easing === 'easeInCubic') pattern = time * time * time; // accelerating from zero velocity\n\t\tif (settings.easing === 'easeOutCubic') pattern = (--time) * time * time + 1; // decelerating to zero velocity\n\t\tif (settings.easing === 'easeInOutCubic') pattern = time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration\n\t\tif (settings.easing === 'easeInQuart') pattern = time * time * time * time; // accelerating from zero velocity\n\t\tif (settings.easing === 'easeOutQuart') pattern = 1 - (--time) * time * time * time; // decelerating to zero velocity\n\t\tif (settings.easing === 'easeInOutQuart') pattern = time < 0.5 ? 8 * time * time * time * time : 1 - 8 * (--time) * time * time * time; // acceleration until halfway, then deceleration\n\t\tif (settings.easing === 'easeInQuint') pattern = time * time * time * time * time; // accelerating from zero velocity\n\t\tif (settings.easing === 'easeOutQuint') pattern = 1 + (--time) * time * time * time * time; // decelerating to zero velocity\n\t\tif (settings.easing === 'easeInOutQuint') pattern = time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * (--time) * time * time * time * time; // acceleration until halfway, then deceleration\n\n\t\t// Custom Easing Patterns\n\t\tif (!!settings.customEasing) pattern = settings.customEasing(time);\n\n\t\treturn pattern || time; // no easing, no acceleration\n\t};\n\n\t/**\n\t * Determine the document's height\n\t * @returns {Number}\n\t */\n\tvar getDocumentHeight = function () {\n\t\treturn Math.max(\n\t\t\tdocument.body.scrollHeight, document.documentElement.scrollHeight,\n\t\t\tdocument.body.offsetHeight, document.documentElement.offsetHeight,\n\t\t\tdocument.body.clientHeight, document.documentElement.clientHeight\n\t\t);\n\t};\n\n\t/**\n\t * Calculate how far to scroll\n\t * Clip support added by robjtede - https://github.com/cferdinandi/smooth-scroll/issues/405\n\t * @param {Element} anchor The anchor element to scroll to\n\t * @param {Number} headerHeight Height of a fixed header, if any\n\t * @param {Number} offset Number of pixels by which to offset scroll\n\t * @param {Boolean} clip If true, adjust scroll distance to prevent abrupt stops near the bottom of the page\n\t * @returns {Number}\n\t */\n\tvar getEndLocation = function (anchor, headerHeight, offset, clip) {\n\t\tvar location = 0;\n\t\tif (anchor.offsetParent) {\n\t\t\tdo {\n\t\t\t\tlocation += anchor.offsetTop;\n\t\t\t\tanchor = anchor.offsetParent;\n\t\t\t} while (anchor);\n\t\t}\n\t\tlocation = Math.max(location - headerHeight - offset, 0);\n\t\tif (clip) {\n\t\t\tlocation = Math.min(location, getDocumentHeight() - window.innerHeight);\n\t\t}\n \t\treturn location;\n\t};\n\n\t/**\n\t * Get the height of the fixed header\n\t * @param {Node} header The header\n\t * @return {Number} The height of the header\n\t */\n\tvar getHeaderHeight = function (header) {\n\t\treturn !header ? 0 : (getHeight(header) + header.offsetTop);\n\t};\n\n\t/**\n\t * Calculate the speed to use for the animation\n\t * @param {Number} distance The distance to travel\n\t * @param {Object} settings The plugin settings\n\t * @return {Number} How fast to animate\n\t */\n\tvar getSpeed = function (distance, settings) {\n\t\tvar speed = settings.speedAsDuration ? settings.speed : Math.abs(distance / 1000 * settings.speed);\n\t\tif (settings.durationMax && speed > settings.durationMax) return settings.durationMax;\n\t\tif (settings.durationMin && speed < settings.durationMin) return settings.durationMin;\n\t\treturn parseInt(speed, 10);\n\t};\n\n\tvar setHistory = function (options) {\n\n\t\t// Make sure this should run\n\t\tif (!history.replaceState || !options.updateURL || history.state) return;\n\n\t\t// Get the hash to use\n\t\tvar hash = window.location.hash;\n\t\thash = hash ? hash : '';\n\n\t\t// Set a default history\n\t\thistory.replaceState(\n\t\t\t{\n\t\t\t\tsmoothScroll: JSON.stringify(options),\n\t\t\t\tanchor: hash ? hash : window.pageYOffset\n\t\t\t},\n\t\t\tdocument.title,\n\t\t\thash ? hash : window.location.href\n\t\t);\n\n\t};\n\n\t/**\n\t * Update the URL\n\t * @param {Node} anchor The anchor that was scrolled to\n\t * @param {Boolean} isNum If true, anchor is a number\n\t * @param {Object} options Settings for Smooth Scroll\n\t */\n\tvar updateURL = function (anchor, isNum, options) {\n\n\t\t// Bail if the anchor is a number\n\t\tif (isNum) return;\n\n\t\t// Verify that pushState is supported and the updateURL option is enabled\n\t\tif (!history.pushState || !options.updateURL) return;\n\n\t\t// Update URL\n\t\thistory.pushState(\n\t\t\t{\n\t\t\t\tsmoothScroll: JSON.stringify(options),\n\t\t\t\tanchor: anchor.id\n\t\t\t},\n\t\t\tdocument.title,\n\t\t\tanchor === document.documentElement ? '#top' : '#' + anchor.id\n\t\t);\n\n\t};\n\n\t/**\n\t * Bring the anchored element into focus\n\t * @param {Node} anchor The anchor element\n\t * @param {Number} endLocation The end location to scroll to\n\t * @param {Boolean} isNum If true, scroll is to a position rather than an element\n\t */\n\tvar adjustFocus = function (anchor, endLocation, isNum) {\n\n\t\t// Is scrolling to top of page, blur\n\t\tif (anchor === 0) {\n\t\t\tdocument.body.focus();\n\t\t}\n\n\t\t// Don't run if scrolling to a number on the page\n\t\tif (isNum) return;\n\n\t\t// Otherwise, bring anchor element into focus\n\t\tanchor.focus();\n\t\tif (document.activeElement !== anchor) {\n\t\t\tanchor.setAttribute('tabindex', '-1');\n\t\t\tanchor.focus();\n\t\t\tanchor.style.outline = 'none';\n\t\t}\n\t\twindow.scrollTo(0 , endLocation);\n\n\t};\n\n\t/**\n\t * Emit a custom event\n\t * @param {String} type The event type\n\t * @param {Object} options The settings object\n\t * @param {Node} anchor The anchor element\n\t * @param {Node} toggle The toggle element\n\t */\n\tvar emitEvent = function (type, options, anchor, toggle) {\n\t\tif (!options.emitEvents || typeof window.CustomEvent !== 'function') return;\n\t\tvar event = new CustomEvent(type, {\n\t\t\tbubbles: true,\n\t\t\tdetail: {\n\t\t\t\tanchor: anchor,\n\t\t\t\ttoggle: toggle\n\t\t\t}\n\t\t});\n\t\tdocument.dispatchEvent(event);\n\t};\n\n\n\t//\n\t// SmoothScroll Constructor\n\t//\n\n\tvar SmoothScroll = function (selector, options) {\n\n\t\t//\n\t\t// Variables\n\t\t//\n\n\t\tvar smoothScroll = {}; // Object for public APIs\n\t\tvar settings, anchor, toggle, fixedHeader, eventTimeout, animationInterval;\n\n\n\t\t//\n\t\t// Methods\n\t\t//\n\n\t\t/**\n\t\t * Cancel a scroll-in-progress\n\t\t */\n\t\tsmoothScroll.cancelScroll = function (noEvent) {\n\t\t\tcancelAnimationFrame(animationInterval);\n\t\t\tanimationInterval = null;\n\t\t\tif (noEvent) return;\n\t\t\temitEvent('scrollCancel', settings);\n\t\t};\n\n\t\t/**\n\t\t * Start/stop the scrolling animation\n\t\t * @param {Node|Number} anchor The element or position to scroll to\n\t\t * @param {Element} toggle The element that toggled the scroll event\n\t\t * @param {Object} options\n\t\t */\n\t\tsmoothScroll.animateScroll = function (anchor, toggle, options) {\n\n\t\t\t// Cancel any in progress scrolls\n\t\t\tsmoothScroll.cancelScroll();\n\n\t\t\t// Local settings\n\t\t\tvar _settings = extend(settings || defaults, options || {}); // Merge user options with defaults\n\n\t\t\t// Selectors and variables\n\t\t\tvar isNum = Object.prototype.toString.call(anchor) === '[object Number]' ? true : false;\n\t\t\tvar anchorElem = isNum || !anchor.tagName ? null : anchor;\n\t\t\tif (!isNum && !anchorElem) return;\n\t\t\tvar startLocation = window.pageYOffset; // Current location on the page\n\t\t\tif (_settings.header && !fixedHeader) {\n\t\t\t\t// Get the fixed header if not already set\n\t\t\t\tfixedHeader = document.querySelector(_settings.header);\n\t\t\t}\n\t\t\tvar headerHeight = getHeaderHeight(fixedHeader);\n\t\t\tvar endLocation = isNum ? anchor : getEndLocation(anchorElem, headerHeight, parseInt((typeof _settings.offset === 'function' ? _settings.offset(anchor, toggle) : _settings.offset), 10), _settings.clip); // Location to scroll to\n\t\t\tvar distance = endLocation - startLocation; // distance to travel\n\t\t\tvar documentHeight = getDocumentHeight();\n\t\t\tvar timeLapsed = 0;\n\t\t\tvar speed = getSpeed(distance, _settings);\n\t\t\tvar start, percentage, position;\n\n\t\t\t/**\n\t\t\t * Stop the scroll animation when it reaches its target (or the bottom/top of page)\n\t\t\t * @param {Number} position Current position on the page\n\t\t\t * @param {Number} endLocation Scroll to location\n\t\t\t * @param {Number} animationInterval How much to scroll on this loop\n\t\t\t */\n\t\t\tvar stopAnimateScroll = function (position, endLocation) {\n\n\t\t\t\t// Get the current location\n\t\t\t\tvar currentLocation = window.pageYOffset;\n\n\t\t\t\t// Check if the end location has been reached yet (or we've hit the end of the document)\n\t\t\t\tif (position == endLocation || currentLocation == endLocation || ((startLocation < endLocation && window.innerHeight + currentLocation) >= documentHeight)) {\n\n\t\t\t\t\t// Clear the animation timer\n\t\t\t\t\tsmoothScroll.cancelScroll(true);\n\n\t\t\t\t\t// Bring the anchored element into focus\n\t\t\t\t\tadjustFocus(anchor, endLocation, isNum);\n\n\t\t\t\t\t// Emit a custom event\n\t\t\t\t\temitEvent('scrollStop', _settings, anchor, toggle);\n\n\t\t\t\t\t// Reset start\n\t\t\t\t\tstart = null;\n\t\t\t\t\tanimationInterval = null;\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Loop scrolling animation\n\t\t\t */\n\t\t\tvar loopAnimateScroll = function (timestamp) {\n\t\t\t\tif (!start) { start = timestamp; }\n\t\t\t\ttimeLapsed += timestamp - start;\n\t\t\t\tpercentage = speed === 0 ? 0 : (timeLapsed / speed);\n\t\t\t\tpercentage = (percentage > 1) ? 1 : percentage;\n\t\t\t\tposition = startLocation + (distance * easingPattern(_settings, percentage));\n\t\t\t\twindow.scrollTo(0, Math.floor(position));\n\t\t\t\tif (!stopAnimateScroll(position, endLocation)) {\n\t\t\t\t\tanimationInterval = window.requestAnimationFrame(loopAnimateScroll);\n\t\t\t\t\tstart = timestamp;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Reset position to fix weird iOS bug\n\t\t\t * @link https://github.com/cferdinandi/smooth-scroll/issues/45\n\t\t\t */\n\t\t\tif (window.pageYOffset === 0) {\n\t\t\t\twindow.scrollTo(0, 0);\n\t\t\t}\n\n\t\t\t// Update the URL\n\t\t\tupdateURL(anchor, isNum, _settings);\n\n\t\t\t// Emit a custom event\n\t\t\temitEvent('scrollStart', _settings, anchor, toggle);\n\n\t\t\t// Start scrolling animation\n\t\t\tsmoothScroll.cancelScroll(true);\n\t\t\twindow.requestAnimationFrame(loopAnimateScroll);\n\n\t\t};\n\n\t\t/**\n\t\t * If smooth scroll element clicked, animate scroll\n\t\t */\n\t\tvar clickHandler = function (event) {\n\n\t\t\t// Don't run if the user prefers reduced motion\n\t\t\tif (reduceMotion(settings)) return;\n\n\t\t\t// Don't run if event was canceled but still bubbled up\n\t\t\t// By @mgreter - https://github.com/cferdinandi/smooth-scroll/pull/462/\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\t// Don't run if right-click or command/control + click or shift + click\n\t\t\tif (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey) return;\n\n\t\t\t// Check if event.target has closest() method\n\t\t\t// By @totegi - https://github.com/cferdinandi/smooth-scroll/pull/401/\n\t\t\tif(!('closest' in event.target))return;\n\n\t\t\t// Check if a smooth scroll link was clicked\n\t\t\ttoggle = event.target.closest(selector);\n\t\t\tif (!toggle || toggle.tagName.toLowerCase() !== 'a' || event.target.closest(settings.ignore)) return;\n\n\t\t\t// Only run if link is an anchor and points to the current page\n\t\t\tif (toggle.hostname !== window.location.hostname || toggle.pathname !== window.location.pathname || !/#/.test(toggle.href)) return;\n\n\t\t\t// Get an escaped version of the hash\n\t\t\tvar hash = escapeCharacters(toggle.hash);\n\n\t\t\t// Get the anchored element\n\t\t\tvar anchor;\n\t\t\tif (hash === '#') {\n\t\t\t\tif (!settings.topOnEmptyHash) return;\n\t\t\t\tanchor = document.documentElement;\n\t\t\t} else {\n\t\t\t\tanchor = document.querySelector(hash);\n\t\t\t}\n\t\t\tanchor = !anchor && hash === '#top' ? document.documentElement : anchor;\n\n\t\t\t// If anchored element exists, scroll to it\n\t\t\tif (!anchor) return;\n\t\t\tevent.preventDefault();\n\t\t\tsetHistory(settings);\n\t\t\tsmoothScroll.animateScroll(anchor, toggle);\n\n\t\t};\n\n\t\t/**\n\t\t * Animate scroll on popstate events\n\t\t */\n\t\tvar popstateHandler = function (event) {\n\n\t\t\t// Stop if history.state doesn't exist (ex. if clicking on a broken anchor link).\n\t\t\t// fixes `Cannot read property 'smoothScroll' of null` error getting thrown.\n\t\t\tif (history.state === null) return;\n\n\t\t\t// Only run if state is a popstate record for this instantiation\n\t\t\tif (!history.state.smoothScroll || history.state.smoothScroll !== JSON.stringify(settings)) return;\n\n\t\t\t// Only run if state includes an anchor\n\n\t\t\t// if (!history.state.anchor && history.state.anchor !== 0) return;\n\n\t\t\t// Get the anchor\n\t\t\tvar anchor = history.state.anchor;\n\t\t\tif (typeof anchor === 'string' && anchor) {\n\t\t\t\tanchor = document.querySelector(escapeCharacters(history.state.anchor));\n\t\t\t\tif (!anchor) return;\n\t\t\t}\n\n\t\t\t// Animate scroll to anchor link\n\t\t\tsmoothScroll.animateScroll(anchor, null, {updateURL: false});\n\n\t\t};\n\n\t\t/**\n\t\t * Destroy the current initialization.\n\t\t */\n\t\tsmoothScroll.destroy = function () {\n\n\t\t\t// If plugin isn't already initialized, stop\n\t\t\tif (!settings) return;\n\n\t\t\t// Remove event listeners\n\t\t\tdocument.removeEventListener('click', clickHandler, false);\n\t\t\twindow.removeEventListener('popstate', popstateHandler, false);\n\n\t\t\t// Cancel any scrolls-in-progress\n\t\t\tsmoothScroll.cancelScroll();\n\n\t\t\t// Reset variables\n\t\t\tsettings = null;\n\t\t\tanchor = null;\n\t\t\ttoggle = null;\n\t\t\tfixedHeader = null;\n\t\t\teventTimeout = null;\n\t\t\tanimationInterval = null;\n\n\t\t};\n\n\t\t/**\n\t\t * Initialize Smooth Scroll\n\t\t * @param {Object} options User settings\n\t\t */\n\t\tvar init = function () {\n\n\t\t\t// feature test\n\t\t\tif (!supports()) throw 'Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.';\n\n\t\t\t// Destroy any existing initializations\n\t\t\tsmoothScroll.destroy();\n\n\t\t\t// Selectors and variables\n\t\t\tsettings = extend(defaults, options || {}); // Merge user options with defaults\n\t\t\tfixedHeader = settings.header ? document.querySelector(settings.header) : null; // Get the fixed header\n\n\t\t\t// When a toggle is clicked, run the click handler\n\t\t\tdocument.addEventListener('click', clickHandler, false);\n\n\t\t\t// If updateURL and popState are enabled, listen for pop events\n\t\t\tif (settings.updateURL && settings.popstate) {\n\t\t\t\twindow.addEventListener('popstate', popstateHandler, false);\n\t\t\t}\n\n\t\t};\n\n\n\t\t//\n\t\t// Initialize plugin\n\t\t//\n\n\t\tinit();\n\n\n\t\t//\n\t\t// Public APIs\n\t\t//\n\n\t\treturn smoothScroll;\n\n\t};\n\n\treturn SmoothScroll;\n\n}));\n","/*!\n * smooth-scroll v16.0.3\n * Animate scrolling to anchor links\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/smooth-scroll\n */\n\n/**\n * closest() polyfill\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\n */\nif (window.Element && !Element.prototype.closest) {\n\tElement.prototype.closest = function(s) {\n\t\tvar matches = (this.document || this.ownerDocument).querySelectorAll(s),\n\t\t\ti,\n\t\t\tel = this;\n\t\tdo {\n\t\t\ti = matches.length;\n\t\t\twhile (--i >= 0 && matches.item(i) !== el) {}\n\t\t} while ((i < 0) && (el = el.parentElement));\n\t\treturn el;\n\t};\n}\n\n/**\n * CustomEvent() polyfill\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#Polyfill\n */\n(function () {\n\n\tif (typeof window.CustomEvent === \"function\") return false;\n\n\tfunction CustomEvent(event, params) {\n\t\tparams = params || { bubbles: false, cancelable: false, detail: undefined };\n\t\tvar evt = document.createEvent('CustomEvent');\n\t\tevt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n\t\treturn evt;\n\t}\n\n\tCustomEvent.prototype = window.Event.prototype;\n\n\twindow.CustomEvent = CustomEvent;\n})();\n/**\n * requestAnimationFrame() polyfill\n * By Erik Möller. Fixes from Paul Irish and Tino Zijdel.\n * @link http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n * @link http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n * @license MIT\n */\n(function() {\n\tvar lastTime = 0;\n\tvar vendors = ['ms', 'moz', 'webkit', 'o'];\n\tfor(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n\t\twindow.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];\n\t\twindow.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] ||\n\t\t window[vendors[x]+'CancelRequestAnimationFrame'];\n\t}\n\n\tif (!window.requestAnimationFrame) {\n\t\twindow.requestAnimationFrame = function(callback, element) {\n\t\t\tvar currTime = new Date().getTime();\n\t\t\tvar timeToCall = Math.max(0, 16 - (currTime - lastTime));\n\t\t\tvar id = window.setTimeout((function() { callback(currTime + timeToCall); }),\n\t\t\t\ttimeToCall);\n\t\t\tlastTime = currTime + timeToCall;\n\t\t\treturn id;\n\t\t};\n\t}\n\n\tif (!window.cancelAnimationFrame) {\n\t\twindow.cancelAnimationFrame = function(id) {\n\t\t\tclearTimeout(id);\n\t\t};\n\t}\n}());\n\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine([], (function () {\n\t\t\treturn factory(root);\n\t\t}));\n\t} else if (typeof exports === 'object') {\n\t\tmodule.exports = factory(root);\n\t} else {\n\t\troot.SmoothScroll = factory(root);\n\t}\n})(typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : this, (function (window) {\n\n\t'use strict';\n\n\t//\n\t// Default settings\n\t//\n\n\tvar defaults = {\n\n\t\t// Selectors\n\t\tignore: '[data-scroll-ignore]',\n\t\theader: null,\n\t\ttopOnEmptyHash: true,\n\n\t\t// Speed & Duration\n\t\tspeed: 500,\n\t\tspeedAsDuration: false,\n\t\tdurationMax: null,\n\t\tdurationMin: null,\n\t\tclip: true,\n\t\toffset: 0,\n\n\t\t// Easing\n\t\teasing: 'easeInOutCubic',\n\t\tcustomEasing: null,\n\n\t\t// History\n\t\tupdateURL: true,\n\t\tpopstate: true,\n\n\t\t// Custom Events\n\t\temitEvents: true\n\n\t};\n\n\n\t//\n\t// Utility Methods\n\t//\n\n\t/**\n\t * Check if browser supports required methods\n\t * @return {Boolean} Returns true if all required methods are supported\n\t */\n\tvar supports = function () {\n\t\treturn (\n\t\t\t'querySelector' in document &&\n\t\t\t'addEventListener' in window &&\n\t\t\t'requestAnimationFrame' in window &&\n\t\t\t'closest' in window.Element.prototype\n\t\t);\n\t};\n\n\t/**\n\t * Merge two or more objects together.\n\t * @param {Object} objects The objects to merge together\n\t * @returns {Object} Merged values of defaults and options\n\t */\n\tvar extend = function () {\n\t\tvar merged = {};\n\t\tArray.prototype.forEach.call(arguments, (function (obj) {\n\t\t\tfor (var key in obj) {\n\t\t\t\tif (!obj.hasOwnProperty(key)) return;\n\t\t\t\tmerged[key] = obj[key];\n\t\t\t}\n\t\t}));\n\t\treturn merged;\n\t};\n\n\t/**\n\t * Check to see if user prefers reduced motion\n\t * @param {Object} settings Script settings\n\t */\n\tvar reduceMotion = function (settings) {\n\t\tif ('matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\t/**\n\t * Get the height of an element.\n\t * @param {Node} elem The element to get the height of\n\t * @return {Number} The element's height in pixels\n\t */\n\tvar getHeight = function (elem) {\n\t\treturn parseInt(window.getComputedStyle(elem).height, 10);\n\t};\n\n\t/**\n\t * Escape special characters for use with querySelector\n\t * @author Mathias Bynens\n\t * @link https://github.com/mathiasbynens/CSS.escape\n\t * @param {String} id The anchor ID to escape\n\t */\n\tvar escapeCharacters = function (id) {\n\n\t\t// Remove leading hash\n\t\tif (id.charAt(0) === '#') {\n\t\t\tid = id.substr(1);\n\t\t}\n\n\t\tvar string = String(id);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then throw an\n\t\t\t// `InvalidCharacterError` exception and terminate these steps.\n\t\t\tif (codeUnit === 0x0000) {\n\t\t\t\tthrow new InvalidCharacterError(\n\t\t\t\t\t'Invalid character: the input contains U+0000.'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index === 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex === 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit === 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// http://dev.w3.org/csswg/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit === 0x002D ||\n\t\t\t\tcodeUnit === 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// http://dev.w3.org/csswg/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\n\t\t// Return sanitized hash\n\t\treturn '#' + result;\n\n\t};\n\n\t/**\n\t * Calculate the easing pattern\n\t * @link https://gist.github.com/gre/1650294\n\t * @param {String} type Easing pattern\n\t * @param {Number} time Time animation should take to complete\n\t * @returns {Number}\n\t */\n\tvar easingPattern = function (settings, time) {\n\t\tvar pattern;\n\n\t\t// Default Easing Patterns\n\t\tif (settings.easing === 'easeInQuad') pattern = time * time; // accelerating from zero velocity\n\t\tif (settings.easing === 'easeOutQuad') pattern = time * (2 - time); // decelerating to zero velocity\n\t\tif (settings.easing === 'easeInOutQuad') pattern = time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration\n\t\tif (settings.easing === 'easeInCubic') pattern = time * time * time; // accelerating from zero velocity\n\t\tif (settings.easing === 'easeOutCubic') pattern = (--time) * time * time + 1; // decelerating to zero velocity\n\t\tif (settings.easing === 'easeInOutCubic') pattern = time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration\n\t\tif (settings.easing === 'easeInQuart') pattern = time * time * time * time; // accelerating from zero velocity\n\t\tif (settings.easing === 'easeOutQuart') pattern = 1 - (--time) * time * time * time; // decelerating to zero velocity\n\t\tif (settings.easing === 'easeInOutQuart') pattern = time < 0.5 ? 8 * time * time * time * time : 1 - 8 * (--time) * time * time * time; // acceleration until halfway, then deceleration\n\t\tif (settings.easing === 'easeInQuint') pattern = time * time * time * time * time; // accelerating from zero velocity\n\t\tif (settings.easing === 'easeOutQuint') pattern = 1 + (--time) * time * time * time * time; // decelerating to zero velocity\n\t\tif (settings.easing === 'easeInOutQuint') pattern = time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * (--time) * time * time * time * time; // acceleration until halfway, then deceleration\n\n\t\t// Custom Easing Patterns\n\t\tif (!!settings.customEasing) pattern = settings.customEasing(time);\n\n\t\treturn pattern || time; // no easing, no acceleration\n\t};\n\n\t/**\n\t * Determine the document's height\n\t * @returns {Number}\n\t */\n\tvar getDocumentHeight = function () {\n\t\treturn Math.max(\n\t\t\tdocument.body.scrollHeight, document.documentElement.scrollHeight,\n\t\t\tdocument.body.offsetHeight, document.documentElement.offsetHeight,\n\t\t\tdocument.body.clientHeight, document.documentElement.clientHeight\n\t\t);\n\t};\n\n\t/**\n\t * Calculate how far to scroll\n\t * Clip support added by robjtede - https://github.com/cferdinandi/smooth-scroll/issues/405\n\t * @param {Element} anchor The anchor element to scroll to\n\t * @param {Number} headerHeight Height of a fixed header, if any\n\t * @param {Number} offset Number of pixels by which to offset scroll\n\t * @param {Boolean} clip If true, adjust scroll distance to prevent abrupt stops near the bottom of the page\n\t * @returns {Number}\n\t */\n\tvar getEndLocation = function (anchor, headerHeight, offset, clip) {\n\t\tvar location = 0;\n\t\tif (anchor.offsetParent) {\n\t\t\tdo {\n\t\t\t\tlocation += anchor.offsetTop;\n\t\t\t\tanchor = anchor.offsetParent;\n\t\t\t} while (anchor);\n\t\t}\n\t\tlocation = Math.max(location - headerHeight - offset, 0);\n\t\tif (clip) {\n\t\t\tlocation = Math.min(location, getDocumentHeight() - window.innerHeight);\n\t\t}\n \t\treturn location;\n\t};\n\n\t/**\n\t * Get the height of the fixed header\n\t * @param {Node} header The header\n\t * @return {Number} The height of the header\n\t */\n\tvar getHeaderHeight = function (header) {\n\t\treturn !header ? 0 : (getHeight(header) + header.offsetTop);\n\t};\n\n\t/**\n\t * Calculate the speed to use for the animation\n\t * @param {Number} distance The distance to travel\n\t * @param {Object} settings The plugin settings\n\t * @return {Number} How fast to animate\n\t */\n\tvar getSpeed = function (distance, settings) {\n\t\tvar speed = settings.speedAsDuration ? settings.speed : Math.abs(distance / 1000 * settings.speed);\n\t\tif (settings.durationMax && speed > settings.durationMax) return settings.durationMax;\n\t\tif (settings.durationMin && speed < settings.durationMin) return settings.durationMin;\n\t\treturn parseInt(speed, 10);\n\t};\n\n\tvar setHistory = function (options) {\n\n\t\t// Make sure this should run\n\t\tif (!history.replaceState || !options.updateURL || history.state) return;\n\n\t\t// Get the hash to use\n\t\tvar hash = window.location.hash;\n\t\thash = hash ? hash : '';\n\n\t\t// Set a default history\n\t\thistory.replaceState(\n\t\t\t{\n\t\t\t\tsmoothScroll: JSON.stringify(options),\n\t\t\t\tanchor: hash ? hash : window.pageYOffset\n\t\t\t},\n\t\t\tdocument.title,\n\t\t\thash ? hash : window.location.href\n\t\t);\n\n\t};\n\n\t/**\n\t * Update the URL\n\t * @param {Node} anchor The anchor that was scrolled to\n\t * @param {Boolean} isNum If true, anchor is a number\n\t * @param {Object} options Settings for Smooth Scroll\n\t */\n\tvar updateURL = function (anchor, isNum, options) {\n\n\t\t// Bail if the anchor is a number\n\t\tif (isNum) return;\n\n\t\t// Verify that pushState is supported and the updateURL option is enabled\n\t\tif (!history.pushState || !options.updateURL) return;\n\n\t\t// Update URL\n\t\thistory.pushState(\n\t\t\t{\n\t\t\t\tsmoothScroll: JSON.stringify(options),\n\t\t\t\tanchor: anchor.id\n\t\t\t},\n\t\t\tdocument.title,\n\t\t\tanchor === document.documentElement ? '#top' : '#' + anchor.id\n\t\t);\n\n\t};\n\n\t/**\n\t * Bring the anchored element into focus\n\t * @param {Node} anchor The anchor element\n\t * @param {Number} endLocation The end location to scroll to\n\t * @param {Boolean} isNum If true, scroll is to a position rather than an element\n\t */\n\tvar adjustFocus = function (anchor, endLocation, isNum) {\n\n\t\t// Is scrolling to top of page, blur\n\t\tif (anchor === 0) {\n\t\t\tdocument.body.focus();\n\t\t}\n\n\t\t// Don't run if scrolling to a number on the page\n\t\tif (isNum) return;\n\n\t\t// Otherwise, bring anchor element into focus\n\t\tanchor.focus();\n\t\tif (document.activeElement !== anchor) {\n\t\t\tanchor.setAttribute('tabindex', '-1');\n\t\t\tanchor.focus();\n\t\t\tanchor.style.outline = 'none';\n\t\t}\n\t\twindow.scrollTo(0 , endLocation);\n\n\t};\n\n\t/**\n\t * Emit a custom event\n\t * @param {String} type The event type\n\t * @param {Object} options The settings object\n\t * @param {Node} anchor The anchor element\n\t * @param {Node} toggle The toggle element\n\t */\n\tvar emitEvent = function (type, options, anchor, toggle) {\n\t\tif (!options.emitEvents || typeof window.CustomEvent !== 'function') return;\n\t\tvar event = new CustomEvent(type, {\n\t\t\tbubbles: true,\n\t\t\tdetail: {\n\t\t\t\tanchor: anchor,\n\t\t\t\ttoggle: toggle\n\t\t\t}\n\t\t});\n\t\tdocument.dispatchEvent(event);\n\t};\n\n\n\t//\n\t// SmoothScroll Constructor\n\t//\n\n\tvar SmoothScroll = function (selector, options) {\n\n\t\t//\n\t\t// Variables\n\t\t//\n\n\t\tvar smoothScroll = {}; // Object for public APIs\n\t\tvar settings, anchor, toggle, fixedHeader, eventTimeout, animationInterval;\n\n\n\t\t//\n\t\t// Methods\n\t\t//\n\n\t\t/**\n\t\t * Cancel a scroll-in-progress\n\t\t */\n\t\tsmoothScroll.cancelScroll = function (noEvent) {\n\t\t\tcancelAnimationFrame(animationInterval);\n\t\t\tanimationInterval = null;\n\t\t\tif (noEvent) return;\n\t\t\temitEvent('scrollCancel', settings);\n\t\t};\n\n\t\t/**\n\t\t * Start/stop the scrolling animation\n\t\t * @param {Node|Number} anchor The element or position to scroll to\n\t\t * @param {Element} toggle The element that toggled the scroll event\n\t\t * @param {Object} options\n\t\t */\n\t\tsmoothScroll.animateScroll = function (anchor, toggle, options) {\n\n\t\t\t// Cancel any in progress scrolls\n\t\t\tsmoothScroll.cancelScroll();\n\n\t\t\t// Local settings\n\t\t\tvar _settings = extend(settings || defaults, options || {}); // Merge user options with defaults\n\n\t\t\t// Selectors and variables\n\t\t\tvar isNum = Object.prototype.toString.call(anchor) === '[object Number]' ? true : false;\n\t\t\tvar anchorElem = isNum || !anchor.tagName ? null : anchor;\n\t\t\tif (!isNum && !anchorElem) return;\n\t\t\tvar startLocation = window.pageYOffset; // Current location on the page\n\t\t\tif (_settings.header && !fixedHeader) {\n\t\t\t\t// Get the fixed header if not already set\n\t\t\t\tfixedHeader = document.querySelector(_settings.header);\n\t\t\t}\n\t\t\tvar headerHeight = getHeaderHeight(fixedHeader);\n\t\t\tvar endLocation = isNum ? anchor : getEndLocation(anchorElem, headerHeight, parseInt((typeof _settings.offset === 'function' ? _settings.offset(anchor, toggle) : _settings.offset), 10), _settings.clip); // Location to scroll to\n\t\t\tvar distance = endLocation - startLocation; // distance to travel\n\t\t\tvar documentHeight = getDocumentHeight();\n\t\t\tvar timeLapsed = 0;\n\t\t\tvar speed = getSpeed(distance, _settings);\n\t\t\tvar start, percentage, position;\n\n\t\t\t/**\n\t\t\t * Stop the scroll animation when it reaches its target (or the bottom/top of page)\n\t\t\t * @param {Number} position Current position on the page\n\t\t\t * @param {Number} endLocation Scroll to location\n\t\t\t * @param {Number} animationInterval How much to scroll on this loop\n\t\t\t */\n\t\t\tvar stopAnimateScroll = function (position, endLocation) {\n\n\t\t\t\t// Get the current location\n\t\t\t\tvar currentLocation = window.pageYOffset;\n\n\t\t\t\t// Check if the end location has been reached yet (or we've hit the end of the document)\n\t\t\t\tif (position == endLocation || currentLocation == endLocation || ((startLocation < endLocation && window.innerHeight + currentLocation) >= documentHeight)) {\n\n\t\t\t\t\t// Clear the animation timer\n\t\t\t\t\tsmoothScroll.cancelScroll(true);\n\n\t\t\t\t\t// Bring the anchored element into focus\n\t\t\t\t\tadjustFocus(anchor, endLocation, isNum);\n\n\t\t\t\t\t// Emit a custom event\n\t\t\t\t\temitEvent('scrollStop', _settings, anchor, toggle);\n\n\t\t\t\t\t// Reset start\n\t\t\t\t\tstart = null;\n\t\t\t\t\tanimationInterval = null;\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Loop scrolling animation\n\t\t\t */\n\t\t\tvar loopAnimateScroll = function (timestamp) {\n\t\t\t\tif (!start) { start = timestamp; }\n\t\t\t\ttimeLapsed += timestamp - start;\n\t\t\t\tpercentage = speed === 0 ? 0 : (timeLapsed / speed);\n\t\t\t\tpercentage = (percentage > 1) ? 1 : percentage;\n\t\t\t\tposition = startLocation + (distance * easingPattern(_settings, percentage));\n\t\t\t\twindow.scrollTo(0, Math.floor(position));\n\t\t\t\tif (!stopAnimateScroll(position, endLocation)) {\n\t\t\t\t\tanimationInterval = window.requestAnimationFrame(loopAnimateScroll);\n\t\t\t\t\tstart = timestamp;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * Reset position to fix weird iOS bug\n\t\t\t * @link https://github.com/cferdinandi/smooth-scroll/issues/45\n\t\t\t */\n\t\t\tif (window.pageYOffset === 0) {\n\t\t\t\twindow.scrollTo(0, 0);\n\t\t\t}\n\n\t\t\t// Update the URL\n\t\t\tupdateURL(anchor, isNum, _settings);\n\n\t\t\t// Emit a custom event\n\t\t\temitEvent('scrollStart', _settings, anchor, toggle);\n\n\t\t\t// Start scrolling animation\n\t\t\tsmoothScroll.cancelScroll(true);\n\t\t\twindow.requestAnimationFrame(loopAnimateScroll);\n\n\t\t};\n\n\t\t/**\n\t\t * If smooth scroll element clicked, animate scroll\n\t\t */\n\t\tvar clickHandler = function (event) {\n\n\t\t\t// Don't run if the user prefers reduced motion\n\t\t\tif (reduceMotion(settings)) return;\n\n\t\t\t// Don't run if event was canceled but still bubbled up\n\t\t\t// By @mgreter - https://github.com/cferdinandi/smooth-scroll/pull/462/\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\t// Don't run if right-click or command/control + click or shift + click\n\t\t\tif (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey) return;\n\n\t\t\t// Check if event.target has closest() method\n\t\t\t// By @totegi - https://github.com/cferdinandi/smooth-scroll/pull/401/\n\t\t\tif(!('closest' in event.target))return;\n\n\t\t\t// Check if a smooth scroll link was clicked\n\t\t\ttoggle = event.target.closest(selector);\n\t\t\tif (!toggle || toggle.tagName.toLowerCase() !== 'a' || event.target.closest(settings.ignore)) return;\n\n\t\t\t// Only run if link is an anchor and points to the current page\n\t\t\tif (toggle.hostname !== window.location.hostname || toggle.pathname !== window.location.pathname || !/#/.test(toggle.href)) return;\n\n\t\t\t// Get an escaped version of the hash\n\t\t\tvar hash = escapeCharacters(toggle.hash);\n\n\t\t\t// Get the anchored element\n\t\t\tvar anchor;\n\t\t\tif (hash === '#') {\n\t\t\t\tif (!settings.topOnEmptyHash) return;\n\t\t\t\tanchor = document.documentElement;\n\t\t\t} else {\n\t\t\t\tanchor = document.querySelector(hash);\n\t\t\t}\n\t\t\tanchor = !anchor && hash === '#top' ? document.documentElement : anchor;\n\n\t\t\t// If anchored element exists, scroll to it\n\t\t\tif (!anchor) return;\n\t\t\tevent.preventDefault();\n\t\t\tsetHistory(settings);\n\t\t\tsmoothScroll.animateScroll(anchor, toggle);\n\n\t\t};\n\n\t\t/**\n\t\t * Animate scroll on popstate events\n\t\t */\n\t\tvar popstateHandler = function (event) {\n\n\t\t\t// Stop if history.state doesn't exist (ex. if clicking on a broken anchor link).\n\t\t\t// fixes `Cannot read property 'smoothScroll' of null` error getting thrown.\n\t\t\tif (history.state === null) return;\n\n\t\t\t// Only run if state is a popstate record for this instantiation\n\t\t\tif (!history.state.smoothScroll || history.state.smoothScroll !== JSON.stringify(settings)) return;\n\n\t\t\t// Only run if state includes an anchor\n\n\t\t\t// if (!history.state.anchor && history.state.anchor !== 0) return;\n\n\t\t\t// Get the anchor\n\t\t\tvar anchor = history.state.anchor;\n\t\t\tif (typeof anchor === 'string' && anchor) {\n\t\t\t\tanchor = document.querySelector(escapeCharacters(history.state.anchor));\n\t\t\t\tif (!anchor) return;\n\t\t\t}\n\n\t\t\t// Animate scroll to anchor link\n\t\t\tsmoothScroll.animateScroll(anchor, null, {updateURL: false});\n\n\t\t};\n\n\t\t/**\n\t\t * Destroy the current initialization.\n\t\t */\n\t\tsmoothScroll.destroy = function () {\n\n\t\t\t// If plugin isn't already initialized, stop\n\t\t\tif (!settings) return;\n\n\t\t\t// Remove event listeners\n\t\t\tdocument.removeEventListener('click', clickHandler, false);\n\t\t\twindow.removeEventListener('popstate', popstateHandler, false);\n\n\t\t\t// Cancel any scrolls-in-progress\n\t\t\tsmoothScroll.cancelScroll();\n\n\t\t\t// Reset variables\n\t\t\tsettings = null;\n\t\t\tanchor = null;\n\t\t\ttoggle = null;\n\t\t\tfixedHeader = null;\n\t\t\teventTimeout = null;\n\t\t\tanimationInterval = null;\n\n\t\t};\n\n\t\t/**\n\t\t * Initialize Smooth Scroll\n\t\t * @param {Object} options User settings\n\t\t */\n\t\tvar init = function () {\n\n\t\t\t// feature test\n\t\t\tif (!supports()) throw 'Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.';\n\n\t\t\t// Destroy any existing initializations\n\t\t\tsmoothScroll.destroy();\n\n\t\t\t// Selectors and variables\n\t\t\tsettings = extend(defaults, options || {}); // Merge user options with defaults\n\t\t\tfixedHeader = settings.header ? document.querySelector(settings.header) : null; // Get the fixed header\n\n\t\t\t// When a toggle is clicked, run the click handler\n\t\t\tdocument.addEventListener('click', clickHandler, false);\n\n\t\t\t// If updateURL and popState are enabled, listen for pop events\n\t\t\tif (settings.updateURL && settings.popstate) {\n\t\t\t\twindow.addEventListener('popstate', popstateHandler, false);\n\t\t\t}\n\n\t\t};\n\n\n\t\t//\n\t\t// Initialize plugin\n\t\t//\n\n\t\tinit();\n\n\n\t\t//\n\t\t// Public APIs\n\t\t//\n\n\t\treturn smoothScroll;\n\n\t};\n\n\treturn SmoothScroll;\n\n}));\n"],"sourceRoot":""}