PageSourceSearch

https://www.oraev.com/dist/statics/js/build/libs.min.js

js oraev.com collected 2026-10-03 17:50:49 UTC 394,134 bytes, 7,870 lines download raw bytes

vendor: 4,491 bytes, lines 1-2
1/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */
2!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*ne
vendor: 3,069 bytes, line 2
2w Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}
vendor: 9,959 bytes, line 2
2function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)}
vendor: 46,637 bytes, lines 2-3
2,input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0;
3}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{
4    
vendor: 32,004 bytes, line 4
4marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g,sb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(sb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[\t\r\n\f]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/\r?\n/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(ac,"\r\n")}}):{name:b.name,value:c.replace(ac,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({
5    padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n});
6/*!
7 * jQuery Cookie Plugin v1.4.1
8 * https://github.com/carhartl/jquery-cookie
9 *
10 * Copyright 2013 Klaus Hartl
11 * Released under the MIT license
12 */
13(function (factory) {
14  if (typeof define === 'function' && define.amd) {
15    // AMD
16    define(['jquery'], factory);
17  } else if (typeof exports === 'object') {
18    // CommonJS
19    factory(require('jquery'));
20  } else {
21    // Browser globals
22    factory(jQuery);
23  }
24}(function ($) {
25
26  var pluses = /\+/g;
27
28  function encode(s) {
29    return config.raw ? s : encodeURIComponent(s);
30  }
31
32  function decode(s) {
33    return config.raw ? s : decodeURIComponent(s);
34  }
35
36  function stringifyCookieValue(value) {
37    return encode(config.json ? JSON.stringify(value) : String(value));
38  }
39
40  function parseCookieValue(s) {
41    if (s.indexOf('"') === 0) {
42      // This is a quoted cookie as according to RFC2068, unescape...
43      s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
44    }
45
46    try {
47      // Replace server-side written pluses with spaces.
48      // If we can't decode the cookie, ignore it, it's unusable.
49      // If we can't parse the cookie, ignore it, it's unusable.
50      s = decodeURIComponent(s.replace(pluses, ' '));
51      return config.json ? JSON.parse(s) : s;
52    } catch (e) {}
53  }
54
55  function read(s, converter) {
56    var value = config.raw ? s : parseCookieValue(s);
57    return $.isFunction(converter) ? converter(value) : value;
58  }
59
60  var config = $.cookie = function (key, value, options) {
61
62    // Write
63
64    if (value !== undefined && !$.isFunction(value)) {
65      options = $.extend({}, config.defaults, options);
66
67      if (typeof options.expires === 'number') {
68        var days = options.expires,
69          t = options.expires = new Date();
70        t.setTime(+t + days * 864e+5);
71      }
72
73      return (document.cookie = [
74        encode(key), '=', stringifyCookieValue(value),
75        options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
76        options.path ? '; path=' + options.path : '',
77        options.domain ? '; domain=' + options.domain : '',
78        options.secure ? '; secure' : ''
79      ].join(''));
80    }
81
82    // Read
83
84    var result = key ? undefined : {};
85
86    // To prevent the for loop in the first place assign an empty array
87    // in case there are no cookies at all. Also prevents odd result when
88    // calling $.cookie().
89    var cookies = document.cookie ? document.cookie.split('; ') : [];
90
91    for (var i = 0, l = cookies.length; i < l; i++) {
92      var parts = cookies[i].split('=');
93      var name = decode(parts.shift());
94      var cookie = parts.join('=');
95
96      if (key && key === name) {
97        // If second argument (value) is a function it's a converter...
98        result = read(cookie, value);
99        break;
100      }
101
102      // Prevent storing a cookie that we couldn't decode.
103      if (!key && (cookie = read(cookie)) !== undefined) {
104        result[name] = cookie;
105      }
106    }
107
108    return result;
109  };
110
111  config.defaults = {};
112
113  $.removeCookie = function (key, options) {
114    if ($.cookie(key) === undefined) {
115      return false;
116    }
117
118    // Must not alter options, thus extending a fresh object...
119    $.cookie(key, '', $.extend({}, options, {
120      expires: -1
121    }));
122    return !$.cookie(key);
123  };
124
125}));
126!function t(e,n,o){function r(i,c){if(!n[i]){if(!e[i]){var s="function"==typeof require&&require;if(!c&&s)return s(i,!0);if(a)return a(i,!0);var u=new Error("Cannot find module '"+i+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[i]={exports:{}};e[i][0].call(l.exports,function(t){var n=e[i][1][t];return r(n?n:t)},l,l.exports,t,e,n,o)}return n[i].exports}for(var a="function"==typeof require&&require,i=0;i<o.length;i++)r(o[i]);return r}({1:[function(t,e){function n(t,e){return null==e?t:o(e,r(e),t)}var o=t("lodash._basecopy"),r=t("lodash.keys");e.exports=n},{"lodash._basecopy":2,"lodash.keys":11}],2:[function(t,e){function n(t,e,n){n||(n={});for(var o=-1,r=e.length;++o<r;){var a=e[o];n[a]=t[a]}return n}e.exports=n},{}],3:[function(t,e){function n(t,e,n){if("function"!=typeof t)return o;if(void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 3:return function(n,o,r){return t.call(e,n,o,r)};case 4:return function(n,o,r,a){return t.call(e,n,o,r,a)};case 5:return function(n,o,r,a,i){return t.call(e,n,o,r,a,i)}}return function(){return t.apply(e,arguments)}}function o(t){return t}e.exports=n},{}],4:[function(t,e){function n(t){return a(function(e,n){var a=-1,i=null==e?0:n.length,c=i>2?n[i-2]:void 0,s=i>2?n[2]:void 0,u=i>1?n[i-1]:void 0;for("function"==typeof c?(c=o(c,u,5),i-=2):(c="function"==typeof u?u:void 0,i-=c?1:0),s&&r(n[0],n[1],s)&&(c=3>i?void 0:c,i=1);++a<i;){var l=n[a];l&&t(e,l,c)}return e})}var o=t("lodash._bindcallback"),r=t("lodash._isiterateecall"),a=t("lodash.restparam");e.exports=n},{"lodash._bindcallback":3,"lodash._isiterateecall":6,"lodash.restparam":12}],5:[function(t,e){function n(t){return!!t&&"object"==typeof t}function o(t,e){var n=null==t?void 0:t[e];return i(n)?n:void 0}function r(t){return a(t)&&p.call(t)==c}function a(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function i(t){return null==t?!1:r(t)?d.test(l.call(t)):n(t)&&s.test(t)}var c="[object Function]",s=/^\[object .+?Constructor\]$/,u=Object.prototype,l=Function.prototype.toString,f=u.hasOwnProperty,p=u.toString,d=RegExp("^"+l.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=o},{}],6:[function(t,e){function n(t){return function(e){return null==e?void 0:e[t]}}function o(t){return null!=t&&i(l(t))}function r(t,e){return t="number"==typeof t||s.test(t)?+t:-1,e=null==e?u:e,t>-1&&t%1==0&&e>t}function a(t,e,n){if(!c(n))return!1;var a=typeof e;if("number"==a?o(n)&&r(e,n.length):"string"==a&&e in n){var i=n[e];return t===t?t===i:i!==i}return!1}function i(t){return"number"==typeof t&&t>-1&&t%1==0&&u>=t}function c(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}var s=/^\d+$/,u=9007199254740991,l=n("length");e.exports=a},{}],7:[function(t,e){function n(t,e,n){for(var o=-1,r=a(e),i=r.length;++o<i;){var c=r[o],s=t[c],u=n(s,e[c],c,t,e);(u===u?u===s:s!==s)&&(void 0!==s||c in t)||(t[c]=u)}return t}var o=t("lodash._baseassign"),r=t("lodash._createassigner"),a=t("lodash.keys"),i=r(function(t,e,r){return r?n(t,e,r):o(t,e)});e.exports=i},{"lodash._baseassign":1,"lodash._createassigner":4,"lodash.keys":11}],8:[function(t,e){function n(t,e,n){function r(){v&&clearTimeout(v),d&&clearTimeout(d),y=0,d=v=g=void 0}function c(e,n){n&&clearTimeout(n),d=v=g=void 0,e&&(y=s(),m=t.apply(h,p),v||d||(p=h=void 0))}function u(){var t=e-(s()-b);0>=t||t>e?c(g,d):v=setTimeout(u,t)}function l(){c(k,v)}function f(){if(p=arguments,b=s(),h=this,g=k&&(v||!x),w===!1)var n=x&&!v;else{d||x||(y=b);var o=w-(b-y),r=0>=o||o>w;r?(d&&(d=clearTimeout(d)),y=b,m=t.apply(h,p)):d||(d=setTimeout(l,o))}return r&&v?v=clearTimeout(v):v||e===w||(v=setTimeout(u,e)),n&&(r=!0,m=t.apply(h,p)),!r||v||d||(p=h=void 0),m}var p,d,m,b,h,v,g,y=0,w=!1,k=!0;if("function"!=typeof t)throw new TypeError(a);if(e=0>e?0:+e||0,n===!0){var x=!0;k=!1}else o(n)&&(x=!!n.leading,w="maxWait"in n&&i(+n.maxWait||0,e),k="trailing"in n?!!n.trailing:k);return f.cancel=r,f}function o(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}var r=t("lodash._getnative"),a="Expected a function",i=Math.max,c=r(Date,"now"),s=c||function(){return(new Date).getTime()};e.exports=n},{"lodash._getnative":5}],9:[function(t,e){(function(t){function n(t){return function(e){return null==e?void 0:e[t]}}function o(t){return a(t)&&b.call(t,"callee")&&(!v.call(t,"callee")||h.call(t)==f)}function r(t){return null!=t&&!("function"==typeof t&&i(t))&&c(g(t))}function a(t){return u(t)&&r(t)}function i(t){var e=s(t)?h.call(t):"";return e==p||e==d}function c(t){return"number"==typeof t&&t>-1&&t%1==0&&l>=t}function s(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function u(t){return!!t&&"object"==typeof t}var l=9007199254740991,f="[object Arguments]",p="[object Function]",d="[object GeneratorFunction]",m=t.Object.prototype,b=m.hasOwnProperty,h=m.toString,v=m.propertyIsEnumerable,g=n("length");e.exports=o}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],10:[function(t,e){function n(t){return!!t&&"object"==typeof t}function o(t,e){var n=null==t?void 0:t[e];return c(n)?n:void 0}function r(t){return"number"==typeof t&&t>-1&&t%1==0&&v>=t}function a(t){return i(t)&&m.call(t)==u}function i(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function c(t){return null==t?!1:a(t)?b.test(p.call(t)):n(t)&&l.test(t)}var s="[object Array]",u="[object Function]",l=/^\[object .+?Constructor\]$/,f=Object.prototype,p=Function.prototype.toString,d=f.hasOwnProperty,m=f.toString,b=RegExp("^"+p.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),h=o(Array,"isArray"),v=9007199254740991,g=h||function(t){return n(t)&&r(t.length)&&m.call(t)==s};e.exports=g},{}],11:[function(t,e){function n(t){return function(e){return null==e?void 0:e[t]}}function o(t){return null!=t&&a(v(t))}function r(t,e){return t="number"==typeof t||p.test(t)?+t:-1,e=null==e?h:e,t>-1&&t%1==0&&e>t}function a(t){return"number"==typeof t&&t>-1&&t%1==0&&h>=t}function i(t){for(var e=s(t),n=e.length,o=n&&t.length,i=!!o&&a(o)&&(f(t)||l(t)),c=-1,u=[];++c<n;){var p=e[c];(i&&r(p,o)||m.call(t,p))&&u.push(p)}return u}function c(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function s(t){if(null==t)return[];c(t)||(t=Object(t));var e=t.length;e=e&&a(e)&&(f(t)||l(t))&&e||0;for(var n=t.constructor,o=-1,i="function"==typeof n&&n.prototype===t,s=Array(e),u=e>0;++o<e;)s[o]=o+"";for(var p in t)u&&r(p,e)||"constructor"==p&&(i||!m.call(t,p))||s.push(p);return s}var u=t("lodash._getnative"),l=t("lodash.isarguments"),f=t("lodash.isarray"),p=/^\d+$/,d=Object.prototype,m=d.hasOwnProperty,b=u(Object,"keys"),h=9007199254740991,v=n("length"),g=b?function(t){var e=null==t?void 0:t.constructor;return"function"==typeof e&&e.prototype===t||"function"!=typeof t&&o(t)?i(t):c(t)?b(t):[]}:i;e.exports=g},{"lodash._getnative":5,"lodash.isarguments":9,"lodash.isarray":10}],12:[function(t,e){function n(t,e){if("function"!=typeof t)throw new TypeError(o);return e=r(void 0===e?t.length-1:+e||0,0),function(){for(var n=arguments,o=-1,a=r(n.length-e,0),i=Array(a);++o<a;)i[o]=n[e+o];switch(e){case 0:return t.call(this,i);case 1:return t.call(this,n[0],i);case 2:return t.call(this,n[0],n[1],i)}var c=Array(e+1);for(o=-1;++o<e;)c[o]=n[o];return c[e]=i,t.apply(this,c)}}var o="Expected a function",r=Math.max;e.exports=n},{}],13:[function(t,e){function n(t,e,n){var i=!0,c=!0;if("function"!=typeof t)throw new TypeError(a);return n===!1?i=!1:o(n)&&(i="leading"in n?!!n.leading:i,c="trailing"in n?!!n.trailing:c),r(t,e,{leading:i,maxWait:+e,trailing:c})}function o(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}var r=t("lodash.debounce"),a="Expected a function";e.exports=n},{"lodash.debounce":8}],14:[function(t){var e=t("lodash.throttle"),n=t("lodash.debounce"),o=t("lodash.assign"),r=t("./libs/observer"),a=(t("./libs/classList-shim"),t("./helpers/
126detector")),i=t("./helpers/handleScroll"),c=t("./helpers/prepare"),s=t("./helpers/elements"),u=t("./helpers/replaceDataAttr");!function(t,l){var f=[],p=!1,d={offset:120,delay:0,easing:"ease",duration:400,disable:!1,once:!1,startEvent:"DOMContentLoaded"},m=function(t){return t&&t===!0&&(p=!0),p?(f=c(f,d),i(f,d.once),f):void 0},b=function(c){return d=o(d,c),u(),f=s(),d.disable&&(d.disable===!0||"mobile"===d.disable&&a.mobile()||"phone"===d.disable&&a.phone()||"tablet"===d.disable&&a.tablet()||"function"==typeof d.disable&&d.disable()===!0)?([].forEach.call(f,function(t){t.node.removeAttribute("aos"),t.node.removeAttribute("aos-easing"),t.node.removeAttribute("aos-duration"),t.node.removeAttribute("aos-delay")}),!1):(l.querySelector("body").setAttribute("aos-easing",d.easing),l.querySelector("body").setAttribute("aos-duration",d.duration),l.querySelector("body").setAttribute("aos-delay",d.delay),l.addEventListener(d.startEvent,function(){m(!0)}),t.addEventListener("resize orientationchange",n(m,50,!0)),t.addEventListener("scroll",e(function(){i(f,d.once)},99)),l.addEventListener("DOMNodeRemoved",function(t){var e=t.target;e&&1===e.nodeType&&e.hasAttribute&&t.target.hasAttribute("aos")&&n(m,50,!0)}),r("[aos]",m),f)},h={init:b,refresh:m};t.AOS=h}(window,document)},{"./helpers/detector":16,"./helpers/elements":17,"./helpers/handleScroll":18,"./helpers/prepare":19,"./helpers/replaceDataAttr":20,"./libs/classList-shim":21,"./libs/observer":22,"lodash.assign":7,"lodash.debounce":8,"lodash.throttle":13}],15:[function(t,e){var n=t("./../libs/offset"),o=function(t,e){var o=0,r=0,a=window.innerHeight,i={offset:t.getAttribute("aos-offset"),anchor:t.getAttribute("aos-anchor"),anchorPlacement:t.getAttribute("aos-anchor-placement")};switch(i.offset&&!isNaN(i.offset)&&(r=parseInt(i.offset)),i.anchor&&document.querySelectorAll(i.anchor)&&(t=document.querySelectorAll(i.anchor)[0]),o=n(t).top,i.anchorPlacement){case"top-bottom":break;case"center-bottom":o+=t.offsetHeight/2;break;case"bottom-bottom":o+=t.offsetHeight;break;case"top-center":o+=a/2;break;case"bottom-center":o+=a/2+t.offsetHeight;break;case"center-center":o+=a/2+t.offsetHeight/2;break;case"top-top":o+=a;break;case"bottom-top":o+=t.offsetHeight+a;break;case"center-top":o+=t.offsetHeight/2+a}return i.anchorPlacement||i.offset||isNaN(e)||(r=e),o+r};e.exports=o},{"./../libs/offset":23}],16:[function(t,e){var n={phone:function(){var t=!1;return function(e){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4)))&&(t=!0)}(navigator.userAgent||navigator.vendor||window.opera),t},mobile:function(){var t=!1;return function(e){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
vendor: 54,458 bytes, lines 126-1725
126sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4)))&&(t=!0)}(navigator.userAgent||navigator.vendor||window.opera),t},tablet:function(){return _detect.mobile()&&!_detect.phone()}};e.exports=n},{}],17:[function(t,e){var n=function(t){var t=t||document.querySelectorAll("[aos]"),e=[];return[].forEach.call(t,function(t){e.push({node:t})}),e};e.exports=n},{}],18:[function(t,e){var n=function(t,e,n){var o=t.node.getAttribute("aos-once");e>t.position?t.node.classList.add("aos-animate"):"undefined"!=typeof o&&("false"===o||!n&&"true"!==o)&&t.node.classList.remove("aos-animate")},o=function(t,e){var o=window.pageYOffset,r=window.innerHeight;[].forEach.call(t,function(t){n(t,r+o,e)})};e.exports=o},{}],19:[function(t,e){var n=t("./calculateOffset"),o=function(t,e){return[].forEach.call(t,function(t){t.node.classList.add("aos-init"),t.position=n(t.node,e.offset)}),t};e.exports=o},{"./calculateOffset":15}],20:[function(t,e){var n=function(){var t=["[data-aos]","[data-aos-offset]","[data-aos-easing]","[data-aos-delay]","[data-aos-anchor]","[data-aos-anchor-placement]","[data-aos-once]"],e=t.join(", "),n=document.querySelectorAll(e);[].forEach.call(n,function(e){var n=/^data\-(.+)$/,o=[];[].forEach.call(e.attributes,function(r){if(n.test(r.nodeName)){var a=r.nodeName.match(n)[0],i="["+a+"]",c=r.nodeName.match(n)[1];e.getAttribute(a).length&&-1!==t.indexOf(i)&&(e.setAttribute(c,r.nodeValue),o.push(a))}});for(var r=0;r<o.length;r++)e.removeAttribute(o[r])})};e.exports=n},{}],21:[function(){"classList"in document.documentElement||!Object.defineProperty||"undefined"==typeof HTMLElement||Object.defineProperty(HTMLElement.prototype,"classList",{get:function(){function t(t){return function(n){var o=e.className.split(/\s+/),r=o.indexOf(n);t(o,r,n),e.className=o.join(" ")}}var e=this,n={add:t(function(t,e,n){~e||t.push(n)}),remove:t(function(t,e){~e&&t.splice(e,1)}),toggle:t(function(t,e,n){~e?t.splice(e,1):t.push(n)}),contains:function(t){return!!~e.className.split(/\s+/).indexOf(t)},item:function(t){return e.className.split(/\s+/)[t]||null}};return Object.defineProperty(n,"length",{get:function(){return e.className.split(/\s+/).length}}),n}})},{}],22:[function(t,e){function n(t,e){a.push({selector:t,fn:e}),!r&&c&&(r=new c(o),r.observe(i.documentElement,{childList:!0,subtree:!0,removedNodes:!0})),o()}function o(){for(var t,e,n=0,o=a.length;o>n;n++){t=a[n],e=i.querySelectorAll(t.selector);for(var r,c=0,s=e.length;s>c;c++)r=e[c],r.ready||(r.ready=!0,t.fn.call(r,r))}}var r,a=[],i=window.document,c=window.MutationObserver||window.WebKitMutationObserver;e.exports=n},{}],23:[function(t,e){var n=function(t){for(var e=0,n=0;t&&!isNaN(t.offsetLeft)&&!isNaN(t.offsetTop);)e+=t.offsetLeft-("BODY"!=t.tagName?t.scrollLeft:0),n+=t.offsetTop-("BODY"!=t.tagName?t.scrollTop:0),t=t.offsetParent;return{top:n,left:e}};e.exports=n},{}]},{},[14]);
127//# sourceMappingURL=aos.js.map
128
129/**
130 * Swiper 4.3.5
131 * Most modern mobile touch slider and framework with hardware accelerated transitions
132 * http://www.idangero.us/swiper/
133 *
134 * Copyright 2014-2018 Vladimir Kharlampidi
135 *
136 * Released under the MIT License
137 *
138 * Released on: July 31, 2018
139 */
140
141(function (global, factory) {
142  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
143  typeof define === 'function' && define.amd ? define(factory) :
144  (global.Swiper = factory());
145}(this, (function () { 'use strict';
146
147  /**
148   * SSR Window 1.0.1
149   * Better handling for window object in SSR environment
150   * https://github.com/nolimits4web/ssr-window
151   *
152   * Copyright 2018, Vladimir Kharlampidi
153   *
154   * Licensed under MIT
155   *
156   * Released on: July 18, 2018
157   */
158  var doc = (typeof document === 'undefined') ? {
159    body: {},
160    addEventListener: function addEventListener() {},
161    removeEventListener: function removeEventListener() {},
162    activeElement: {
163      blur: function blur() {},
164      nodeName: '',
165    },
166    querySelector: function querySelector() {
167      return null;
168    },
169    querySelectorAll: function querySelectorAll() {
170      return [];
171    },
172    getElementById: function getElementById() {
173      return null;
174    },
175    createEvent: function createEvent() {
176      return {
177        initEvent: function initEvent() {},
178      };
179    },
180    createElement: function createElement() {
181      return {
182        children: [],
183        childNodes: [],
184        style: {},
185        setAttribute: function setAttribute() {},
186        getElementsByTagName: function getElementsByTagName() {
187          return [];
188        },
189      };
190    },
191    location: { hash: '' },
192  } : document; // eslint-disable-line
193
194  var win = (typeof window === 'undefined') ? {
195    document: doc,
196    navigator: {
197      userAgent: '',
198    },
199    location: {},
200    history: {},
201    CustomEvent: function CustomEvent() {
202      return this;
203    },
204    addEventListener: function addEventListener() {},
205    removeEventListener: function removeEventListener() {},
206    getComputedStyle: function getComputedStyle() {
207      return {
208        getPropertyValue: function getPropertyValue() {
209          return '';
210        },
211      };
212    },
213    Image: function Image() {},
214    Date: function Date() {},
215    screen: {},
216    setTimeout: function setTimeout() {},
217    clearTimeout: function clearTimeout() {},
218  } : window; // eslint-disable-line
219
220  /**
221   * Dom7 2.0.7
222   * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
223   * http://framework7.io/docs/dom.html
224   *
225   * Copyright 2018, Vladimir Kharlampidi
226   * The iDangero.us
227   * http://www.idangero.us/
228   *
229   * Licensed under MIT
230   *
231   * Released on: June 14, 2018
232   */
233
234  var Dom7 = function Dom7(arr) {
235    var self = this;
236    // Create array-like object
237    for (var i = 0; i < arr.length; i += 1) {
238      self[i] = arr[i];
239    }
240    self.length = arr.length;
241    // Return collection with methods
242    return this;
243  };
244
245  function $(selector, context) {
246    var arr = [];
247    var i = 0;
248    if (selector && !context) {
249      if (selector instanceof Dom7) {
250        return selector;
251      }
252    }
253    if (selector) {
254        // String
255      if (typeof selector === 'string') {
256        var els;
257        var tempParent;
258        var html = selector.trim();
259        if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
260          var toCreate = 'div';
261          if (html.indexOf('<li') === 0) { toCreate = 'ul'; }
262          if (html.indexOf('<tr') === 0) { toCreate = 'tbody'; }
263          if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) { toCreate = 'tr'; }
264          if (html.indexOf('<tbody') === 0) { toCreate = 'table'; }
265          if (html.indexOf('<option') === 0) { toCreate = 'select'; }
266          tempParent = doc.createElement(toCreate);
267          tempParent.innerHTML = html;
268          for (i = 0; i < tempParent.childNodes.length; i += 1) {
269            arr.push(tempParent.childNodes[i]);
270          }
271        } else {
272          if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {
273            // Pure ID selector
274            els = [doc.getElementById(selector.trim().split('#')[1])];
275          } else {
276            // Other selectors
277            els = (context || doc).querySelectorAll(selector.trim());
278          }
279          for (i = 0; i < els.length; i += 1) {
280            if (els[i]) { arr.push(els[i]); }
281          }
282        }
283      } else if (selector.nodeType || selector === win || selector === doc) {
284        // Node/element
285        arr.push(selector);
286      } else if (selector.length > 0 && selector[0].nodeType) {
287        // Array of elements or instance of Dom
288        for (i = 0; i < selector.length; i += 1) {
289          arr.push(selector[i]);
290        }
291      }
292    }
293    return new Dom7(arr);
294  }
295
296  $.fn = Dom7.prototype;
297  $.Class = Dom7;
298  $.Dom7 = Dom7;
299
300  function unique(arr) {
301    var uniqueArray = [];
302    for (var i = 0; i < arr.length; i += 1) {
303      if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); }
304    }
305    return uniqueArray;
306  }
307
308  // Classes and attributes
309  function addClass(className) {
310    var this$1 = this;
311
312    if (typeof className === 'undefined') {
313      return this;
314    }
315    var classes = className.split(' ');
316    for (var i = 0; i < classes.length; i += 1) {
317      for (var j = 0; j < this.length; j += 1) {
318        if (typeof this$1[j] !== 'undefined' && typeof this$1[j].classList !== 'undefined') { this$1[j].classList.add(classes[i]); }
319      }
320    }
321    return this;
322  }
323  function removeClass(className) {
324    var this$1 = this;
325
326    var classes = className.split(' ');
327    for (var i = 0; i < classes.length; i += 1) {
328      for (var j = 0; j < this.length; j += 1) {
329        if (typeof this$1[j] !== 'undefined' && typeof this$1[j].classList !== 'undefined') { this$1[j].classList.remove(classes[i]); }
330      }
331    }
332    return this;
333  }
334  function hasClass(className) {
335    if (!this[0]) { return false; }
336    return this[0].classList.contains(className);
337  }
338  function toggleClass(className) {
339    var this$1 = this;
340
341    var classes = className.split(' ');
342    for (var i = 0; i < classes.length; i += 1) {
343      for (var j = 0; j < this.length; j += 1) {
344        if (typeof this$1[j] !== 'undefined' && typeof this$1[j].classList !== 'undefined') { this$1[j].classList.toggle(classes[i]); }
345      }
346    }
347    return this;
348  }
349  function attr(attrs, value) {
350    var arguments$1 = arguments;
351    var this$1 = this;
352
353    if (arguments.length === 1 && typeof attrs === 'string') {
354      // Get attr
355      if (this[0]) { return this[0].getAttribute(attrs); }
356      return undefined;
357    }
358
359    // Set attrs
360    for (var i = 0; i < this.length; i += 1) {
361      if (arguments$1.length === 2) {
362        // String
363        this$1[i].setAttribute(attrs, value);
364      } else {
365        // Object
366        // eslint-disable-next-line
367        for (var attrName in attrs) {
368          this$1[i][attrName] = attrs[attrName];
369          this$1[i].setAttribute(attrName, attrs[attrName]);
370        }
371      }
372    }
373    return this;
374  }
375  // eslint-disable-next-line
376  function removeAttr(attr) {
377    var this$1 = this;
378
379    for (var i = 0; i < this.length; i += 1) {
380      this$1[i].removeAttribute(attr);
381    }
382    return this;
383  }
384  function data(key, value) {
385    var this$1 = this;
386
387    var el;
388    if (typeof value === 'undefined') {
389      el = this[0];
390      // Get value
391      if (el) {
392        if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {
393          return el.dom7ElementDataStorage[key];
394        }
395
396        var dataKey = el.getAttribute(("data-" + key));
397        if (dataKey) {
398          return dataKey;
399        }
400        return undefined;
401      }
402      return undefined;
403    }
404
405    // Set value
406    for (var i = 0; i < this.length; i += 1) {
407      el = this$1[i];
408      if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; }
409      el.dom7ElementDataStorage[key] = value;
410    }
411    return this;
412  }
413  // Transforms
414  // eslint-disable-next-line
415  function transform(transform) {
416    var this$1 = this;
417
418    for (var i = 0; i < this.length; i += 1) {
419      var elStyle = this$1[i].style;
420      elStyle.webkitTransform = transform;
421      elStyle.transform = transform;
422    }
423    return this;
424  }
425  function transition(duration) {
426    var this$1 = this;
427
428    if (typeof duration !== 'string') {
429      duration = duration + "ms"; // eslint-disable-line
430    }
431    for (var i = 0; i < this.length; i += 1) {
432      var elStyle = this$1[i].style;
433      elStyle.webkitTransitionDuration = duration;
434      elStyle.transitionDuration = duration;
435    }
436    return this;
437  }
438  // Events
439  function on() {
440    var this$1 = this;
441    var assign;
442
443    var args = [], len = arguments.length;
444    while ( len-- ) args[ len ] = arguments[ len ];
445    var eventType = args[0];
446    var targetSelector = args[1];
447    var listener = args[2];
448    var capture = args[3];
449    if (typeof args[1] === 'function') {
450      (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);
451      targetSelector = undefined;
452    }
453    if (!capture) { capture = false; }
454
455    function handleLiveEvent(e) {
456      var target = e.target;
457      if (!target) { return; }
458      var eventData = e.target.dom7EventData || [];
459      if (eventData.indexOf(e) < 0) {
460        eventData.unshift(e);
461      }
462      if ($(target).is(targetSelector)) { listener.apply(target, eventData); }
463      else {
464        var parents = $(target).parents(); // eslint-disable-line
465        for (var k = 0; k < parents.length; k += 1) {
466          if ($(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); }
467        }
468      }
469    }
470    function handleEvent(e) {
471      var eventData = e && e.target ? e.target.dom7EventData || [] : [];
472      if (eventData.indexOf(e) < 0) {
473        eventData.unshift(e);
474      }
475      listener.apply(this, eventData);
476    }
477    var events = eventType.split(' ');
478    var j;
479    for (var i = 0; i < this.length; i += 1) {
480      var el = this$1[i];
481      if (!targetSelector) {
482        for (j = 0; j < events.length; j += 1) {
483          var event = events[j];
484          if (!el.dom7Listeners) { el.dom7Listeners = {}; }
485          if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; }
486          el.dom7Listeners[event].push({
487            listener: listener,
488            proxyListener: handleEvent,
489          });
490          el.addEventListener(event, handleEvent, capture);
491        }
492      } else {
493        // Live events
494        for (j = 0; j < events.length; j += 1) {
495          var event$1 = events[j];
496          if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; }
497          if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; }
498          el.dom7LiveListeners[event$1].push({
499            listener: listener,
500            proxyListener: handleLiveEvent,
501          });
502          el.addEventListener(event$1, handleLiveEvent, capture);
503        }
504      }
505    }
506    return this;
507  }
508  function off() {
509    var this$1 = this;
510    var assign;
511
512    var args = [], len = arguments.length;
513    while ( len-- ) args[ len ] = arguments[ len ];
514    var eventType = args[0];
515    var targetSelector = args[1];
516    var listener = args[2];
517    var capture = args[3];
518    if (typeof args[1] === 'function') {
519      (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);
520      targetSelector = undefined;
521    }
522    if (!capture) { capture = false; }
523
524    var events = eventType.split(' ');
525    for (var i = 0; i < events.length; i += 1) {
526      var event = events[i];
527      for (var j = 0; j < this.length; j += 1) {
528        var el = this$1[j];
529        var handlers = (void 0);
530        if (!targetSelector && el.dom7Listeners) {
531          handlers = el.dom7Listeners[event];
532        } else if (targetSelector && el.dom7LiveListeners) {
533          handlers = el.dom7LiveListeners[event];
534        }
535        if (handlers && handlers.length) {
536          for (var k = handlers.length - 1; k >= 0; k -= 1) {
537            var handler = handlers[k];
538            if (listener && handler.listener === listener) {
539              el.removeEventListener(event, handler.proxyListener, capture);
540              handlers.splice(k, 1);
541            } else if (!listener) {
542              el.removeEventListener(event, handler.proxyListener, capture);
543              handlers.splice(k, 1);
544            }
545          }
546        }
547      }
548    }
549    return this;
550  }
551  function trigger() {
552    var this$1 = this;
553    var args = [], len = arguments.length;
554    while ( len-- ) args[ len ] = arguments[ len ];
555
556    var events = args[0].split(' ');
557    var eventData = args[1];
558    for (var i = 0; i < events.length; i += 1) {
559      var event = events[i];
560      for (var j = 0; j < this.length; j += 1) {
561        var el = this$1[j];
562        var evt = (void 0);
563        try {
564          evt = new win.CustomEvent(event, {
565            detail: eventData,
566            bubbles: true,
567            cancelable: true,
568          });
569        } catch (e) {
570          evt = doc.createEvent('Event');
571          evt.initEvent(event, true, true);
572          evt.detail = eventData;
573        }
574        // eslint-disable-next-line
575        el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; });
576        el.dispatchEvent(evt);
577        el.dom7EventData = [];
578        delete el.dom7EventData;
579      }
580    }
581    return this;
582  }
583  function transitionEnd(callback) {
584    var events = ['webkitTransitionEnd', 'transitionend'];
585    var dom = this;
586    var i;
587    function fireCallBack(e) {
588      /* jshint validthis:true */
589      if (e.target !== this) { return; }
590      callback.call(this, e);
591      for (i = 0; i < events.length; i += 1) {
592        dom.off(events[i], fireCallBack);
593      }
594    }
595    if (callback) {
596      for (i = 0; i < events.length; i += 1) {
597        dom.on(events[i], fireCallBack);
598      }
599    }
600    return this;
601  }
602  function outerWidth(includeMargins) {
603    if (this.length > 0) {
604      if (includeMargins) {
605        // eslint-disable-next-line
606        var styles = this.styles();
607        return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));
608      }
609      return this[0].offsetWidth;
610    }
611    return null;
612  }
613  function outerHeight(includeMargins) {
614    if (this.length > 0) {
615      if (includeMargins) {
616        // eslint-disable-next-line
617        var styles = this.styles();
618        return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));
619      }
620      return this[0].offsetHeight;
621    }
622    return null;
623  }
624  function offset() {
625    if (this.length > 0) {
626      var el = this[0];
627      var box = el.getBoundingClientRect();
628      var body = doc.body;
629      var clientTop = el.clientTop || body.clientTop || 0;
630      var clientLeft = el.clientLeft || body.clientLeft || 0;
631      var scrollTop = el === win ? win.scrollY : el.scrollTop;
632      var scrollLeft = el === win ? win.scrollX : el.scrollLeft;
633      return {
634        top: (box.top + scrollTop) - clientTop,
635        left: (box.left + scrollLeft) - clientLeft,
636      };
637    }
638
639    return null;
640  }
641  function styles() {
642    if (this[0]) { return win.getComputedStyle(this[0], null); }
643    return {};
644  }
645  function css(props, value) {
646    var this$1 = this;
647
648    var i;
649    if (arguments.length === 1) {
650      if (typeof props === 'string') {
651        if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); }
652      } else {
653        for (i = 0; i < this.length; i += 1) {
654          // eslint-disable-next-line
655          for (var prop in props) {
656            this$1[i].style[prop] = props[prop];
657          }
658        }
659        return this;
660      }
661    }
662    if (arguments.length === 2 && typeof props === 'string') {
663      for (i = 0; i < this.length; i += 1) {
664        this$1[i].style[props] = value;
665      }
666      return this;
667    }
668    return this;
669  }
670  // Iterate over the collection passing elements to `callback`
671  function each(callback) {
672    var this$1 = this;
673
674    // Don't bother continuing without a callback
675    if (!callback) { return this; }
676    // Iterate over the current collection
677    for (var i = 0; i < this.length; i += 1) {
678      // If the callback returns false
679      if (callback.call(this$1[i], i, this$1[i]) === false) {
680        // End the loop early
681        return this$1;
682      }
683    }
684    // Return `this` to allow chained DOM operations
685    return this;
686  }
687  // eslint-disable-next-line
688  function html(html) {
689    var this$1 = this;
690
691    if (typeof html === 'undefined') {
692      return this[0] ? this[0].innerHTML : undefined;
693    }
694
695    for (var i = 0; i < this.length; i += 1) {
696      this$1[i].innerHTML = html;
697    }
698    return this;
699  }
700  // eslint-disable-next-line
701  function text(text) {
702    var this$1 = this;
703
704    if (typeof text === 'undefined') {
705      if (this[0]) {
706        return this[0].textContent.trim();
707      }
708      return null;
709    }
710
711    for (var i = 0; i < this.length; i += 1) {
712      this$1[i].textContent = text;
713    }
714    return this;
715  }
716  function is(selector) {
717    var el = this[0];
718    var compareWith;
719    var i;
720    if (!el || typeof selector === 'undefined') { return false; }
721    if (typeof selector === 'string') {
722      if (el.matches) { return el.matches(selector); }
723      else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); }
724      else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); }
725
726      compareWith = $(selector);
727      for (i = 0; i < compareWith.length; i += 1) {
728        if (compareWith[i] === el) { return true; }
729      }
730      return false;
731    } else if (selector === doc) { return el === doc; }
732    else if (selector === win) { return el === win; }
733
734    if (selector.nodeType || selector instanceof Dom7) {
735      compareWith = selector.nodeType ? [selector] : selector;
736      for (i = 0; i < compareWith.length; i += 1) {
737        if (compareWith[i] === el) { return true; }
738      }
739      return false;
740    }
741    return false;
742  }
743  function index() {
744    var child = this[0];
745    var i;
746    if (child) {
747      i = 0;
748      // eslint-disable-next-line
749      while ((child = child.previousSibling) !== null) {
750        if (child.nodeType === 1) { i += 1; }
751      }
752      return i;
753    }
754    return undefined;
755  }
756  // eslint-disable-next-line
757  function eq(index) {
758    if (typeof index === 'undefined') { return this; }
759    var length = this.length;
760    var returnIndex;
761    if (index > length - 1) {
762      return new Dom7([]);
763    }
764    if (index < 0) {
765      returnIndex = length + index;
766      if (returnIndex < 0) { return new Dom7([]); }
767      return new Dom7([this[returnIndex]]);
768    }
769    return new Dom7([this[index]]);
770  }
771  function append() {
772    var this$1 = this;
773    var args = [], len = arguments.length;
774    while ( len-- ) args[ len ] = arguments[ len ];
775
776    var newChild;
777
778    for (var k = 0; k < args.length; k += 1) {
779      newChild = args[k];
780      for (var i = 0; i < this.length; i += 1) {
781        if (typeof newChild === 'string') {
782          var tempDiv = doc.createElement('div');
783          tempDiv.innerHTML = newChild;
784          while (tempDiv.firstChild) {
785            this$1[i].appendChild(tempDiv.firstChild);
786          }
787        } else if (newChild instanceof Dom7) {
788          for (var j = 0; j < newChild.length; j += 1) {
789            this$1[i].appendChild(newChild[j]);
790          }
791        } else {
792          this$1[i].appendChild(newChild);
793        }
794      }
795    }
796
797    return this;
798  }
799  function prepend(newChild) {
800    var this$1 = this;
801
802    var i;
803    var j;
804    for (i = 0; i < this.length; i += 1) {
805      if (typeof newChild === 'string') {
806        var tempDiv = doc.createElement('div');
807        tempDiv.innerHTML = newChild;
808        for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
809          this$1[i].insertBefore(tempDiv.childNodes[j], this$1[i].childNodes[0]);
810        }
811      } else if (newChild instanceof Dom7) {
812        for (j = 0; j < newChild.length; j += 1) {
813          this$1[i].insertBefore(newChild[j], this$1[i].childNodes[0]);
814        }
815      } else {
816        this$1[i].insertBefore(newChild, this$1[i].childNodes[0]);
817      }
818    }
819    return this;
820  }
821  function next(selector) {
822    if (this.length > 0) {
823      if (selector) {
824        if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
825          return new Dom7([this[0].nextElementSibling]);
826        }
827        return new Dom7([]);
828      }
829
830      if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); }
831      return new Dom7([]);
832    }
833    return new Dom7([]);
834  }
835  function nextAll(selector) {
836    var nextEls = [];
837    var el = this[0];
838    if (!el) { return new Dom7([]); }
839    while (el.nextElementSibling) {
840      var next = el.nextElementSibling; // eslint-disable-line
841      if (selector) {
842        if ($(next).is(selector)) { nextEls.push(next); }
843      } else { nextEls.push(next); }
844      el = next;
845    }
846    return new Dom7(nextEls);
847  }
848  function prev(selector) {
849    if (this.length > 0) {
850      var el = this[0];
851      if (selector) {
852        if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
853          return new Dom7([el.previousElementSibling]);
854        }
855        return new Dom7([]);
856      }
857
858      if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); }
859      return new Dom7([]);
860    }
861    return new Dom7([]);
862  }
863  function prevAll(selector) {
864    var prevEls = [];
865    var el = this[0];
866    if (!el) { return new Dom7([]); }
867    while (el.previousElementSibling) {
868      var prev = el.previousElementSibling; // eslint-disable-line
869      if (selector) {
870        if ($(prev).is(selector)) { prevEls.push(prev); }
871      } else { prevEls.push(prev); }
872      el = prev;
873    }
874    return new Dom7(prevEls);
875  }
876  function parent(selector) {
877    var this$1 = this;
878
879    var parents = []; // eslint-disable-line
880    for (var i = 0; i < this.length; i += 1) {
881      if (this$1[i].parentNode !== null) {
882        if (selector) {
883          if ($(this$1[i].parentNode).is(selector)) { parents.push(this$1[i].parentNode); }
884        } else {
885          parents.push(this$1[i].parentNode);
886        }
887      }
888    }
889    return $(unique(parents));
890  }
891  function parents(selector) {
892    var this$1 = this;
893
894    var parents = []; // eslint-disable-line
895    for (var i = 0; i < this.length; i += 1) {
896      var parent = this$1[i].parentNode; // eslint-disable-line
897      while (parent) {
898        if (selector) {
899          if ($(parent).is(selector)) { parents.push(parent); }
900        } else {
901          parents.push(parent);
902        }
903        parent = parent.parentNode;
904      }
905    }
906    return $(unique(parents));
907  }
908  function closest(selector) {
909    var closest = this; // eslint-disable-line
910    if (typeof selector === 'undefined') {
911      return new Dom7([]);
912    }
913    if (!closest.is(selector)) {
914      closest = closest.parents(selector).eq(0);
915    }
916    return closest;
917  }
918  function find(selector) {
919    var this$1 = this;
920
921    var foundElements = [];
922    for (var i = 0; i < this.length; i += 1) {
923      var found = this$1[i].querySelectorAll(selector);
924      for (var j = 0; j < found.length; j += 1) {
925        foundElements.push(found[j]);
926      }
927    }
928    return new Dom7(foundElements);
929  }
930  function children(selector) {
931    var this$1 = this;
932
933    var children = []; // eslint-disable-line
934    for (var i = 0; i < this.length; i += 1) {
935      var childNodes = this$1[i].childNodes;
936
937      for (var j = 0; j < childNodes.length; j += 1) {
938        if (!selector) {
939          if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); }
940        } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {
941          children.push(childNodes[j]);
942        }
943      }
944    }
945    return new Dom7(unique(children));
946  }
947  function remove() {
948    var this$1 = this;
949
950    for (var i = 0; i < this.length; i += 1) {
951      if (this$1[i].parentNode) { this$1[i].parentNode.removeChild(this$1[i]); }
952    }
953    return this;
954  }
955  function add() {
956    var args = [], len = arguments.length;
957    while ( len-- ) args[ len ] = arguments[ len ];
958
959    var dom = this;
960    var i;
961    var j;
962    for (i = 0; i < args.length; i += 1) {
963      var toAdd = $(args[i]);
964      for (j = 0; j < toAdd.length; j += 1) {
965        dom[dom.length] = toAdd[j];
966        dom.length += 1;
967      }
968    }
969    return dom;
970  }
971
972  var Methods = {
973    addClass: addClass,
974    removeClass: removeClass,
975    hasClass: hasClass,
976    toggleClass: toggleClass,
977    attr: attr,
978    removeAttr: removeAttr,
979    data: data,
980    transform: transform,
981    transition: transition,
982    on: on,
983    off: off,
984    trigger: trigger,
985    transitionEnd: transitionEnd,
986    outerWidth: outerWidth,
987    outerHeight: outerHeight,
988    offset: offset,
989    css: css,
990    each: each,
991    html: html,
992    text: text,
993    is: is,
994    index: index,
995    eq: eq,
996    append: append,
997    prepend: prepend,
998    next: next,
999    nextAll: nextAll,
1000    prev: prev,
1001    prevAll: prevAll,
1002    parent: parent,
1003    parents: parents,
1004    closest: closest,
1005    find: find,
1006    children: children,
1007    remove: remove,
1008    add: add,
1009    styles: styles,
1010  };
1011
1012  Object.keys(Methods).forEach(function (methodName) {
1013    $.fn[methodName] = Methods[methodName];
1014  });
1015
1016  var Utils = {
1017    deleteProps: function deleteProps(obj) {
1018      var object = obj;
1019      Object.keys(object).forEach(function (key) {
1020        try {
1021          object[key] = null;
1022        } catch (e) {
1023          // no getter for object
1024        }
1025        try {
1026          delete object[key];
1027        } catch (e) {
1028          // something got wrong
1029        }
1030      });
1031    },
1032    nextTick: function nextTick(callback, delay) {
1033      if ( delay === void 0 ) delay = 0;
1034
1035      return setTimeout(callback, delay);
1036    },
1037    now: function now() {
1038      return Date.now();
1039    },
1040    getTranslate: function getTranslate(el, axis) {
1041      if ( axis === void 0 ) axis = 'x';
1042
1043      var matrix;
1044      var curTransform;
1045      var transformMatrix;
1046
1047      var curStyle = win.getComputedStyle(el, null);
1048
1049      if (win.WebKitCSSMatrix) {
1050        curTransform = curStyle.transform || curStyle.webkitTransform;
1051        if (curTransform.split(',').length > 6) {
1052          curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', ');
1053        }
1054        // Some old versions of Webkit choke when 'none' is passed; pass
1055        // empty string instead in this case
1056        transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
1057      } else {
1058        transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
1059        matrix = transformMatrix.toString().split(',');
1060      }
1061
1062      if (axis === 'x') {
1063        // Latest Chrome and webkits Fix
1064        if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m41; }
1065        // Crazy IE10 Matrix
1066        else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); }
1067        // Normal Browsers
1068        else { curTransform = parseFloat(matrix[4]); }
1069      }
1070      if (axis === 'y') {
1071        // Latest Chrome and webkits Fix
1072        if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m42; }
1073        // Crazy IE10 Matrix
1074        else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); }
1075        // Normal Browsers
1076        else { curTransform = parseFloat(matrix[5]); }
1077      }
1078      return curTransform || 0;
1079    },
1080    parseUrlQuery: function parseUrlQuery(url) {
1081      var query = {};
1082      var urlToParse = url || win.location.href;
1083      var i;
1084      var params;
1085      var param;
1086      var length;
1087      if (typeof urlToParse === 'string' && urlToParse.length) {
1088        urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : '';
1089        params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; });
1090        length = params.length;
1091
1092        for (i = 0; i < length; i += 1) {
1093          param = params[i].replace(/#\S+/g, '').split('=');
1094          query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';
1095        }
1096      }
1097      return query;
1098    },
1099    isObject: function isObject(o) {
1100      return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
1101    },
1102    extend: function extend() {
1103      var args = [], len$1 = arguments.length;
1104      while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];
1105
1106      var to = Object(args[0]);
1107      for (var i = 1; i < args.length; i += 1) {
1108        var nextSource = args[i];
1109        if (nextSource !== undefined && nextSource !== null) {
1110          var keysArray = Object.keys(Object(nextSource));
1111          for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
1112            var nextKey = keysArray[nextIndex];
1113            var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
1114            if (desc !== undefined && desc.enumerable) {
1115              if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
1116                Utils.extend(to[nextKey], nextSource[nextKey]);
1117              } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
1118                to[nextKey] = {};
1119                Utils.extend(to[nextKey], nextSource[nextKey]);
1120              } else {
1121                to[nextKey] = nextSource[nextKey];
1122              }
1123            }
1124          }
1125        }
1126      }
1127      return to;
1128    },
1129  };
1130
1131  var Support = (function Support() {
1132    var testDiv = doc.createElement('div');
1133    return {
1134      touch: (win.Modernizr && win.Modernizr.touch === true) || (function checkTouch() {
1135        return !!(('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch));
1136      }()),
1137
1138      pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent),
1139      prefixedPointerEvents: !!win.navigator.msPointerEnabled,
1140
1141      transition: (function checkTransition() {
1142        var style = testDiv.style;
1143        return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);
1144      }()),
1145      transforms3d: (win.Modernizr && win.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {
1146        var style = testDiv.style;
1147        return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style);
1148      }()),
1149
1150      flexbox: (function checkFlexbox() {
1151        var style = testDiv.style;
1152        var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');
1153        for (var i = 0; i < styles.length; i += 1) {
1154          if (styles[i] in style) { return true; }
1155        }
1156        return false;
1157      }()),
1158
1159      observer: (function checkObserver() {
1160        return ('MutationObserver' in win || 'WebkitMutationObserver' in win);
1161      }()),
1162
1163      passiveListener: (function checkPassiveListener() {
1164        var supportsPassive = false;
1165        try {
1166          var opts = Object.defineProperty({}, 'passive', {
1167            // eslint-disable-next-line
1168            get: function get() {
1169              supportsPassive = true;
1170            },
1171          });
1172          win.addEventListener('testPassiveListener', null, opts);
1173        } catch (e) {
1174          // No support
1175        }
1176        return supportsPassive;
1177      }()),
1178
1179      gestures: (function checkGestures() {
1180        return 'ongesturestart' in win;
1181      }()),
1182    };
1183  }());
1184
1185  var SwiperClass = function SwiperClass(params) {
1186    if ( params === void 0 ) params = {};
1187
1188    var self = this;
1189    self.params = params;
1190
1191    // Events
1192    self.eventsListeners = {};
1193
1194    if (self.params && self.params.on) {
1195      Object.keys(self.params.on).forEach(function (eventName) {
1196        self.on(eventName, self.params.on[eventName]);
1197      });
1198    }
1199  };
1200
1201  var staticAccessors = { components: { configurable: true } };
1202
1203  SwiperClass.prototype.on = function on (events, handler, priority) {
1204    var self = this;
1205    if (typeof handler !== 'function') { return self; }
1206    var method = priority ? 'unshift' : 'push';
1207    events.split(' ').forEach(function (event) {
1208      if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; }
1209      self.eventsListeners[event][method](handler);
1210    });
1211    return self;
1212  };
1213
1214  SwiperClass.prototype.once = function once (events, handler, priority) {
1215    var self = this;
1216    if (typeof handler !== 'function') { return self; }
1217    function onceHandler() {
1218        var args = [], len = arguments.length;
1219        while ( len-- ) args[ len ] = arguments[ len ];
1220
1221      handler.apply(self, args);
1222      self.off(events, onceHandler);
1223    }
1224    return self.on(events, onceHandler, priority);
1225  };
1226
1227  SwiperClass.prototype.off = function off (events, handler) {
1228    var self = this;
1229    if (!self.eventsListeners) { return self; }
1230    events.split(' ').forEach(function (event) {
1231      if (typeof handler === 'undefined') {
1232        self.eventsListeners[event] = [];
1233      } else {
1234        self.eventsListeners[event].forEach(function (eventHandler, index) {
1235          if (eventHandler === handler) {
1236            self.eventsListeners[event].splice(index, 1);
1237          }
1238        });
1239      }
1240    });
1241    return self;
1242  };
1243
1244  SwiperClass.prototype.emit = function emit () {
1245      var args = [], len = arguments.length;
1246      while ( len-- ) args[ len ] = arguments[ len ];
1247
1248    var self = this;
1249    if (!self.eventsListeners) { return self; }
1250    var events;
1251    var data;
1252    var context;
1253    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
1254      events = args[0];
1255      data = args.slice(1, args.length);
1256      context = self;
1257    } else {
1258      events = args[0].events;
1259      data = args[0].data;
1260      context = args[0].context || self;
1261    }
1262    var eventsArray = Array.isArray(events) ? events : events.split(' ');
1263    eventsArray.forEach(function (event) {
1264      if (self.eventsListeners && self.eventsListeners[event]) {
1265        var handlers = [];
1266        self.eventsListeners[event].forEach(function (eventHandler) {
1267          handlers.push(eventHandler);
1268        });
1269        handlers.forEach(function (eventHandler) {
1270          eventHandler.apply(context, data);
1271        });
1272      }
1273    });
1274    return self;
1275  };
1276
1277  SwiperClass.prototype.useModulesParams = function useModulesParams (instanceParams) {
1278    var instance = this;
1279    if (!instance.modules) { return; }
1280    Object.keys(instance.modules).forEach(function (moduleName) {
1281      var module = instance.modules[moduleName];
1282      // Extend params
1283      if (module.params) {
1284        Utils.extend(instanceParams, module.params);
1285      }
1286    });
1287  };
1288
1289  SwiperClass.prototype.useModules = function useModules (modulesParams) {
1290      if ( modulesParams === void 0 ) modulesParams = {};
1291
1292    var instance = this;
1293    if (!instance.modules) { return; }
1294    Object.keys(instance.modules).forEach(function (moduleName) {
1295      var module = instance.modules[moduleName];
1296      var moduleParams = modulesParams[moduleName] || {};
1297      // Extend instance methods and props
1298      if (module.instance) {
1299        Object.keys(module.instance).forEach(function (modulePropName) {
1300          var moduleProp = module.instance[modulePropName];
1301          if (typeof moduleProp === 'function') {
1302            instance[modulePropName] = moduleProp.bind(instance);
1303          } else {
1304            instance[modulePropName] = moduleProp;
1305          }
1306        });
1307      }
1308      // Add event listeners
1309      if (module.on && instance.on) {
1310        Object.keys(module.on).forEach(function (moduleEventName) {
1311          instance.on(moduleEventName, module.on[moduleEventName]);
1312        });
1313      }
1314
1315      // Module create callback
1316      if (module.create) {
1317        module.create.bind(instance)(moduleParams);
1318      }
1319    });
1320  };
1321
1322  staticAccessors.components.set = function (components) {
1323    var Class = this;
1324    if (!Class.use) { return; }
1325    Class.use(components);
1326  };
1327
1328  SwiperClass.installModule = function installModule (module) {
1329      var params = [], len = arguments.length - 1;
1330      while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];
1331
1332    var Class = this;
1333    if (!Class.prototype.modules) { Class.prototype.modules = {}; }
1334    var name = module.name || (((Object.keys(Class.prototype.modules).length) + "_" + (Utils.now())));
1335    Class.prototype.modules[name] = module;
1336    // Prototype
1337    if (module.proto) {
1338      Object.keys(module.proto).forEach(function (key) {
1339        Class.prototype[key] = module.proto[key];
1340      });
1341    }
1342    // Class
1343    if (module.static) {
1344      Object.keys(module.static).forEach(function (key) {
1345        Class[key] = module.static[key];
1346      });
1347    }
1348    // Callback
1349    if (module.install) {
1350      module.install.apply(Class, params);
1351    }
1352    return Class;
1353  };
1354
1355  SwiperClass.use = function use (module) {
1356      var params = [], len = arguments.length - 1;
1357      while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];
1358
1359    var Class = this;
1360    if (Array.isArray(module)) {
1361      module.forEach(function (m) { return Class.installModule(m); });
1362      return Class;
1363    }
1364    return Class.installModule.apply(Class, [ module ].concat( params ));
1365  };
1366
1367  Object.defineProperties( SwiperClass, staticAccessors );
1368
1369  function updateSize () {
1370    var swiper = this;
1371    var width;
1372    var height;
1373    var $el = swiper.$el;
1374    if (typeof swiper.params.width !== 'undefined') {
1375      width = swiper.params.width;
1376    } else {
1377      width = $el[0].clientWidth;
1378    }
1379    if (typeof swiper.params.height !== 'undefined') {
1380      height = swiper.params.height;
1381    } else {
1382      height = $el[0].clientHeight;
1383    }
1384    if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {
1385      return;
1386    }
1387
1388    // Subtract paddings
1389    width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);
1390    height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);
1391
1392    Utils.extend(swiper, {
1393      width: width,
1394      height: height,
1395      size: swiper.isHorizontal() ? width : height,
1396    });
1397  }
1398
1399  function updateSlides () {
1400    var swiper = this;
1401    var params = swiper.params;
1402
1403    var $wrapperEl = swiper.$wrapperEl;
1404    var swiperSize = swiper.size;
1405    var rtl = swiper.rtlTranslate;
1406    var wrongRTL = swiper.wrongRTL;
1407    var isVirtual = swiper.virtual && params.virtual.enabled;
1408    var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
1409    var slides = $wrapperEl.children(("." + (swiper.params.slideClass)));
1410    var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
1411    var snapGrid = [];
1412    var slidesGrid = [];
1413    var slidesSizesGrid = [];
1414
1415    var offsetBefore = params.slidesOffsetBefore;
1416    if (typeof offsetBefore === 'function') {
1417      offsetBefore = params.slidesOffsetBefore.call(swiper);
1418    }
1419
1420    var offsetAfter = params.slidesOffsetAfter;
1421    if (typeof offsetAfter === 'function') {
1422      offsetAfter = params.slidesOffsetAfter.call(swiper);
1423    }
1424
1425    var previousSnapGridLength = swiper.snapGrid.length;
1426    var previousSlidesGridLength = swiper.snapGrid.length;
1427
1428    var spaceBetween = params.spaceBetween;
1429    var slidePosition = -offsetBefore;
1430    var prevSlideSize = 0;
1431    var index = 0;
1432    if (typeof swiperSize === 'undefined') {
1433      return;
1434    }
1435    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
1436      spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;
1437    }
1438
1439    swiper.virtualSize = -spaceBetween;
1440
1441    // reset margins
1442    if (rtl) { slides.css({ marginLeft: '', marginTop: '' }); }
1443    else { slides.css({ marginRight: '', marginBottom: '' }); }
1444
1445    var slidesNumberEvenToRows;
1446    if (params.slidesPerColumn > 1) {
1447      if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
1448        slidesNumberEvenToRows = slidesLength;
1449      } else {
1450        slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
1451      }
1452      if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
1453        slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
1454      }
1455    }
1456
1457    // Calc slides
1458    var slideSize;
1459    var slidesPerColumn = params.slidesPerColumn;
1460    var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
1461    var numFullColumns = slidesPerRow - ((params.slidesPerColumn * slidesPerRow) - slidesLength);
1462    for (var i = 0; i < slidesLength; i += 1) {
1463      slideSize = 0;
1464      var slide = slides.eq(i);
1465      if (params.slidesPerColumn > 1) {
1466        // Set slides order
1467        var newSlideOrderIndex = (void 0);
1468        var column = (void 0);
1469        var row = (void 0);
1470        if (params.slidesPerColumnFill === 'column') {
1471          column = Math.floor(i / slidesPerColumn);
1472          row = i - (column * slidesPerColumn);
1473          if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {
1474            row += 1;
1475            if (row >= slidesPerColumn) {
1476              row = 0;
1477              column += 1;
1478            }
1479          }
1480          newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);
1481          slide
1482            .css({
1483              '-webkit-box-ordinal-group': newSlideOrderIndex,
1484              '-moz-box-ordinal-group': newSlideOrderIndex,
1485              '-ms-flex-order': newSlideOrderIndex,
1486              '-webkit-order': newSlideOrderIndex,
1487              order: newSlideOrderIndex,
1488            });
1489        } else {
1490          row = Math.floor(i / slidesPerRow);
1491          column = i - (row * slidesPerRow);
1492        }
1493        slide
1494          .css(
1495            ("margin-" + (swiper.isHorizontal() ? 'top' : 'left')),
1496            (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + "px"))
1497          )
1498          .attr('data-swiper-column', column)
1499          .attr('data-swiper-row', row);
1500      }
1501      if (slide.css('display') === 'none') { continue; } // eslint-disable-line
1502
1503      if (params.slidesPerView === 'auto') {
1504        var slideStyles = win.getComputedStyle(slide[0], null);
1505        var currentTransform = slide[0].style.transform;
1506        var currentWebKitTransform = slide[0].style.webkitTransform;
1507        if (currentTransform) {
1508          slide[0].style.transform = 'none';
1509        }
1510        if (currentWebKitTransform) {
1511          slide[0].style.webkitTransform = 'none';
1512        }
1513        if (swiper.isHorizontal()) {
1514          slideSize = slide[0].getBoundingClientRect().width
1515            + parseFloat(slideStyles.getPropertyValue('margin-left'))
1516            + parseFloat(slideStyles.getPropertyValue('margin-right'));
1517        } else {
1518          slideSize = slide[0].getBoundingClientRect().height
1519            + parseFloat(slideStyles.getPropertyValue('margin-top'))
1520            + parseFloat(slideStyles.getPropertyValue('margin-bottom'));
1521        }
1522        if (currentTransform) {
1523          slide[0].style.transform = currentTransform;
1524        }
1525        if (currentWebKitTransform) {
1526          slide[0].style.webkitTransform = currentWebKitTransform;
1527        }
1528        if (params.roundLengths) { slideSize = Math.floor(slideSize); }
1529      } else {
1530        slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;
1531        if (params.roundLengths) { slideSize = Math.floor(slideSize); }
1532
1533        if (slides[i]) {
1534          if (swiper.isHorizontal()) {
1535            slides[i].style.width = slideSize + "px";
1536          } else {
1537            slides[i].style.height = slideSize + "px";
1538          }
1539        }
1540      }
1541      if (slides[i]) {
1542        slides[i].swiperSlideSize = slideSize;
1543      }
1544      slidesSizesGrid.push(slideSize);
1545
1546
1547      if (params.centeredSlides) {
1548        slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;
1549        if (prevSlideSize === 0 && i !== 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }
1550        if (i === 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }
1551        if (Math.abs(slidePosition) < 1 / 1000) { slidePosition = 0; }
1552        if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }
1553        if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }
1554        slidesGrid.push(slidePosition);
1555      } else {
1556        if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }
1557        if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }
1558        slidesGrid.push(slidePosition);
1559        slidePosition = slidePosition + slideSize + spaceBetween;
1560      }
1561
1562      swiper.virtualSize += slideSize + spaceBetween;
1563
1564      prevSlideSize = slideSize;
1565
1566      index += 1;
1567    }
1568    swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
1569    var newSlidesGrid;
1570
1571    if (
1572      rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
1573      $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") });
1574    }
1575    if (!Support.flexbox || params.setWrapperSize) {
1576      if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
1577      else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
1578    }
1579
1580    if (params.slidesPerColumn > 1) {
1581      swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
1582      swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
1583      if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
1584      else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
1585      if (params.centeredSlides) {
1586        newSlidesGrid = [];
1587        for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) {
1588          var slidesGridItem = snapGrid[i$1];
1589          if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); }
1590          if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(slidesGridItem); }
1591        }
1592        snapGrid = newSlidesGrid;
1593      }
1594    }
1595
1596    // Remove last grid elements depending on width
1597    if (!params.centeredSlides) {
1598      newSlidesGrid = [];
1599      for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {
1600        var slidesGridItem$1 = snapGrid[i$2];
1601        if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); }
1602        if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) {
1603          newSlidesGrid.push(slidesGridItem$1);
1604        }
1605      }
1606      snapGrid = newSlidesGrid;
1607      if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
1608        snapGrid.push(swiper.virtualSize - swiperSize);
1609      }
1610    }
1611    if (snapGrid.length === 0) { snapGrid = [0]; }
1612
1613    if (params.spaceBetween !== 0) {
1614      if (swiper.isHorizontal()) {
1615        if (rtl) { slides.css({ marginLeft: (spaceBetween + "px") }); }
1616        else { slides.css({ marginRight: (spaceBetween + "px") }); }
1617      } else { slides.css({ marginBottom: (spaceBetween + "px") }); }
1618    }
1619
1620    Utils.extend(swiper, {
1621      slides: slides,
1622      snapGrid: snapGrid,
1623      slidesGrid: slidesGrid,
1624      slidesSizesGrid: slidesSizesGrid,
1625    });
1626
1627    if (slidesLength !== previousSlidesLength) {
1628      swiper.emit('slidesLengthChange');
1629    }
1630    if (snapGrid.length !== previousSnapGridLength) {
1631      if (swiper.params.watchOverflow) { swiper.checkOverflow(); }
1632      swiper.emit('snapGridLengthChange');
1633    }
1634    if (slidesGrid.length !== previousSlidesGridLength) {
1635      swiper.emit('slidesGridLengthChange');
1636    }
1637
1638    if (params.watchSlidesProgress || params.watchSlidesVisibility) {
1639      swiper.updateSlidesOffset();
1640    }
1641  }
1642
1643  function updateAutoHeight (speed) {
1644    var swiper = this;
1645    var activeSlides = [];
1646    var newHeight = 0;
1647    var i;
1648    if (typeof speed === 'number') {
1649      swiper.setTransition(speed);
1650    } else if (speed === true) {
1651      swiper.setTransition(swiper.params.speed);
1652    }
1653    // Find slides currently in view
1654    if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
1655      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
1656        var index = swiper.activeIndex + i;
1657        if (index > swiper.slides.length) { break; }
1658        activeSlides.push(swiper.slides.eq(index)[0]);
1659      }
1660    } else {
1661      activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
1662    }
1663
1664    // Find new height from highest slide in view
1665    for (i = 0; i < activeSlides.length; i += 1) {
1666      if (typeof activeSlides[i] !== 'undefined') {
1667        var height = activeSlides[i].offsetHeight;
1668        newHeight = height > newHeight ? height : newHeight;
1669      }
1670    }
1671
1672    // Update Height
1673    if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + "px")); }
1674  }
1675
1676  function updateSlidesOffset () {
1677    var swiper = this;
1678    var slides = swiper.slides;
1679    for (var i = 0; i < slides.length; i += 1) {
1680      slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
1681    }
1682  }
1683
1684  function updateSlidesProgress (translate) {
1685    if ( translate === void 0 ) translate = (this && this.translate) || 0;
1686
1687    var swiper = this;
1688    var params = swiper.params;
1689
1690    var slides = swiper.slides;
1691    var rtl = swiper.rtlTranslate;
1692
1693    if (slides.length === 0) { return; }
1694    if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); }
1695
1696    var offsetCenter = -translate;
1697    if (rtl) { offsetCenter = translate; }
1698
1699    // Visible Slides
1700    slides.removeClass(params.slideVisibleClass);
1701
1702    for (var i = 0; i < slides.length; i += 1) {
1703      var slide = slides[i];
1704      var slideProgress = (
1705        (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset
1706      ) / (slide.swiperSlideSize + params.spaceBetween);
1707      if (params.watchSlidesVisibility) {
1708        var slideBefore = -(offsetCenter - slide.swiperSlideOffset);
1709        var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
1710        var isVisible = (slideBefore >= 0 && slideBefore < swiper.size)
1711                  || (slideAfter > 0 && slideAfter <= swiper.size)
1712                  || (slideBefore <= 0 && slideAfter >= swiper.size);
1713        if (isVisible) {
1714          slides.eq(i).addClass(params.slideVisibleClass);
1715        }
1716      }
1717      slide.progress = rtl ? -slideProgress : slideProgress;
1718    }
1719  }
1720
1721  function updateProgress (translate) {
1722    if ( translate === void 0 ) translate = (this && this.translate) || 0;
1723
1724    var swiper = this;
1725    var params = swiper.params;
vendor: 6,283 bytes, lines 1725-1888
1725
1726
1727    var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
1728    var progress = swiper.progress;
1729    var isBeginning = swiper.isBeginning;
1730    var isEnd = swiper.isEnd;
1731    var wasBeginning = isBeginning;
1732    var wasEnd = isEnd;
1733    if (translatesDiff === 0) {
1734      progress = 0;
1735      isBeginning = true;
1736      isEnd = true;
1737    } else {
1738      progress = (translate - swiper.minTranslate()) / (translatesDiff);
1739      isBeginning = progress <= 0;
1740      isEnd = progress >= 1;
1741    }
1742    Utils.extend(swiper, {
1743      progress: progress,
1744      isBeginning: isBeginning,
1745      isEnd: isEnd,
1746    });
1747
1748    if (params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateSlidesProgress(translate); }
1749
1750    if (isBeginning && !wasBeginning) {
1751      swiper.emit('reachBeginning toEdge');
1752    }
1753    if (isEnd && !wasEnd) {
1754      swiper.emit('reachEnd toEdge');
1755    }
1756    if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {
1757      swiper.emit('fromEdge');
1758    }
1759
1760    swiper.emit('progress', progress);
1761  }
1762
1763  function updateSlidesClasses () {
1764    var swiper = this;
1765
1766    var slides = swiper.slides;
1767    var params = swiper.params;
1768    var $wrapperEl = swiper.$wrapperEl;
1769    var activeIndex = swiper.activeIndex;
1770    var realIndex = swiper.realIndex;
1771    var isVirtual = swiper.virtual && params.virtual.enabled;
1772
1773    slides.removeClass(((params.slideActiveClass) + " " + (params.slideNextClass) + " " + (params.slidePrevClass) + " " + (params.slideDuplicateActiveClass) + " " + (params.slideDuplicateNextClass) + " " + (params.slideDuplicatePrevClass)));
1774
1775    var activeSlide;
1776    if (isVirtual) {
1777      activeSlide = swiper.$wrapperEl.find(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + activeIndex + "\"]"));
1778    } else {
1779      activeSlide = slides.eq(activeIndex);
1780    }
1781
1782    // Active classes
1783    activeSlide.addClass(params.slideActiveClass);
1784
1785    if (params.loop) {
1786      // Duplicate to all looped slides
1787      if (activeSlide.hasClass(params.slideDuplicateClass)) {
1788        $wrapperEl
1789          .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + realIndex + "\"]"))
1790          .addClass(params.slideDuplicateActiveClass);
1791      } else {
1792        $wrapperEl
1793          .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]"))
1794          .addClass(params.slideDuplicateActiveClass);
1795      }
1796    }
1797    // Next Slide
1798    var nextSlide = activeSlide.nextAll(("." + (params.slideClass))).eq(0).addClass(params.slideNextClass);
1799    if (params.loop && nextSlide.length === 0) {
1800      nextSlide = slides.eq(0);
1801      nextSlide.addClass(params.slideNextClass);
1802    }
1803    // Prev Slide
1804    var prevSlide = activeSlide.prevAll(("." + (params.slideClass))).eq(0).addClass(params.slidePrevClass);
1805    if (params.loop && prevSlide.length === 0) {
1806      prevSlide = slides.eq(-1);
1807      prevSlide.addClass(params.slidePrevClass);
1808    }
1809    if (params.loop) {
1810      // Duplicate to all looped slides
1811      if (nextSlide.hasClass(params.slideDuplicateClass)) {
1812        $wrapperEl
1813          .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]"))
1814          .addClass(params.slideDuplicateNextClass);
1815      } else {
1816        $wrapperEl
1817          .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]"))
1818          .addClass(params.slideDuplicateNextClass);
1819      }
1820      if (prevSlide.hasClass(params.slideDuplicateClass)) {
1821        $wrapperEl
1822          .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]"))
1823          .addClass(params.slideDuplicatePrevClass);
1824      } else {
1825        $wrapperEl
1826          .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]"))
1827          .addClass(params.slideDuplicatePrevClass);
1828      }
1829    }
1830  }
1831
1832  function updateActiveIndex (newActiveIndex) {
1833    var swiper = this;
1834    var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
1835    var slidesGrid = swiper.slidesGrid;
1836    var snapGrid = swiper.snapGrid;
1837    var params = swiper.params;
1838    var previousIndex = swiper.activeIndex;
1839    var previousRealIndex = swiper.realIndex;
1840    var previousSnapIndex = swiper.snapIndex;
1841    var activeIndex = newActiveIndex;
1842    var snapIndex;
1843    if (typeof activeIndex === 'undefined') {
1844      for (var i = 0; i < slidesGrid.length; i += 1) {
1845        if (typeof slidesGrid[i + 1] !== 'undefined') {
1846          if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {
1847            activeIndex = i;
1848          } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
1849            activeIndex = i + 1;
1850          }
1851        } else if (translate >= slidesGrid[i]) {
1852          activeIndex = i;
1853        }
1854      }
1855      // Normalize slideIndex
1856      if (params.normalizeSlideIndex) {
1857        if (activeIndex < 0 || typeof activeIndex === 'undefined') { activeIndex = 0; }
1858      }
1859    }
1860    if (snapGrid.indexOf(translate) >= 0) {
1861      snapIndex = snapGrid.indexOf(translate);
1862    } else {
1863      snapIndex = Math.floor(activeIndex / params.slidesPerGroup);
1864    }
1865    if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }
1866    if (activeIndex === previousIndex) {
1867      if (snapIndex !== previousSnapIndex) {
1868        swiper.snapIndex = snapIndex;
1869        swiper.emit('snapIndexChange');
1870      }
1871      return;
1872    }
1873
1874    // Get real index
1875    var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
1876
1877    Utils.extend(swiper, {
1878      snapIndex: snapIndex,
1879      realIndex: realIndex,
1880      previousIndex: previousIndex,
1881      activeIndex: activeIndex,
1882    });
1883    swiper.emit('activeIndexChange');
1884    swiper.emit('snapIndexChange');
1885    if (previousRealIndex !== realIndex) {
1886      swiper.emit('realIndexChange');
1887    }
1888    
1888swiper.emit('slideChange');
vendor: 27,205 bytes, lines 1888-2734
1888
1889  }
1890
1891  function updateClickedSlide (e) {
1892    var swiper = this;
1893    var params = swiper.params;
1894    var slide = $(e.target).closest(("." + (params.slideClass)))[0];
1895    var slideFound = false;
1896    if (slide) {
1897      for (var i = 0; i < swiper.slides.length; i += 1) {
1898        if (swiper.slides[i] === slide) { slideFound = true; }
1899      }
1900    }
1901
1902    if (slide && slideFound) {
1903      swiper.clickedSlide = slide;
1904      if (swiper.virtual && swiper.params.virtual.enabled) {
1905        swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);
1906      } else {
1907        swiper.clickedIndex = $(slide).index();
1908      }
1909    } else {
1910      swiper.clickedSlide = undefined;
1911      swiper.clickedIndex = undefined;
1912      return;
1913    }
1914    if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
1915      swiper.slideToClickedSlide();
1916    }
1917  }
1918
1919  var update = {
1920    updateSize: updateSize,
1921    updateSlides: updateSlides,
1922    updateAutoHeight: updateAutoHeight,
1923    updateSlidesOffset: updateSlidesOffset,
1924    updateSlidesProgress: updateSlidesProgress,
1925    updateProgress: updateProgress,
1926    updateSlidesClasses: updateSlidesClasses,
1927    updateActiveIndex: updateActiveIndex,
1928    updateClickedSlide: updateClickedSlide,
1929  };
1930
1931  function getTranslate (axis) {
1932    if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y';
1933
1934    var swiper = this;
1935
1936    var params = swiper.params;
1937    var rtl = swiper.rtlTranslate;
1938    var translate = swiper.translate;
1939    var $wrapperEl = swiper.$wrapperEl;
1940
1941    if (params.virtualTranslate) {
1942      return rtl ? -translate : translate;
1943    }
1944
1945    var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);
1946    if (rtl) { currentTranslate = -currentTranslate; }
1947
1948    return currentTranslate || 0;
1949  }
1950
1951  function setTranslate (translate, byController) {
1952    var swiper = this;
1953    var rtl = swiper.rtlTranslate;
1954    var params = swiper.params;
1955    var $wrapperEl = swiper.$wrapperEl;
1956    var progress = swiper.progress;
1957    var x = 0;
1958    var y = 0;
1959    var z = 0;
1960
1961    if (swiper.isHorizontal()) {
1962      x = rtl ? -translate : translate;
1963    } else {
1964      y = translate;
1965    }
1966
1967    if (params.roundLengths) {
1968      x = Math.floor(x);
1969      y = Math.floor(y);
1970    }
1971
1972    if (!params.virtualTranslate) {
1973      if (Support.transforms3d) { $wrapperEl.transform(("translate3d(" + x + "px, " + y + "px, " + z + "px)")); }
1974      else { $wrapperEl.transform(("translate(" + x + "px, " + y + "px)")); }
1975    }
1976    swiper.previousTranslate = swiper.translate;
1977    swiper.translate = swiper.isHorizontal() ? x : y;
1978
1979    // Check if we need to update progress
1980    var newProgress;
1981    var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
1982    if (translatesDiff === 0) {
1983      newProgress = 0;
1984    } else {
1985      newProgress = (translate - swiper.minTranslate()) / (translatesDiff);
1986    }
1987    if (newProgress !== progress) {
1988      swiper.updateProgress(translate);
1989    }
1990
1991    swiper.emit('setTranslate', swiper.translate, byController);
1992  }
1993
1994  function minTranslate () {
1995    return (-this.snapGrid[0]);
1996  }
1997
1998  function maxTranslate () {
1999    return (-this.snapGrid[this.snapGrid.length - 1]);
2000  }
2001
2002  var translate = {
2003    getTranslate: getTranslate,
2004    setTranslate: setTranslate,
2005    minTranslate: minTranslate,
2006    maxTranslate: maxTranslate,
2007  };
2008
2009  function setTransition (duration, byController) {
2010    var swiper = this;
2011
2012    swiper.$wrapperEl.transition(duration);
2013
2014    swiper.emit('setTransition', duration, byController);
2015  }
2016
2017  function transitionStart (runCallbacks, direction) {
2018    if ( runCallbacks === void 0 ) runCallbacks = true;
2019
2020    var swiper = this;
2021    var activeIndex = swiper.activeIndex;
2022    var params = swiper.params;
2023    var previousIndex = swiper.previousIndex;
2024    if (params.autoHeight) {
2025      swiper.updateAutoHeight();
2026    }
2027
2028    var dir = direction;
2029    if (!dir) {
2030      if (activeIndex > previousIndex) { dir = 'next'; }
2031      else if (activeIndex < previousIndex) { dir = 'prev'; }
2032      else { dir = 'reset'; }
2033    }
2034
2035    swiper.emit('transitionStart');
2036
2037    if (runCallbacks && activeIndex !== previousIndex) {
2038      if (dir === 'reset') {
2039        swiper.emit('slideResetTransitionStart');
2040        return;
2041      }
2042      swiper.emit('slideChangeTransitionStart');
2043      if (dir === 'next') {
2044        swiper.emit('slideNextTransitionStart');
2045      } else {
2046        swiper.emit('slidePrevTransitionStart');
2047      }
2048    }
2049  }
2050
2051  function transitionEnd$1 (runCallbacks, direction) {
2052    if ( runCallbacks === void 0 ) runCallbacks = true;
2053
2054    var swiper = this;
2055    var activeIndex = swiper.activeIndex;
2056    var previousIndex = swiper.previousIndex;
2057    swiper.animating = false;
2058    swiper.setTransition(0);
2059
2060    var dir = direction;
2061    if (!dir) {
2062      if (activeIndex > previousIndex) { dir = 'next'; }
2063      else if (activeIndex < previousIndex) { dir = 'prev'; }
2064      else { dir = 'reset'; }
2065    }
2066
2067    swiper.emit('transitionEnd');
2068
2069    if (runCallbacks && activeIndex !== previousIndex) {
2070      if (dir === 'reset') {
2071        swiper.emit('slideResetTransitionEnd');
2072        return;
2073      }
2074      swiper.emit('slideChangeTransitionEnd');
2075      if (dir === 'next') {
2076        swiper.emit('slideNextTransitionEnd');
2077      } else {
2078        swiper.emit('slidePrevTransitionEnd');
2079      }
2080    }
2081  }
2082
2083  var transition$1 = {
2084    setTransition: setTransition,
2085    transitionStart: transitionStart,
2086    transitionEnd: transitionEnd$1,
2087  };
2088
2089  function slideTo (index, speed, runCallbacks, internal) {
2090    if ( index === void 0 ) index = 0;
2091    if ( speed === void 0 ) speed = this.params.speed;
2092    if ( runCallbacks === void 0 ) runCallbacks = true;
2093
2094    var swiper = this;
2095    var slideIndex = index;
2096    if (slideIndex < 0) { slideIndex = 0; }
2097
2098    var params = swiper.params;
2099    var snapGrid = swiper.snapGrid;
2100    var slidesGrid = swiper.slidesGrid;
2101    var previousIndex = swiper.previousIndex;
2102    var activeIndex = swiper.activeIndex;
2103    var rtl = swiper.rtlTranslate;
2104    if (swiper.animating && params.preventInteractionOnTransition) {
2105      return false;
2106    }
2107
2108    var snapIndex = Math.floor(slideIndex / params.slidesPerGroup);
2109    if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }
2110
2111    if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
2112      swiper.emit('beforeSlideChangeStart');
2113    }
2114
2115    var translate = -snapGrid[snapIndex];
2116
2117    // Update progress
2118    swiper.updateProgress(translate);
2119
2120    // Normalize slideIndex
2121    if (params.normalizeSlideIndex) {
2122      for (var i = 0; i < slidesGrid.length; i += 1) {
2123        if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
2124          slideIndex = i;
2125        }
2126      }
2127    }
2128    // Directions locks
2129    if (swiper.initialized && slideIndex !== activeIndex) {
2130      if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
2131        return false;
2132      }
2133      if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
2134        if ((activeIndex || 0) !== slideIndex) { return false; }
2135      }
2136    }
2137
2138    var direction;
2139    if (slideIndex > activeIndex) { direction = 'next'; }
2140    else if (slideIndex < activeIndex) { direction = 'prev'; }
2141    else { direction = 'reset'; }
2142
2143
2144    // Update Index
2145    if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {
2146      swiper.updateActiveIndex(slideIndex);
2147      // Update Height
2148      if (params.autoHeight) {
2149        swiper.updateAutoHeight();
2150      }
2151      swiper.updateSlidesClasses();
2152      if (params.effect !== 'slide') {
2153        swiper.setTranslate(translate);
2154      }
2155      if (direction !== 'reset') {
2156        swiper.transitionStart(runCallbacks, direction);
2157        swiper.transitionEnd(runCallbacks, direction);
2158      }
2159      return false;
2160    }
2161
2162    if (speed === 0 || !Support.transition) {
2163      swiper.setTransition(0);
2164      swiper.setTranslate(translate);
2165      swiper.updateActiveIndex(slideIndex);
2166      swiper.updateSlidesClasses();
2167      swiper.emit('beforeTransitionStart', speed, internal);
2168      swiper.transitionStart(runCallbacks, direction);
2169      swiper.transitionEnd(runCallbacks, direction);
2170    } else {
2171      swiper.setTransition(speed);
2172      swiper.setTranslate(translate);
2173      swiper.updateActiveIndex(slideIndex);
2174      swiper.updateSlidesClasses();
2175      swiper.emit('beforeTransitionStart', speed, internal);
2176      swiper.transitionStart(runCallbacks, direction);
2177      if (!swiper.animating) {
2178        swiper.animating = true;
2179        if (!swiper.onSlideToWrapperTransitionEnd) {
2180          swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
2181            if (!swiper || swiper.destroyed) { return; }
2182            if (e.target !== this) { return; }
2183            swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
2184            swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
2185            swiper.onSlideToWrapperTransitionEnd = null;
2186            delete swiper.onSlideToWrapperTransitionEnd;
2187            swiper.transitionEnd(runCallbacks, direction);
2188          };
2189        }
2190        swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
2191        swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
2192      }
2193    }
2194
2195    return true;
2196  }
2197
2198  function slideToLoop (index, speed, runCallbacks, internal) {
2199    if ( index === void 0 ) index = 0;
2200    if ( speed === void 0 ) speed = this.params.speed;
2201    if ( runCallbacks === void 0 ) runCallbacks = true;
2202
2203    var swiper = this;
2204    var newIndex = index;
2205    if (swiper.params.loop) {
2206      newIndex += swiper.loopedSlides;
2207    }
2208
2209    return swiper.slideTo(newIndex, speed, runCallbacks, internal);
2210  }
2211
2212  /* eslint no-unused-vars: "off" */
2213  function slideNext (speed, runCallbacks, internal) {
2214    if ( speed === void 0 ) speed = this.params.speed;
2215    if ( runCallbacks === void 0 ) runCallbacks = true;
2216
2217    var swiper = this;
2218    var params = swiper.params;
2219    var animating = swiper.animating;
2220    if (params.loop) {
2221      if (animating) { return false; }
2222      swiper.loopFix();
2223      // eslint-disable-next-line
2224      swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2225      return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);
2226    }
2227    return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);
2228  }
2229
2230  /* eslint no-unused-vars: "off" */
2231  function slidePrev (speed, runCallbacks, internal) {
2232    if ( speed === void 0 ) speed = this.params.speed;
2233    if ( runCallbacks === void 0 ) runCallbacks = true;
2234
2235    var swiper = this;
2236    var params = swiper.params;
2237    var animating = swiper.animating;
2238    var snapGrid = swiper.snapGrid;
2239    var slidesGrid = swiper.slidesGrid;
2240    var rtlTranslate = swiper.rtlTranslate;
2241
2242    if (params.loop) {
2243      if (animating) { return false; }
2244      swiper.loopFix();
2245      // eslint-disable-next-line
2246      swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2247    }
2248    var translate = rtlTranslate ? swiper.translate : -swiper.translate;
2249    function normalize(val) {
2250      if (val < 0) { return -Math.floor(Math.abs(val)); }
2251      return Math.floor(val);
2252    }
2253    var normalizedTranslate = normalize(translate);
2254    var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); });
2255    var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); });
2256
2257    var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
2258    var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
2259    var prevIndex;
2260    if (typeof prevSnap !== 'undefined') {
2261      prevIndex = slidesGrid.indexOf(prevSnap);
2262      if (prevIndex < 0) { prevIndex = swiper.activeIndex - 1; }
2263    }
2264    return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
2265  }
2266
2267  /* eslint no-unused-vars: "off" */
2268  function slideReset (speed, runCallbacks, internal) {
2269    if ( speed === void 0 ) speed = this.params.speed;
2270    if ( runCallbacks === void 0 ) runCallbacks = true;
2271
2272    var swiper = this;
2273    return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
2274  }
2275
2276  /* eslint no-unused-vars: "off" */
2277  function slideToClosest (speed, runCallbacks, internal) {
2278    if ( speed === void 0 ) speed = this.params.speed;
2279    if ( runCallbacks === void 0 ) runCallbacks = true;
2280
2281    var swiper = this;
2282    var index = swiper.activeIndex;
2283    var snapIndex = Math.floor(index / swiper.params.slidesPerGroup);
2284
2285    if (snapIndex < swiper.snapGrid.length - 1) {
2286      var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
2287
2288      var currentSnap = swiper.snapGrid[snapIndex];
2289      var nextSnap = swiper.snapGrid[snapIndex + 1];
2290
2291      if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) {
2292        index = swiper.params.slidesPerGroup;
2293      }
2294    }
2295
2296    return swiper.slideTo(index, speed, runCallbacks, internal);
2297  }
2298
2299  function slideToClickedSlide () {
2300    var swiper = this;
2301    var params = swiper.params;
2302    var $wrapperEl = swiper.$wrapperEl;
2303
2304    var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
2305    var slideToIndex = swiper.clickedIndex;
2306    var realIndex;
2307    if (params.loop) {
2308      if (swiper.animating) { return; }
2309      realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
2310      if (params.centeredSlides) {
2311        if (
2312          (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))
2313          || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))
2314        ) {
2315          swiper.loopFix();
2316          slideToIndex = $wrapperEl
2317            .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")"))
2318            .eq(0)
2319            .index();
2320
2321          Utils.nextTick(function () {
2322            swiper.slideTo(slideToIndex);
2323          });
2324        } else {
2325          swiper.slideTo(slideToIndex);
2326        }
2327      } else if (slideToIndex > swiper.slides.length - slidesPerView) {
2328        swiper.loopFix();
2329        slideToIndex = $wrapperEl
2330          .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")"))
2331          .eq(0)
2332          .index();
2333
2334        Utils.nextTick(function () {
2335          swiper.slideTo(slideToIndex);
2336        });
2337      } else {
2338        swiper.slideTo(slideToIndex);
2339      }
2340    } else {
2341      swiper.slideTo(slideToIndex);
2342    }
2343  }
2344
2345  var slide = {
2346    slideTo: slideTo,
2347    slideToLoop: slideToLoop,
2348    slideNext: slideNext,
2349    slidePrev: slidePrev,
2350    slideReset: slideReset,
2351    slideToClosest: slideToClosest,
2352    slideToClickedSlide: slideToClickedSlide,
2353  };
2354
2355  function loopCreate () {
2356    var swiper = this;
2357    var params = swiper.params;
2358    var $wrapperEl = swiper.$wrapperEl;
2359    // Remove duplicated slides
2360    $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass))).remove();
2361
2362    var slides = $wrapperEl.children(("." + (params.slideClass)));
2363
2364    if (params.loopFillGroupWithBlank) {
2365      var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);
2366      if (blankSlidesNum !== params.slidesPerGroup) {
2367        for (var i = 0; i < blankSlidesNum; i += 1) {
2368          var blankNode = $(doc.createElement('div')).addClass(((params.slideClass) + " " + (params.slideBlankClass)));
2369          $wrapperEl.append(blankNode);
2370        }
2371        slides = $wrapperEl.children(("." + (params.slideClass)));
2372      }
2373    }
2374
2375    if (params.slidesPerView === 'auto' && !params.loopedSlides) { params.loopedSlides = slides.length; }
2376
2377    swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);
2378    swiper.loopedSlides += params.loopAdditionalSlides;
2379    if (swiper.loopedSlides > slides.length) {
2380      swiper.loopedSlides = slides.length;
2381    }
2382
2383    var prependSlides = [];
2384    var appendSlides = [];
2385    slides.each(function (index, el) {
2386      var slide = $(el);
2387      if (index < swiper.loopedSlides) { appendSlides.push(el); }
2388      if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); }
2389      slide.attr('data-swiper-slide-index', index);
2390    });
2391    for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) {
2392      $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass));
2393    }
2394    for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) {
2395      $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass));
2396    }
2397  }
2398
2399  function loopFix () {
2400    var swiper = this;
2401    var params = swiper.params;
2402    var activeIndex = swiper.activeIndex;
2403    var slides = swiper.slides;
2404    var loopedSlides = swiper.loopedSlides;
2405    var allowSlidePrev = swiper.allowSlidePrev;
2406    var allowSlideNext = swiper.allowSlideNext;
2407    var snapGrid = swiper.snapGrid;
2408    var rtl = swiper.rtlTranslate;
2409    var newIndex;
2410    swiper.allowSlidePrev = true;
2411    swiper.allowSlideNext = true;
2412
2413    var snapTranslate = -snapGrid[activeIndex];
2414    var diff = snapTranslate - swiper.getTranslate();
2415
2416
2417    // Fix For Negative Oversliding
2418    if (activeIndex < loopedSlides) {
2419      newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;
2420      newIndex += loopedSlides;
2421      var slideChanged = swiper.slideTo(newIndex, 0, false, true);
2422      if (slideChanged && diff !== 0) {
2423        swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
2424      }
2425    } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) {
2426      // Fix For Positive Oversliding
2427      newIndex = -slides.length + activeIndex + loopedSlides;
2428      newIndex += loopedSlides;
2429      var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true);
2430      if (slideChanged$1 && diff !== 0) {
2431        swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
2432      }
2433    }
2434    swiper.allowSlidePrev = allowSlidePrev;
2435    swiper.allowSlideNext = allowSlideNext;
2436  }
2437
2438  function loopDestroy () {
2439    var swiper = this;
2440    var $wrapperEl = swiper.$wrapperEl;
2441    var params = swiper.params;
2442    var slides = swiper.slides;
2443    $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass))).remove();
2444    slides.removeAttr('data-swiper-slide-index');
2445  }
2446
2447  var loop = {
2448    loopCreate: loopCreate,
2449    loopFix: loopFix,
2450    loopDestroy: loopDestroy,
2451  };
2452
2453  function setGrabCursor (moving) {
2454    var swiper = this;
2455    if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }
2456    var el = swiper.el;
2457    el.style.cursor = 'move';
2458    el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
2459    el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
2460    el.style.cursor = moving ? 'grabbing' : 'grab';
2461  }
2462
2463  function unsetGrabCursor () {
2464    var swiper = this;
2465    if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }
2466    swiper.el.style.cursor = '';
2467  }
2468
2469  var grabCursor = {
2470    setGrabCursor: setGrabCursor,
2471    unsetGrabCursor: unsetGrabCursor,
2472  };
2473
2474  function appendSlide (slides) {
2475    var swiper = this;
2476    var $wrapperEl = swiper.$wrapperEl;
2477    var params = swiper.params;
2478    if (params.loop) {
2479      swiper.loopDestroy();
2480    }
2481    if (typeof slides === 'object' && 'length' in slides) {
2482      for (var i = 0; i < slides.length; i += 1) {
2483        if (slides[i]) { $wrapperEl.append(slides[i]); }
2484      }
2485    } else {
2486      $wrapperEl.append(slides);
2487    }
2488    if (params.loop) {
2489      swiper.loopCreate();
2490    }
2491    if (!(params.observer && Support.observer)) {
2492      swiper.update();
2493    }
2494  }
2495
2496  function prependSlide (slides) {
2497    var swiper = this;
2498    var params = swiper.params;
2499    var $wrapperEl = swiper.$wrapperEl;
2500    var activeIndex = swiper.activeIndex;
2501
2502    if (params.loop) {
2503      swiper.loopDestroy();
2504    }
2505    var newActiveIndex = activeIndex + 1;
2506    if (typeof slides === 'object' && 'length' in slides) {
2507      for (var i = 0; i < slides.length; i += 1) {
2508        if (slides[i]) { $wrapperEl.prepend(slides[i]); }
2509      }
2510      newActiveIndex = activeIndex + slides.length;
2511    } else {
2512      $wrapperEl.prepend(slides);
2513    }
2514    if (params.loop) {
2515      swiper.loopCreate();
2516    }
2517    if (!(params.observer && Support.observer)) {
2518      swiper.update();
2519    }
2520    swiper.slideTo(newActiveIndex, 0, false);
2521  }
2522
2523  function addSlide (index, slides) {
2524    var swiper = this;
2525    var $wrapperEl = swiper.$wrapperEl;
2526    var params = swiper.params;
2527    var activeIndex = swiper.activeIndex;
2528    var activeIndexBuffer = activeIndex;
2529    if (params.loop) {
2530      activeIndexBuffer -= swiper.loopedSlides;
2531      swiper.loopDestroy();
2532      swiper.slides = $wrapperEl.children(("." + (params.slideClass)));
2533    }
2534    var baseLength = swiper.slides.length;
2535    if (index <= 0) {
2536      swiper.prependSlide(slides);
2537      return;
2538    }
2539    if (index >= baseLength) {
2540      swiper.appendSlide(slides);
2541      return;
2542    }
2543    var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
2544
2545    var slidesBuffer = [];
2546    for (var i = baseLength - 1; i >= index; i -= 1) {
2547      var currentSlide = swiper.slides.eq(i);
2548      currentSlide.remove();
2549      slidesBuffer.unshift(currentSlide);
2550    }
2551
2552    if (typeof slides === 'object' && 'length' in slides) {
2553      for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {
2554        if (slides[i$1]) { $wrapperEl.append(slides[i$1]); }
2555      }
2556      newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
2557    } else {
2558      $wrapperEl.append(slides);
2559    }
2560
2561    for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) {
2562      $wrapperEl.append(slidesBuffer[i$2]);
2563    }
2564
2565    if (params.loop) {
2566      swiper.loopCreate();
2567    }
2568    if (!(params.observer && Support.observer)) {
2569      swiper.update();
2570    }
2571    if (params.loop) {
2572      swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
2573    } else {
2574      swiper.slideTo(newActiveIndex, 0, false);
2575    }
2576  }
2577
2578  function removeSlide (slidesIndexes) {
2579    var swiper = this;
2580    var params = swiper.params;
2581    var $wrapperEl = swiper.$wrapperEl;
2582    var activeIndex = swiper.activeIndex;
2583
2584    var activeIndexBuffer = activeIndex;
2585    if (params.loop) {
2586      activeIndexBuffer -= swiper.loopedSlides;
2587      swiper.loopDestroy();
2588      swiper.slides = $wrapperEl.children(("." + (params.slideClass)));
2589    }
2590    var newActiveIndex = activeIndexBuffer;
2591    var indexToRemove;
2592
2593    if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
2594      for (var i = 0; i < slidesIndexes.length; i += 1) {
2595        indexToRemove = slidesIndexes[i];
2596        if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }
2597        if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }
2598      }
2599      newActiveIndex = Math.max(newActiveIndex, 0);
2600    } else {
2601      indexToRemove = slidesIndexes;
2602      if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }
2603      if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }
2604      newActiveIndex = Math.max(newActiveIndex, 0);
2605    }
2606
2607    if (params.loop) {
2608      swiper.loopCreate();
2609    }
2610
2611    if (!(params.observer && Support.observer)) {
2612      swiper.update();
2613    }
2614    if (params.loop) {
2615      swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
2616    } else {
2617      swiper.slideTo(newActiveIndex, 0, false);
2618    }
2619  }
2620
2621  function removeAllSlides () {
2622    var swiper = this;
2623
2624    var slidesIndexes = [];
2625    for (var i = 0; i < swiper.slides.length; i += 1) {
2626      slidesIndexes.push(i);
2627    }
2628    swiper.removeSlide(slidesIndexes);
2629  }
2630
2631  var manipulation = {
2632    appendSlide: appendSlide,
2633    prependSlide: prependSlide,
2634    addSlide: addSlide,
2635    removeSlide: removeSlide,
2636    removeAllSlides: removeAllSlides,
2637  };
2638
2639  var Device = (function Device() {
2640    var ua = win.navigator.userAgent;
2641
2642    var device = {
2643      ios: false,
2644      android: false,
2645      androidChrome: false,
2646      desktop: false,
2647      windows: false,
2648      iphone: false,
2649      ipod: false,
2650      ipad: false,
2651      cordova: win.cordova || win.phonegap,
2652      phonegap: win.cordova || win.phonegap,
2653    };
2654
2655    var windows = ua.match(/(Windows Phone);?[\s\/]+([\d.]+)?/); // eslint-disable-line
2656    var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
2657    var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
2658    var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
2659    var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
2660
2661
2662    // Windows
2663    if (windows) {
2664      device.os = 'windows';
2665      device.osVersion = windows[2];
2666      device.windows = true;
2667    }
2668    // Android
2669    if (android && !windows) {
2670      device.os = 'android';
2671      device.osVersion = android[2];
2672      device.android = true;
2673      device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
2674    }
2675    if (ipad || iphone || ipod) {
2676      device.os = 'ios';
2677      device.ios = true;
2678    }
2679    // iOS
2680    if (iphone && !ipod) {
2681      device.osVersion = iphone[2].replace(/_/g, '.');
2682      device.iphone = true;
2683    }
2684    if (ipad) {
2685      device.osVersion = ipad[2].replace(/_/g, '.');
2686      device.ipad = true;
2687    }
2688    if (ipod) {
2689      device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
2690      device.iphone = true;
2691    }
2692    // iOS 8+ changed UA
2693    if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
2694      if (device.osVersion.split('.')[0] === '10') {
2695        device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
2696      }
2697    }
2698
2699    // Desktop
2700    device.desktop = !(device.os || device.android || device.webView);
2701
2702    // Webview
2703    device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);
2704
2705    // Minimal UI
2706    if (device.os && device.os === 'ios') {
2707      var osVersionArr = device.osVersion.split('.');
2708      var metaViewport = doc.querySelector('meta[name="viewport"]');
2709      device.minimalUi = !device.webView
2710        && (ipod || iphone)
2711        && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7)
2712        && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;
2713    }
2714
2715    // Pixel Ratio
2716    device.pixelRatio = win.devicePixelRatio || 1;
2717
2718    // Export object
2719    return device;
2720  }());
2721
2722  function onTouchStart (event) {
2723    var swiper = this;
2724    var data = swiper.touchEventsData;
2725    var params = swiper.params;
2726    var touches = swiper.touches;
2727    if (swiper.animating && params.preventInteractionOnTransition) {
2728      return;
2729    }
2730    var e = event;
2731    if (e.originalEvent) { e = e.originalEvent; }
2732    data.isTouchEvent = e.type === 'touchstart';
2733    if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; }
2734    if (
vendor: 5,338 bytes, lines 2734-2893
2734data.isTouched && data.isMoved) { return; }
2735    if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : ("." + (params.noSwipingClass)))[0]) {
2736      swiper.allowClick = true;
2737      return;
2738    }
2739    if (params.swipeHandler) {
2740      if (!$(e).closest(params.swipeHandler)[0]) { return; }
2741    }
2742
2743    touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
2744    touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
2745    var startX = touches.currentX;
2746    var startY = touches.currentY;
2747
2748    // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore
2749
2750    var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
2751    var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
2752    if (
2753      edgeSwipeDetection
2754      && ((startX <= edgeSwipeThreshold)
2755      || (startX >= win.screen.width - edgeSwipeThreshold))
2756    ) {
2757      return;
2758    }
2759
2760    Utils.extend(data, {
2761      isTouched: true,
2762      isMoved: false,
2763      allowTouchCallbacks: true,
2764      isScrolling: undefined,
2765      startMoving: undefined,
2766    });
2767
2768    touches.startX = startX;
2769    touches.startY = startY;
2770    data.touchStartTime = Utils.now();
2771    swiper.allowClick = true;
2772    swiper.updateSize();
2773    swiper.swipeDirection = undefined;
2774    if (params.threshold > 0) { data.allowThresholdMove = false; }
2775    if (e.type !== 'touchstart') {
2776      var preventDefault = true;
2777      if ($(e.target).is(data.formElements)) { preventDefault = false; }
2778      if (
2779        doc.activeElement
2780        && $(doc.activeElement).is(data.formElements)
2781        && doc.activeElement !== e.target
2782      ) {
2783        doc.activeElement.blur();
2784      }
2785      if (preventDefault && swiper.allowTouchMove) {
2786        e.preventDefault();
2787      }
2788    }
2789    swiper.emit('touchStart', e);
2790  }
2791
2792  function onTouchMove (event) {
2793    var swiper = this;
2794    var data = swiper.touchEventsData;
2795    var params = swiper.params;
2796    var touches = swiper.touches;
2797    var rtl = swiper.rtlTranslate;
2798    var e = event;
2799    if (e.originalEvent) { e = e.originalEvent; }
2800    if (!data.isTouched) {
2801      if (data.startMoving && data.isScrolling) {
2802        swiper.emit('touchMoveOpposite', e);
2803      }
2804      return;
2805    }
2806    if (data.isTouchEvent && e.type === 'mousemove') { return; }
2807    var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
2808    var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
2809    if (e.preventedByNestedSwiper) {
2810      touches.startX = pageX;
2811      touches.startY = pageY;
2812      return;
2813    }
2814    if (!swiper.allowTouchMove) {
2815      // isMoved = true;
2816      swiper.allowClick = false;
2817      if (data.isTouched) {
2818        Utils.extend(touches, {
2819          startX: pageX,
2820          startY: pageY,
2821          currentX: pageX,
2822          currentY: pageY,
2823        });
2824        data.touchStartTime = Utils.now();
2825      }
2826      return;
2827    }
2828    if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
2829      if (swiper.isVertical()) {
2830        // Vertical
2831        if (
2832          (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())
2833          || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())
2834        ) {
2835          data.isTouched = false;
2836          data.isMoved = false;
2837          return;
2838        }
2839      } else if (
2840        (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())
2841        || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())
2842      ) {
2843        return;
2844      }
2845    }
2846    if (data.isTouchEvent && doc.activeElement) {
2847      if (e.target === doc.activeElement && $(e.target).is(data.formElements)) {
2848        data.isMoved = true;
2849        swiper.allowClick = false;
2850        return;
2851      }
2852    }
2853    if (data.allowTouchCallbacks) {
2854      swiper.emit('touchMove', e);
2855    }
2856    if (e.targetTouches && e.targetTouches.length > 1) { return; }
2857
2858    touches.currentX = pageX;
2859    touches.currentY = pageY;
2860
2861    var diffX = touches.currentX - touches.startX;
2862    var diffY = touches.currentY - touches.startY;
2863    if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) < swiper.params.threshold) { return; }
2864
2865    if (typeof data.isScrolling === 'undefined') {
2866      var touchAngle;
2867      if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {
2868        data.isScrolling = false;
2869      } else {
2870        // eslint-disable-next-line
2871        if ((diffX * diffX) + (diffY * diffY) >= 25) {
2872          touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;
2873          data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);
2874        }
2875      }
2876    }
2877    if (data.isScrolling) {
2878      swiper.emit('touchMoveOpposite', e);
2879    }
2880    if (typeof data.startMoving === 'undefined') {
2881      if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
2882        data.startMoving = true;
2883      }
2884    }
2885    if (data.isScrolling) {
2886      data.isTouched = false;
2887      return;
2888    }
2889    if (!data.startMoving) {
2890      return;
2891    }
2892    swiper.allowClick = false;
2893    e.preventDefault();
vendor: 14,334 bytes, lines 2893-3308
2893
2894    if (params.touchMoveStopPropagation && !params.nested) {
2895      e.stopPropagation();
2896    }
2897
2898    if (!data.isMoved) {
2899      if (params.loop) {
2900        swiper.loopFix();
2901      }
2902      data.startTranslate = swiper.getTranslate();
2903      swiper.setTransition(0);
2904      if (swiper.animating) {
2905        swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
2906      }
2907      data.allowMomentumBounce = false;
2908      // Grab Cursor
2909      if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
2910        swiper.setGrabCursor(true);
2911      }
2912      swiper.emit('sliderFirstMove', e);
2913    }
2914    swiper.emit('sliderMove', e);
2915    data.isMoved = true;
2916
2917    var diff = swiper.isHorizontal() ? diffX : diffY;
2918    touches.diff = diff;
2919
2920    diff *= params.touchRatio;
2921    if (rtl) { diff = -diff; }
2922
2923    swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
2924    data.currentTranslate = diff + data.startTranslate;
2925
2926    var disableParentSwiper = true;
2927    var resistanceRatio = params.resistanceRatio;
2928    if (params.touchReleaseOnEdges) {
2929      resistanceRatio = 0;
2930    }
2931    if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {
2932      disableParentSwiper = false;
2933      if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); }
2934    } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
2935      disableParentSwiper = false;
2936      if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio )); }
2937    }
2938
2939    if (disableParentSwiper) {
2940      e.preventedByNestedSwiper = true;
2941    }
2942
2943    // Directions locks
2944    if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
2945      data.currentTranslate = data.startTranslate;
2946    }
2947    if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
2948      data.currentTranslate = data.startTranslate;
2949    }
2950
2951
2952    // Threshold
2953    if (params.threshold > 0) {
2954      if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
2955        if (!data.allowThresholdMove) {
2956          data.allowThresholdMove = true;
2957          touches.startX = touches.currentX;
2958          touches.startY = touches.currentY;
2959          data.currentTranslate = data.startTranslate;
2960          touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
2961          return;
2962        }
2963      } else {
2964        data.currentTranslate = data.startTranslate;
2965        return;
2966      }
2967    }
2968
2969    if (!params.followFinger) { return; }
2970
2971    // Update active index in free mode
2972    if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
2973      swiper.updateActiveIndex();
2974      swiper.updateSlidesClasses();
2975    }
2976    if (params.freeMode) {
2977      // Velocity
2978      if (data.velocities.length === 0) {
2979        data.velocities.push({
2980          position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
2981          time: data.touchStartTime,
2982        });
2983      }
2984      data.velocities.push({
2985        position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
2986        time: Utils.now(),
2987      });
2988    }
2989    // Update progress
2990    swiper.updateProgress(data.currentTranslate);
2991    // Update translate
2992    swiper.setTranslate(data.currentTranslate);
2993  }
2994
2995  function onTouchEnd (event) {
2996    var swiper = this;
2997    var data = swiper.touchEventsData;
2998
2999    var params = swiper.params;
3000    var touches = swiper.touches;
3001    var rtl = swiper.rtlTranslate;
3002    var $wrapperEl = swiper.$wrapperEl;
3003    var slidesGrid = swiper.slidesGrid;
3004    var snapGrid = swiper.snapGrid;
3005    var e = event;
3006    if (e.originalEvent) { e = e.originalEvent; }
3007    if (data.allowTouchCallbacks) {
3008      swiper.emit('touchEnd', e);
3009    }
3010    data.allowTouchCallbacks = false;
3011    if (!data.isTouched) {
3012      if (data.isMoved && params.grabCursor) {
3013        swiper.setGrabCursor(false);
3014      }
3015      data.isMoved = false;
3016      data.startMoving = false;
3017      return;
3018    }
3019    // Return Grab Cursor
3020    if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
3021      swiper.setGrabCursor(false);
3022    }
3023
3024    // Time diff
3025    var touchEndTime = Utils.now();
3026    var timeDiff = touchEndTime - data.touchStartTime;
3027
3028    // Tap, doubleTap, Click
3029    if (swiper.allowClick) {
3030      swiper.updateClickedSlide(e);
3031      swiper.emit('tap', e);
3032      if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) {
3033        if (data.clickTimeout) { clearTimeout(data.clickTimeout); }
3034        data.clickTimeout = Utils.nextTick(function () {
3035          if (!swiper || swiper.destroyed) { return; }
3036          swiper.emit('click', e);
3037        }, 300);
3038      }
3039      if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {
3040        if (data.clickTimeout) { clearTimeout(data.clickTimeout); }
3041        swiper.emit('doubleTap', e);
3042      }
3043    }
3044
3045    data.lastClickTime = Utils.now();
3046    Utils.nextTick(function () {
3047      if (!swiper.destroyed) { swiper.allowClick = true; }
3048    });
3049
3050    if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
3051      data.isTouched = false;
3052      data.isMoved = false;
3053      data.startMoving = false;
3054      return;
3055    }
3056    data.isTouched = false;
3057    data.isMoved = false;
3058    data.startMoving = false;
3059
3060    var currentPos;
3061    if (params.followFinger) {
3062      currentPos = rtl ? swiper.translate : -swiper.translate;
3063    } else {
3064      currentPos = -data.currentTranslate;
3065    }
3066
3067    if (params.freeMode) {
3068      if (currentPos < -swiper.minTranslate()) {
3069        swiper.slideTo(swiper.activeIndex);
3070        return;
3071      }
3072      if (currentPos > -swiper.maxTranslate()) {
3073        if (swiper.slides.length < snapGrid.length) {
3074          swiper.slideTo(snapGrid.length - 1);
3075        } else {
3076          swiper.slideTo(swiper.slides.length - 1);
3077        }
3078        return;
3079      }
3080
3081      if (params.freeModeMomentum) {
3082        if (data.velocities.length > 1) {
3083          var lastMoveEvent = data.velocities.pop();
3084          var velocityEvent = data.velocities.pop();
3085
3086          var distance = lastMoveEvent.position - velocityEvent.position;
3087          var time = lastMoveEvent.time - velocityEvent.time;
3088          swiper.velocity = distance / time;
3089          swiper.velocity /= 2;
3090          if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
3091            swiper.velocity = 0;
3092          }
3093          // this implies that the user stopped moving a finger then released.
3094          // There would be no events with distance zero, so the last event is stale.
3095          if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {
3096            swiper.velocity = 0;
3097          }
3098        } else {
3099          swiper.velocity = 0;
3100        }
3101        swiper.velocity *= params.freeModeMomentumVelocityRatio;
3102
3103        data.velocities.length = 0;
3104        var momentumDuration = 1000 * params.freeModeMomentumRatio;
3105        var momentumDistance = swiper.velocity * momentumDuration;
3106
3107        var newPosition = swiper.translate + momentumDistance;
3108        if (rtl) { newPosition = -newPosition; }
3109
3110        var doBounce = false;
3111        var afterBouncePosition;
3112        var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
3113        var needsLoopFix;
3114        if (newPosition < swiper.maxTranslate()) {
3115          if (params.freeModeMomentumBounce) {
3116            if (newPosition + swiper.maxTranslate() < -bounceAmount) {
3117              newPosition = swiper.maxTranslate() - bounceAmount;
3118            }
3119            afterBouncePosition = swiper.maxTranslate();
3120            doBounce = true;
3121            data.allowMomentumBounce = true;
3122          } else {
3123            newPosition = swiper.maxTranslate();
3124          }
3125          if (params.loop && params.centeredSlides) { needsLoopFix = true; }
3126        } else if (newPosition > swiper.minTranslate()) {
3127          if (params.freeModeMomentumBounce) {
3128            if (newPosition - swiper.minTranslate() > bounceAmount) {
3129              newPosition = swiper.minTranslate() + bounceAmount;
3130            }
3131            afterBouncePosition = swiper.minTranslate();
3132            doBounce = true;
3133            data.allowMomentumBounce = true;
3134          } else {
3135            newPosition = swiper.minTranslate();
3136          }
3137          if (params.loop && params.centeredSlides) { needsLoopFix = true; }
3138        } else if (params.freeModeSticky) {
3139          var nextSlide;
3140          for (var j = 0; j < snapGrid.length; j += 1) {
3141            if (snapGrid[j] > -newPosition) {
3142              nextSlide = j;
3143              break;
3144            }
3145          }
3146
3147          if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
3148            newPosition = snapGrid[nextSlide];
3149          } else {
3150            newPosition = snapGrid[nextSlide - 1];
3151          }
3152          newPosition = -newPosition;
3153        }
3154        if (needsLoopFix) {
3155          swiper.once('transitionEnd', function () {
3156            swiper.loopFix();
3157          });
3158        }
3159        // Fix duration
3160        if (swiper.velocity !== 0) {
3161          if (rtl) {
3162            momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
3163          } else {
3164            momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
3165          }
3166        } else if (params.freeModeSticky) {
3167          swiper.slideToClosest();
3168          return;
3169        }
3170
3171        if (params.freeModeMomentumBounce && doBounce) {
3172          swiper.updateProgress(afterBouncePosition);
3173          swiper.setTransition(momentumDuration);
3174          swiper.setTranslate(newPosition);
3175          swiper.transitionStart(true, swiper.swipeDirection);
3176          swiper.animating = true;
3177          $wrapperEl.transitionEnd(function () {
3178            if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { return; }
3179            swiper.emit('momentumBounce');
3180
3181            swiper.setTransition(params.speed);
3182            swiper.setTranslate(afterBouncePosition);
3183            $wrapperEl.transitionEnd(function () {
3184              if (!swiper || swiper.destroyed) { return; }
3185              swiper.transitionEnd();
3186            });
3187          });
3188        } else if (swiper.velocity) {
3189          swiper.updateProgress(newPosition);
3190          swiper.setTransition(momentumDuration);
3191          swiper.setTranslate(newPosition);
3192          swiper.transitionStart(true, swiper.swipeDirection);
3193          if (!swiper.animating) {
3194            swiper.animating = true;
3195            $wrapperEl.transitionEnd(function () {
3196              if (!swiper || swiper.destroyed) { return; }
3197              swiper.transitionEnd();
3198            });
3199          }
3200        } else {
3201          swiper.updateProgress(newPosition);
3202        }
3203
3204        swiper.updateActiveIndex();
3205        swiper.updateSlidesClasses();
3206      } else if (params.freeModeSticky) {
3207        swiper.slideToClosest();
3208        return;
3209      }
3210
3211      if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
3212        swiper.updateProgress();
3213        swiper.updateActiveIndex();
3214        swiper.updateSlidesClasses();
3215      }
3216      return;
3217    }
3218
3219    // Find current slide
3220    var stopIndex = 0;
3221    var groupSize = swiper.slidesSizesGrid[0];
3222    for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {
3223      if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {
3224        if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {
3225          stopIndex = i;
3226          groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];
3227        }
3228      } else if (currentPos >= slidesGrid[i]) {
3229        stopIndex = i;
3230        groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
3231      }
3232    }
3233
3234    // Find current slide size
3235    var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
3236
3237    if (timeDiff > params.longSwipesMs) {
3238      // Long touches
3239      if (!params.longSwipes) {
3240        swiper.slideTo(swiper.activeIndex);
3241        return;
3242      }
3243      if (swiper.swipeDirection === 'next') {
3244        if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + params.slidesPerGroup); }
3245        else { swiper.slideTo(stopIndex); }
3246      }
3247      if (swiper.swipeDirection === 'prev') {
3248        if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + params.slidesPerGroup); }
3249        else { swiper.slideTo(stopIndex); }
3250      }
3251    } else {
3252      // Short swipes
3253      if (!params.shortSwipes) {
3254        swiper.slideTo(swiper.activeIndex);
3255        return;
3256      }
3257      if (swiper.swipeDirection === 'next') {
3258        swiper.slideTo(stopIndex + params.slidesPerGroup);
3259      }
3260      if (swiper.swipeDirection === 'prev') {
3261        swiper.slideTo(stopIndex);
3262      }
3263    }
3264  }
3265
3266  function onResize () {
3267    var swiper = this;
3268
3269    var params = swiper.params;
3270    var el = swiper.el;
3271
3272    if (el && el.offsetWidth === 0) { return; }
3273
3274    // Breakpoints
3275    if (params.breakpoints) {
3276      swiper.setBreakpoint();
3277    }
3278
3279    // Save locks
3280    var allowSlideNext = swiper.allowSlideNext;
3281    var allowSlidePrev = swiper.allowSlidePrev;
3282    var snapGrid = swiper.snapGrid;
3283
3284    // Disable locks on resize
3285    swiper.allowSlideNext = true;
3286    swiper.allowSlidePrev = true;
3287
3288    swiper.updateSize();
3289    swiper.updateSlides();
3290
3291    if (params.freeMode) {
3292      var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());
3293      swiper.setTranslate(newTranslate);
3294      swiper.updateActiveIndex();
3295      swiper.updateSlidesClasses();
3296
3297      if (params.autoHeight) {
3298        swiper.updateAutoHeight();
3299      }
3300    } else {
3301      swiper.updateSlidesClasses();
3302      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
3303        swiper.slideTo(swiper.slides.length - 1, 0, false, true);
3304      } else {
3305        swiper.slideTo(swiper.activeIndex, 0, false, true);
3306      }
3307    }
3308    
vendor: 39,693 bytes, lines 3308-4589
3308// Return locks after resize
3309    swiper.allowSlidePrev = allowSlidePrev;
3310    swiper.allowSlideNext = allowSlideNext;
3311
3312    if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
3313      swiper.checkOverflow();
3314    }
3315  }
3316
3317  function onClick (e) {
3318    var swiper = this;
3319    if (!swiper.allowClick) {
3320      if (swiper.params.preventClicks) { e.preventDefault(); }
3321      if (swiper.params.preventClicksPropagation && swiper.animating) {
3322        e.stopPropagation();
3323        e.stopImmediatePropagation();
3324      }
3325    }
3326  }
3327
3328  function attachEvents() {
3329    var swiper = this;
3330    var params = swiper.params;
3331    var touchEvents = swiper.touchEvents;
3332    var el = swiper.el;
3333    var wrapperEl = swiper.wrapperEl;
3334
3335    {
3336      swiper.onTouchStart = onTouchStart.bind(swiper);
3337      swiper.onTouchMove = onTouchMove.bind(swiper);
3338      swiper.onTouchEnd = onTouchEnd.bind(swiper);
3339    }
3340
3341    swiper.onClick = onClick.bind(swiper);
3342
3343    var target = params.touchEventsTarget === 'container' ? el : wrapperEl;
3344    var capture = !!params.nested;
3345
3346    // Touch Events
3347    {
3348      if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {
3349        target.addEventListener(touchEvents.start, swiper.onTouchStart, false);
3350        doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
3351        doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
3352      } else {
3353        if (Support.touch) {
3354          var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
3355          target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
3356          target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture);
3357          target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
3358        }
3359        if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
3360          target.addEventListener('mousedown', swiper.onTouchStart, false);
3361          doc.addEventListener('mousemove', swiper.onTouchMove, capture);
3362          doc.addEventListener('mouseup', swiper.onTouchEnd, false);
3363        }
3364      }
3365      // Prevent Links Clicks
3366      if (params.preventClicks || params.preventClicksPropagation) {
3367        target.addEventListener('click', swiper.onClick, true);
3368      }
3369    }
3370
3371    // Resize handler
3372    swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);
3373  }
3374
3375  function detachEvents() {
3376    var swiper = this;
3377
3378    var params = swiper.params;
3379    var touchEvents = swiper.touchEvents;
3380    var el = swiper.el;
3381    var wrapperEl = swiper.wrapperEl;
3382
3383    var target = params.touchEventsTarget === 'container' ? el : wrapperEl;
3384    var capture = !!params.nested;
3385
3386    // Touch Events
3387    {
3388      if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {
3389        target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
3390        doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
3391        doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
3392      } else {
3393        if (Support.touch) {
3394          var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
3395          target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
3396          target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
3397          target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
3398        }
3399        if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
3400          target.removeEventListener('mousedown', swiper.onTouchStart, false);
3401          doc.removeEventListener('mousemove', swiper.onTouchMove, capture);
3402          doc.removeEventListener('mouseup', swiper.onTouchEnd, false);
3403        }
3404      }
3405      // Prevent Links Clicks
3406      if (params.preventClicks || params.preventClicksPropagation) {
3407        target.removeEventListener('click', swiper.onClick, true);
3408      }
3409    }
3410
3411    // Resize handler
3412    swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);
3413  }
3414
3415  var events = {
3416    attachEvents: attachEvents,
3417    detachEvents: detachEvents,
3418  };
3419
3420  function setBreakpoint () {
3421    var swiper = this;
3422    var activeIndex = swiper.activeIndex;
3423    var initialized = swiper.initialized;
3424    var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0;
3425    var params = swiper.params;
3426    var breakpoints = params.breakpoints;
3427    if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; }
3428    // Set breakpoint for window width and update parameters
3429    var breakpoint = swiper.getBreakpoint(breakpoints);
3430    if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
3431      var breakPointsParams = breakpoint in breakpoints ? breakpoints[breakpoint] : swiper.originalParams;
3432      var needsReLoop = params.loop && (breakPointsParams.slidesPerView !== params.slidesPerView);
3433
3434      Utils.extend(swiper.params, breakPointsParams);
3435
3436      Utils.extend(swiper, {
3437        allowTouchMove: swiper.params.allowTouchMove,
3438        allowSlideNext: swiper.params.allowSlideNext,
3439        allowSlidePrev: swiper.params.allowSlidePrev,
3440      });
3441
3442      swiper.currentBreakpoint = breakpoint;
3443
3444      if (needsReLoop && initialized) {
3445        swiper.loopDestroy();
3446        swiper.loopCreate();
3447        swiper.updateSlides();
3448        swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);
3449      }
3450      swiper.emit('breakpoint', breakPointsParams);
3451    }
3452  }
3453
3454  function getBreakpoint (breakpoints) {
3455    // Get breakpoint for window width
3456    if (!breakpoints) { return undefined; }
3457    var breakpoint = false;
3458    var points = [];
3459    Object.keys(breakpoints).forEach(function (point) {
3460      points.push(point);
3461    });
3462    points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); });
3463    for (var i = 0; i < points.length; i += 1) {
3464      var point = points[i];
3465      if (point >= win.innerWidth && !breakpoint) {
3466        breakpoint = point;
3467      }
3468    }
3469    return breakpoint || 'max';
3470  }
3471
3472  var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint };
3473
3474  var Browser = (function Browser() {
3475    function isSafari() {
3476      var ua = win.navigator.userAgent.toLowerCase();
3477      return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);
3478    }
3479    return {
3480      isIE: !!win.navigator.userAgent.match(/Trident/g) || !!win.navigator.userAgent.match(/MSIE/g),
3481      isSafari: isSafari(),
3482      isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent),
3483    };
3484  }());
3485
3486  function addClasses () {
3487    var swiper = this;
3488    var classNames = swiper.classNames;
3489    var params = swiper.params;
3490    var rtl = swiper.rtl;
3491    var $el = swiper.$el;
3492    var suffixes = [];
3493
3494    suffixes.push(params.direction);
3495
3496    if (params.freeMode) {
3497      suffixes.push('free-mode');
3498    }
3499    if (!Support.flexbox) {
3500      suffixes.push('no-flexbox');
3501    }
3502    if (params.autoHeight) {
3503      suffixes.push('autoheight');
3504    }
3505    if (rtl) {
3506      suffixes.push('rtl');
3507    }
3508    if (params.slidesPerColumn > 1) {
3509      suffixes.push('multirow');
3510    }
3511    if (Device.android) {
3512      suffixes.push('android');
3513    }
3514    if (Device.ios) {
3515      suffixes.push('ios');
3516    }
3517    // WP8 Touch Events Fix
3518    if (Browser.isIE && (Support.pointerEvents || Support.prefixedPointerEvents)) {
3519      suffixes.push(("wp8-" + (params.direction)));
3520    }
3521
3522    suffixes.forEach(function (suffix) {
3523      classNames.push(params.containerModifierClass + suffix);
3524    });
3525
3526    $el.addClass(classNames.join(' '));
3527  }
3528
3529  function removeClasses () {
3530    var swiper = this;
3531    var $el = swiper.$el;
3532    var classNames = swiper.classNames;
3533
3534    $el.removeClass(classNames.join(' '));
3535  }
3536
3537  var classes = { addClasses: addClasses, removeClasses: removeClasses };
3538
3539  function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {
3540    var image;
3541    function onReady() {
3542      if (callback) { callback(); }
3543    }
3544    if (!imageEl.complete || !checkForComplete) {
3545      if (src) {
3546        image = new win.Image();
3547        image.onload = onReady;
3548        image.onerror = onReady;
3549        if (sizes) {
3550          image.sizes = sizes;
3551        }
3552        if (srcset) {
3553          image.srcset = srcset;
3554        }
3555        if (src) {
3556          image.src = src;
3557        }
3558      } else {
3559        onReady();
3560      }
3561    } else {
3562      // image already loaded...
3563      onReady();
3564    }
3565  }
3566
3567  function preloadImages () {
3568    var swiper = this;
3569    swiper.imagesToLoad = swiper.$el.find('img');
3570    function onReady() {
3571      if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; }
3572      if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; }
3573      if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
3574        if (swiper.params.updateOnImagesReady) { swiper.update(); }
3575        swiper.emit('imagesReady');
3576      }
3577    }
3578    for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {
3579      var imageEl = swiper.imagesToLoad[i];
3580      swiper.loadImage(
3581        imageEl,
3582        imageEl.currentSrc || imageEl.getAttribute('src'),
3583        imageEl.srcset || imageEl.getAttribute('srcset'),
3584        imageEl.sizes || imageEl.getAttribute('sizes'),
3585        true,
3586        onReady
3587      );
3588    }
3589  }
3590
3591  var images = {
3592    loadImage: loadImage,
3593    preloadImages: preloadImages,
3594  };
3595
3596  function checkOverflow() {
3597    var swiper = this;
3598    var wasLocked = swiper.isLocked;
3599
3600    swiper.isLocked = swiper.snapGrid.length === 1;
3601    swiper.allowSlideNext = !swiper.isLocked;
3602    swiper.allowSlidePrev = !swiper.isLocked;
3603
3604    // events
3605    if (wasLocked !== swiper.isLocked) { swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); }
3606
3607    if (wasLocked && wasLocked !== swiper.isLocked) {
3608      swiper.isEnd = false;
3609      swiper.navigation.update();
3610    }
3611  }
3612
3613  var checkOverflow$1 = { checkOverflow: checkOverflow };
3614
3615  var defaults = {
3616    init: true,
3617    direction: 'horizontal',
3618    touchEventsTarget: 'container',
3619    initialSlide: 0,
3620    speed: 300,
3621    //
3622    preventInteractionOnTransition: false,
3623
3624    // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).
3625    edgeSwipeDetection: false,
3626    edgeSwipeThreshold: 20,
3627
3628    // Free mode
3629    freeMode: false,
3630    freeModeMomentum: true,
3631    freeModeMomentumRatio: 1,
3632    freeModeMomentumBounce: true,
3633    freeModeMomentumBounceRatio: 1,
3634    freeModeMomentumVelocityRatio: 1,
3635    freeModeSticky: false,
3636    freeModeMinimumVelocity: 0.02,
3637
3638    // Autoheight
3639    autoHeight: false,
3640
3641    // Set wrapper width
3642    setWrapperSize: false,
3643
3644    // Virtual Translate
3645    virtualTranslate: false,
3646
3647    // Effects
3648    effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
3649
3650    // Breakpoints
3651    breakpoints: undefined,
3652
3653    // Slides grid
3654    spaceBetween: 0,
3655    slidesPerView: 1,
3656    slidesPerColumn: 1,
3657    slidesPerColumnFill: 'column',
3658    slidesPerGroup: 1,
3659    centeredSlides: false,
3660    slidesOffsetBefore: 0, // in px
3661    slidesOffsetAfter: 0, // in px
3662    normalizeSlideIndex: true,
3663
3664    // Disable swiper and hide navigation when container not overflow
3665    watchOverflow: false,
3666
3667    // Round length
3668    roundLengths: false,
3669
3670    // Touches
3671    touchRatio: 1,
3672    touchAngle: 45,
3673    simulateTouch: true,
3674    shortSwipes: true,
3675    longSwipes: true,
3676    longSwipesRatio: 0.5,
3677    longSwipesMs: 300,
3678    followFinger: true,
3679    allowTouchMove: true,
3680    threshold: 0,
3681    touchMoveStopPropagation: true,
3682    touchReleaseOnEdges: false,
3683
3684    // Unique Navigation Elements
3685    uniqueNavElements: true,
3686
3687    // Resistance
3688    resistance: true,
3689    resistanceRatio: 0.85,
3690
3691    // Progress
3692    watchSlidesProgress: false,
3693    watchSlidesVisibility: false,
3694
3695    // Cursor
3696    grabCursor: false,
3697
3698    // Clicks
3699    preventClicks: true,
3700    preventClicksPropagation: true,
3701    slideToClickedSlide: false,
3702
3703    // Images
3704    preloadImages: true,
3705    updateOnImagesReady: true,
3706
3707    // loop
3708    loop: false,
3709    loopAdditionalSlides: 0,
3710    loopedSlides: null,
3711    loopFillGroupWithBlank: false,
3712
3713    // Swiping/no swiping
3714    allowSlidePrev: true,
3715    allowSlideNext: true,
3716    swipeHandler: null, // '.swipe-handler',
3717    noSwiping: true,
3718    noSwipingClass: 'swiper-no-swiping',
3719    noSwipingSelector: null,
3720
3721    // Passive Listeners
3722    passiveListeners: true,
3723
3724    // NS
3725    containerModifierClass: 'swiper-container-', // NEW
3726    slideClass: 'swiper-slide',
3727    slideBlankClass: 'swiper-slide-invisible-blank',
3728    slideActiveClass: 'swiper-slide-active',
3729    slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
3730    slideVisibleClass: 'swiper-slide-visible',
3731    slideDuplicateClass: 'swiper-slide-duplicate',
3732    slideNextClass: 'swiper-slide-next',
3733    slideDuplicateNextClass: 'swiper-slide-duplicate-next',
3734    slidePrevClass: 'swiper-slide-prev',
3735    slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
3736    wrapperClass: 'swiper-wrapper',
3737
3738    // Callbacks
3739    runCallbacksOnInit: true,
3740  };
3741
3742  var prototypes = {
3743    update: update,
3744    translate: translate,
3745    transition: transition$1,
3746    slide: slide,
3747    loop: loop,
3748    grabCursor: grabCursor,
3749    manipulation: manipulation,
3750    events: events,
3751    breakpoints: breakpoints,
3752    checkOverflow: checkOverflow$1,
3753    classes: classes,
3754    images: images,
3755  };
3756
3757  var extendedDefaults = {};
3758
3759  var Swiper = (function (SwiperClass$$1) {
3760    function Swiper() {
3761      var assign;
3762
3763      var args = [], len = arguments.length;
3764      while ( len-- ) args[ len ] = arguments[ len ];
3765      var el;
3766      var params;
3767      if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
3768        params = args[0];
3769      } else {
3770        (assign = args, el = assign[0], params = assign[1]);
3771      }
3772      if (!params) { params = {}; }
3773
3774      params = Utils.extend({}, params);
3775      if (el && !params.el) { params.el = el; }
3776
3777      SwiperClass$$1.call(this, params);
3778
3779      Object.keys(prototypes).forEach(function (prototypeGroup) {
3780        Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
3781          if (!Swiper.prototype[protoMethod]) {
3782            Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
3783          }
3784        });
3785      });
3786
3787      // Swiper Instance
3788      var swiper = this;
3789      if (typeof swiper.modules === 'undefined') {
3790        swiper.modules = {};
3791      }
3792      Object.keys(swiper.modules).forEach(function (moduleName) {
3793        var module = swiper.modules[moduleName];
3794        if (module.params) {
3795          var moduleParamName = Object.keys(module.params)[0];
3796          var moduleParams = module.params[moduleParamName];
3797          if (typeof moduleParams !== 'object') { return; }
3798          if (!(moduleParamName in params && 'enabled' in moduleParams)) { return; }
3799          if (params[moduleParamName] === true) {
3800            params[moduleParamName] = { enabled: true };
3801          }
3802          if (
3803            typeof params[moduleParamName] === 'object'
3804            && !('enabled' in params[moduleParamName])
3805          ) {
3806            params[moduleParamName].enabled = true;
3807          }
3808          if (!params[moduleParamName]) { params[moduleParamName] = { enabled: false }; }
3809        }
3810      });
3811
3812      // Extend defaults with modules params
3813      var swiperParams = Utils.extend({}, defaults);
3814      swiper.useModulesParams(swiperParams);
3815
3816      // Extend defaults with passed params
3817      swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);
3818      swiper.originalParams = Utils.extend({}, swiper.params);
3819      swiper.passedParams = Utils.extend({}, params);
3820
3821      // Save Dom lib
3822      swiper.$ = $;
3823
3824      // Find el
3825      var $el = $(swiper.params.el);
3826      el = $el[0];
3827
3828      if (!el) {
3829        return undefined;
3830      }
3831
3832      if ($el.length > 1) {
3833        var swipers = [];
3834        $el.each(function (index, containerEl) {
3835          var newParams = Utils.extend({}, params, { el: containerEl });
3836          swipers.push(new Swiper(newParams));
3837        });
3838        return swipers;
3839      }
3840
3841      el.swiper = swiper;
3842      $el.data('swiper', swiper);
3843
3844      // Find Wrapper
3845      var $wrapperEl = $el.children(("." + (swiper.params.wrapperClass)));
3846
3847      // Extend Swiper
3848      Utils.extend(swiper, {
3849        $el: $el,
3850        el: el,
3851        $wrapperEl: $wrapperEl,
3852        wrapperEl: $wrapperEl[0],
3853
3854        // Classes
3855        classNames: [],
3856
3857        // Slides
3858        slides: $(),
3859        slidesGrid: [],
3860        snapGrid: [],
3861        slidesSizesGrid: [],
3862
3863        // isDirection
3864        isHorizontal: function isHorizontal() {
3865          return swiper.params.direction === 'horizontal';
3866        },
3867        isVertical: function isVertical() {
3868          return swiper.params.direction === 'vertical';
3869        },
3870        // RTL
3871        rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
3872        rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
3873        wrongRTL: $wrapperEl.css('display') === '-webkit-box',
3874
3875        // Indexes
3876        activeIndex: 0,
3877        realIndex: 0,
3878
3879        //
3880        isBeginning: true,
3881        isEnd: false,
3882
3883        // Props
3884        translate: 0,
3885        previousTranslate: 0,
3886        progress: 0,
3887        velocity: 0,
3888        animating: false,
3889
3890        // Locks
3891        allowSlideNext: swiper.params.allowSlideNext,
3892        allowSlidePrev: swiper.params.allowSlidePrev,
3893
3894        // Touch Events
3895        touchEvents: (function touchEvents() {
3896          var touch = ['touchstart', 'touchmove', 'touchend'];
3897          var desktop = ['mousedown', 'mousemove', 'mouseup'];
3898          if (Support.pointerEvents) {
3899            desktop = ['pointerdown', 'pointermove', 'pointerup'];
3900          } else if (Support.prefixedPointerEvents) {
3901            desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];
3902          }
3903          swiper.touchEventsTouch = {
3904            start: touch[0],
3905            move: touch[1],
3906            end: touch[2],
3907          };
3908          swiper.touchEventsDesktop = {
3909            start: desktop[0],
3910            move: desktop[1],
3911            end: desktop[2],
3912          };
3913          return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
3914        }()),
3915        touchEventsData: {
3916          isTouched: undefined,
3917          isMoved: undefined,
3918          allowTouchCallbacks: undefined,
3919          touchStartTime: undefined,
3920          isScrolling: undefined,
3921          currentTranslate: undefined,
3922          startTranslate: undefined,
3923          allowThresholdMove: undefined,
3924          // Form elements to match
3925          formElements: 'input, select, option, textarea, button, video',
3926          // Last click time
3927          lastClickTime: Utils.now(),
3928          clickTimeout: undefined,
3929          // Velocities
3930          velocities: [],
3931          allowMomentumBounce: undefined,
3932          isTouchEvent: undefined,
3933          startMoving: undefined,
3934        },
3935
3936        // Clicks
3937        allowClick: true,
3938
3939        // Touches
3940        allowTouchMove: swiper.params.allowTouchMove,
3941
3942        touches: {
3943          startX: 0,
3944          startY: 0,
3945          currentX: 0,
3946          currentY: 0,
3947          diff: 0,
3948        },
3949
3950        // Images
3951        imagesToLoad: [],
3952        imagesLoaded: 0,
3953
3954      });
3955
3956      // Install Modules
3957      swiper.useModules();
3958
3959      // Init
3960      if (swiper.params.init) {
3961        swiper.init();
3962      }
3963
3964      // Return app instance
3965      return swiper;
3966    }
3967
3968    if ( SwiperClass$$1 ) Swiper.__proto__ = SwiperClass$$1;
3969    Swiper.prototype = Object.create( SwiperClass$$1 && SwiperClass$$1.prototype );
3970    Swiper.prototype.constructor = Swiper;
3971
3972    var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } };
3973
3974    Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () {
3975      var swiper = this;
3976      var params = swiper.params;
3977      var slides = swiper.slides;
3978      var slidesGrid = swiper.slidesGrid;
3979      var swiperSize = swiper.size;
3980      var activeIndex = swiper.activeIndex;
3981      var spv = 1;
3982      if (params.centeredSlides) {
3983        var slideSize = slides[activeIndex].swiperSlideSize;
3984        var breakLoop;
3985        for (var i = activeIndex + 1; i < slides.length; i += 1) {
3986          if (slides[i] && !breakLoop) {
3987            slideSize += slides[i].swiperSlideSize;
3988            spv += 1;
3989            if (slideSize > swiperSize) { breakLoop = true; }
3990          }
3991        }
3992        for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) {
3993          if (slides[i$1] && !breakLoop) {
3994            slideSize += slides[i$1].swiperSlideSize;
3995            spv += 1;
3996            if (slideSize > swiperSize) { breakLoop = true; }
3997          }
3998        }
3999      } else {
4000        for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) {
4001          if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) {
4002            spv += 1;
4003          }
4004        }
4005      }
4006      return spv;
4007    };
4008
4009    Swiper.prototype.update = function update$$1 () {
4010      var swiper = this;
4011      if (!swiper || swiper.destroyed) { return; }
4012      var snapGrid = swiper.snapGrid;
4013      var params = swiper.params;
4014      // Breakpoints
4015      if (params.breakpoints) {
4016        swiper.setBreakpoint();
4017      }
4018      swiper.updateSize();
4019      swiper.updateSlides();
4020      swiper.updateProgress();
4021      swiper.updateSlidesClasses();
4022
4023      function setTranslate() {
4024        var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
4025        var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
4026        swiper.setTranslate(newTranslate);
4027        swiper.updateActiveIndex();
4028        swiper.updateSlidesClasses();
4029      }
4030      var translated;
4031      if (swiper.params.freeMode) {
4032        setTranslate();
4033        if (swiper.params.autoHeight) {
4034          swiper.updateAutoHeight();
4035        }
4036      } else {
4037        if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
4038          translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
4039        } else {
4040          translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
4041        }
4042        if (!translated) {
4043          setTranslate();
4044        }
4045      }
4046      if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
4047        swiper.checkOverflow();
4048      }
4049      swiper.emit('update');
4050    };
4051
4052    Swiper.prototype.init = function init () {
4053      var swiper = this;
4054      if (swiper.initialized) { return; }
4055
4056      swiper.emit('beforeInit');
4057
4058      // Set breakpoint
4059      if (swiper.params.breakpoints) {
4060        swiper.setBreakpoint();
4061      }
4062
4063      // Add Classes
4064      swiper.addClasses();
4065
4066      // Create loop
4067      if (swiper.params.loop) {
4068        swiper.loopCreate();
4069      }
4070
4071      // Update size
4072      swiper.updateSize();
4073
4074      // Update slides
4075      swiper.updateSlides();
4076
4077      if (swiper.params.watchOverflow) {
4078        swiper.checkOverflow();
4079      }
4080
4081      // Set Grab Cursor
4082      if (swiper.params.grabCursor) {
4083        swiper.setGrabCursor();
4084      }
4085
4086      if (swiper.params.preloadImages) {
4087        swiper.preloadImages();
4088      }
4089
4090      // Slide To Initial Slide
4091      if (swiper.params.loop) {
4092        swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
4093      } else {
4094        swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
4095      }
4096
4097      // Attach events
4098      swiper.attachEvents();
4099
4100      // Init Flag
4101      swiper.initialized = true;
4102
4103      // Emit
4104      swiper.emit('init');
4105    };
4106
4107    Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) {
4108      if ( deleteInstance === void 0 ) deleteInstance = true;
4109      if ( cleanStyles === void 0 ) cleanStyles = true;
4110
4111      var swiper = this;
4112      var params = swiper.params;
4113      var $el = swiper.$el;
4114      var $wrapperEl = swiper.$wrapperEl;
4115      var slides = swiper.slides;
4116
4117      if (typeof swiper.params === 'undefined' || swiper.destroyed) {
4118        return null;
4119      }
4120
4121      swiper.emit('beforeDestroy');
4122
4123      // Init Flag
4124      swiper.initialized = false;
4125
4126      // Detach events
4127      swiper.detachEvents();
4128
4129      // Destroy loop
4130      if (params.loop) {
4131        swiper.loopDestroy();
4132      }
4133
4134      // Cleanup styles
4135      if (cleanStyles) {
4136        swiper.removeClasses();
4137        $el.removeAttr('style');
4138        $wrapperEl.removeAttr('style');
4139        if (slides && slides.length) {
4140          slides
4141            .removeClass([
4142              params.slideVisibleClass,
4143              params.slideActiveClass,
4144              params.slideNextClass,
4145              params.slidePrevClass ].join(' '))
4146            .removeAttr('style')
4147            .removeAttr('data-swiper-slide-index')
4148            .removeAttr('data-swiper-column')
4149            .removeAttr('data-swiper-row');
4150        }
4151      }
4152
4153      swiper.emit('destroy');
4154
4155      // Detach emitter events
4156      Object.keys(swiper.eventsListeners).forEach(function (eventName) {
4157        swiper.off(eventName);
4158      });
4159
4160      if (deleteInstance !== false) {
4161        swiper.$el[0].swiper = null;
4162        swiper.$el.data('swiper', null);
4163        Utils.deleteProps(swiper);
4164      }
4165      swiper.destroyed = true;
4166
4167      return null;
4168    };
4169
4170    Swiper.extendDefaults = function extendDefaults (newDefaults) {
4171      Utils.extend(extendedDefaults, newDefaults);
4172    };
4173
4174    staticAccessors.extendedDefaults.get = function () {
4175      return extendedDefaults;
4176    };
4177
4178    staticAccessors.defaults.get = function () {
4179      return defaults;
4180    };
4181
4182    staticAccessors.Class.get = function () {
4183      return SwiperClass$$1;
4184    };
4185
4186    staticAccessors.$.get = function () {
4187      return $;
4188    };
4189
4190    Object.defineProperties( Swiper, staticAccessors );
4191
4192    return Swiper;
4193  }(SwiperClass));
4194
4195  var Device$1 = {
4196    name: 'device',
4197    proto: {
4198      device: Device,
4199    },
4200    static: {
4201      device: Device,
4202    },
4203  };
4204
4205  var Support$1 = {
4206    name: 'support',
4207    proto: {
4208      support: Support,
4209    },
4210    static: {
4211      support: Support,
4212    },
4213  };
4214
4215  var Browser$1 = {
4216    name: 'browser',
4217    proto: {
4218      browser: Browser,
4219    },
4220    static: {
4221      browser: Browser,
4222    },
4223  };
4224
4225  var Resize = {
4226    name: 'resize',
4227    create: function create() {
4228      var swiper = this;
4229      Utils.extend(swiper, {
4230        resize: {
4231          resizeHandler: function resizeHandler() {
4232            if (!swiper || swiper.destroyed || !swiper.initialized) { return; }
4233            swiper.emit('beforeResize');
4234            swiper.emit('resize');
4235          },
4236          orientationChangeHandler: function orientationChangeHandler() {
4237            if (!swiper || swiper.destroyed || !swiper.initialized) { return; }
4238            swiper.emit('orientationchange');
4239          },
4240        },
4241      });
4242    },
4243    on: {
4244      init: function init() {
4245        var swiper = this;
4246        // Emit resize
4247        win.addEventListener('resize', swiper.resize.resizeHandler);
4248
4249        // Emit orientationchange
4250        win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
4251      },
4252      destroy: function destroy() {
4253        var swiper = this;
4254        win.removeEventListener('resize', swiper.resize.resizeHandler);
4255        win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
4256      },
4257    },
4258  };
4259
4260  var Observer = {
4261    func: win.MutationObserver || win.WebkitMutationObserver,
4262    attach: function attach(target, options) {
4263      if ( options === void 0 ) options = {};
4264
4265      var swiper = this;
4266
4267      var ObserverFunc = Observer.func;
4268      var observer = new ObserverFunc(function (mutations) {
4269        // The observerUpdate event should only be triggered
4270        // once despite the number of mutations.  Additional
4271        // triggers are redundant and are very costly
4272        if (mutations.length === 1) {
4273          swiper.emit('observerUpdate', mutations[0]);
4274          return;
4275        }
4276        var observerUpdate = function observerUpdate() {
4277          swiper.emit('observerUpdate', mutations[0]);
4278        };
4279
4280        if (win.requestAnimationFrame) {
4281          win.requestAnimationFrame(observerUpdate);
4282        } else {
4283          win.setTimeout(observerUpdate, 0);
4284        }
4285      });
4286
4287      observer.observe(target, {
4288        attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
4289        childList: typeof options.childList === 'undefined' ? true : options.childList,
4290        characterData: typeof options.characterData === 'undefined' ? true : options.characterData,
4291      });
4292
4293      swiper.observer.observers.push(observer);
4294    },
4295    init: function init() {
4296      var swiper = this;
4297      if (!Support.observer || !swiper.params.observer) { return; }
4298      if (swiper.params.observeParents) {
4299        var containerParents = swiper.$el.parents();
4300        for (var i = 0; i < containerParents.length; i += 1) {
4301          swiper.observer.attach(containerParents[i]);
4302        }
4303      }
4304      // Observe container
4305      swiper.observer.attach(swiper.$el[0], { childList: false });
4306
4307      // Observe wrapper
4308      swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });
4309    },
4310    destroy: function destroy() {
4311      var swiper = this;
4312      swiper.observer.observers.forEach(function (observer) {
4313        observer.disconnect();
4314      });
4315      swiper.observer.observers = [];
4316    },
4317  };
4318
4319  var Observer$1 = {
4320    name: 'observer',
4321    params: {
4322      observer: false,
4323      observeParents: false,
4324    },
4325    create: function create() {
4326      var swiper = this;
4327      Utils.extend(swiper, {
4328        observer: {
4329          init: Observer.init.bind(swiper),
4330          attach: Observer.attach.bind(swiper),
4331          destroy: Observer.destroy.bind(swiper),
4332          observers: [],
4333        },
4334      });
4335    },
4336    on: {
4337      init: function init() {
4338        var swiper = this;
4339        swiper.observer.init();
4340      },
4341      destroy: function destroy() {
4342        var swiper = this;
4343        swiper.observer.destroy();
4344      },
4345    },
4346  };
4347
4348  var Virtual = {
4349    update: function update(force) {
4350      var swiper = this;
4351      var ref = swiper.params;
4352      var slidesPerView = ref.slidesPerView;
4353      var slidesPerGroup = ref.slidesPerGroup;
4354      var centeredSlides = ref.centeredSlides;
4355      var ref$1 = swiper.virtual;
4356      var previousFrom = ref$1.from;
4357      var previousTo = ref$1.to;
4358      var slides = ref$1.slides;
4359      var previousSlidesGrid = ref$1.slidesGrid;
4360      var renderSlide = ref$1.renderSlide;
4361      var previousOffset = ref$1.offset;
4362      swiper.updateActiveIndex();
4363      var activeIndex = swiper.activeIndex || 0;
4364
4365      var offsetProp;
4366      if (swiper.rtlTranslate) { offsetProp = 'right'; }
4367      else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; }
4368
4369      var slidesAfter;
4370      var slidesBefore;
4371      if (centeredSlides) {
4372        slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup;
4373        slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup;
4374      } else {
4375        slidesAfter = slidesPerView + (slidesPerGroup - 1);
4376        slidesBefore = slidesPerGroup;
4377      }
4378      var from = Math.max((activeIndex || 0) - slidesBefore, 0);
4379      var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
4380      var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
4381
4382      Utils.extend(swiper.virtual, {
4383        from: from,
4384        to: to,
4385        offset: offset,
4386        slidesGrid: swiper.slidesGrid,
4387      });
4388
4389      function onRendered() {
4390        swiper.updateSlides();
4391        swiper.updateProgress();
4392        swiper.updateSlidesClasses();
4393        if (swiper.lazy && swiper.params.lazy.enabled) {
4394          swiper.lazy.load();
4395        }
4396      }
4397
4398      if (previousFrom === from && previousTo === to && !force) {
4399        if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
4400          swiper.slides.css(offsetProp, (offset + "px"));
4401        }
4402        swiper.updateProgress();
4403        return;
4404      }
4405      if (swiper.params.virtual.renderExternal) {
4406        swiper.params.virtual.renderExternal.call(swiper, {
4407          offset: offset,
4408          from: from,
4409          to: to,
4410          slides: (function getSlides() {
4411            var slidesToRender = [];
4412            for (var i = from; i <= to; i += 1) {
4413              slidesToRender.push(slides[i]);
4414            }
4415            return slidesToRender;
4416          }()),
4417        });
4418        onRendered();
4419        return;
4420      }
4421      var prependIndexes = [];
4422      var appendIndexes = [];
4423      if (force) {
4424        swiper.$wrapperEl.find(("." + (swiper.params.slideClass))).remove();
4425      } else {
4426        for (var i = previousFrom; i <= previousTo; i += 1) {
4427          if (i < from || i > to) {
4428            swiper.$wrapperEl.find(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + i + "\"]")).remove();
4429          }
4430        }
4431      }
4432      for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {
4433        if (i$1 >= from && i$1 <= to) {
4434          if (typeof previousTo === 'undefined' || force) {
4435            appendIndexes.push(i$1);
4436          } else {
4437            if (i$1 > previousTo) { appendIndexes.push(i$1); }
4438            if (i$1 < previousFrom) { prependIndexes.push(i$1); }
4439          }
4440        }
4441      }
4442      appendIndexes.forEach(function (index) {
4443        swiper.$wrapperEl.append(renderSlide(slides[index], index));
4444      });
4445      prependIndexes.sort(function (a, b) { return a < b; }).forEach(function (index) {
4446        swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
4447      });
4448      swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + "px"));
4449      onRendered();
4450    },
4451    renderSlide: function renderSlide(slide, index) {
4452      var swiper = this;
4453      var params = swiper.params.virtual;
4454      if (params.cache && swiper.virtual.cache[index]) {
4455        return swiper.virtual.cache[index];
4456      }
4457      var $slideEl = params.renderSlide
4458        ? $(params.renderSlide.call(swiper, slide, index))
4459        : $(("<div class=\"" + (swiper.params.slideClass) + "\" data-swiper-slide-index=\"" + index + "\">" + slide + "</div>"));
4460      if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); }
4461      if (params.cache) { swiper.virtual.cache[index] = $slideEl; }
4462      return $slideEl;
4463    },
4464    appendSlide: function appendSlide(slide) {
4465      var swiper = this;
4466      swiper.virtual.slides.push(slide);
4467      swiper.virtual.update(true);
4468    },
4469    prependSlide: function prependSlide(slide) {
4470      var swiper = this;
4471      swiper.virtual.slides.unshift(slide);
4472      if (swiper.params.virtual.cache) {
4473        var cache = swiper.virtual.cache;
4474        var newCache = {};
4475        Object.keys(cache).forEach(function (cachedIndex) {
4476          newCache[cachedIndex + 1] = cache[cachedIndex];
4477        });
4478        swiper.virtual.cache = newCache;
4479      }
4480      swiper.virtual.update(true);
4481      swiper.slideNext(0);
4482    },
4483  };
4484
4485  var Virtual$1 = {
4486    name: 'virtual',
4487    params: {
4488      virtual: {
4489        enabled: false,
4490        slides: [],
4491        cache: true,
4492        renderSlide: null,
4493        renderExternal: null,
4494      },
4495    },
4496    create: function create() {
4497      var swiper = this;
4498      Utils.extend(swiper, {
4499        virtual: {
4500          update: Virtual.update.bind(swiper),
4501          appendSlide: Virtual.appendSlide.bind(swiper),
4502          prependSlide: Virtual.prependSlide.bind(swiper),
4503          renderSlide: Virtual.renderSlide.bind(swiper),
4504          slides: swiper.params.virtual.slides,
4505          cache: {},
4506        },
4507      });
4508    },
4509    on: {
4510      beforeInit: function beforeInit() {
4511        var swiper = this;
4512        if (!swiper.params.virtual.enabled) { return; }
4513        swiper.classNames.push(((swiper.params.containerModifierClass) + "virtual"));
4514        var overwriteParams = {
4515          watchSlidesProgress: true,
4516        };
4517        Utils.extend(swiper.params, overwriteParams);
4518        Utils.extend(swiper.originalParams, overwriteParams);
4519
4520        swiper.virtual.update();
4521      },
4522      setTranslate: function setTranslate() {
4523        var swiper = this;
4524        if (!swiper.params.virtual.enabled) { return; }
4525        swiper.virtual.update();
4526      },
4527    },
4528  };
4529
4530  var Keyboard = {
4531    handle: function handle(event) {
4532      var swiper = this;
4533      var rtl = swiper.rtlTranslate;
4534      var e = event;
4535      if (e.originalEvent) { e = e.originalEvent; } // jquery fix
4536      var kc = e.keyCode || e.charCode;
4537      // Directions locks
4538      if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40))) {
4539        return false;
4540      }
4541      if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38))) {
4542        return false;
4543      }
4544      if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
4545        return undefined;
4546      }
4547      if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) {
4548        return undefined;
4549      }
4550      if (swiper.params.keyboard.onlyInViewport && (kc === 37 || kc === 39 || kc === 38 || kc === 40)) {
4551        var inView = false;
4552        // Check that swiper should be inside of visible area of window
4553        if (swiper.$el.parents(("." + (swiper.params.slideClass))).length > 0 && swiper.$el.parents(("." + (swiper.params.slideActiveClass))).length === 0) {
4554          return undefined;
4555        }
4556        var windowWidth = win.innerWidth;
4557        var windowHeight = win.innerHeight;
4558        var swiperOffset = swiper.$el.offset();
4559        if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; }
4560        var swiperCoord = [
4561          [swiperOffset.left, swiperOffset.top],
4562          [swiperOffset.left + swiper.width, swiperOffset.top],
4563          [swiperOffset.left, swiperOffset.top + swiper.height],
4564          [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height] ];
4565        for (var i = 0; i < swiperCoord.length; i += 1) {
4566          var point = swiperCoord[i];
4567          if (
4568            point[0] >= 0 && point[0] <= windowWidth
4569            && point[1] >= 0 && point[1] <= windowHeight
4570          ) {
4571            inView = true;
4572          }
4573        }
4574        if (!inView) { return undefined; }
4575      }
4576      if (swiper.isHorizontal()) {
4577        if (kc === 37 || kc === 39) {
4578          if (e.preventDefault) { e.preventDefault(); }
4579          else { e.returnValue = false; }
4580        }
4581        if ((kc === 39 && !rtl) || (kc === 37 && rtl)) { swiper.slideNext(); }
4582        if ((kc === 37 && !rtl) || (kc === 39 && rtl)) { swiper.slidePrev(); }
4583      } else {
4584        if (kc === 38 || kc === 40) {
4585          if (e.preventDefault) { e.preventDefault(); }
4586          else { e.returnValue = false; }
4587        }
4588        if (kc === 40) { swiper.slideNext(); }
4589        if (
vendor: 10,116 bytes, lines 4589-4921
4589kc === 38) { swiper.slidePrev(); }
4590      }
4591      swiper.emit('keyPress', kc);
4592      return undefined;
4593    },
4594    enable: function enable() {
4595      var swiper = this;
4596      if (swiper.keyboard.enabled) { return; }
4597      $(doc).on('keydown', swiper.keyboard.handle);
4598      swiper.keyboard.enabled = true;
4599    },
4600    disable: function disable() {
4601      var swiper = this;
4602      if (!swiper.keyboard.enabled) { return; }
4603      $(doc).off('keydown', swiper.keyboard.handle);
4604      swiper.keyboard.enabled = false;
4605    },
4606  };
4607
4608  var Keyboard$1 = {
4609    name: 'keyboard',
4610    params: {
4611      keyboard: {
4612        enabled: false,
4613        onlyInViewport: true,
4614      },
4615    },
4616    create: function create() {
4617      var swiper = this;
4618      Utils.extend(swiper, {
4619        keyboard: {
4620          enabled: false,
4621          enable: Keyboard.enable.bind(swiper),
4622          disable: Keyboard.disable.bind(swiper),
4623          handle: Keyboard.handle.bind(swiper),
4624        },
4625      });
4626    },
4627    on: {
4628      init: function init() {
4629        var swiper = this;
4630        if (swiper.params.keyboard.enabled) {
4631          swiper.keyboard.enable();
4632        }
4633      },
4634      destroy: function destroy() {
4635        var swiper = this;
4636        if (swiper.keyboard.enabled) {
4637          swiper.keyboard.disable();
4638        }
4639      },
4640    },
4641  };
4642
4643  function isEventSupported() {
4644    var eventName = 'onwheel';
4645    var isSupported = eventName in doc;
4646
4647    if (!isSupported) {
4648      var element = doc.createElement('div');
4649      element.setAttribute(eventName, 'return;');
4650      isSupported = typeof element[eventName] === 'function';
4651    }
4652
4653    if (!isSupported
4654      && doc.implementation
4655      && doc.implementation.hasFeature
4656      // always returns true in newer browsers as per the standard.
4657      // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
4658      && doc.implementation.hasFeature('', '') !== true
4659    ) {
4660      // This is the only way to test support for the `wheel` event in IE9+.
4661      isSupported = doc.implementation.hasFeature('Events.wheel', '3.0');
4662    }
4663
4664    return isSupported;
4665  }
4666  var Mousewheel = {
4667    lastScrollTime: Utils.now(),
4668    event: (function getEvent() {
4669      if (win.navigator.userAgent.indexOf('firefox') > -1) { return 'DOMMouseScroll'; }
4670      return isEventSupported() ? 'wheel' : 'mousewheel';
4671    }()),
4672    normalize: function normalize(e) {
4673      // Reasonable defaults
4674      var PIXEL_STEP = 10;
4675      var LINE_HEIGHT = 40;
4676      var PAGE_HEIGHT = 800;
4677
4678      var sX = 0;
4679      var sY = 0; // spinX, spinY
4680      var pX = 0;
4681      var pY = 0; // pixelX, pixelY
4682
4683      // Legacy
4684      if ('detail' in e) {
4685        sY = e.detail;
4686      }
4687      if ('wheelDelta' in e) {
4688        sY = -e.wheelDelta / 120;
4689      }
4690      if ('wheelDeltaY' in e) {
4691        sY = -e.wheelDeltaY / 120;
4692      }
4693      if ('wheelDeltaX' in e) {
4694        sX = -e.wheelDeltaX / 120;
4695      }
4696
4697      // side scrolling on FF with DOMMouseScroll
4698      if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
4699        sX = sY;
4700        sY = 0;
4701      }
4702
4703      pX = sX * PIXEL_STEP;
4704      pY = sY * PIXEL_STEP;
4705
4706      if ('deltaY' in e) {
4707        pY = e.deltaY;
4708      }
4709      if ('deltaX' in e) {
4710        pX = e.deltaX;
4711      }
4712
4713      if ((pX || pY) && e.deltaMode) {
4714        if (e.deltaMode === 1) { // delta in LINE units
4715          pX *= LINE_HEIGHT;
4716          pY *= LINE_HEIGHT;
4717        } else { // delta in PAGE units
4718          pX *= PAGE_HEIGHT;
4719          pY *= PAGE_HEIGHT;
4720        }
4721      }
4722
4723      // Fall-back if spin cannot be determined
4724      if (pX && !sX) {
4725        sX = (pX < 1) ? -1 : 1;
4726      }
4727      if (pY && !sY) {
4728        sY = (pY < 1) ? -1 : 1;
4729      }
4730
4731      return {
4732        spinX: sX,
4733        spinY: sY,
4734        pixelX: pX,
4735        pixelY: pY,
4736      };
4737    },
4738    handleMouseEnter: function handleMouseEnter() {
4739      var swiper = this;
4740      swiper.mouseEntered = true;
4741    },
4742    handleMouseLeave: function handleMouseLeave() {
4743      var swiper = this;
4744      swiper.mouseEntered = false;
4745    },
4746    handle: function handle(event) {
4747      var e = event;
4748      var swiper = this;
4749      var params = swiper.params.mousewheel;
4750
4751      if (!swiper.mouseEntered && !params.releaseOnEdges) { return true; }
4752
4753      if (e.originalEvent) { e = e.originalEvent; } // jquery fix
4754      var delta = 0;
4755      var rtlFactor = swiper.rtlTranslate ? -1 : 1;
4756
4757      var data = Mousewheel.normalize(e);
4758
4759      if (params.forceToAxis) {
4760        if (swiper.isHorizontal()) {
4761          if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) { delta = data.pixelX * rtlFactor; }
4762          else { return true; }
4763        } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) { delta = data.pixelY; }
4764        else { return true; }
4765      } else {
4766        delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
4767      }
4768
4769      if (delta === 0) { return true; }
4770
4771      if (params.invert) { delta = -delta; }
4772
4773      if (!swiper.params.freeMode) {
4774        if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {
4775          if (delta < 0) {
4776            if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
4777              swiper.slideNext();
4778              swiper.emit('scroll', e);
4779            } else if (params.releaseOnEdges) { return true; }
4780          } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
4781            swiper.slidePrev();
4782            swiper.emit('scroll', e);
4783          } else if (params.releaseOnEdges) { return true; }
4784        }
4785        swiper.mousewheel.lastScrollTime = (new win.Date()).getTime();
4786      } else {
4787        // Freemode or scrollContainer:
4788        if (swiper.params.loop) {
4789          swiper.loopFix();
4790        }
4791        var position = swiper.getTranslate() + (delta * params.sensitivity);
4792        var wasBeginning = swiper.isBeginning;
4793        var wasEnd = swiper.isEnd;
4794
4795        if (position >= swiper.minTranslate()) { position = swiper.minTranslate(); }
4796        if (position <= swiper.maxTranslate()) { position = swiper.maxTranslate(); }
4797
4798        swiper.setTransition(0);
4799        swiper.setTranslate(position);
4800        swiper.updateProgress();
4801        swiper.updateActiveIndex();
4802        swiper.updateSlidesClasses();
4803
4804        if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {
4805          swiper.updateSlidesClasses();
4806        }
4807
4808        if (swiper.params.freeModeSticky) {
4809          clearTimeout(swiper.mousewheel.timeout);
4810          swiper.mousewheel.timeout = Utils.nextTick(function () {
4811            swiper.slideToClosest();
4812          }, 300);
4813        }
4814        // Emit event
4815        swiper.emit('scroll', e);
4816
4817        // Stop autoplay
4818        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) { swiper.autoplay.stop(); }
4819        // Return page scroll on edge positions
4820        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) { return true; }
4821      }
4822
4823      if (e.preventDefault) { e.preventDefault(); }
4824      else { e.returnValue = false; }
4825      return false;
4826    },
4827    enable: function enable() {
4828      var swiper = this;
4829      if (!Mousewheel.event) { return false; }
4830      if (swiper.mousewheel.enabled) { return false; }
4831      var target = swiper.$el;
4832      if (swiper.params.mousewheel.eventsTarged !== 'container') {
4833        target = $(swiper.params.mousewheel.eventsTarged);
4834      }
4835      target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
4836      target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
4837      target.on(Mousewheel.event, swiper.mousewheel.handle);
4838      swiper.mousewheel.enabled = true;
4839      return true;
4840    },
4841    disable: function disable() {
4842      var swiper = this;
4843      if (!Mousewheel.event) { return false; }
4844      if (!swiper.mousewheel.enabled) { return false; }
4845      var target = swiper.$el;
4846      if (swiper.params.mousewheel.eventsTarged !== 'container') {
4847        target = $(swiper.params.mousewheel.eventsTarged);
4848      }
4849      target.off(Mousewheel.event, swiper.mousewheel.handle);
4850      swiper.mousewheel.enabled = false;
4851      return true;
4852    },
4853  };
4854
4855  var Mousewheel$1 = {
4856    name: 'mousewheel',
4857    params: {
4858      mousewheel: {
4859        enabled: false,
4860        releaseOnEdges: false,
4861        invert: false,
4862        forceToAxis: false,
4863        sensitivity: 1,
4864        eventsTarged: 'container',
4865      },
4866    },
4867    create: function create() {
4868      var swiper = this;
4869      Utils.extend(swiper, {
4870        mousewheel: {
4871          enabled: false,
4872          enable: Mousewheel.enable.bind(swiper),
4873          disable: Mousewheel.disable.bind(swiper),
4874          handle: Mousewheel.handle.bind(swiper),
4875          handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),
4876          handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),
4877          lastScrollTime: Utils.now(),
4878        },
4879      });
4880    },
4881    on: {
4882      init: function init() {
4883        var swiper = this;
4884        if (swiper.params.mousewheel.enabled) { swiper.mousewheel.enable(); }
4885      },
4886      destroy: function destroy() {
4887        var swiper = this;
4888        if (swiper.mousewheel.enabled) { swiper.mousewheel.disable(); }
4889      },
4890    },
4891  };
4892
4893  var Navigation = {
4894    update: function update() {
4895      // Update Navigation Buttons
4896      var swiper = this;
4897      var params = swiper.params.navigation;
4898
4899      if (swiper.params.loop) { return; }
4900      var ref = swiper.navigation;
4901      var $nextEl = ref.$nextEl;
4902      var $prevEl = ref.$prevEl;
4903
4904      if ($prevEl && $prevEl.length > 0) {
4905        if (swiper.isBeginning) {
4906          $prevEl.addClass(params.disabledClass);
4907        } else {
4908          $prevEl.removeClass(params.disabledClass);
4909        }
4910        $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
4911      }
4912      if ($nextEl && $nextEl.length > 0) {
4913        if (swiper.isEnd) {
4914          $nextEl.addClass(params.disabledClass);
4915        } else {
4916          $nextEl.removeClass(params.disabledClass);
4917        }
4918        $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
4919      }
4920    },
4921    
vendor: 2,579 bytes, lines 4921-5012
4921init: function init() {
4922      var swiper = this;
4923      var params = swiper.params.navigation;
4924      if (!(params.nextEl || params.prevEl)) { return; }
4925
4926      var $nextEl;
4927      var $prevEl;
4928      if (params.nextEl) {
4929        $nextEl = $(params.nextEl);
4930        if (
4931          swiper.params.uniqueNavElements
4932          && typeof params.nextEl === 'string'
4933          && $nextEl.length > 1
4934          && swiper.$el.find(params.nextEl).length === 1
4935        ) {
4936          $nextEl = swiper.$el.find(params.nextEl);
4937        }
4938      }
4939      if (params.prevEl) {
4940        $prevEl = $(params.prevEl);
4941        if (
4942          swiper.params.uniqueNavElements
4943          && typeof params.prevEl === 'string'
4944          && $prevEl.length > 1
4945          && swiper.$el.find(params.prevEl).length === 1
4946        ) {
4947          $prevEl = swiper.$el.find(params.prevEl);
4948        }
4949      }
4950
4951      if ($nextEl && $nextEl.length > 0) {
4952        $nextEl.on('click', function (e) {
4953          e.preventDefault();
4954          if (swiper.isEnd && !swiper.params.loop) { return; }
4955          swiper.slideNext();
4956        });
4957      }
4958      if ($prevEl && $prevEl.length > 0) {
4959        $prevEl.on('click', function (e) {
4960          e.preventDefault();
4961          if (swiper.isBeginning && !swiper.params.loop) { return; }
4962          swiper.slidePrev();
4963        });
4964      }
4965
4966      Utils.extend(swiper.navigation, {
4967        $nextEl: $nextEl,
4968        nextEl: $nextEl && $nextEl[0],
4969        $prevEl: $prevEl,
4970        prevEl: $prevEl && $prevEl[0],
4971      });
4972    },
4973    destroy: function destroy() {
4974      var swiper = this;
4975      var ref = swiper.navigation;
4976      var $nextEl = ref.$nextEl;
4977      var $prevEl = ref.$prevEl;
4978      if ($nextEl && $nextEl.length) {
4979        $nextEl.off('click');
4980        $nextEl.removeClass(swiper.params.navigation.disabledClass);
4981      }
4982      if ($prevEl && $prevEl.length) {
4983        $prevEl.off('click');
4984        $prevEl.removeClass(swiper.params.navigation.disabledClass);
4985      }
4986    },
4987  };
4988
4989  var Navigation$1 = {
4990    name: 'navigation',
4991    params: {
4992      navigation: {
4993        nextEl: null,
4994        prevEl: null,
4995
4996        hideOnClick: false,
4997        disabledClass: 'swiper-button-disabled',
4998        hiddenClass: 'swiper-button-hidden',
4999        lockClass: 'swiper-button-lock',
5000      },
5001    },
5002    create: function create() {
5003      var swiper = this;
5004      Utils.extend(swiper, {
5005        navigation: {
5006          init: Navigation.init.bind(swiper),
5007          update: Navigation.update.bind(swiper),
5008          destroy: Navigation.destroy.bind(swiper),
5009        },
5010      });
5011    },
5012    on: {
5013      init: function init() {
5014        var swiper = this;
5015        swiper.navigation.init();
5016        swiper.navigation.update();
5017      },
5018      toEdge: function toEdge() {
5019        var swiper = this;
5020        swiper.navigation.update();
5021      },
5022      fromEdge: function fromEdge() {
5023        var swiper = this;
5024        swiper.navigation.update();
5025      },
5026      destroy: function destroy() {
5027        var swiper = this;
5028        swiper.navigation.destroy();
5029      },
5030      click: function click(e) {
5031        var swiper = this;
5032        var ref = swiper.navigation;
5033        var $nextEl = ref.$nextEl;
5034        var $prevEl = ref.$prevEl;
5035        if (
5036          swiper.params.navigation.hideOnClick
5037          && !$(e.target).is($prevEl)
5038          && !$(e.target).is($nextEl)
5039        ) {
5040          if ($nextEl) { $nextEl.toggleClass(swiper.params.navigation.hiddenClass); }
5041          if ($prevEl) { $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
vendor: 13,669 bytes, lines 5041-5372
5041 }
5042        }
5043      },
5044    },
5045  };
5046
5047  var Pagination = {
5048    update: function update() {
5049      // Render || Update Pagination bullets/items
5050      var swiper = this;
5051      var rtl = swiper.rtl;
5052      var params = swiper.params.pagination;
5053      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
5054      var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
5055      var $el = swiper.pagination.$el;
5056      // Current/Total
5057      var current;
5058      var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
5059      if (swiper.params.loop) {
5060        current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
5061        if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {
5062          current -= (slidesLength - (swiper.loopedSlides * 2));
5063        }
5064        if (current > total - 1) { current -= total; }
5065        if (current < 0 && swiper.params.paginationType !== 'bullets') { current = total + current; }
5066      } else if (typeof swiper.snapIndex !== 'undefined') {
5067        current = swiper.snapIndex;
5068      } else {
5069        current = swiper.activeIndex || 0;
5070      }
5071      // Types
5072      if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
5073        var bullets = swiper.pagination.bullets;
5074        var firstIndex;
5075        var lastIndex;
5076        var midIndex;
5077        if (params.dynamicBullets) {
5078          swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
5079          $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + "px"));
5080          if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
5081            swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);
5082            if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {
5083              swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
5084            } else if (swiper.pagination.dynamicBulletIndex < 0) {
5085              swiper.pagination.dynamicBulletIndex = 0;
5086            }
5087          }
5088          firstIndex = current - swiper.pagination.dynamicBulletIndex;
5089          lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
5090          midIndex = (lastIndex + firstIndex) / 2;
5091        }
5092        bullets.removeClass(((params.bulletActiveClass) + " " + (params.bulletActiveClass) + "-next " + (params.bulletActiveClass) + "-next-next " + (params.bulletActiveClass) + "-prev " + (params.bulletActiveClass) + "-prev-prev " + (params.bulletActiveClass) + "-main"));
5093        if ($el.length > 1) {
5094          bullets.each(function (index, bullet) {
5095            var $bullet = $(bullet);
5096            var bulletIndex = $bullet.index();
5097            if (bulletIndex === current) {
5098              $bullet.addClass(params.bulletActiveClass);
5099            }
5100            if (params.dynamicBullets) {
5101              if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
5102                $bullet.addClass(((params.bulletActiveClass) + "-main"));
5103              }
5104              if (bulletIndex === firstIndex) {
5105                $bullet
5106                  .prev()
5107                  .addClass(((params.bulletActiveClass) + "-prev"))
5108                  .prev()
5109                  .addClass(((params.bulletActiveClass) + "-prev-prev"));
5110              }
5111              if (bulletIndex === lastIndex) {
5112                $bullet
5113                  .next()
5114                  .addClass(((params.bulletActiveClass) + "-next"))
5115                  .next()
5116                  .addClass(((params.bulletActiveClass) + "-next-next"));
5117              }
5118            }
5119          });
5120        } else {
5121          var $bullet = bullets.eq(current);
5122          $bullet.addClass(params.bulletActiveClass);
5123          if (params.dynamicBullets) {
5124            var $firstDisplayedBullet = bullets.eq(firstIndex);
5125            var $lastDisplayedBullet = bullets.eq(lastIndex);
5126            for (var i = firstIndex; i <= lastIndex; i += 1) {
5127              bullets.eq(i).addClass(((params.bulletActiveClass) + "-main"));
5128            }
5129            $firstDisplayedBullet
5130              .prev()
5131              .addClass(((params.bulletActiveClass) + "-prev"))
5132              .prev()
5133              .addClass(((params.bulletActiveClass) + "-prev-prev"));
5134            $lastDisplayedBullet
5135              .next()
5136              .addClass(((params.bulletActiveClass) + "-next"))
5137              .next()
5138              .addClass(((params.bulletActiveClass) + "-next-next"));
5139          }
5140        }
5141        if (params.dynamicBullets) {
5142          var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
5143          var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);
5144          var offsetProp = rtl ? 'right' : 'left';
5145          bullets.css(swiper.isHorizontal() ? offsetProp : 'top', (bulletsOffset + "px"));
5146        }
5147      }
5148      if (params.type === 'fraction') {
5149        $el.find(("." + (params.currentClass))).text(params.formatFractionCurrent(current + 1));
5150        $el.find(("." + (params.totalClass))).text(params.formatFractionTotal(total));
5151      }
5152      if (params.type === 'progressbar') {
5153        var progressbarDirection;
5154        if (params.progressbarOpposite) {
5155          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
5156        } else {
5157          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
5158        }
5159        var scale = (current + 1) / total;
5160        var scaleX = 1;
5161        var scaleY = 1;
5162        if (progressbarDirection === 'horizontal') {
5163          scaleX = scale;
5164        } else {
5165          scaleY = scale;
5166        }
5167        $el.find(("." + (params.progressbarFillClass))).transform(("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")")).transition(swiper.params.speed);
5168      }
5169      if (params.type === 'custom' && params.renderCustom) {
5170        $el.html(params.renderCustom(swiper, current + 1, total));
5171        swiper.emit('paginationRender', swiper, $el[0]);
5172      } else {
5173        swiper.emit('paginationUpdate', swiper, $el[0]);
5174      }
5175      $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
5176    },
5177    render: function render() {
5178      // Render Container
5179      var swiper = this;
5180      var params = swiper.params.pagination;
5181      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
5182      var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
5183
5184      var $el = swiper.pagination.$el;
5185      var paginationHTML = '';
5186      if (params.type === 'bullets') {
5187        var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
5188        for (var i = 0; i < numberOfBullets; i += 1) {
5189          if (params.renderBullet) {
5190            paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
5191          } else {
5192            paginationHTML += "<" + (params.bulletElement) + " class=\"" + (params.bulletClass) + "\"></" + (params.bulletElement) + ">";
5193          }
5194        }
5195        $el.html(paginationHTML);
5196        swiper.pagination.bullets = $el.find(("." + (params.bulletClass)));
5197      }
5198      if (params.type === 'fraction') {
5199        if (params.renderFraction) {
5200          paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
5201        } else {
5202          paginationHTML = "<span class=\"" + (params.currentClass) + "\"></span>"
5203          + ' / '
5204          + "<span class=\"" + (params.totalClass) + "\"></span>";
5205        }
5206        $el.html(paginationHTML);
5207      }
5208      if (params.type === 'progressbar') {
5209        if (params.renderProgressbar) {
5210          paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
5211        } else {
5212          paginationHTML = "<span class=\"" + (params.progressbarFillClass) + "\"></span>";
5213        }
5214        $el.html(paginationHTML);
5215      }
5216      if (params.type !== 'custom') {
5217        swiper.emit('paginationRender', swiper.pagination.$el[0]);
5218      }
5219    },
5220    init: function init() {
5221      var swiper = this;
5222      var params = swiper.params.pagination;
5223      if (!params.el) { return; }
5224
5225      var $el = $(params.el);
5226      if ($el.length === 0) { return; }
5227
5228      if (
5229        swiper.params.uniqueNavElements
5230        && typeof params.el === 'string'
5231        && $el.length > 1
5232        && swiper.$el.find(params.el).length === 1
5233      ) {
5234        $el = swiper.$el.find(params.el);
5235      }
5236
5237      if (params.type === 'bullets' && params.clickable) {
5238        $el.addClass(params.clickableClass);
5239      }
5240
5241      $el.addClass(params.modifierClass + params.type);
5242
5243      if (params.type === 'bullets' && params.dynamicBullets) {
5244        $el.addClass(("" + (params.modifierClass) + (params.type) + "-dynamic"));
5245        swiper.pagination.dynamicBulletIndex = 0;
5246        if (params.dynamicMainBullets < 1) {
5247          params.dynamicMainBullets = 1;
5248        }
5249      }
5250      if (params.type === 'progressbar' && params.progressbarOpposite) {
5251        $el.addClass(params.progressbarOppositeClass);
5252      }
5253
5254      if (params.clickable) {
5255        $el.on('click', ("." + (params.bulletClass)), function onClick(e) {
5256          e.preventDefault();
5257          var index = $(this).index() * swiper.params.slidesPerGroup;
5258          if (swiper.params.loop) { index += swiper.loopedSlides; }
5259          swiper.slideTo(index);
5260        });
5261      }
5262
5263      Utils.extend(swiper.pagination, {
5264        $el: $el,
5265        el: $el[0],
5266      });
5267    },
5268    destroy: function destroy() {
5269      var swiper = this;
5270      var params = swiper.params.pagination;
5271      if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
5272      var $el = swiper.pagination.$el;
5273
5274      $el.removeClass(params.hiddenClass);
5275      $el.removeClass(params.modifierClass + params.type);
5276      if (swiper.pagination.bullets) { swiper.pagination.bullets.removeClass(params.bulletActiveClass); }
5277      if (params.clickable) {
5278        $el.off('click', ("." + (params.bulletClass)));
5279      }
5280    },
5281  };
5282
5283  var Pagination$1 = {
5284    name: 'pagination',
5285    params: {
5286      pagination: {
5287        el: null,
5288        bulletElement: 'span',
5289        clickable: false,
5290        hideOnClick: false,
5291        renderBullet: null,
5292        renderProgressbar: null,
5293        renderFraction: null,
5294        renderCustom: null,
5295        progressbarOpposite: false,
5296        type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'
5297        dynamicBullets: false,
5298        dynamicMainBullets: 1,
5299        formatFractionCurrent: function (number) { return number; },
5300        formatFractionTotal: function (number) { return number; },
5301        bulletClass: 'swiper-pagination-bullet',
5302        bulletActiveClass: 'swiper-pagination-bullet-active',
5303        modifierClass: 'swiper-pagination-', // NEW
5304        currentClass: 'swiper-pagination-current',
5305        totalClass: 'swiper-pagination-total',
5306        hiddenClass: 'swiper-pagination-hidden',
5307        progressbarFillClass: 'swiper-pagination-progressbar-fill',
5308        progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
5309        clickableClass: 'swiper-pagination-clickable', // NEW
5310        lockClass: 'swiper-pagination-lock',
5311      },
5312    },
5313    create: function create() {
5314      var swiper = this;
5315      Utils.extend(swiper, {
5316        pagination: {
5317          init: Pagination.init.bind(swiper),
5318          render: Pagination.render.bind(swiper),
5319          update: Pagination.update.bind(swiper),
5320          destroy: Pagination.destroy.bind(swiper),
5321          dynamicBulletIndex: 0,
5322        },
5323      });
5324    },
5325    on: {
5326      init: function init() {
5327        var swiper = this;
5328        swiper.pagination.init();
5329        swiper.pagination.render();
5330        swiper.pagination.update();
5331      },
5332      activeIndexChange: function activeIndexChange() {
5333        var swiper = this;
5334        if (swiper.params.loop) {
5335          swiper.pagination.update();
5336        } else if (typeof swiper.snapIndex === 'undefined') {
5337          swiper.pagination.update();
5338        }
5339      },
5340      snapIndexChange: function snapIndexChange() {
5341        var swiper = this;
5342        if (!swiper.params.loop) {
5343          swiper.pagination.update();
5344        }
5345      },
5346      slidesLengthChange: function slidesLengthChange() {
5347        var swiper = this;
5348        if (swiper.params.loop) {
5349          swiper.pagination.render();
5350          swiper.pagination.update();
5351        }
5352      },
5353      snapGridLengthChange: function snapGridLengthChange() {
5354        var swiper = this;
5355        if (!swiper.params.loop) {
5356          swiper.pagination.render();
5357          swiper.pagination.update();
5358        }
5359      },
5360      destroy: function destroy() {
5361        var swiper = this;
5362        swiper.pagination.destroy();
5363      },
5364      click: function click(e) {
5365        var swiper = this;
5366        if (
5367          swiper.params.pagination.el
5368          && swiper.params.pagination.hideOnClick
5369          && swiper.pagination.$el.length > 0
5370          && !$(e.target).hasClass(swiper.params.pagination.bulletClass)
5371        ) {
5372          
vendor: 36,542 bytes, lines 5372-6324
5372swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
5373        }
5374      },
5375    },
5376  };
5377
5378  var Scrollbar = {
5379    setTranslate: function setTranslate() {
5380      var swiper = this;
5381      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
5382      var scrollbar = swiper.scrollbar;
5383      var rtl = swiper.rtlTranslate;
5384      var progress = swiper.progress;
5385      var dragSize = scrollbar.dragSize;
5386      var trackSize = scrollbar.trackSize;
5387      var $dragEl = scrollbar.$dragEl;
5388      var $el = scrollbar.$el;
5389      var params = swiper.params.scrollbar;
5390
5391      var newSize = dragSize;
5392      var newPos = (trackSize - dragSize) * progress;
5393      if (rtl) {
5394        newPos = -newPos;
5395        if (newPos > 0) {
5396          newSize = dragSize - newPos;
5397          newPos = 0;
5398        } else if (-newPos + dragSize > trackSize) {
5399          newSize = trackSize + newPos;
5400        }
5401      } else if (newPos < 0) {
5402        newSize = dragSize + newPos;
5403        newPos = 0;
5404      } else if (newPos + dragSize > trackSize) {
5405        newSize = trackSize - newPos;
5406      }
5407      if (swiper.isHorizontal()) {
5408        if (Support.transforms3d) {
5409          $dragEl.transform(("translate3d(" + newPos + "px, 0, 0)"));
5410        } else {
5411          $dragEl.transform(("translateX(" + newPos + "px)"));
5412        }
5413        $dragEl[0].style.width = newSize + "px";
5414      } else {
5415        if (Support.transforms3d) {
5416          $dragEl.transform(("translate3d(0px, " + newPos + "px, 0)"));
5417        } else {
5418          $dragEl.transform(("translateY(" + newPos + "px)"));
5419        }
5420        $dragEl[0].style.height = newSize + "px";
5421      }
5422      if (params.hide) {
5423        clearTimeout(swiper.scrollbar.timeout);
5424        $el[0].style.opacity = 1;
5425        swiper.scrollbar.timeout = setTimeout(function () {
5426          $el[0].style.opacity = 0;
5427          $el.transition(400);
5428        }, 1000);
5429      }
5430    },
5431    setTransition: function setTransition(duration) {
5432      var swiper = this;
5433      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
5434      swiper.scrollbar.$dragEl.transition(duration);
5435    },
5436    updateSize: function updateSize() {
5437      var swiper = this;
5438      if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
5439
5440      var scrollbar = swiper.scrollbar;
5441      var $dragEl = scrollbar.$dragEl;
5442      var $el = scrollbar.$el;
5443
5444      $dragEl[0].style.width = '';
5445      $dragEl[0].style.height = '';
5446      var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
5447
5448      var divider = swiper.size / swiper.virtualSize;
5449      var moveDivider = divider * (trackSize / swiper.size);
5450      var dragSize;
5451      if (swiper.params.scrollbar.dragSize === 'auto') {
5452        dragSize = trackSize * divider;
5453      } else {
5454        dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
5455      }
5456
5457      if (swiper.isHorizontal()) {
5458        $dragEl[0].style.width = dragSize + "px";
5459      } else {
5460        $dragEl[0].style.height = dragSize + "px";
5461      }
5462
5463      if (divider >= 1) {
5464        $el[0].style.display = 'none';
5465      } else {
5466        $el[0].style.display = '';
5467      }
5468      if (swiper.params.scrollbarHide) {
5469        $el[0].style.opacity = 0;
5470      }
5471      Utils.extend(scrollbar, {
5472        trackSize: trackSize,
5473        divider: divider,
5474        moveDivider: moveDivider,
5475        dragSize: dragSize,
5476      });
5477      scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
5478    },
5479    setDragPosition: function setDragPosition(e) {
5480      var swiper = this;
5481      var scrollbar = swiper.scrollbar;
5482      var rtl = swiper.rtlTranslate;
5483      var $el = scrollbar.$el;
5484      var dragSize = scrollbar.dragSize;
5485      var trackSize = scrollbar.trackSize;
5486
5487      var pointerPosition;
5488      if (swiper.isHorizontal()) {
5489        pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);
5490      } else {
5491        pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);
5492      }
5493      var positionRatio;
5494      positionRatio = ((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragSize / 2)) / (trackSize - dragSize);
5495      positionRatio = Math.max(Math.min(positionRatio, 1), 0);
5496      if (rtl) {
5497        positionRatio = 1 - positionRatio;
5498      }
5499
5500      var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);
5501
5502      swiper.updateProgress(position);
5503      swiper.setTranslate(position);
5504      swiper.updateActiveIndex();
5505      swiper.updateSlidesClasses();
5506    },
5507    onDragStart: function onDragStart(e) {
5508      var swiper = this;
5509      var params = swiper.params.scrollbar;
5510      var scrollbar = swiper.scrollbar;
5511      var $wrapperEl = swiper.$wrapperEl;
5512      var $el = scrollbar.$el;
5513      var $dragEl = scrollbar.$dragEl;
5514      swiper.scrollbar.isTouched = true;
5515      e.preventDefault();
5516      e.stopPropagation();
5517
5518      $wrapperEl.transition(100);
5519      $dragEl.transition(100);
5520      scrollbar.setDragPosition(e);
5521
5522      clearTimeout(swiper.scrollbar.dragTimeout);
5523
5524      $el.transition(0);
5525      if (params.hide) {
5526        $el.css('opacity', 1);
5527      }
5528      swiper.emit('scrollbarDragStart', e);
5529    },
5530    onDragMove: function onDragMove(e) {
5531      var swiper = this;
5532      var scrollbar = swiper.scrollbar;
5533      var $wrapperEl = swiper.$wrapperEl;
5534      var $el = scrollbar.$el;
5535      var $dragEl = scrollbar.$dragEl;
5536
5537      if (!swiper.scrollbar.isTouched) { return; }
5538      if (e.preventDefault) { e.preventDefault(); }
5539      else { e.returnValue = false; }
5540      scrollbar.setDragPosition(e);
5541      $wrapperEl.transition(0);
5542      $el.transition(0);
5543      $dragEl.transition(0);
5544      swiper.emit('scrollbarDragMove', e);
5545    },
5546    onDragEnd: function onDragEnd(e) {
5547      var swiper = this;
5548
5549      var params = swiper.params.scrollbar;
5550      var scrollbar = swiper.scrollbar;
5551      var $el = scrollbar.$el;
5552
5553      if (!swiper.scrollbar.isTouched) { return; }
5554      swiper.scrollbar.isTouched = false;
5555      if (params.hide) {
5556        clearTimeout(swiper.scrollbar.dragTimeout);
5557        swiper.scrollbar.dragTimeout = Utils.nextTick(function () {
5558          $el.css('opacity', 0);
5559          $el.transition(400);
5560        }, 1000);
5561      }
5562      swiper.emit('scrollbarDragEnd', e);
5563      if (params.snapOnRelease) {
5564        swiper.slideToClosest();
5565      }
5566    },
5567    enableDraggable: function enableDraggable() {
5568      var swiper = this;
5569      if (!swiper.params.scrollbar.el) { return; }
5570      var scrollbar = swiper.scrollbar;
5571      var touchEvents = swiper.touchEvents;
5572      var touchEventsDesktop = swiper.touchEventsDesktop;
5573      var params = swiper.params;
5574      var $el = scrollbar.$el;
5575      var target = $el[0];
5576      var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
5577      var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
5578      if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {
5579        target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
5580        doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
5581        doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
5582      } else {
5583        if (Support.touch) {
5584          target.addEventListener(touchEvents.start, swiper.scrollbar.onDragStart, activeListener);
5585          target.addEventListener(touchEvents.move, swiper.scrollbar.onDragMove, activeListener);
5586          target.addEventListener(touchEvents.end, swiper.scrollbar.onDragEnd, passiveListener);
5587        }
5588        if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
5589          target.addEventListener('mousedown', swiper.scrollbar.onDragStart, activeListener);
5590          doc.addEventListener('mousemove', swiper.scrollbar.onDragMove, activeListener);
5591          doc.addEventListener('mouseup', swiper.scrollbar.onDragEnd, passiveListener);
5592        }
5593      }
5594    },
5595    disableDraggable: function disableDraggable() {
5596      var swiper = this;
5597      if (!swiper.params.scrollbar.el) { return; }
5598      var scrollbar = swiper.scrollbar;
5599      var touchEvents = swiper.touchEvents;
5600      var touchEventsDesktop = swiper.touchEventsDesktop;
5601      var params = swiper.params;
5602      var $el = scrollbar.$el;
5603      var target = $el[0];
5604      var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
5605      var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
5606      if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {
5607        target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
5608        doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
5609        doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
5610      } else {
5611        if (Support.touch) {
5612          target.removeEventListener(touchEvents.start, swiper.scrollbar.onDragStart, activeListener);
5613          target.removeEventListener(touchEvents.move, swiper.scrollbar.onDragMove, activeListener);
5614          target.removeEventListener(touchEvents.end, swiper.scrollbar.onDragEnd, passiveListener);
5615        }
5616        if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
5617          target.removeEventListener('mousedown', swiper.scrollbar.onDragStart, activeListener);
5618          doc.removeEventListener('mousemove', swiper.scrollbar.onDragMove, activeListener);
5619          doc.removeEventListener('mouseup', swiper.scrollbar.onDragEnd, passiveListener);
5620        }
5621      }
5622    },
5623    init: function init() {
5624      var swiper = this;
5625      if (!swiper.params.scrollbar.el) { return; }
5626      var scrollbar = swiper.scrollbar;
5627      var $swiperEl = swiper.$el;
5628      var params = swiper.params.scrollbar;
5629
5630      var $el = $(params.el);
5631      if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
5632        $el = $swiperEl.find(params.el);
5633      }
5634
5635      var $dragEl = $el.find(("." + (swiper.params.scrollbar.dragClass)));
5636      if ($dragEl.length === 0) {
5637        $dragEl = $(("<div class=\"" + (swiper.params.scrollbar.dragClass) + "\"></div>"));
5638        $el.append($dragEl);
5639      }
5640
5641      Utils.extend(scrollbar, {
5642        $el: $el,
5643        el: $el[0],
5644        $dragEl: $dragEl,
5645        dragEl: $dragEl[0],
5646      });
5647
5648      if (params.draggable) {
5649        scrollbar.enableDraggable();
5650      }
5651    },
5652    destroy: function destroy() {
5653      var swiper = this;
5654      swiper.scrollbar.disableDraggable();
5655    },
5656  };
5657
5658  var Scrollbar$1 = {
5659    name: 'scrollbar',
5660    params: {
5661      scrollbar: {
5662        el: null,
5663        dragSize: 'auto',
5664        hide: false,
5665        draggable: false,
5666        snapOnRelease: true,
5667        lockClass: 'swiper-scrollbar-lock',
5668        dragClass: 'swiper-scrollbar-drag',
5669      },
5670    },
5671    create: function create() {
5672      var swiper = this;
5673      Utils.extend(swiper, {
5674        scrollbar: {
5675          init: Scrollbar.init.bind(swiper),
5676          destroy: Scrollbar.destroy.bind(swiper),
5677          updateSize: Scrollbar.updateSize.bind(swiper),
5678          setTranslate: Scrollbar.setTranslate.bind(swiper),
5679          setTransition: Scrollbar.setTransition.bind(swiper),
5680          enableDraggable: Scrollbar.enableDraggable.bind(swiper),
5681          disableDraggable: Scrollbar.disableDraggable.bind(swiper),
5682          setDragPosition: Scrollbar.setDragPosition.bind(swiper),
5683          onDragStart: Scrollbar.onDragStart.bind(swiper),
5684          onDragMove: Scrollbar.onDragMove.bind(swiper),
5685          onDragEnd: Scrollbar.onDragEnd.bind(swiper),
5686          isTouched: false,
5687          timeout: null,
5688          dragTimeout: null,
5689        },
5690      });
5691    },
5692    on: {
5693      init: function init() {
5694        var swiper = this;
5695        swiper.scrollbar.init();
5696        swiper.scrollbar.updateSize();
5697        swiper.scrollbar.setTranslate();
5698      },
5699      update: function update() {
5700        var swiper = this;
5701        swiper.scrollbar.updateSize();
5702      },
5703      resize: function resize() {
5704        var swiper = this;
5705        swiper.scrollbar.updateSize();
5706      },
5707      observerUpdate: function observerUpdate() {
5708        var swiper = this;
5709        swiper.scrollbar.updateSize();
5710      },
5711      setTranslate: function setTranslate() {
5712        var swiper = this;
5713        swiper.scrollbar.setTranslate();
5714      },
5715      setTransition: function setTransition(duration) {
5716        var swiper = this;
5717        swiper.scrollbar.setTransition(duration);
5718      },
5719      destroy: function destroy() {
5720        var swiper = this;
5721        swiper.scrollbar.destroy();
5722      },
5723    },
5724  };
5725
5726  var Parallax = {
5727    setTransform: function setTransform(el, progress) {
5728      var swiper = this;
5729      var rtl = swiper.rtl;
5730
5731      var $el = $(el);
5732      var rtlFactor = rtl ? -1 : 1;
5733
5734      var p = $el.attr('data-swiper-parallax') || '0';
5735      var x = $el.attr('data-swiper-parallax-x');
5736      var y = $el.attr('data-swiper-parallax-y');
5737      var scale = $el.attr('data-swiper-parallax-scale');
5738      var opacity = $el.attr('data-swiper-parallax-opacity');
5739
5740      if (x || y) {
5741        x = x || '0';
5742        y = y || '0';
5743      } else if (swiper.isHorizontal()) {
5744        x = p;
5745        y = '0';
5746      } else {
5747        y = p;
5748        x = '0';
5749      }
5750
5751      if ((x).indexOf('%') >= 0) {
5752        x = (parseInt(x, 10) * progress * rtlFactor) + "%";
5753      } else {
5754        x = (x * progress * rtlFactor) + "px";
5755      }
5756      if ((y).indexOf('%') >= 0) {
5757        y = (parseInt(y, 10) * progress) + "%";
5758      } else {
5759        y = (y * progress) + "px";
5760      }
5761
5762      if (typeof opacity !== 'undefined' && opacity !== null) {
5763        var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));
5764        $el[0].style.opacity = currentOpacity;
5765      }
5766      if (typeof scale === 'undefined' || scale === null) {
5767        $el.transform(("translate3d(" + x + ", " + y + ", 0px)"));
5768      } else {
5769        var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));
5770        $el.transform(("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")"));
5771      }
5772    },
5773    setTranslate: function setTranslate() {
5774      var swiper = this;
5775      var $el = swiper.$el;
5776      var slides = swiper.slides;
5777      var progress = swiper.progress;
5778      var snapGrid = swiper.snapGrid;
5779      $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')
5780        .each(function (index, el) {
5781          swiper.parallax.setTransform(el, progress);
5782        });
5783      slides.each(function (slideIndex, slideEl) {
5784        var slideProgress = slideEl.progress;
5785        if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
5786          slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));
5787        }
5788        slideProgress = Math.min(Math.max(slideProgress, -1), 1);
5789        $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')
5790          .each(function (index, el) {
5791            swiper.parallax.setTransform(el, slideProgress);
5792          });
5793      });
5794    },
5795    setTransition: function setTransition(duration) {
5796      if ( duration === void 0 ) duration = this.params.speed;
5797
5798      var swiper = this;
5799      var $el = swiper.$el;
5800      $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')
5801        .each(function (index, parallaxEl) {
5802          var $parallaxEl = $(parallaxEl);
5803          var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
5804          if (duration === 0) { parallaxDuration = 0; }
5805          $parallaxEl.transition(parallaxDuration);
5806        });
5807    },
5808  };
5809
5810  var Parallax$1 = {
5811    name: 'parallax',
5812    params: {
5813      parallax: {
5814        enabled: false,
5815      },
5816    },
5817    create: function create() {
5818      var swiper = this;
5819      Utils.extend(swiper, {
5820        parallax: {
5821          setTransform: Parallax.setTransform.bind(swiper),
5822          setTranslate: Parallax.setTranslate.bind(swiper),
5823          setTransition: Parallax.setTransition.bind(swiper),
5824        },
5825      });
5826    },
5827    on: {
5828      beforeInit: function beforeInit() {
5829        var swiper = this;
5830        if (!swiper.params.parallax.enabled) { return; }
5831        swiper.params.watchSlidesProgress = true;
5832      },
5833      init: function init() {
5834        var swiper = this;
5835        if (!swiper.params.parallax) { return; }
5836        swiper.parallax.setTranslate();
5837      },
5838      setTranslate: function setTranslate() {
5839        var swiper = this;
5840        if (!swiper.params.parallax) { return; }
5841        swiper.parallax.setTranslate();
5842      },
5843      setTransition: function setTransition(duration) {
5844        var swiper = this;
5845        if (!swiper.params.parallax) { return; }
5846        swiper.parallax.setTransition(duration);
5847      },
5848    },
5849  };
5850
5851  var Zoom = {
5852    // Calc Scale From Multi-touches
5853    getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {
5854      if (e.targetTouches.length < 2) { return 1; }
5855      var x1 = e.targetTouches[0].pageX;
5856      var y1 = e.targetTouches[0].pageY;
5857      var x2 = e.targetTouches[1].pageX;
5858      var y2 = e.targetTouches[1].pageY;
5859      var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 )));
5860      return distance;
5861    },
5862    // Events
5863    onGestureStart: function onGestureStart(e) {
5864      var swiper = this;
5865      var params = swiper.params.zoom;
5866      var zoom = swiper.zoom;
5867      var gesture = zoom.gesture;
5868      zoom.fakeGestureTouched = false;
5869      zoom.fakeGestureMoved = false;
5870      if (!Support.gestures) {
5871        if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {
5872          return;
5873        }
5874        zoom.fakeGestureTouched = true;
5875        gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
5876      }
5877      if (!gesture.$slideEl || !gesture.$slideEl.length) {
5878        gesture.$slideEl = $(e.target).closest('.swiper-slide');
5879        if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); }
5880        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
5881        gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
5882        gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
5883        if (gesture.$imageWrapEl.length === 0) {
5884          gesture.$imageEl = undefined;
5885          return;
5886        }
5887      }
5888      gesture.$imageEl.transition(0);
5889      swiper.zoom.isScaling = true;
5890    },
5891    onGestureChange: function onGestureChange(e) {
5892      var swiper = this;
5893      var params = swiper.params.zoom;
5894      var zoom = swiper.zoom;
5895      var gesture = zoom.gesture;
5896      if (!Support.gestures) {
5897        if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {
5898          return;
5899        }
5900        zoom.fakeGestureMoved = true;
5901        gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
5902      }
5903      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
5904      if (Support.gestures) {
5905        swiper.zoom.scale = e.scale * zoom.currentScale;
5906      } else {
5907        zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;
5908      }
5909      if (zoom.scale > gesture.maxRatio) {
5910        zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 ));
5911      }
5912      if (zoom.scale < params.minRatio) {
5913        zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 ));
5914      }
5915      gesture.$imageEl.transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
5916    },
5917    onGestureEnd: function onGestureEnd(e) {
5918      var swiper = this;
5919      var params = swiper.params.zoom;
5920      var zoom = swiper.zoom;
5921      var gesture = zoom.gesture;
5922      if (!Support.gestures) {
5923        if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
5924          return;
5925        }
5926        if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {
5927          return;
5928        }
5929        zoom.fakeGestureTouched = false;
5930        zoom.fakeGestureMoved = false;
5931      }
5932      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
5933      zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
5934      gesture.$imageEl.transition(swiper.params.speed).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
5935      zoom.currentScale = zoom.scale;
5936      zoom.isScaling = false;
5937      if (zoom.scale === 1) { gesture.$slideEl = undefined; }
5938    },
5939    onTouchStart: function onTouchStart(e) {
5940      var swiper = this;
5941      var zoom = swiper.zoom;
5942      var gesture = zoom.gesture;
5943      var image = zoom.image;
5944      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
5945      if (image.isTouched) { return; }
5946      if (Device.android) { e.preventDefault(); }
5947      image.isTouched = true;
5948      image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
5949      image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
5950    },
5951    onTouchMove: function onTouchMove(e) {
5952      var swiper = this;
5953      var zoom = swiper.zoom;
5954      var gesture = zoom.gesture;
5955      var image = zoom.image;
5956      var velocity = zoom.velocity;
5957      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
5958      swiper.allowClick = false;
5959      if (!image.isTouched || !gesture.$slideEl) { return; }
5960
5961      if (!image.isMoved) {
5962        image.width = gesture.$imageEl[0].offsetWidth;
5963        image.height = gesture.$imageEl[0].offsetHeight;
5964        image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
5965        image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
5966        gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
5967        gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
5968        gesture.$imageWrapEl.transition(0);
5969        if (swiper.rtl) {
5970          image.startX = -image.startX;
5971          image.startY = -image.startY;
5972        }
5973      }
5974      // Define if we need image drag
5975      var scaledWidth = image.width * zoom.scale;
5976      var scaledHeight = image.height * zoom.scale;
5977
5978      if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) { return; }
5979
5980      image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
5981      image.maxX = -image.minX;
5982      image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
5983      image.maxY = -image.minY;
5984
5985      image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
5986      image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
5987
5988      if (!image.isMoved && !zoom.isScaling) {
5989        if (
5990          swiper.isHorizontal()
5991          && (
5992            (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)
5993            || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)
5994          )
5995        ) {
5996          image.isTouched = false;
5997          return;
5998        } if (
5999          !swiper.isHorizontal()
6000          && (
6001            (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)
6002            || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)
6003          )
6004        ) {
6005          image.isTouched = false;
6006          return;
6007        }
6008      }
6009      e.preventDefault();
6010      e.stopPropagation();
6011
6012      image.isMoved = true;
6013      image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;
6014      image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;
6015
6016      if (image.currentX < image.minX) {
6017        image.currentX = (image.minX + 1) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 ));
6018      }
6019      if (image.currentX > image.maxX) {
6020        image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 ));
6021      }
6022
6023      if (image.currentY < image.minY) {
6024        image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 ));
6025      }
6026      if (image.currentY > image.maxY) {
6027        image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 ));
6028      }
6029
6030      // Velocity
6031      if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; }
6032      if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; }
6033      if (!velocity.prevTime) { velocity.prevTime = Date.now(); }
6034      velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
6035      velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
6036      if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) { velocity.x = 0; }
6037      if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) { velocity.y = 0; }
6038      velocity.prevPositionX = image.touchesCurrent.x;
6039      velocity.prevPositionY = image.touchesCurrent.y;
6040      velocity.prevTime = Date.now();
6041
6042      gesture.$imageWrapEl.transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)"));
6043    },
6044    onTouchEnd: function onTouchEnd() {
6045      var swiper = this;
6046      var zoom = swiper.zoom;
6047      var gesture = zoom.gesture;
6048      var image = zoom.image;
6049      var velocity = zoom.velocity;
6050      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
6051      if (!image.isTouched || !image.isMoved) {
6052        image.isTouched = false;
6053        image.isMoved = false;
6054        return;
6055      }
6056      image.isTouched = false;
6057      image.isMoved = false;
6058      var momentumDurationX = 300;
6059      var momentumDurationY = 300;
6060      var momentumDistanceX = velocity.x * momentumDurationX;
6061      var newPositionX = image.currentX + momentumDistanceX;
6062      var momentumDistanceY = velocity.y * momentumDurationY;
6063      var newPositionY = image.currentY + momentumDistanceY;
6064
6065      // Fix duration
6066      if (velocity.x !== 0) { momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); }
6067      if (velocity.y !== 0) { momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); }
6068      var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
6069
6070      image.currentX = newPositionX;
6071      image.currentY = newPositionY;
6072
6073      // Define if we need image drag
6074      var scaledWidth = image.width * zoom.scale;
6075      var scaledHeight = image.height * zoom.scale;
6076      image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
6077      image.maxX = -image.minX;
6078      image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
6079      image.maxY = -image.minY;
6080      image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
6081      image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
6082
6083      gesture.$imageWrapEl.transition(momentumDuration).transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)"));
6084    },
6085    onTransitionEnd: function onTransitionEnd() {
6086      var swiper = this;
6087      var zoom = swiper.zoom;
6088      var gesture = zoom.gesture;
6089      if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
6090        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
6091        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
6092        gesture.$slideEl = undefined;
6093        gesture.$imageEl = undefined;
6094        gesture.$imageWrapEl = undefined;
6095
6096        zoom.scale = 1;
6097        zoom.currentScale = 1;
6098      }
6099    },
6100    // Toggle Zoom
6101    toggle: function toggle(e) {
6102      var swiper = this;
6103      var zoom = swiper.zoom;
6104
6105      if (zoom.scale && zoom.scale !== 1) {
6106        // Zoom Out
6107        zoom.out();
6108      } else {
6109        // Zoom In
6110        zoom.in(e);
6111      }
6112    },
6113    in: function in$1(e) {
6114      var swiper = this;
6115
6116      var zoom = swiper.zoom;
6117      var params = swiper.params.zoom;
6118      var gesture = zoom.gesture;
6119      var image = zoom.image;
6120
6121      if (!gesture.$slideEl) {
6122        gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);
6123        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
6124        gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
6125      }
6126      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
6127
6128      gesture.$slideEl.addClass(("" + (params.zoomedSlideClass)));
6129
6130      var touchX;
6131      var touchY;
6132      var offsetX;
6133      var offsetY;
6134      var diffX;
6135      var diffY;
6136      var translateX;
6137      var translateY;
6138      var imageWidth;
6139      var imageHeight;
6140      var scaledWidth;
6141      var scaledHeight;
6142      var translateMinX;
6143      var translateMinY;
6144      var translateMaxX;
6145      var translateMaxY;
6146      var slideWidth;
6147      var slideHeight;
6148
6149      if (typeof image.touchesStart.x === 'undefined' && e) {
6150        touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
6151        touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
6152      } else {
6153        touchX = image.touchesStart.x;
6154        touchY = image.touchesStart.y;
6155      }
6156
6157      zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
6158      zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
6159      if (e) {
6160        slideWidth = gesture.$slideEl[0].offsetWidth;
6161        slideHeight = gesture.$slideEl[0].offsetHeight;
6162        offsetX = gesture.$slideEl.offset().left;
6163        offsetY = gesture.$slideEl.offset().top;
6164        diffX = (offsetX + (slideWidth / 2)) - touchX;
6165        diffY = (offsetY + (slideHeight / 2)) - touchY;
6166
6167        imageWidth = gesture.$imageEl[0].offsetWidth;
6168        imageHeight = gesture.$imageEl[0].offsetHeight;
6169        scaledWidth = imageWidth * zoom.scale;
6170        scaledHeight = imageHeight * zoom.scale;
6171
6172        translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);
6173        translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);
6174        translateMaxX = -translateMinX;
6175        translateMaxY = -translateMinY;
6176
6177        translateX = diffX * zoom.scale;
6178        translateY = diffY * zoom.scale;
6179
6180        if (translateX < translateMinX) {
6181          translateX = translateMinX;
6182        }
6183        if (translateX > translateMaxX) {
6184          translateX = translateMaxX;
6185        }
6186
6187        if (translateY < translateMinY) {
6188          translateY = translateMinY;
6189        }
6190        if (translateY > translateMaxY) {
6191          translateY = translateMaxY;
6192        }
6193      } else {
6194        translateX = 0;
6195        translateY = 0;
6196      }
6197      gesture.$imageWrapEl.transition(300).transform(("translate3d(" + translateX + "px, " + translateY + "px,0)"));
6198      gesture.$imageEl.transition(300).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
6199    },
6200    out: function out() {
6201      var swiper = this;
6202
6203      var zoom = swiper.zoom;
6204      var params = swiper.params.zoom;
6205      var gesture = zoom.gesture;
6206
6207      if (!gesture.$slideEl) {
6208        gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);
6209        gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
6210        gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
6211      }
6212      if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
6213
6214      zoom.scale = 1;
6215      zoom.currentScale = 1;
6216      gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
6217      gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
6218      gesture.$slideEl.removeClass(("" + (params.zoomedSlideClass)));
6219      gesture.$slideEl = undefined;
6220    },
6221    // Attach/Detach Events
6222    enable: function enable() {
6223      var swiper = this;
6224      var zoom = swiper.zoom;
6225      if (zoom.enabled) { return; }
6226      zoom.enabled = true;
6227
6228      var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
6229
6230      // Scale image
6231      if (Support.gestures) {
6232        swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);
6233        swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);
6234        swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);
6235      } else if (swiper.touchEvents.start === 'touchstart') {
6236        swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);
6237        swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);
6238        swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);
6239      }
6240
6241      // Move image
6242      swiper.$wrapperEl.on(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove);
6243    },
6244    disable: function disable() {
6245      var swiper = this;
6246      var zoom = swiper.zoom;
6247      if (!zoom.enabled) { return; }
6248
6249      swiper.zoom.enabled = false;
6250
6251      var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
6252
6253      // Scale image
6254      if (Support.gestures) {
6255        swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);
6256        swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);
6257        swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);
6258      } else if (swiper.touchEvents.start === 'touchstart') {
6259        swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);
6260        swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);
6261        swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);
6262      }
6263
6264      // Move image
6265      swiper.$wrapperEl.off(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove);
6266    },
6267  };
6268
6269  var Zoom$1 = {
6270    name: 'zoom',
6271    params: {
6272      zoom: {
6273        enabled: false,
6274        maxRatio: 3,
6275        minRatio: 1,
6276        toggle: true,
6277        containerClass: 'swiper-zoom-container',
6278        zoomedSlideClass: 'swiper-slide-zoomed',
6279      },
6280    },
6281    create: function create() {
6282      var swiper = this;
6283      var zoom = {
6284        enabled: false,
6285        scale: 1,
6286        currentScale: 1,
6287        isScaling: false,
6288        gesture: {
6289          $slideEl: undefined,
6290          slideWidth: undefined,
6291          slideHeight: undefined,
6292          $imageEl: undefined,
6293          $imageWrapEl: undefined,
6294          maxRatio: 3,
6295        },
6296        image: {
6297          isTouched: undefined,
6298          isMoved: undefined,
6299          currentX: undefined,
6300          currentY: undefined,
6301          minX: undefined,
6302          minY: undefined,
6303          maxX: undefined,
6304          maxY: undefined,
6305          width: undefined,
6306          height: undefined,
6307          startX: undefined,
6308          startY: undefined,
6309          touchesStart: {},
6310          touchesCurrent: {},
6311        },
6312        velocity: {
6313          x: undefined,
6314          y: undefined,
6315          prevPositionX: undefined,
6316          prevPositionY: undefined,
6317          prevTime: undefined,
6318        },
6319      };
6320      ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) {
6321        zoom[methodName] = Zoom[methodName].bind(swiper);
6322      });
6323      Utils.extend(swiper, {
6324        zoom: zoom
vendor: 24,869 bytes, lines 6324-7014
6324,
6325      });
6326    },
6327    on: {
6328      init: function init() {
6329        var swiper = this;
6330        if (swiper.params.zoom.enabled) {
6331          swiper.zoom.enable();
6332        }
6333      },
6334      destroy: function destroy() {
6335        var swiper = this;
6336        swiper.zoom.disable();
6337      },
6338      touchStart: function touchStart(e) {
6339        var swiper = this;
6340        if (!swiper.zoom.enabled) { return; }
6341        swiper.zoom.onTouchStart(e);
6342      },
6343      touchEnd: function touchEnd(e) {
6344        var swiper = this;
6345        if (!swiper.zoom.enabled) { return; }
6346        swiper.zoom.onTouchEnd(e);
6347      },
6348      doubleTap: function doubleTap(e) {
6349        var swiper = this;
6350        if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
6351          swiper.zoom.toggle(e);
6352        }
6353      },
6354      transitionEnd: function transitionEnd() {
6355        var swiper = this;
6356        if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
6357          swiper.zoom.onTransitionEnd();
6358        }
6359      },
6360    },
6361  };
6362
6363  var Lazy = {
6364    loadInSlide: function loadInSlide(index, loadInDuplicate) {
6365      if ( loadInDuplicate === void 0 ) loadInDuplicate = true;
6366
6367      var swiper = this;
6368      var params = swiper.params.lazy;
6369      if (typeof index === 'undefined') { return; }
6370      if (swiper.slides.length === 0) { return; }
6371      var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
6372
6373      var $slideEl = isVirtual
6374        ? swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]"))
6375        : swiper.slides.eq(index);
6376
6377      var $images = $slideEl.find(("." + (params.elementClass) + ":not(." + (params.loadedClass) + "):not(." + (params.loadingClass) + ")"));
6378      if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
6379        $images = $images.add($slideEl[0]);
6380      }
6381      if ($images.length === 0) { return; }
6382
6383      $images.each(function (imageIndex, imageEl) {
6384        var $imageEl = $(imageEl);
6385        $imageEl.addClass(params.loadingClass);
6386
6387        var background = $imageEl.attr('data-background');
6388        var src = $imageEl.attr('data-src');
6389        var srcset = $imageEl.attr('data-srcset');
6390        var sizes = $imageEl.attr('data-sizes');
6391
6392        swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () {
6393          if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; }
6394          if (background) {
6395            $imageEl.css('background-image', ("url(\"" + background + "\")"));
6396            $imageEl.removeAttr('data-background');
6397          } else {
6398            if (srcset) {
6399              $imageEl.attr('srcset', srcset);
6400              $imageEl.removeAttr('data-srcset');
6401            }
6402            if (sizes) {
6403              $imageEl.attr('sizes', sizes);
6404              $imageEl.removeAttr('data-sizes');
6405            }
6406            if (src) {
6407              $imageEl.attr('src', src);
6408              $imageEl.removeAttr('data-src');
6409            }
6410          }
6411
6412          $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
6413          $slideEl.find(("." + (params.preloaderClass))).remove();
6414          if (swiper.params.loop && loadInDuplicate) {
6415            var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
6416            if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
6417              var originalSlide = swiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + (swiper.params.slideDuplicateClass) + ")"));
6418              swiper.lazy.loadInSlide(originalSlide.index(), false);
6419            } else {
6420              var duplicatedSlide = swiper.$wrapperEl.children(("." + (swiper.params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]"));
6421              swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
6422            }
6423          }
6424          swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
6425        });
6426
6427        swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
6428      });
6429    },
6430    load: function load() {
6431      var swiper = this;
6432      var $wrapperEl = swiper.$wrapperEl;
6433      var swiperParams = swiper.params;
6434      var slides = swiper.slides;
6435      var activeIndex = swiper.activeIndex;
6436      var isVirtual = swiper.virtual && swiperParams.virtual.enabled;
6437      var params = swiperParams.lazy;
6438
6439      var slidesPerView = swiperParams.slidesPerView;
6440      if (slidesPerView === 'auto') {
6441        slidesPerView = 0;
6442      }
6443
6444      function slideExist(index) {
6445        if (isVirtual) {
6446          if ($wrapperEl.children(("." + (swiperParams.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")).length) {
6447            return true;
6448          }
6449        } else if (slides[index]) { return true; }
6450        return false;
6451      }
6452      function slideIndex(slideEl) {
6453        if (isVirtual) {
6454          return $(slideEl).attr('data-swiper-slide-index');
6455        }
6456        return $(slideEl).index();
6457      }
6458
6459      if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; }
6460      if (swiper.params.watchSlidesVisibility) {
6461        $wrapperEl.children(("." + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) {
6462          var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();
6463          swiper.lazy.loadInSlide(index);
6464        });
6465      } else if (slidesPerView > 1) {
6466        for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
6467          if (slideExist(i)) { swiper.lazy.loadInSlide(i); }
6468        }
6469      } else {
6470        swiper.lazy.loadInSlide(activeIndex);
6471      }
6472      if (params.loadPrevNext) {
6473        if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {
6474          var amount = params.loadPrevNextAmount;
6475          var spv = slidesPerView;
6476          var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
6477          var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);
6478          // Next Slides
6479          for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) {
6480            if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); }
6481          }
6482          // Prev Slides
6483          for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {
6484            if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); }
6485          }
6486        } else {
6487          var nextSlide = $wrapperEl.children(("." + (swiperParams.slideNextClass)));
6488          if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); }
6489
6490          var prevSlide = $wrapperEl.children(("." + (swiperParams.slidePrevClass)));
6491          if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); }
6492        }
6493      }
6494    },
6495  };
6496
6497  var Lazy$1 = {
6498    name: 'lazy',
6499    params: {
6500      lazy: {
6501        enabled: false,
6502        loadPrevNext: false,
6503        loadPrevNextAmount: 1,
6504        loadOnTransitionStart: false,
6505
6506        elementClass: 'swiper-lazy',
6507        loadingClass: 'swiper-lazy-loading',
6508        loadedClass: 'swiper-lazy-loaded',
6509        preloaderClass: 'swiper-lazy-preloader',
6510      },
6511    },
6512    create: function create() {
6513      var swiper = this;
6514      Utils.extend(swiper, {
6515        lazy: {
6516          initialImageLoaded: false,
6517          load: Lazy.load.bind(swiper),
6518          loadInSlide: Lazy.loadInSlide.bind(swiper),
6519        },
6520      });
6521    },
6522    on: {
6523      beforeInit: function beforeInit() {
6524        var swiper = this;
6525        if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
6526          swiper.params.preloadImages = false;
6527        }
6528      },
6529      init: function init() {
6530        var swiper = this;
6531        if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
6532          swiper.lazy.load();
6533        }
6534      },
6535      scroll: function scroll() {
6536        var swiper = this;
6537        if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
6538          swiper.lazy.load();
6539        }
6540      },
6541      resize: function resize() {
6542        var swiper = this;
6543        if (swiper.params.lazy.enabled) {
6544          swiper.lazy.load();
6545        }
6546      },
6547      scrollbarDragMove: function scrollbarDragMove() {
6548        var swiper = this;
6549        if (swiper.params.lazy.enabled) {
6550          swiper.lazy.load();
6551        }
6552      },
6553      transitionStart: function transitionStart() {
6554        var swiper = this;
6555        if (swiper.params.lazy.enabled) {
6556          if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {
6557            swiper.lazy.load();
6558          }
6559        }
6560      },
6561      transitionEnd: function transitionEnd() {
6562        var swiper = this;
6563        if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
6564          swiper.lazy.load();
6565        }
6566      },
6567    },
6568  };
6569
6570  /* eslint no-bitwise: ["error", { "allow": [">>"] }] */
6571
6572  var Controller = {
6573    LinearSpline: function LinearSpline(x, y) {
6574      var binarySearch = (function search() {
6575        var maxIndex;
6576        var minIndex;
6577        var guess;
6578        return function (array, val) {
6579          minIndex = -1;
6580          maxIndex = array.length;
6581          while (maxIndex - minIndex > 1) {
6582            guess = maxIndex + minIndex >> 1;
6583            if (array[guess] <= val) {
6584              minIndex = guess;
6585            } else {
6586              maxIndex = guess;
6587            }
6588          }
6589          return maxIndex;
6590        };
6591      }());
6592      this.x = x;
6593      this.y = y;
6594      this.lastIndex = x.length - 1;
6595      // Given an x value (x2), return the expected y2 value:
6596      // (x1,y1) is the known point before given value,
6597      // (x3,y3) is the known point after given value.
6598      var i1;
6599      var i3;
6600
6601      this.interpolate = function interpolate(x2) {
6602        if (!x2) { return 0; }
6603
6604        // Get the indexes of x1 and x3 (the array indexes before and after given x2):
6605        i3 = binarySearch(this.x, x2);
6606        i1 = i3 - 1;
6607
6608        // We have our indexes i1 & i3, so we can calculate already:
6609        // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
6610        return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];
6611      };
6612      return this;
6613    },
6614    // xxx: for now i will just save one spline function to to
6615    getInterpolateFunction: function getInterpolateFunction(c) {
6616      var swiper = this;
6617      if (!swiper.controller.spline) {
6618        swiper.controller.spline = swiper.params.loop
6619          ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)
6620          : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
6621      }
6622    },
6623    setTranslate: function setTranslate(setTranslate$1, byController) {
6624      var swiper = this;
6625      var controlled = swiper.controller.control;
6626      var multiplier;
6627      var controlledTranslate;
6628      function setControlledTranslate(c) {
6629        // this will create an Interpolate function based on the snapGrids
6630        // x is the Grid of the scrolled scroller and y will be the controlled scroller
6631        // it makes sense to create this only once and recall it for the interpolation
6632        // the function does a lot of value caching for performance
6633        var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
6634        if (swiper.params.controller.by === 'slide') {
6635          swiper.controller.getInterpolateFunction(c);
6636          // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
6637          // but it did not work out
6638          controlledTranslate = -swiper.controller.spline.interpolate(-translate);
6639        }
6640
6641        if (!controlledTranslate || swiper.params.controller.by === 'container') {
6642          multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
6643          controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();
6644        }
6645
6646        if (swiper.params.controller.inverse) {
6647          controlledTranslate = c.maxTranslate() - controlledTranslate;
6648        }
6649        c.updateProgress(controlledTranslate);
6650        c.setTranslate(controlledTranslate, swiper);
6651        c.updateActiveIndex();
6652        c.updateSlidesClasses();
6653      }
6654      if (Array.isArray(controlled)) {
6655        for (var i = 0; i < controlled.length; i += 1) {
6656          if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
6657            setControlledTranslate(controlled[i]);
6658          }
6659        }
6660      } else if (controlled instanceof Swiper && byController !== controlled) {
6661        setControlledTranslate(controlled);
6662      }
6663    },
6664    setTransition: function setTransition(duration, byController) {
6665      var swiper = this;
6666      var controlled = swiper.controller.control;
6667      var i;
6668      function setControlledTransition(c) {
6669        c.setTransition(duration, swiper);
6670        if (duration !== 0) {
6671          c.transitionStart();
6672          if (c.params.autoHeight) {
6673            Utils.nextTick(function () {
6674              c.updateAutoHeight();
6675            });
6676          }
6677          c.$wrapperEl.transitionEnd(function () {
6678            if (!controlled) { return; }
6679            if (c.params.loop && swiper.params.controller.by === 'slide') {
6680              c.loopFix();
6681            }
6682            c.transitionEnd();
6683          });
6684        }
6685      }
6686      if (Array.isArray(controlled)) {
6687        for (i = 0; i < controlled.length; i += 1) {
6688          if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
6689            setControlledTransition(controlled[i]);
6690          }
6691        }
6692      } else if (controlled instanceof Swiper && byController !== controlled) {
6693        setControlledTransition(controlled);
6694      }
6695    },
6696  };
6697  var Controller$1 = {
6698    name: 'controller',
6699    params: {
6700      controller: {
6701        control: undefined,
6702        inverse: false,
6703        by: 'slide', // or 'container'
6704      },
6705    },
6706    create: function create() {
6707      var swiper = this;
6708      Utils.extend(swiper, {
6709        controller: {
6710          control: swiper.params.controller.control,
6711          getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),
6712          setTranslate: Controller.setTranslate.bind(swiper),
6713          setTransition: Controller.setTransition.bind(swiper),
6714        },
6715      });
6716    },
6717    on: {
6718      update: function update() {
6719        var swiper = this;
6720        if (!swiper.controller.control) { return; }
6721        if (swiper.controller.spline) {
6722          swiper.controller.spline = undefined;
6723          delete swiper.controller.spline;
6724        }
6725      },
6726      resize: function resize() {
6727        var swiper = this;
6728        if (!swiper.controller.control) { return; }
6729        if (swiper.controller.spline) {
6730          swiper.controller.spline = undefined;
6731          delete swiper.controller.spline;
6732        }
6733      },
6734      observerUpdate: function observerUpdate() {
6735        var swiper = this;
6736        if (!swiper.controller.control) { return; }
6737        if (swiper.controller.spline) {
6738          swiper.controller.spline = undefined;
6739          delete swiper.controller.spline;
6740        }
6741      },
6742      setTranslate: function setTranslate(translate, byController) {
6743        var swiper = this;
6744        if (!swiper.controller.control) { return; }
6745        swiper.controller.setTranslate(translate, byController);
6746      },
6747      setTransition: function setTransition(duration, byController) {
6748        var swiper = this;
6749        if (!swiper.controller.control) { return; }
6750        swiper.controller.setTransition(duration, byController);
6751      },
6752    },
6753  };
6754
6755  var a11y = {
6756    makeElFocusable: function makeElFocusable($el) {
6757      $el.attr('tabIndex', '0');
6758      return $el;
6759    },
6760    addElRole: function addElRole($el, role) {
6761      $el.attr('role', role);
6762      return $el;
6763    },
6764    addElLabel: function addElLabel($el, label) {
6765      $el.attr('aria-label', label);
6766      return $el;
6767    },
6768    disableEl: function disableEl($el) {
6769      $el.attr('aria-disabled', true);
6770      return $el;
6771    },
6772    enableEl: function enableEl($el) {
6773      $el.attr('aria-disabled', false);
6774      return $el;
6775    },
6776    onEnterKey: function onEnterKey(e) {
6777      var swiper = this;
6778      var params = swiper.params.a11y;
6779      if (e.keyCode !== 13) { return; }
6780      var $targetEl = $(e.target);
6781      if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
6782        if (!(swiper.isEnd && !swiper.params.loop)) {
6783          swiper.slideNext();
6784        }
6785        if (swiper.isEnd) {
6786          swiper.a11y.notify(params.lastSlideMessage);
6787        } else {
6788          swiper.a11y.notify(params.nextSlideMessage);
6789        }
6790      }
6791      if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
6792        if (!(swiper.isBeginning && !swiper.params.loop)) {
6793          swiper.slidePrev();
6794        }
6795        if (swiper.isBeginning) {
6796          swiper.a11y.notify(params.firstSlideMessage);
6797        } else {
6798          swiper.a11y.notify(params.prevSlideMessage);
6799        }
6800      }
6801      if (swiper.pagination && $targetEl.is(("." + (swiper.params.pagination.bulletClass)))) {
6802        $targetEl[0].click();
6803      }
6804    },
6805    notify: function notify(message) {
6806      var swiper = this;
6807      var notification = swiper.a11y.liveRegion;
6808      if (notification.length === 0) { return; }
6809      notification.html('');
6810      notification.html(message);
6811    },
6812    updateNavigation: function updateNavigation() {
6813      var swiper = this;
6814
6815      if (swiper.params.loop) { return; }
6816      var ref = swiper.navigation;
6817      var $nextEl = ref.$nextEl;
6818      var $prevEl = ref.$prevEl;
6819
6820      if ($prevEl && $prevEl.length > 0) {
6821        if (swiper.isBeginning) {
6822          swiper.a11y.disableEl($prevEl);
6823        } else {
6824          swiper.a11y.enableEl($prevEl);
6825        }
6826      }
6827      if ($nextEl && $nextEl.length > 0) {
6828        if (swiper.isEnd) {
6829          swiper.a11y.disableEl($nextEl);
6830        } else {
6831          swiper.a11y.enableEl($nextEl);
6832        }
6833      }
6834    },
6835    updatePagination: function updatePagination() {
6836      var swiper = this;
6837      var params = swiper.params.a11y;
6838      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
6839        swiper.pagination.bullets.each(function (bulletIndex, bulletEl) {
6840          var $bulletEl = $(bulletEl);
6841          swiper.a11y.makeElFocusable($bulletEl);
6842          swiper.a11y.addElRole($bulletEl, 'button');
6843          swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));
6844        });
6845      }
6846    },
6847    init: function init() {
6848      var swiper = this;
6849
6850      swiper.$el.append(swiper.a11y.liveRegion);
6851
6852      // Navigation
6853      var params = swiper.params.a11y;
6854      var $nextEl;
6855      var $prevEl;
6856      if (swiper.navigation && swiper.navigation.$nextEl) {
6857        $nextEl = swiper.navigation.$nextEl;
6858      }
6859      if (swiper.navigation && swiper.navigation.$prevEl) {
6860        $prevEl = swiper.navigation.$prevEl;
6861      }
6862      if ($nextEl) {
6863        swiper.a11y.makeElFocusable($nextEl);
6864        swiper.a11y.addElRole($nextEl, 'button');
6865        swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
6866        $nextEl.on('keydown', swiper.a11y.onEnterKey);
6867      }
6868      if ($prevEl) {
6869        swiper.a11y.makeElFocusable($prevEl);
6870        swiper.a11y.addElRole($prevEl, 'button');
6871        swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
6872        $prevEl.on('keydown', swiper.a11y.onEnterKey);
6873      }
6874
6875      // Pagination
6876      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
6877        swiper.pagination.$el.on('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);
6878      }
6879    },
6880    destroy: function destroy() {
6881      var swiper = this;
6882      if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); }
6883
6884      var $nextEl;
6885      var $prevEl;
6886      if (swiper.navigation && swiper.navigation.$nextEl) {
6887        $nextEl = swiper.navigation.$nextEl;
6888      }
6889      if (swiper.navigation && swiper.navigation.$prevEl) {
6890        $prevEl = swiper.navigation.$prevEl;
6891      }
6892      if ($nextEl) {
6893        $nextEl.off('keydown', swiper.a11y.onEnterKey);
6894      }
6895      if ($prevEl) {
6896        $prevEl.off('keydown', swiper.a11y.onEnterKey);
6897      }
6898
6899      // Pagination
6900      if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
6901        swiper.pagination.$el.off('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);
6902      }
6903    },
6904  };
6905  var A11y = {
6906    name: 'a11y',
6907    params: {
6908      a11y: {
6909        enabled: true,
6910        notificationClass: 'swiper-notification',
6911        prevSlideMessage: 'Previous slide',
6912        nextSlideMessage: 'Next slide',
6913        firstSlideMessage: 'This is the first slide',
6914        lastSlideMessage: 'This is the last slide',
6915        paginationBulletMessage: 'Go to slide {{index}}',
6916      },
6917    },
6918    create: function create() {
6919      var swiper = this;
6920      Utils.extend(swiper, {
6921        a11y: {
6922          liveRegion: $(("<span class=\"" + (swiper.params.a11y.notificationClass) + "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")),
6923        },
6924      });
6925      Object.keys(a11y).forEach(function (methodName) {
6926        swiper.a11y[methodName] = a11y[methodName].bind(swiper);
6927      });
6928    },
6929    on: {
6930      init: function init() {
6931        var swiper = this;
6932        if (!swiper.params.a11y.enabled) { return; }
6933        swiper.a11y.init();
6934        swiper.a11y.updateNavigation();
6935      },
6936      toEdge: function toEdge() {
6937        var swiper = this;
6938        if (!swiper.params.a11y.enabled) { return; }
6939        swiper.a11y.updateNavigation();
6940      },
6941      fromEdge: function fromEdge() {
6942        var swiper = this;
6943        if (!swiper.params.a11y.enabled) { return; }
6944        swiper.a11y.updateNavigation();
6945      },
6946      paginationUpdate: function paginationUpdate() {
6947        var swiper = this;
6948        if (!swiper.params.a11y.enabled) { return; }
6949        swiper.a11y.updatePagination();
6950      },
6951      destroy: function destroy() {
6952        var swiper = this;
6953        if (!swiper.params.a11y.enabled) { return; }
6954        swiper.a11y.destroy();
6955      },
6956    },
6957  };
6958
6959  var History = {
6960    init: function init() {
6961      var swiper = this;
6962      if (!swiper.params.history) { return; }
6963      if (!win.history || !win.history.pushState) {
6964        swiper.params.history.enabled = false;
6965        swiper.params.hashNavigation.enabled = true;
6966        return;
6967      }
6968      var history = swiper.history;
6969      history.initialized = true;
6970      history.paths = History.getPathValues();
6971      if (!history.paths.key && !history.paths.value) { return; }
6972      history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
6973      if (!swiper.params.history.replaceState) {
6974        win.addEventListener('popstate', swiper.history.setHistoryPopState);
6975      }
6976    },
6977    destroy: function destroy() {
6978      var swiper = this;
6979      if (!swiper.params.history.replaceState) {
6980        win.removeEventListener('popstate', swiper.history.setHistoryPopState);
6981      }
6982    },
6983    setHistoryPopState: function setHistoryPopState() {
6984      var swiper = this;
6985      swiper.history.paths = History.getPathValues();
6986      swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
6987    },
6988    getPathValues: function getPathValues() {
6989      var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; });
6990      var total = pathArray.length;
6991      var key = pathArray[total - 2];
6992      var value = pathArray[total - 1];
6993      return { key: key, value: value };
6994    },
6995    setHistory: function setHistory(key, index) {
6996      var swiper = this;
6997      if (!swiper.history.initialized || !swiper.params.history.enabled) { return; }
6998      var slide = swiper.slides.eq(index);
6999      var value = History.slugify(slide.attr('data-history'));
7000      if (!win.location.pathname.includes(key)) {
7001        value = key + "/" + value;
7002      }
7003      var currentState = win.history.state;
7004      if (currentState && currentState.value === value) {
7005        return;
7006      }
7007      if (swiper.params.history.replaceState) {
7008        win.history.replaceState({ value: value }, null, value);
7009      } else {
7010        win.history.pushState({ value: value }, null, value);
7011      }
7012    },
7013    slugify: function slugify(text) {
7014      return text.toString()
vendor: 5,530 bytes, lines 7014-7180
7014.toLowerCase()
7015        .replace(/\s+/g, '-')
7016        .replace(/[^\w-]+/g, '')
7017        .replace(/--+/g, '-')
7018        .replace(/^-+/, '')
7019        .replace(/-+$/, '');
7020    },
7021    scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {
7022      var swiper = this;
7023      if (value) {
7024        for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
7025          var slide = swiper.slides.eq(i);
7026          var slideHistory = History.slugify(slide.attr('data-history'));
7027          if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
7028            var index = slide.index();
7029            swiper.slideTo(index, speed, runCallbacks);
7030          }
7031        }
7032      } else {
7033        swiper.slideTo(0, speed, runCallbacks);
7034      }
7035    },
7036  };
7037
7038  var History$1 = {
7039    name: 'history',
7040    params: {
7041      history: {
7042        enabled: false,
7043        replaceState: false,
7044        key: 'slides',
7045      },
7046    },
7047    create: function create() {
7048      var swiper = this;
7049      Utils.extend(swiper, {
7050        history: {
7051          init: History.init.bind(swiper),
7052          setHistory: History.setHistory.bind(swiper),
7053          setHistoryPopState: History.setHistoryPopState.bind(swiper),
7054          scrollToSlide: History.scrollToSlide.bind(swiper),
7055          destroy: History.destroy.bind(swiper),
7056        },
7057      });
7058    },
7059    on: {
7060      init: function init() {
7061        var swiper = this;
7062        if (swiper.params.history.enabled) {
7063          swiper.history.init();
7064        }
7065      },
7066      destroy: function destroy() {
7067        var swiper = this;
7068        if (swiper.params.history.enabled) {
7069          swiper.history.destroy();
7070        }
7071      },
7072      transitionEnd: function transitionEnd() {
7073        var swiper = this;
7074        if (swiper.history.initialized) {
7075          swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
7076        }
7077      },
7078    },
7079  };
7080
7081  var HashNavigation = {
7082    onHashCange: function onHashCange() {
7083      var swiper = this;
7084      var newHash = doc.location.hash.replace('#', '');
7085      var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
7086      if (newHash !== activeSlideHash) {
7087        swiper.slideTo(swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-hash=\"" + newHash + "\"]")).index());
7088      }
7089    },
7090    setHash: function setHash() {
7091      var swiper = this;
7092      if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) { return; }
7093      if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) {
7094        win.history.replaceState(null, null, (("#" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash'))) || ''));
7095      } else {
7096        var slide = swiper.slides.eq(swiper.activeIndex);
7097        var hash = slide.attr('data-hash') || slide.attr('data-history');
7098        doc.location.hash = hash || '';
7099      }
7100    },
7101    init: function init() {
7102      var swiper = this;
7103      if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) { return; }
7104      swiper.hashNavigation.initialized = true;
7105      var hash = doc.location.hash.replace('#', '');
7106      if (hash) {
7107        var speed = 0;
7108        for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
7109          var slide = swiper.slides.eq(i);
7110          var slideHash = slide.attr('data-hash') || slide.attr('data-history');
7111          if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
7112            var index = slide.index();
7113            swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
7114          }
7115        }
7116      }
7117      if (swiper.params.hashNavigation.watchState) {
7118        $(win).on('hashchange', swiper.hashNavigation.onHashCange);
7119      }
7120    },
7121    destroy: function destroy() {
7122      var swiper = this;
7123      if (swiper.params.hashNavigation.watchState) {
7124        $(win).off('hashchange', swiper.hashNavigation.onHashCange);
7125      }
7126    },
7127  };
7128  var HashNavigation$1 = {
7129    name: 'hash-navigation',
7130    params: {
7131      hashNavigation: {
7132        enabled: false,
7133        replaceState: false,
7134        watchState: false,
7135      },
7136    },
7137    create: function create() {
7138      var swiper = this;
7139      Utils.extend(swiper, {
7140        hashNavigation: {
7141          initialized: false,
7142          init: HashNavigation.init.bind(swiper),
7143          destroy: HashNavigation.destroy.bind(swiper),
7144          setHash: HashNavigation.setHash.bind(swiper),
7145          onHashCange: HashNavigation.onHashCange.bind(swiper),
7146        },
7147      });
7148    },
7149    on: {
7150      init: function init() {
7151        var swiper = this;
7152        if (swiper.params.hashNavigation.enabled) {
7153          swiper.hashNavigation.init();
7154        }
7155      },
7156      destroy: function destroy() {
7157        var swiper = this;
7158        if (swiper.params.hashNavigation.enabled) {
7159          swiper.hashNavigation.destroy();
7160        }
7161      },
7162      transitionEnd: function transitionEnd() {
7163        var swiper = this;
7164        if (swiper.hashNavigation.initialized) {
7165          swiper.hashNavigation.setHash();
7166        }
7167      },
7168    },
7169  };
7170
7171  /* eslint no-underscore-dangle: "off" */
7172
7173  var Autoplay = {
7174    run: function run() {
7175      var swiper = this;
7176      var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
7177      var delay = swiper.params.autoplay.delay;
7178      if ($activeSlideEl.attr('data-swiper-autoplay')) {
7179        delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
7180      }
vendor: 24,532 bytes, lines 7180-7831
7180
7181      swiper.autoplay.timeout = Utils.nextTick(function () {
7182        if (swiper.params.autoplay.reverseDirection) {
7183          if (swiper.params.loop) {
7184            swiper.loopFix();
7185            swiper.slidePrev(swiper.params.speed, true, true);
7186            swiper.emit('autoplay');
7187          } else if (!swiper.isBeginning) {
7188            swiper.slidePrev(swiper.params.speed, true, true);
7189            swiper.emit('autoplay');
7190          } else if (!swiper.params.autoplay.stopOnLastSlide) {
7191            swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
7192            swiper.emit('autoplay');
7193          } else {
7194            swiper.autoplay.stop();
7195          }
7196        } else if (swiper.params.loop) {
7197          swiper.loopFix();
7198          swiper.slideNext(swiper.params.speed, true, true);
7199          swiper.emit('autoplay');
7200        } else if (!swiper.isEnd) {
7201          swiper.slideNext(swiper.params.speed, true, true);
7202          swiper.emit('autoplay');
7203        } else if (!swiper.params.autoplay.stopOnLastSlide) {
7204          swiper.slideTo(0, swiper.params.speed, true, true);
7205          swiper.emit('autoplay');
7206        } else {
7207          swiper.autoplay.stop();
7208        }
7209      }, delay);
7210    },
7211    start: function start() {
7212      var swiper = this;
7213      if (typeof swiper.autoplay.timeout !== 'undefined') { return false; }
7214      if (swiper.autoplay.running) { return false; }
7215      swiper.autoplay.running = true;
7216      swiper.emit('autoplayStart');
7217      swiper.autoplay.run();
7218      return true;
7219    },
7220    stop: function stop() {
7221      var swiper = this;
7222      if (!swiper.autoplay.running) { return false; }
7223      if (typeof swiper.autoplay.timeout === 'undefined') { return false; }
7224
7225      if (swiper.autoplay.timeout) {
7226        clearTimeout(swiper.autoplay.timeout);
7227        swiper.autoplay.timeout = undefined;
7228      }
7229      swiper.autoplay.running = false;
7230      swiper.emit('autoplayStop');
7231      return true;
7232    },
7233    pause: function pause(speed) {
7234      var swiper = this;
7235      if (!swiper.autoplay.running) { return; }
7236      if (swiper.autoplay.paused) { return; }
7237      if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); }
7238      swiper.autoplay.paused = true;
7239      if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
7240        swiper.autoplay.paused = false;
7241        swiper.autoplay.run();
7242      } else {
7243        swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
7244        swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
7245      }
7246    },
7247  };
7248
7249  var Autoplay$1 = {
7250    name: 'autoplay',
7251    params: {
7252      autoplay: {
7253        enabled: false,
7254        delay: 3000,
7255        waitForTransition: true,
7256        disableOnInteraction: true,
7257        stopOnLastSlide: false,
7258        reverseDirection: false,
7259      },
7260    },
7261    create: function create() {
7262      var swiper = this;
7263      Utils.extend(swiper, {
7264        autoplay: {
7265          running: false,
7266          paused: false,
7267          run: Autoplay.run.bind(swiper),
7268          start: Autoplay.start.bind(swiper),
7269          stop: Autoplay.stop.bind(swiper),
7270          pause: Autoplay.pause.bind(swiper),
7271          onTransitionEnd: function onTransitionEnd(e) {
7272            if (!swiper || swiper.destroyed || !swiper.$wrapperEl) { return; }
7273            if (e.target !== this) { return; }
7274            swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
7275            swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
7276            swiper.autoplay.paused = false;
7277            if (!swiper.autoplay.running) {
7278              swiper.autoplay.stop();
7279            } else {
7280              swiper.autoplay.run();
7281            }
7282          },
7283        },
7284      });
7285    },
7286    on: {
7287      init: function init() {
7288        var swiper = this;
7289        if (swiper.params.autoplay.enabled) {
7290          swiper.autoplay.start();
7291        }
7292      },
7293      beforeTransitionStart: function beforeTransitionStart(speed, internal) {
7294        var swiper = this;
7295        if (swiper.autoplay.running) {
7296          if (internal || !swiper.params.autoplay.disableOnInteraction) {
7297            swiper.autoplay.pause(speed);
7298          } else {
7299            swiper.autoplay.stop();
7300          }
7301        }
7302      },
7303      sliderFirstMove: function sliderFirstMove() {
7304        var swiper = this;
7305        if (swiper.autoplay.running) {
7306          if (swiper.params.autoplay.disableOnInteraction) {
7307            swiper.autoplay.stop();
7308          } else {
7309            swiper.autoplay.pause();
7310          }
7311        }
7312      },
7313      destroy: function destroy() {
7314        var swiper = this;
7315        if (swiper.autoplay.running) {
7316          swiper.autoplay.stop();
7317        }
7318      },
7319    },
7320  };
7321
7322  var Fade = {
7323    setTranslate: function setTranslate() {
7324      var swiper = this;
7325      var slides = swiper.slides;
7326      for (var i = 0; i < slides.length; i += 1) {
7327        var $slideEl = swiper.slides.eq(i);
7328        var offset = $slideEl[0].swiperSlideOffset;
7329        var tx = -offset;
7330        if (!swiper.params.virtualTranslate) { tx -= swiper.translate; }
7331        var ty = 0;
7332        if (!swiper.isHorizontal()) {
7333          ty = tx;
7334          tx = 0;
7335        }
7336        var slideOpacity = swiper.params.fadeEffect.crossFade
7337          ? Math.max(1 - Math.abs($slideEl[0].progress), 0)
7338          : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
7339        $slideEl
7340          .css({
7341            opacity: slideOpacity,
7342          })
7343          .transform(("translate3d(" + tx + "px, " + ty + "px, 0px)"));
7344      }
7345    },
7346    setTransition: function setTransition(duration) {
7347      var swiper = this;
7348      var slides = swiper.slides;
7349      var $wrapperEl = swiper.$wrapperEl;
7350      slides.transition(duration);
7351      if (swiper.params.virtualTranslate && duration !== 0) {
7352        var eventTriggered = false;
7353        slides.transitionEnd(function () {
7354          if (eventTriggered) { return; }
7355          if (!swiper || swiper.destroyed) { return; }
7356          eventTriggered = true;
7357          swiper.animating = false;
7358          var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
7359          for (var i = 0; i < triggerEvents.length; i += 1) {
7360            $wrapperEl.trigger(triggerEvents[i]);
7361          }
7362        });
7363      }
7364    },
7365  };
7366
7367  var EffectFade = {
7368    name: 'effect-fade',
7369    params: {
7370      fadeEffect: {
7371        crossFade: false,
7372      },
7373    },
7374    create: function create() {
7375      var swiper = this;
7376      Utils.extend(swiper, {
7377        fadeEffect: {
7378          setTranslate: Fade.setTranslate.bind(swiper),
7379          setTransition: Fade.setTransition.bind(swiper),
7380        },
7381      });
7382    },
7383    on: {
7384      beforeInit: function beforeInit() {
7385        var swiper = this;
7386        if (swiper.params.effect !== 'fade') { return; }
7387        swiper.classNames.push(((swiper.params.containerModifierClass) + "fade"));
7388        var overwriteParams = {
7389          slidesPerView: 1,
7390          slidesPerColumn: 1,
7391          slidesPerGroup: 1,
7392          watchSlidesProgress: true,
7393          spaceBetween: 0,
7394          virtualTranslate: true,
7395        };
7396        Utils.extend(swiper.params, overwriteParams);
7397        Utils.extend(swiper.originalParams, overwriteParams);
7398      },
7399      setTranslate: function setTranslate() {
7400        var swiper = this;
7401        if (swiper.params.effect !== 'fade') { return; }
7402        swiper.fadeEffect.setTranslate();
7403      },
7404      setTransition: function setTransition(duration) {
7405        var swiper = this;
7406        if (swiper.params.effect !== 'fade') { return; }
7407        swiper.fadeEffect.setTransition(duration);
7408      },
7409    },
7410  };
7411
7412  var Cube = {
7413    setTranslate: function setTranslate() {
7414      var swiper = this;
7415      var $el = swiper.$el;
7416      var $wrapperEl = swiper.$wrapperEl;
7417      var slides = swiper.slides;
7418      var swiperWidth = swiper.width;
7419      var swiperHeight = swiper.height;
7420      var rtl = swiper.rtlTranslate;
7421      var swiperSize = swiper.size;
7422      var params = swiper.params.cubeEffect;
7423      var isHorizontal = swiper.isHorizontal();
7424      var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
7425      var wrapperRotate = 0;
7426      var $cubeShadowEl;
7427      if (params.shadow) {
7428        if (isHorizontal) {
7429          $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
7430          if ($cubeShadowEl.length === 0) {
7431            $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
7432            $wrapperEl.append($cubeShadowEl);
7433          }
7434          $cubeShadowEl.css({ height: (swiperWidth + "px") });
7435        } else {
7436          $cubeShadowEl = $el.find('.swiper-cube-shadow');
7437          if ($cubeShadowEl.length === 0) {
7438            $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
7439            $el.append($cubeShadowEl);
7440          }
7441        }
7442      }
7443      for (var i = 0; i < slides.length; i += 1) {
7444        var $slideEl = slides.eq(i);
7445        var slideIndex = i;
7446        if (isVirtual) {
7447          slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
7448        }
7449        var slideAngle = slideIndex * 90;
7450        var round = Math.floor(slideAngle / 360);
7451        if (rtl) {
7452          slideAngle = -slideAngle;
7453          round = Math.floor(-slideAngle / 360);
7454        }
7455        var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
7456        var tx = 0;
7457        var ty = 0;
7458        var tz = 0;
7459        if (slideIndex % 4 === 0) {
7460          tx = -round * 4 * swiperSize;
7461          tz = 0;
7462        } else if ((slideIndex - 1) % 4 === 0) {
7463          tx = 0;
7464          tz = -round * 4 * swiperSize;
7465        } else if ((slideIndex - 2) % 4 === 0) {
7466          tx = swiperSize + (round * 4 * swiperSize);
7467          tz = swiperSize;
7468        } else if ((slideIndex - 3) % 4 === 0) {
7469          tx = -swiperSize;
7470          tz = (3 * swiperSize) + (swiperSize * 4 * round);
7471        }
7472        if (rtl) {
7473          tx = -tx;
7474        }
7475
7476        if (!isHorizontal) {
7477          ty = tx;
7478          tx = 0;
7479        }
7480
7481        var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)";
7482        if (progress <= 1 && progress > -1) {
7483          wrapperRotate = (slideIndex * 90) + (progress * 90);
7484          if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); }
7485        }
7486        $slideEl.transform(transform);
7487        if (params.slideShadows) {
7488          // Set shadows
7489          var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
7490          var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
7491          if (shadowBefore.length === 0) {
7492            shadowBefore = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>"));
7493            $slideEl.append(shadowBefore);
7494          }
7495          if (shadowAfter.length === 0) {
7496            shadowAfter = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>"));
7497            $slideEl.append(shadowAfter);
7498          }
7499          if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }
7500          if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }
7501        }
7502      }
7503      $wrapperEl.css({
7504        '-webkit-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
7505        '-moz-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
7506        '-ms-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
7507        'transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
7508      });
7509
7510      if (params.shadow) {
7511        if (isHorizontal) {
7512          $cubeShadowEl.transform(("translate3d(0px, " + ((swiperWidth / 2) + params.shadowOffset) + "px, " + (-swiperWidth / 2) + "px) rotateX(90deg) rotateZ(0deg) scale(" + (params.shadowScale) + ")"));
7513        } else {
7514          var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);
7515          var multiplier = 1.5 - (
7516            (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)
7517            + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)
7518          );
7519          var scale1 = params.shadowScale;
7520          var scale2 = params.shadowScale / multiplier;
7521          var offset = params.shadowOffset;
7522          $cubeShadowEl.transform(("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + ((swiperHeight / 2) + offset) + "px, " + (-swiperHeight / 2 / scale2) + "px) rotateX(-90deg)"));
7523        }
7524      }
7525      var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;
7526      $wrapperEl
7527        .transform(("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)"));
7528    },
7529    setTransition: function setTransition(duration) {
7530      var swiper = this;
7531      var $el = swiper.$el;
7532      var slides = swiper.slides;
7533      slides
7534        .transition(duration)
7535        .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
7536        .transition(duration);
7537      if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
7538        $el.find('.swiper-cube-shadow').transition(duration);
7539      }
7540    },
7541  };
7542
7543  var EffectCube = {
7544    name: 'effect-cube',
7545    params: {
7546      cubeEffect: {
7547        slideShadows: true,
7548        shadow: true,
7549        shadowOffset: 20,
7550        shadowScale: 0.94,
7551      },
7552    },
7553    create: function create() {
7554      var swiper = this;
7555      Utils.extend(swiper, {
7556        cubeEffect: {
7557          setTranslate: Cube.setTranslate.bind(swiper),
7558          setTransition: Cube.setTransition.bind(swiper),
7559        },
7560      });
7561    },
7562    on: {
7563      beforeInit: function beforeInit() {
7564        var swiper = this;
7565        if (swiper.params.effect !== 'cube') { return; }
7566        swiper.classNames.push(((swiper.params.containerModifierClass) + "cube"));
7567        swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
7568        var overwriteParams = {
7569          slidesPerView: 1,
7570          slidesPerColumn: 1,
7571          slidesPerGroup: 1,
7572          watchSlidesProgress: true,
7573          resistanceRatio: 0,
7574          spaceBetween: 0,
7575          centeredSlides: false,
7576          virtualTranslate: true,
7577        };
7578        Utils.extend(swiper.params, overwriteParams);
7579        Utils.extend(swiper.originalParams, overwriteParams);
7580      },
7581      setTranslate: function setTranslate() {
7582        var swiper = this;
7583        if (swiper.params.effect !== 'cube') { return; }
7584        swiper.cubeEffect.setTranslate();
7585      },
7586      setTransition: function setTransition(duration) {
7587        var swiper = this;
7588        if (swiper.params.effect !== 'cube') { return; }
7589        swiper.cubeEffect.setTransition(duration);
7590      },
7591    },
7592  };
7593
7594  var Flip = {
7595    setTranslate: function setTranslate() {
7596      var swiper = this;
7597      var slides = swiper.slides;
7598      var rtl = swiper.rtlTranslate;
7599      for (var i = 0; i < slides.length; i += 1) {
7600        var $slideEl = slides.eq(i);
7601        var progress = $slideEl[0].progress;
7602        if (swiper.params.flipEffect.limitRotation) {
7603          progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
7604        }
7605        var offset = $slideEl[0].swiperSlideOffset;
7606        var rotate = -180 * progress;
7607        var rotateY = rotate;
7608        var rotateX = 0;
7609        var tx = -offset;
7610        var ty = 0;
7611        if (!swiper.isHorizontal()) {
7612          ty = tx;
7613          tx = 0;
7614          rotateX = -rotateY;
7615          rotateY = 0;
7616        } else if (rtl) {
7617          rotateY = -rotateY;
7618        }
7619
7620        $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
7621
7622        if (swiper.params.flipEffect.slideShadows) {
7623          // Set shadows
7624          var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
7625          var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
7626          if (shadowBefore.length === 0) {
7627            shadowBefore = $(("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>"));
7628            $slideEl.append(shadowBefore);
7629          }
7630          if (shadowAfter.length === 0) {
7631            shadowAfter = $(("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>"));
7632            $slideEl.append(shadowAfter);
7633          }
7634          if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }
7635          if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }
7636        }
7637        $slideEl
7638          .transform(("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)"));
7639      }
7640    },
7641    setTransition: function setTransition(duration) {
7642      var swiper = this;
7643      var slides = swiper.slides;
7644      var activeIndex = swiper.activeIndex;
7645      var $wrapperEl = swiper.$wrapperEl;
7646      slides
7647        .transition(duration)
7648        .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
7649        .transition(duration);
7650      if (swiper.params.virtualTranslate && duration !== 0) {
7651        var eventTriggered = false;
7652        // eslint-disable-next-line
7653        slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
7654          if (eventTriggered) { return; }
7655          if (!swiper || swiper.destroyed) { return; }
7656          // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
7657          eventTriggered = true;
7658          swiper.animating = false;
7659          var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
7660          for (var i = 0; i < triggerEvents.length; i += 1) {
7661            $wrapperEl.trigger(triggerEvents[i]);
7662          }
7663        });
7664      }
7665    },
7666  };
7667
7668  var EffectFlip = {
7669    name: 'effect-flip',
7670    params: {
7671      flipEffect: {
7672        slideShadows: true,
7673        limitRotation: true,
7674      },
7675    },
7676    create: function create() {
7677      var swiper = this;
7678      Utils.extend(swiper, {
7679        flipEffect: {
7680          setTranslate: Flip.setTranslate.bind(swiper),
7681          setTransition: Flip.setTransition.bind(swiper),
7682        },
7683      });
7684    },
7685    on: {
7686      beforeInit: function beforeInit() {
7687        var swiper = this;
7688        if (swiper.params.effect !== 'flip') { return; }
7689        swiper.classNames.push(((swiper.params.containerModifierClass) + "flip"));
7690        swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
7691        var overwriteParams = {
7692          slidesPerView: 1,
7693          slidesPerColumn: 1,
7694          slidesPerGroup: 1,
7695          watchSlidesProgress: true,
7696          spaceBetween: 0,
7697          virtualTranslate: true,
7698        };
7699        Utils.extend(swiper.params, overwriteParams);
7700        Utils.extend(swiper.originalParams, overwriteParams);
7701      },
7702      setTranslate: function setTranslate() {
7703        var swiper = this;
7704        if (swiper.params.effect !== 'flip') { return; }
7705        swiper.flipEffect.setTranslate();
7706      },
7707      setTransition: function setTransition(duration) {
7708        var swiper = this;
7709        if (swiper.params.effect !== 'flip') { return; }
7710        swiper.flipEffect.setTransition(duration);
7711      },
7712    },
7713  };
7714
7715  var Coverflow = {
7716    setTranslate: function setTranslate() {
7717      var swiper = this;
7718      var swiperWidth = swiper.width;
7719      var swiperHeight = swiper.height;
7720      var slides = swiper.slides;
7721      var $wrapperEl = swiper.$wrapperEl;
7722      var slidesSizesGrid = swiper.slidesSizesGrid;
7723      var params = swiper.params.coverflowEffect;
7724      var isHorizontal = swiper.isHorizontal();
7725      var transform = swiper.translate;
7726      var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);
7727      var rotate = isHorizontal ? params.rotate : -params.rotate;
7728      var translate = params.depth;
7729      // Each slide offset from center
7730      for (var i = 0, length = slides.length; i < length; i += 1) {
7731        var $slideEl = slides.eq(i);
7732        var slideSize = slidesSizesGrid[i];
7733        var slideOffset = $slideEl[0].swiperSlideOffset;
7734        var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;
7735
7736        var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
7737        var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
7738        // var rotateZ = 0
7739        var translateZ = -translate * Math.abs(offsetMultiplier);
7740
7741        var translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);
7742        var translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0;
7743
7744        // Fix for ultra small values
7745        if (Math.abs(translateX) < 0.001) { translateX = 0; }
7746        if (Math.abs(translateY) < 0.001) { translateY = 0; }
7747        if (Math.abs(translateZ) < 0.001) { translateZ = 0; }
7748        if (Math.abs(rotateY) < 0.001) { rotateY = 0; }
7749        if (Math.abs(rotateX) < 0.001) { rotateX = 0; }
7750
7751        var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px)  rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)";
7752
7753        $slideEl.transform(slideTransform);
7754        $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
7755        if (params.slideShadows) {
7756          // Set shadows
7757          var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
7758          var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
7759          if ($shadowBeforeEl.length === 0) {
7760            $shadowBeforeEl = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>"));
7761            $slideEl.append($shadowBeforeEl);
7762          }
7763          if ($shadowAfterEl.length === 0) {
7764            $shadowAfterEl = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>"));
7765            $slideEl.append($shadowAfterEl);
7766          }
7767          if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; }
7768          if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; }
7769        }
7770      }
7771
7772      // Set correct perspective for IE10
7773      if (Support.pointerEvents || Support.prefixedPointerEvents) {
7774        var ws = $wrapperEl[0].style;
7775        ws.perspectiveOrigin = center + "px 50%";
7776      }
7777    },
7778    setTransition: function setTransition(duration) {
7779      var swiper = this;
7780      swiper.slides
7781        .transition(duration)
7782        .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
7783        .transition(duration);
7784    },
7785  };
7786
7787  var EffectCoverflow = {
7788    name: 'effect-coverflow',
7789    params: {
7790      coverflowEffect: {
7791        rotate: 50,
7792        stretch: 0,
7793        depth: 100,
7794        modifier: 1,
7795        slideShadows: true,
7796      },
7797    },
7798    create: function create() {
7799      var swiper = this;
7800      Utils.extend(swiper, {
7801        coverflowEffect: {
7802          setTranslate: Coverflow.setTranslate.bind(swiper),
7803          setTransition: Coverflow.setTransition.bind(swiper),
7804        },
7805      });
7806    },
7807    on: {
7808      beforeInit: function beforeInit() {
7809        var swiper = this;
7810        if (swiper.params.effect !== 'coverflow') { return; }
7811
7812        swiper.classNames.push(((swiper.params.containerModifierClass) + "coverflow"));
7813        swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
7814
7815        swiper.params.watchSlidesProgress = true;
7816        swiper.originalParams.watchSlidesProgress = true;
7817      },
7818      setTranslate: function setTranslate() {
7819        var swiper = this;
7820        if (swiper.params.effect !== 'coverflow') { return; }
7821        swiper.coverflowEffect.setTranslate();
7822      },
7823      setTransition: function setTransition(duration) {
7824        var swiper = this;
7825        if (swiper.params.effect !== 'coverflow') { return; }
7826        swiper.coverflowEffect.setTransition(duration);
7827      },
7828    },
7829  };
7830
7831  
7831// Swiper Class
7832
7833  var components = [
7834    Device$1,
7835    Support$1,
7836    Browser$1,
7837    Resize,
7838    Observer$1,
7839    Virtual$1,
7840    Keyboard$1,
7841    Mousewheel$1,
7842    Navigation$1,
7843    Pagination$1,
7844    Scrollbar$1,
7845    Parallax$1,
7846    Zoom$1,
7847    Lazy$1,
7848    Controller$1,
7849    A11y,
7850    History$1,
7851    HashNavigation$1,
7852    Autoplay$1,
7853    EffectFade,
7854    EffectCube,
7855    EffectFlip,
7856    EffectCoverflow
7857  ];
7858
7859  if (typeof Swiper.use === 'undefined') {
7860    Swiper.use = Swiper.Class.use;
7861    Swiper.installModule = Swiper.Class.installModule;
7862  }
7863
7864  Swiper.use(components);
7865
7866  return Swiper;
7867
7868})));
7869
7870!function(e,n){"function"==typeof define&&(define.amd||define.cmd)?define(function(){return n(e)}):n(e,!0)}(this,function(e,n){function i(n,i,t){e.WeixinJSBridge?WeixinJSBridge.invoke(n,o(i),function(e){c(n,e,t)}):u(n,t)}function t(n,i,t){e.WeixinJSBridge?WeixinJSBridge.on(n,function(e){t&&t.trigger&&t.trigger(e),c(n,e,i)}):t?u(n,t):u(n,i)}function o(e){return e=e||{},e.appId=C.appId,e.verifyAppId=C.appId,e.verifySignType="sha1",e.verifyTimestamp=C.timestamp+"",e.verifyNonceStr=C.nonceStr,e.verifySignature=C.signature,e}function r(e){return{timeStamp:e.timestamp+"",nonceStr:e.nonceStr,package:e.package,paySign:e.paySign,signType:e.signType||"SHA1"}}function a(e){return e.postalCode=e.addressPostalCode,delete e.addressPostalCode,e.provinceName=e.proviceFirstStageName,delete e.proviceFirstStageName,e.cityName=e.addressCitySecondStageName,delete e.addressCitySecondStageName,e.countryName=e.addressCountiesThirdStageName,delete e.addressCountiesThirdStageName,e.detailInfo=e.addressDetailInfo,delete e.addressDetailInfo,e}function c(e,n,i){"openEnterpriseChat"==e&&(n.errCode=n.err_code),delete n.err_code,delete n.err_desc,delete n.err_detail;var t=n.errMsg;t||(t=n.err_msg,delete n.err_msg,t=s(e,t),n.errMsg=t),(i=i||{})._complete&&(i._complete(n),delete i._complete),t=n.errMsg||"",C.debug&&!i.isInnerInvoke&&alert(JSON.stringify(n));var o=t.indexOf(":");switch(t.substring(o+1)){case"ok":i.success&&i.success(n);break;case"cancel":i.cancel&&i.cancel(n);break;default:i.fail&&i.fail(n)}i.complete&&i.complete(n)}function s(e,n){var i=e,t=v[i];t&&(i=t);var o="ok";if(n){var r=n.indexOf(":");"confirm"==(o=n.substring(r+1))&&(o="ok"),"failed"==o&&(o="fail"),-1!=o.indexOf("failed_")&&(o=o.substring(7)),-1!=o.indexOf("fail_")&&(o=o.substring(5)),"access denied"!=(o=(o=o.replace(/_/g," ")).toLowerCase())&&"no permission to execute"!=o||(o="permission denied"),"config"==i&&"function not exist"==o&&(o="ok"),""==o&&(o="fail")}return n=i+":"+o}function d(e){if(e){for(var n=0,i=e.length;n<i;++n){var t=e[n],o=h[t];o&&(e[n]=o)}return e}}function u(e,n){if(!(!C.debug||n&&n.isInnerInvoke)){var i=v[e];i&&(e=i),n&&n._complete&&delete n._complete,console.log('"'+e+'",',n||"")}}function l(e){if(!(k||w||C.debug||x<"6.0.2"||V.systemType<0)){var n=new Image;V.appId=C.appId,V.initTime=A.initEndTime-A.initStartTime,V.preVerifyTime=A.preVerifyEndTime-A.preVerifyStartTime,N.getNetworkType({isInnerInvoke:!0,success:function(e){V.networkType=e.networkType;var i="https://open.weixin.qq.com/sdk/report?v="+V.version+"&o="+V.isPreVerifyOk+"&s="+V.systemType+"&c="+V.clientVersion+"&a="+V.appId+"&n="+V.networkType+"&i="+V.initTime+"&p="+V.preVerifyTime+"&u="+V.url;n.src=i}})}}function p(){return(new Date).getTime()}function f(n){T&&(e.WeixinJSBridge?n():S.addEventListener&&S.addEventListener("WeixinJSBridgeReady",n,!1))}function m(){N.invoke||(N.invoke=function(n,i,t){e.WeixinJSBridge&&WeixinJSBridge.invoke(n,o(i),t)},N.on=function(n,i){e.WeixinJSBridge&&WeixinJSBridge.on(n,i)})}function g(e){if("string"==typeof e&&e.length>0){var n=e.split("?")[0],i=e.split("?")[1];return n+=".html",void 0!==i?n+"?"+i:n}}if(!e.jWeixin){var h={config:"preVerifyJSAPI",onMenuShareTimeline:"menu:share:timeline",onMenuShareAppMessage:"menu:share:appmessage",onMenuShareQQ:"menu:share:qq",onMenuShareWeibo:"menu:share:weiboApp",onMenuShareQZone:"menu:share:QZone",previewImage:"imagePreview",getLocation:"geoLocation",openProductSpecificView:"openProductViewWithPid",addCard:"batchAddCard",openCard:"batchViewCard",chooseWXPay:"getBrandWCPayRequest",openEnterpriseRedPacket:"getRecevieBizHongBaoRequest",startSearchBeacons:"startMonitoringBeacons",stopSearchBeacons:"stopMonitoringBeacons",onSearchBeacons:"onBeaconsInRange",consumeAndShareCard:"consumedShareCard",openAddress:"editAddress"},v=function(){var e={};for(var n in h)e[h[n]]=n;return e}(),S=e.document,I=S.title,y=navigator.userAgent.toLowerCase(),_=navigator.platform.toLowerCase(),k=!(!_.match("mac")&&!_.match("win")),w=-1!=y.indexOf("wx
7870debugger"),T=-1!=y.indexOf("micromessenger"),M=-1!=y.indexOf("android"),P=-1!=y.indexOf("iphone")||-1!=y.indexOf("ipad"),x=function(){var e=y.match(/micromessenger\/(\d+\.\d+\.\d+)/)||y.match(/micromessenger\/(\d+\.\d+)/);return e?e[1]:""}(),A={initStartTime:p(),initEndTime:0,preVerifyStartTime:0,preVerifyEndTime:0},V={version:1,appId:"",initTime:0,preVerifyTime:0,networkType:"",isPreVerifyOk:1,systemType:P?1:M?2:-1,clientVersion:x,url:encodeURIComponent(location.href)},C={},L={_completes:[]},B={state:0,data:{}};f(function(){A.initEndTime=p()});var O=!1,E=[],N={config:function(e){C=e,u("config",e);var n=!1!==C.check;f(function(){if(n)i(h.config,{verifyJsApiList:d(C.jsApiList)},function(){L._complete=function(e){A.preVerifyEndTime=p(),B.state=1,B.data=e},L.success=function(e){V.isPreVerifyOk=0},L.fail=function(e){L._fail?L._fail(e):B.state=-1};var e=L._completes;return e.push(function(){l()}),L.complete=function(n){for(var i=0,t=e.length;i<t;++i)e[i]();L._completes=[]},L}()),A.preVerifyStartTime=p();else{B.state=1;for(var e=L._completes,t=0,o=e.length;t<o;++t)e[t]();L._completes=[]}}),m()},ready:function(e){0!=B.state?e():(L._completes.push(e),!T&&C.debug&&e())},error:function(e){x<"6.0.2"||(-1==B.state?e(B.data):L._fail=e)},checkJsApi:function(e){var n=function(e){var n=e.checkResult;for(var i in n){var t=v[i];t&&(n[t]=n[i],delete n[i])}return e};i("checkJsApi",{jsApiList:d(e.jsApiList)},(e._complete=function(e){if(M){var i=e.checkResult;i&&(e.checkResult=JSON.parse(i))}e=n(e)},e))},onMenuShareTimeline:function(e){t(h.onMenuShareTimeline,{complete:function(){i("shareTimeline",{title:e.title||I,desc:e.title||I,img_url:e.imgUrl||"",link:e.link||location.href,type:e.type||"link",data_url:e.dataUrl||""},e)}},e)},onMenuShareAppMessage:function(e){t(h.onMenuShareAppMessage,{complete:function(n){"favorite"===n.scene?i("sendAppMessage",{title:e.title||I,desc:e.desc||"",link:e.link||location.href,img_url:e.imgUrl||"",type:e.type||"link",data_url:e.dataUrl||""}):i("sendAppMessage",{title:e.title||I,desc:e.desc||"",link:e.link||location.href,img_url:e.imgUrl||"",type:e.type||"link",data_url:e.dataUrl||""},e)}},e)},onMenuShareQQ:function(e){t(h.onMenuShareQQ,{complete:function(){i("shareQQ",{title:e.title||I,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},onMenuShareWeibo:function(e){t(h.onMenuShareWeibo,{complete:function(){i("shareWeiboApp",{title:e.title||I,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},onMenuShareQZone:function(e){t(h.onMenuShareQZone,{complete:function(){i("shareQZone",{title:e.title||I,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},updateTimelineShareData:function(e){i("updateTimelineShareData",{title:e.title,link:e.link,imgUrl:e.imgUrl},e)},updateAppMessageShareData:function(e){i("updateAppMessageShareData",{title:e.title,desc:e.desc,link:e.link,imgUrl:e.imgUrl},e)},startRecord:function(e){i("startRecord",{},e)},stopRecord:function(e){i("stopRecord",{},e)},onVoiceRecordEnd:function(e){t("onVoiceRecordEnd",e)},playVoice:function(e){i("playVoice",{localId:e.localId},e)},pauseVoice:function(e){i("pauseVoice",{localId:e.localId},e)},stopVoice:function(e){i("stopVoice",{localId:e.localId},e)},onVoicePlayEnd:function(e){t("onVoicePlayEnd",e)},uploadVoice:function(e){i("uploadVoice",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},downloadVoice:function(e){i("downloadVoice",{serverId:e.serverId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},translateVoice:function(e){i("translateVoice",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},chooseImage:function(e){i("chooseImage",{scene:"1|2",count:e.count||9,sizeType:e.sizeType||["original","compressed"],sourceType:e.sourceType||["album","camera"]},(e._complete=function(e){if(M){var n=e.localIds;try{n&&(e.localIds=JSON.parse(n))}catch(e){}}},e))},getLocation:function(e){},previewImage:function(e){i(h.previewImage,{current:e.current,urls:e.urls},e)},uploadImage:function(e){i("uploadImage",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},downloadImage:function(e){i("downloadImage",{serverId:e.serverId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},getLocalImgData:function(e){!1===O?(O=!0,i("getLocalImgData",{localId:e.localId},(e._complete=function(e){if(O=!1,E.length>0){var n=E.shift();wx.getLocalImgData(n)}},e))):E.push(e)},getNetworkType:function(e){var n=function(e){var n=e.errMsg;e.errMsg="getNetworkType:ok";var i=e.subtype;if(delete e.subtype,i)e.networkType=i;else{var t=n.indexOf(":"),o=n.substring(t+1);switch(o){case"wifi":case"edge":case"wwan":e.networkType=o;break;default:e.errMsg="getNetworkType:fail"}}return e};i("getNetworkType",{},(e._complete=function(e){e=n(e)},e))},openLocation:function(e){i("openLocation",{latitude:e.latitude,longitude:e.longitude,name:e.name||"",address:e.address||"",scale:e.scale||28,infoUrl:e.infoUrl||""},e)},getLocation:function(e){e=e||{},i(h.getLocation,{type:e.type||"wgs84"},(e._complete=function(e){delete e.type},e))},hideOptionMenu:function(e){i("hideOptionMenu",{},e)},showOptionMenu:function(e){i("showOptionMenu",{},e)},closeWindow:function(e){i("closeWindow",{},e=e||{})},hideMenuItems:function(e){i("hideMenuItems",{menuList:e.menuList},e)},showMenuItems:function(e){i("showMenuItems",{menuList:e.menuList},e)},hideAllNonBaseMenuItem:function(e){i("hideAllNonBaseMenuItem",{},e)},showAllNonBaseMenuItem:function(e){i("showAllNonBaseMenuItem",{},e)},scanQRCode:function(e){i("scanQRCode",{needResult:(e=e||{}).needResult||0,scanType:e.scanType||["qrCode","barCode"]},(e._complete=function(e){if(P){var n=e.resultStr;if(n){var i=JSON.parse(n);e.resultStr=i&&i.scan_code&&i.scan_code.scan_result}}},e))},openAddress:function(e){i(h.openAddress,{},(e._complete=function(e){e=a(e)},e))},openProductSpecificView:function(e){i(h.openProductSpecificView,{pid:e.productId,view_type:e.viewType||0,ext_info:e.extInfo},e)},addCard:function(e){for(var n=e.cardList,t=[],o=0,r=n.length;o<r;++o){var a=n[o],c={card_id:a.cardId,card_ext:a.cardExt};t.push(c)}i(h.addCard,{card_list:t},(e._complete=function(e){var n=e.card_list;if(n){for(var i=0,t=(n=JSON.parse(n)).length;i<t;++i){var o=n[i];
7870o.cardId=o.card_id,o.cardExt=o.card_ext,o.isSuccess=!!o.is_succ,delete o.card_id,delete o.card_ext,delete o.is_succ}e.cardList=n,delete e.card_list}},e))},chooseCard:function(e){i("chooseCard",{app_id:C.appId,location_id:e.shopId||"",sign_type:e.signType||"SHA1",card_id:e.cardId||"",card_type:e.cardType||"",card_sign:e.cardSign,time_stamp:e.timestamp+"",nonce_str:e.nonceStr},(e._complete=function(e){e.cardList=e.choose_card_info,delete e.choose_card_info},e))},openCard:function(e){for(var n=e.cardList,t=[],o=0,r=n.length;o<r;++o){var a=n[o],c={card_id:a.cardId,code:a.code};t.push(c)}i(h.openCard,{card_list:t},e)},consumeAndShareCard:function(e){i(h.consumeAndShareCard,{consumedCardId:e.cardId,consumedCode:e.code},e)},chooseWXPay:function(e){i(h.chooseWXPay,r(e),e)},openEnterpriseRedPacket:function(e){i(h.openEnterpriseRedPacket,r(e),e)},startSearchBeacons:function(e){i(h.startSearchBeacons,{ticket:e.ticket},e)},stopSearchBeacons:function(e){i(h.stopSearchBeacons,{},e)},onSearchBeacons:function(e){t(h.onSearchBeacons,e)},openEnterpriseChat:function(e){i("openEnterpriseChat",{useridlist:e.userIds,chatname:e.groupName},e)},launchMiniProgram:function(e){i("launchMiniProgram",{targetAppId:e.targetAppId,path:g(e.path),envVersion:e.envVersion},e)},miniProgram:{navigateBack:function(e){e=e||{},f(function(){i("invokeMiniProgramAPI",{name:"navigateBack",arg:{delta:e.delta||1}},e)})},navigateTo:function(e){f(function(){i("invokeMiniProgramAPI",{name:"navigateTo",arg:{url:e.url}},e)})},redirectTo:function(e){f(function(){i("invokeMiniProgramAPI",{name:"redirectTo",arg:{url:e.url}},e)})},switchTab:function(e){f(function(){i("invokeMiniProgramAPI",{name:"switchTab",arg:{url:e.url}},e)})},reLaunch:function(e){f(function(){i("invokeMiniProgramAPI",{name:"reLaunch",arg:{url:e.url}},e)})},postMessage:function(e){f(function(){i("invokeMiniProgramAPI",{name:"postMessage",arg:e.data||{}},e)})},getEnv:function(n){f(function(){n({miniprogram:"miniprogram"===e.__wxjs_environment})})}}},b=1,R={};return S.addEventListener("error",function(e){if(!M){var n=e.target,i=n.tagName,t=n.src;if(("IMG"==i||"VIDEO"==i||"AUDIO"==i||"SOURCE"==i)&&-1!=t.indexOf("wxlocalresource://")){e.preventDefault(),e.stopPropagation();var o=n["wx-id"];if(o||(o=b++,n["wx-id"]=o),R[o])return;R[o]=!0,wx.ready(function(){wx.getLocalImgData({localId:t,success:function(e){n.src=e.localData}})})}}},!0),S.addEventListener("load",function(e){if(!M){var n=e.target,i=n.tagName;n.src;if("IMG"==i||"VIDEO"==i||"AUDIO"==i||"SOURCE"==i){var t=n["wx-id"];t&&(R[t]=!1)}}},!0),n&&(e.wx=e.jWeixin=N),N}});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.