1/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */�
vendor: 15,004 bytes, lines 1-2
1 2!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}
vendor: 4,356 bytes, line 2
2:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];
vendor: 10,068 bytes, line 2
2if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(D).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pe
vendor: 8,547 bytes, line 2
2nding",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone
vendor: 51,416 bytes, line 2
2=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Ae(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,Ce)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click",Ce),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ce:Ee,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Ee,isPropagationStopped:Ee,isImmediatePropagationStopped:Ee,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ce,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ce,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ce,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&be.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&we.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Ae(this,e,Se),!1},trigger:function(){return Ae(this,e),!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return ke(this,e,t,n,r)},one:function(e,t,n,r){return ke(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ee),this.each(function(){S.event.remove(this,e,n,t)})}});var Ne=/<script|<style|<link/i,De=/checked\s*(?:[^=]|=\s*.checked.)/i,je=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function Pe(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&De.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Pe(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),Le)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,He),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(je,""),u,l))}return n}function Re(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Oe(o[r],a[r]);else Oe(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Re(this,e,!0)},remove:function(e){return Re(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Pe(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)})},prepend:function(){return Pe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Pe(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Me=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Ie=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},We=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Fe=new RegExp(ne.join("|"),"i");function Be(e,t,n){var r,i,o,a,s=e.style;return(n=n||Ie(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Me.test(a)&&Fe.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px",t.style.height="1px",n.style.height="9px",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=3<parseInt(r.height),re.removeChild(e)),a}}))}();var _e=["Webkit","Moz","ms"],ze=E.createElement("div").style,Ue={};function Xe(e){var t=S.cssProps[e]||Ue[e];return t||(e in ze?e:Ue[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=_e.length;while(n--)if((e=_e[n]+t)in ze)return e}(e)||e)}var Ve=/^(none|table(?!-c[ea]).+)/,Ge=/^--/,Ye={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Ie(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ge.test(t),l=e.style;if(u||(t=Xe(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ge.test(t)||(t=Xe(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Qe&&(i=Qe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ve.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,u,n):We(e,Ye,function(){return Ze(e,u,n)})},set:function(e,t,n){var r,i=Ie(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Je(0,t,s)}}}),S.cssHooks.marginLeft=$e(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-We(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Je)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ie(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=et).prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}}).init.prototype=et.prototype,(et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[Xe(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=et.prototype.init,S.fx.step={};var tt,nt,rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){nt&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(st):C.setTimeout(st,S.fx.interval),S.fx.tick())}function ut(){return C.setTimeout(function(){tt=void 0}),tt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ft(o,e,t){var n,a,r=0,i=ft.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=tt||ut(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:tt||ut(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=ft.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ct,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(ft,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],ft.tweeners[n]=ft.tweeners[n]||[],ft.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ot.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ct(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?ft.prefilters.unshift(e):ft.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=ft(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&at.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(lt(r,!0),e,t,n)}}),S.each({slideDown:lt("show"),slideUp:lt("hide"),slideToggle:lt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(tt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),tt=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){nt||(nt=!0,st())},S.fx.stop=function(){nt=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},rt=E.createElement("input"),it=E.createElement("select").appendChild(E.createElement("option")),rt.type="checkbox",y.checkOn=""!==rt.value,y.optSelected=it.selected,(rt=E.createElement("input")).value="t",rt.type="radio",y.radioValue="t"===rt.value;var pt,dt=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=dt[t]||S.find.attr;dt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=dt[o],dt[o]=r,r=null!=a(e,t,n)?o:null,dt[o]=i),r}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(P)||[]).join(" ")}function yt(e){return e.getAttribute&&e.getAttribute("class")||""}function mt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,yt(this)))});if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,yt(this)))});if(!arguments.length)return this.attr("class","");if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,yt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=mt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=yt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+vt(yt(n))+" ").indexOf(t))return!0;return!1}});var xt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(xt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:vt(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!bt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,bt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,wt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,wt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var Tt=C.location,Ct={guid:Date.now()},Et=/\?/;S.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||S.error("Invalid XML: "+e),t};var St=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function Dt(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||St.test(n)?i(n,t):Dt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)Dt(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)Dt(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var jt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=E.createElement("a");function Ft(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Bt(t,i,o,a){var s={},u=t===Mt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function $t(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Wt.href=Tt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,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":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?$t($t(e,S.ajaxSettings),t):$t(S.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Ht.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Tt.href)+"").replace(Pt,Tt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Wt.protocol+"//"+Wt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Bt(Rt,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ot.test(v.type),f=v.url.replace(qt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(jt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Et.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Lt,"$1"),o=(Et.test(f)?"&":"?")+"_="+Ct.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+It+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Bt(Mt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=S.ajaxSettings.xhr();y.cors=!!zt&&"withCredentials"in zt,y.ajax=zt=!!zt,S.ajaxTransport(function(i){var o,a;if(y.cors||zt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(_t[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=vt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Gt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Gt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Yt=C.jQuery,Qt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Qt),e&&C.jQuery===S&&(C.jQuery=Yt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
vendor: 2,832 bytes, lines 2-77
2 3 4/*! 5 * Bootstrap v4.6.0 (https://getbootstrap.com/) 6 * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 7 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 8 */ 9(function (global, factory) { 10 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery')) : 11 typeof define === 'function' && define.amd ? define(['exports', 'jquery'], factory) : 12 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery)); 13}(this, (function (exports, $) { 'use strict'; 14 15 function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } 16 17 var $__default = /*#__PURE__*/_interopDefaultLegacy($); 18 19 function _defineProperties(target, props) { 20 for (var i = 0; i < props.length; i++) { 21 var descriptor = props[i]; 22 descriptor.enumerable = descriptor.enumerable || false; 23 descriptor.configurable = true; 24 if ("value" in descriptor) descriptor.writable = true; 25 Object.defineProperty(target, descriptor.key, descriptor); 26 } 27 } 28 29 function _createClass(Constructor, protoProps, staticProps) { 30 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 31 if (staticProps) _defineProperties(Constructor, staticProps); 32 return Constructor; 33 } 34 35 function _extends() { 36 _extends = Object.assign || function (target) { 37 for (var i = 1; i < arguments.length; i++) { 38 var source = arguments[i]; 39 40 for (var key in source) { 41 if (Object.prototype.hasOwnProperty.call(source, key)) { 42 target[key] = source[key]; 43 } 44 } 45 } 46 47 return target; 48 }; 49 50 return _extends.apply(this, arguments); 51 } 52 53 function _inheritsLoose(subClass, superClass) { 54 subClass.prototype = Object.create(superClass.prototype); 55 subClass.prototype.constructor = subClass; 56 subClass.__proto__ = superClass; 57 } 58 59 /** 60 * -------------------------------------------------------------------------- 61 * Bootstrap (v4.6.0): util.js 62 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 63 * -------------------------------------------------------------------------- 64 */ 65 /** 66 * ------------------------------------------------------------------------ 67 * Private TransitionEnd Helpers 68 * ------------------------------------------------------------------------ 69 */ 70 71 var TRANSITION_END = 'transitionend'; 72 var MAX_UID = 1000000; 73 var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) 74 75 function toType(obj) { 76 if (obj === null || typeof obj === 'undefined') { 77 return "" + obj;
vendor: 10,519 bytes, lines 78-390
78 } 79 80 return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); 81 } 82 83 function getSpecialTransitionEndEvent() { 84 return { 85 bindType: TRANSITION_END, 86 delegateType: TRANSITION_END, 87 handle: function handle(event) { 88 if ($__default['default'](event.target).is(this)) { 89 return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params 90 } 91 92 return undefined; 93 } 94 }; 95 } 96 97 function transitionEndEmulator(duration) { 98 var _this = this; 99 100 var called = false; 101 $__default['default'](this).one(Util.TRANSITION_END, function () { 102 called = true; 103 }); 104 setTimeout(function () { 105 if (!called) { 106 Util.triggerTransitionEnd(_this); 107 } 108 }, duration); 109 return this; 110 } 111 112 function setTransitionEndSupport() { 113 $__default['default'].fn.emulateTransitionEnd = transitionEndEmulator; 114 $__default['default'].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); 115 } 116 /** 117 * -------------------------------------------------------------------------- 118 * Public Util Api 119 * -------------------------------------------------------------------------- 120 */ 121 122 123 var Util = { 124 TRANSITION_END: 'bsTransitionEnd', 125 getUID: function getUID(prefix) { 126 do { 127 prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here 128 } while (document.getElementById(prefix)); 129 130 return prefix; 131 }, 132 getSelectorFromElement: function getSelectorFromElement(element) { 133 var selector = element.getAttribute('data-target'); 134 135 if (!selector || selector === '#') { 136 var hrefAttr = element.getAttribute('href'); 137 selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''; 138 } 139 140 try { 141 return document.querySelector(selector) ? selector : null; 142 } catch (_) { 143 return null; 144 } 145 }, 146 getTransitionDurationFromElement: function getTransitionDurationFromElement(element) { 147 if (!element) { 148 return 0; 149 } // Get transition-duration of the element 150 151 152 var transitionDuration = $__default['default'](element).css('transition-duration'); 153 var transitionDelay = $__default['default'](element).css('transition-delay'); 154 var floatTransitionDuration = parseFloat(transitionDuration); 155 var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found 156 157 if (!floatTransitionDuration && !floatTransitionDelay) { 158 return 0; 159 } // If multiple durations are defined, take the first 160 161 162 transitionDuration = transitionDuration.split(',')[0]; 163 transitionDelay = transitionDelay.split(',')[0]; 164 return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; 165 }, 166 reflow: function reflow(element) { 167 return element.offsetHeight; 168 }, 169 triggerTransitionEnd: function triggerTransitionEnd(element) { 170 $__default['default'](element).trigger(TRANSITION_END); 171 }, 172 supportsTransitionEnd: function supportsTransitionEnd() { 173 return Boolean(TRANSITION_END); 174 }, 175 isElement: function isElement(obj) { 176 return (obj[0] || obj).nodeType; 177 }, 178 typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { 179 for (var property in configTypes) { 180 if (Object.prototype.hasOwnProperty.call(configTypes, property)) { 181 var expectedTypes = configTypes[property]; 182 var value = config[property]; 183 var valueType = value && Util.isElement(value) ? 'element' : toType(value); 184 185 if (!new RegExp(expectedTypes).test(valueType)) { 186 throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); 187 } 188 } 189 } 190 }, 191 findShadowRoot: function findShadowRoot(element) { 192 if (!document.documentElement.attachShadow) { 193 return null; 194 } // Can find the shadow root otherwise it'll return the document 195 196 197 if (typeof element.getRootNode === 'function') { 198 var root = element.getRootNode(); 199 return root instanceof ShadowRoot ? root : null; 200 } 201 202 if (element instanceof ShadowRoot) { 203 return element; 204 } // when we don't find a shadow root 205 206 207 if (!element.parentNode) { 208 return null; 209 } 210 211 return Util.findShadowRoot(element.parentNode); 212 }, 213 jQueryDetection: function jQueryDetection() { 214 if (typeof $__default['default'] === 'undefined') { 215 throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.'); 216 } 217 218 var version = $__default['default'].fn.jquery.split(' ')[0].split('.'); 219 var minMajor = 1; 220 var ltMajor = 2; 221 var minMinor = 9; 222 var minPatch = 1; 223 var maxMajor = 4; 224 225 if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) { 226 throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0'); 227 } 228 } 229 }; 230 Util.jQueryDetection(); 231 setTransitionEndSupport(); 232 233 /**! 234 * @fileOverview Kickass library to create and place poppers near their reference elements. 235 * @version 1.16.1 236 * @license 237 * Copyright (c) 2016 Federico Zivolo and contributors 238 * 239 * Permission is hereby granted, free of charge, to any person obtaining a copy 240 * of this software and associated documentation files (the "Software"), to deal 241 * in the Software without restriction, including without limitation the rights 242 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 243 * copies of the Software, and to permit persons to whom the Software is 244 * furnished to do so, subject to the following conditions: 245 * 246 * The above copyright notice and this permission notice shall be included in all 247 * copies or substantial portions of the Software. 248 * 249 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 250 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 251 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 252 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 253 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 254 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 255 * SOFTWARE. 256 */ 257 var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined'; 258 259 var timeoutDuration = function () { 260 var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; 261 for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { 262 if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) { 263 return 1; 264 } 265 } 266 return 0; 267 }(); 268 269 function microtaskDebounce(fn) { 270 var called = false; 271 return function () { 272 if (called) { 273 return; 274 } 275 called = true; 276 window.Promise.resolve().then(function () { 277 called = false; 278 fn(); 279 }); 280 }; 281 } 282 283 function taskDebounce(fn) { 284 var scheduled = false; 285 return function () { 286 if (!scheduled) { 287 scheduled = true; 288 setTimeout(function () { 289 scheduled = false; 290 fn(); 291 }, timeoutDuration); 292 } 293 }; 294 } 295 296 var supportsMicroTasks = isBrowser && window.Promise; 297 298 /** 299 * Create a debounced version of a method, that's asynchronously deferred 300 * but called in the minimum time possible. 301 * 302 * @method 303 * @memberof Popper.Utils 304 * @argument {Function} fn 305 * @returns {Function} 306 */ 307 var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce; 308 309 /** 310 * Check if the given variable is a function 311 * @method 312 * @memberof Popper.Utils 313 * @argument {Any} functionToCheck - variable to check 314 * @returns {Boolean} answer to: is a function? 315 */ 316 function isFunction(functionToCheck) { 317 var getType = {}; 318 return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; 319 } 320 321 /** 322 * Get CSS computed property of the given element 323 * @method 324 * @memberof Popper.Utils 325 * @argument {Eement} element 326 * @argument {String} property 327 */ 328 function getStyleComputedProperty(element, property) { 329 if (element.nodeType !== 1) { 330 return []; 331 } 332 // NOTE: 1 DOM access here 333 var window = element.ownerDocument.defaultView; 334 var css = window.getComputedStyle(element, null); 335 return property ? css[property] : css; 336 } 337 338 /** 339 * Returns the parentNode or the host of the element 340 * @method 341 * @memberof Popper.Utils 342 * @argument {Element} element 343 * @returns {Element} parent 344 */ 345 function getParentNode(element) { 346 if (element.nodeName === 'HTML') { 347 return element; 348 } 349 return element.parentNode || element.host; 350 } 351 352 /** 353 * Returns the scrolling parent of the given element 354 * @method 355 * @memberof Popper.Utils 356 * @argument {Element} element 357 * @returns {Element} scroll parent 358 */ 359 function getScrollParent(element) { 360 // Return body, `getScroll` will take care to get the correct `scrollTop` from it 361 if (!element) { 362 return document.body; 363 } 364 365 switch (element.nodeName) { 366 case 'HTML': 367 case 'BODY': 368 return element.ownerDocument.body; 369 case '#document': 370 return element.body; 371 } 372 373 // Firefox want us to check `-x` and `-y` variations as well 374 375 var _getStyleComputedProp = getStyleComputedProperty(element), 376 overflow = _getStyleComputedProp.overflow, 377 overflowX = _getStyleComputedProp.overflowX, 378 overflowY = _getStyleComputedProp.overflowY; 379 380 if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) { 381 return element; 382 } 383 384 return getScrollParent(getParentNode(element)); 385 } 386 387 /** 388 * Returns the reference node of the reference object, or the reference object itself. 389 * @method 390 * @memberof Popper.Utils
vendor: 8,396 bytes, lines 391-639
391 * @param {Element|Object} reference - the reference element (the popper will be relative to this) 392 * @returns {Element} parent 393 */ 394 function getReferenceNode(reference) { 395 return reference && reference.referenceNode ? reference.referenceNode : reference; 396 } 397 398 var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode); 399 var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent); 400 401 /** 402 * Determines if the browser is Internet Explorer 403 * @method 404 * @memberof Popper.Utils 405 * @param {Number} version to check 406 * @returns {Boolean} isIE 407 */ 408 function isIE(version) { 409 if (version === 11) { 410 return isIE11; 411 } 412 if (version === 10) { 413 return isIE10; 414 } 415 return isIE11 || isIE10; 416 } 417 418 /** 419 * Returns the offset parent of the given element 420 * @method 421 * @memberof Popper.Utils 422 * @argument {Element} element 423 * @returns {Element} offset parent 424 */ 425 function getOffsetParent(element) { 426 if (!element) { 427 return document.documentElement; 428 } 429 430 var noOffsetParent = isIE(10) ? document.body : null; 431 432 // NOTE: 1 DOM access here 433 var offsetParent = element.offsetParent || null; 434 // Skip hidden elements which don't have an offsetParent 435 while (offsetParent === noOffsetParent && element.nextElementSibling) { 436 offsetParent = (element = element.nextElementSibling).offsetParent; 437 } 438 439 var nodeName = offsetParent && offsetParent.nodeName; 440 441 if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') { 442 return element ? element.ownerDocument.documentElement : document.documentElement; 443 } 444 445 // .offsetParent will return the closest TH, TD or TABLE in case 446 // no offsetParent is present, I hate this job... 447 if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') { 448 return getOffsetParent(offsetParent); 449 } 450 451 return offsetParent; 452 } 453 454 function isOffsetContainer(element) { 455 var nodeName = element.nodeName; 456 457 if (nodeName === 'BODY') { 458 return false; 459 } 460 return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element; 461 } 462 463 /** 464 * Finds the root node (document, shadowDOM root) of the given element 465 * @method 466 * @memberof Popper.Utils 467 * @argument {Element} node 468 * @returns {Element} root node 469 */ 470 function getRoot(node) { 471 if (node.parentNode !== null) { 472 return getRoot(node.parentNode); 473 } 474 475 return node; 476 } 477 478 /** 479 * Finds the offset parent common to the two provided nodes 480 * @method 481 * @memberof Popper.Utils 482 * @argument {Element} element1 483 * @argument {Element} element2 484 * @returns {Element} common offset parent 485 */ 486 function findCommonOffsetParent(element1, element2) { 487 // This check is needed to avoid errors in case one of the elements isn't defined for any reason 488 if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { 489 return document.documentElement; 490 } 491 492 // Here we make sure to give as "start" the element that comes first in the DOM 493 var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING; 494 var start = order ? element1 : element2; 495 var end = order ? element2 : element1; 496 497 // Get common ancestor container 498 var range = document.createRange(); 499 range.setStart(start, 0); 500 range.setEnd(end, 0); 501 var commonAncestorContainer = range.commonAncestorContainer; 502 503 // Both nodes are inside #document 504 505 if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) { 506 if (isOffsetContainer(commonAncestorContainer)) { 507 return commonAncestorContainer; 508 } 509 510 return getOffsetParent(commonAncestorContainer); 511 } 512 513 // one of the nodes is inside shadowDOM, find which one 514 var element1root = getRoot(element1); 515 if (element1root.host) { 516 return findCommonOffsetParent(element1root.host, element2); 517 } else { 518 return findCommonOffsetParent(element1, getRoot(element2).host); 519 } 520 } 521 522 /** 523 * Gets the scroll value of the given element in the given side (top and left) 524 * @method 525 * @memberof Popper.Utils 526 * @argument {Element} element 527 * @argument {String} side `top` or `left` 528 * @returns {number} amount of scrolled pixels 529 */ 530 function getScroll(element) { 531 var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top'; 532 533 var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft'; 534 var nodeName = element.nodeName; 535 536 if (nodeName === 'BODY' || nodeName === 'HTML') { 537 var html = element.ownerDocument.documentElement; 538 var scrollingElement = element.ownerDocument.scrollingElement || html; 539 return scrollingElement[upperSide]; 540 } 541 542 return element[upperSide]; 543 } 544 545 /* 546 * Sum or subtract the element scroll values (left and top) from a given rect object 547 * @method 548 * @memberof Popper.Utils 549 * @param {Object} rect - Rect object you want to change 550 * @param {HTMLElement} element - The element from the function reads the scroll values 551 * @param {Boolean} subtract - set to true if you want to subtract the scroll values 552 * @return {Object} rect - The modifier rect object 553 */ 554 function includeScroll(rect, element) { 555 var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; 556 557 var scrollTop = getScroll(element, 'top'); 558 var scrollLeft = getScroll(element, 'left'); 559 var modifier = subtract ? -1 : 1; 560 rect.top += scrollTop * modifier; 561 rect.bottom += scrollTop * modifier; 562 rect.left += scrollLeft * modifier; 563 rect.right += scrollLeft * modifier; 564 return rect; 565 } 566 567 /* 568 * Helper to detect borders of a given element 569 * @method 570 * @memberof Popper.Utils 571 * @param {CSSStyleDeclaration} styles 572 * Result of `getStyleComputedProperty` on the given element 573 * @param {String} axis - `x` or `y` 574 * @return {number} borders - The borders size of the given axis 575 */ 576 577 function getBordersSize(styles, axis) { 578 var sideA = axis === 'x' ? 'Left' : 'Top'; 579 var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; 580 581 return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']); 582 } 583 584 function getSize(axis, body, html, computedStyle) { 585 return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0); 586 } 587 588 function getWindowSizes(document) { 589 var body = document.body; 590 var html = document.documentElement; 591 var computedStyle = isIE(10) && getComputedStyle(html); 592 593 return { 594 height: getSize('Height', body, html, computedStyle), 595 width: getSize('Width', body, html, computedStyle) 596 }; 597 } 598 599 var classCallCheck = function (instance, Constructor) { 600 if (!(instance instanceof Constructor)) { 601 throw new TypeError("Cannot call a class as a function"); 602 } 603 }; 604 605 var createClass = function () { 606 function defineProperties(target, props) { 607 for (var i = 0; i < props.length; i++) { 608 var descriptor = props[i]; 609 descriptor.enumerable = descriptor.enumerable || false; 610 descriptor.configurable = true; 611 if ("value" in descriptor) descriptor.writable = true; 612 Object.defineProperty(target, descriptor.key, descriptor); 613 } 614 } 615 616 return function (Constructor, protoProps, staticProps) { 617 if (protoProps) defineProperties(Constructor.prototype, protoProps); 618 if (staticProps) defineProperties(Constructor, staticProps); 619 return Constructor; 620 }; 621 }(); 622 623 624 625 626 627 var defineProperty = function (obj, key, value) { 628 if (key in obj) { 629 Object.defineProperty(obj, key, { 630 value: value, 631 enumerable: true, 632 configurable: true, 633 writable: true 634 }); 635 } else { 636 obj[key] = value; 637 } 638 639 return obj;
vendor: 11,226 bytes, lines 640-959
640 }; 641 642 var _extends$1 = Object.assign || function (target) { 643 for (var i = 1; i < arguments.length; i++) { 644 var source = arguments[i]; 645 646 for (var key in source) { 647 if (Object.prototype.hasOwnProperty.call(source, key)) { 648 target[key] = source[key]; 649 } 650 } 651 } 652 653 return target; 654 }; 655 656 /** 657 * Given element offsets, generate an output similar to getBoundingClientRect 658 * @method 659 * @memberof Popper.Utils 660 * @argument {Object} offsets 661 * @returns {Object} ClientRect like output 662 */ 663 function getClientRect(offsets) { 664 return _extends$1({}, offsets, { 665 right: offsets.left + offsets.width, 666 bottom: offsets.top + offsets.height 667 }); 668 } 669 670 /** 671 * Get bounding client rect of given element 672 * @method 673 * @memberof Popper.Utils 674 * @param {HTMLElement} element 675 * @return {Object} client rect 676 */ 677 function getBoundingClientRect(element) { 678 var rect = {}; 679 680 // IE10 10 FIX: Please, don't ask, the element isn't 681 // considered in DOM in some circumstances... 682 // This isn't reproducible in IE10 compatibility mode of IE11 683 try { 684 if (isIE(10)) { 685 rect = element.getBoundingClientRect(); 686 var scrollTop = getScroll(element, 'top'); 687 var scrollLeft = getScroll(element, 'left'); 688 rect.top += scrollTop; 689 rect.left += scrollLeft; 690 rect.bottom += scrollTop; 691 rect.right += scrollLeft; 692 } else { 693 rect = element.getBoundingClientRect(); 694 } 695 } catch (e) {} 696 697 var result = { 698 left: rect.left, 699 top: rect.top, 700 width: rect.right - rect.left, 701 height: rect.bottom - rect.top 702 }; 703 704 // subtract scrollbar size from sizes 705 var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {}; 706 var width = sizes.width || element.clientWidth || result.width; 707 var height = sizes.height || element.clientHeight || result.height; 708 709 var horizScrollbar = element.offsetWidth - width; 710 var vertScrollbar = element.offsetHeight - height; 711 712 // if an hypothetical scrollbar is detected, we must be sure it's not a `border` 713 // we make this check conditional for performance reasons 714 if (horizScrollbar || vertScrollbar) { 715 var styles = getStyleComputedProperty(element); 716 horizScrollbar -= getBordersSize(styles, 'x'); 717 vertScrollbar -= getBordersSize(styles, 'y'); 718 719 result.width -= horizScrollbar; 720 result.height -= vertScrollbar; 721 } 722 723 return getClientRect(result); 724 } 725 726 function getOffsetRectRelativeToArbitraryNode(children, parent) { 727 var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; 728 729 var isIE10 = isIE(10); 730 var isHTML = parent.nodeName === 'HTML'; 731 var childrenRect = getBoundingClientRect(children); 732 var parentRect = getBoundingClientRect(parent); 733 var scrollParent = getScrollParent(children); 734 735 var styles = getStyleComputedProperty(parent); 736 var borderTopWidth = parseFloat(styles.borderTopWidth); 737 var borderLeftWidth = parseFloat(styles.borderLeftWidth); 738 739 // In cases where the parent is fixed, we must ignore negative scroll in offset calc 740 if (fixedPosition && isHTML) { 741 parentRect.top = Math.max(parentRect.top, 0); 742 parentRect.left = Math.max(parentRect.left, 0); 743 } 744 var offsets = getClientRect({ 745 top: childrenRect.top - parentRect.top - borderTopWidth, 746 left: childrenRect.left - parentRect.left - borderLeftWidth, 747 width: childrenRect.width, 748 height: childrenRect.height 749 }); 750 offsets.marginTop = 0; 751 offsets.marginLeft = 0; 752 753 // Subtract margins of documentElement in case it's being used as parent 754 // we do this only on HTML because it's the only element that behaves 755 // differently when margins are applied to it. The margins are included in 756 // the box of the documentElement, in the other cases not. 757 if (!isIE10 && isHTML) { 758 var marginTop = parseFloat(styles.marginTop); 759 var marginLeft = parseFloat(styles.marginLeft); 760 761 offsets.top -= borderTopWidth - marginTop; 762 offsets.bottom -= borderTopWidth - marginTop; 763 offsets.left -= borderLeftWidth - marginLeft; 764 offsets.right -= borderLeftWidth - marginLeft; 765 766 // Attach marginTop and marginLeft because in some circumstances we may need them 767 offsets.marginTop = marginTop; 768 offsets.marginLeft = marginLeft; 769 } 770 771 if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') { 772 offsets = includeScroll(offsets, parent); 773 } 774 775 return offsets; 776 } 777 778 function getViewportOffsetRectRelativeToArtbitraryNode(element) { 779 var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; 780 781 var html = element.ownerDocument.documentElement; 782 var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html); 783 var width = Math.max(html.clientWidth, window.innerWidth || 0); 784 var height = Math.max(html.clientHeight, window.innerHeight || 0); 785 786 var scrollTop = !excludeScroll ? getScroll(html) : 0; 787 var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0; 788 789 var offset = { 790 top: scrollTop - relativeOffset.top + relativeOffset.marginTop, 791 left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft, 792 width: width, 793 height: height 794 }; 795 796 return getClientRect(offset); 797 } 798 799 /** 800 * Check if the given element is fixed or is inside a fixed parent 801 * @method 802 * @memberof Popper.Utils 803 * @argument {Element} element 804 * @argument {Element} customContainer 805 * @returns {Boolean} answer to "isFixed?" 806 */ 807 function isFixed(element) { 808 var nodeName = element.nodeName; 809 if (nodeName === 'BODY' || nodeName === 'HTML') { 810 return false; 811 } 812 if (getStyleComputedProperty(element, 'position') === 'fixed') { 813 return true; 814 } 815 var parentNode = getParentNode(element); 816 if (!parentNode) { 817 return false; 818 } 819 return isFixed(parentNode); 820 } 821 822 /** 823 * Finds the first parent of an element that has a transformed property defined 824 * @method 825 * @memberof Popper.Utils 826 * @argument {Element} element 827 * @returns {Element} first transformed parent or documentElement 828 */ 829 830 function getFixedPositionOffsetParent(element) { 831 // This check is needed to avoid errors in case one of the elements isn't defined for any reason 832 if (!element || !element.parentElement || isIE()) { 833 return document.documentElement; 834 } 835 var el = element.parentElement; 836 while (el && getStyleComputedProperty(el, 'transform') === 'none') { 837 el = el.parentElement; 838 } 839 return el || document.documentElement; 840 } 841 842 /** 843 * Computed the boundaries limits and return them 844 * @method 845 * @memberof Popper.Utils 846 * @param {HTMLElement} popper 847 * @param {HTMLElement} reference 848 * @param {number} padding 849 * @param {HTMLElement} boundariesElement - Element used to define the boundaries 850 * @param {Boolean} fixedPosition - Is in fixed position mode 851 * @returns {Object} Coordinates of the boundaries 852 */ 853 function getBoundaries(popper, reference, padding, boundariesElement) { 854 var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; 855 856 // NOTE: 1 DOM access here 857 858 var boundaries = { top: 0, left: 0 }; 859 var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); 860 861 // Handle viewport case 862 if (boundariesElement === 'viewport') { 863 boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition); 864 } else { 865 // Handle other cases based on DOM element used as boundaries 866 var boundariesNode = void 0; 867 if (boundariesElement === 'scrollParent') { 868 boundariesNode = getScrollParent(getParentNode(reference)); 869 if (boundariesNode.nodeName === 'BODY') { 870 boundariesNode = popper.ownerDocument.documentElement; 871 } 872 } else if (boundariesElement === 'window') { 873 boundariesNode = popper.ownerDocument.documentElement; 874 } else { 875 boundariesNode = boundariesElement; 876 } 877 878 var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); 879 880 // In case of HTML, we need a different computation 881 if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) { 882 var _getWindowSizes = getWindowSizes(popper.ownerDocument), 883 height = _getWindowSizes.height, 884 width = _getWindowSizes.width; 885 886 boundaries.top += offsets.top - offsets.marginTop; 887 boundaries.bottom = height + offsets.top; 888 boundaries.left += offsets.left - offsets.marginLeft; 889 boundaries.right = width + offsets.left; 890 } else { 891 // for all the other DOM elements, this one is good 892 boundaries = offsets; 893 } 894 } 895 896 // Add paddings 897 padding = padding || 0; 898 var isPaddingNumber = typeof padding === 'number'; 899 boundaries.left += isPaddingNumber ? padding : padding.left || 0; 900 boundaries.top += isPaddingNumber ? padding : padding.top || 0; 901 boundaries.right -= isPaddingNumber ? padding : padding.right || 0; 902 boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; 903 904 return boundaries; 905 } 906 907 function getArea(_ref) { 908 var width = _ref.width, 909 height = _ref.height; 910 911 return width * height; 912 } 913 914 /** 915 * Utility used to transform the `auto` placement to the placement with more 916 * available space. 917 * @method 918 * @memberof Popper.Utils 919 * @argument {Object} data - The data object generated by update method 920 * @argument {Object} options - Modifiers configuration and options 921 * @returns {Object} The data object, properly modified 922 */ 923 function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) { 924 var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0; 925 926 if (placement.indexOf('auto') === -1) { 927 return placement; 928 } 929 930 var boundaries = getBoundaries(popper, reference, padding, boundariesElement); 931 932 var rects = { 933 top: { 934 width: boundaries.width, 935 height: refRect.top - boundaries.top 936 }, 937 right: { 938 width: boundaries.right - refRect.right, 939 height: boundaries.height 940 }, 941 bottom: { 942 width: boundaries.width, 943 height: boundaries.bottom - refRect.bottom 944 }, 945 left: { 946 width: refRect.left - boundaries.left, 947 height: boundaries.height 948 } 949 }; 950 951 var sortedAreas = Object.keys(rects).map(function (key) { 952 return _extends$1({ 953 key: key 954 }, rects[key], { 955 area: getArea(rects[key]) 956 }); 957 }).sort(function (a, b) { 958 return b.area - a.area; 959 });
960 961 var filteredAreas = sortedAreas.filter(function (_ref2) { 962 var width = _ref2.width, 963 height = _ref2.height; 964 return width >= popper.clientWidth && height >= popper.clientHeight; 965 }); 966 967 var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key; 968 969 var variation = placement.split('-')[1]; 970 971 return computedPlacement + (variation ? '-' + variation : ''); 972 } 973 974 /** 975 * Get offsets to the reference element 976 * @method 977 * @memberof Popper.Utils 978 * @param {Object} state 979 * @param {Element} popper - the popper element 980 * @param {Element} reference - the reference element (the popper will be relative to this) 981 * @param {Element} fixedPosition - is in fixed position mode 982 * @returns {Object} An object containing the offsets which will be applied to the popper 983 */ 984 function getReferenceOffsets(state, popper, reference) { 985 var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; 986 987 var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); 988 return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition); 989 } 990 991 /** 992 * Get the outer sizes of the given element (offset size + margins) 993 * @method 994 * @memberof Popper.Utils 995 * @argument {Element} element 996 * @returns {Object}
vendor: 4,126 bytes, lines 996-1118
996 object containing width and height properties 997 */ 998 function getOuterSizes(element) { 999 var window = element.ownerDocument.defaultView; 1000 var styles = window.getComputedStyle(element); 1001 var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0); 1002 var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0); 1003 var result = { 1004 width: element.offsetWidth + y, 1005 height: element.offsetHeight + x 1006 }; 1007 return result; 1008 } 1009 1010 /** 1011 * Get the opposite placement of the given one 1012 * @method 1013 * @memberof Popper.Utils 1014 * @argument {String} placement 1015 * @returns {String} flipped placement 1016 */ 1017 function getOppositePlacement(placement) { 1018 var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; 1019 return placement.replace(/left|right|bottom|top/g, function (matched) { 1020 return hash[matched]; 1021 }); 1022 } 1023 1024 /** 1025 * Get offsets to the popper 1026 * @method 1027 * @memberof Popper.Utils 1028 * @param {Object} position - CSS position the Popper will get applied 1029 * @param {HTMLElement} popper - the popper element 1030 * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this) 1031 * @param {String} placement - one of the valid placement options 1032 * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper 1033 */ 1034 function getPopperOffsets(popper, referenceOffsets, placement) { 1035 placement = placement.split('-')[0]; 1036 1037 // Get popper node sizes 1038 var popperRect = getOuterSizes(popper); 1039 1040 // Add position, width and height to our offsets object 1041 var popperOffsets = { 1042 width: popperRect.width, 1043 height: popperRect.height 1044 }; 1045 1046 // depending by the popper placement we have to compute its offsets slightly differently 1047 var isHoriz = ['right', 'left'].indexOf(placement) !== -1; 1048 var mainSide = isHoriz ? 'top' : 'left'; 1049 var secondarySide = isHoriz ? 'left' : 'top'; 1050 var measurement = isHoriz ? 'height' : 'width'; 1051 var secondaryMeasurement = !isHoriz ? 'height' : 'width'; 1052 1053 popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2; 1054 if (placement === secondarySide) { 1055 popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement]; 1056 } else { 1057 popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)]; 1058 } 1059 1060 return popperOffsets; 1061 } 1062 1063 /** 1064 * Mimics the `find` method of Array 1065 * @method 1066 * @memberof Popper.Utils 1067 * @argument {Array} arr 1068 * @argument prop 1069 * @argument value 1070 * @returns index or -1 1071 */ 1072 function find(arr, check) { 1073 // use native find if supported 1074 if (Array.prototype.find) { 1075 return arr.find(check); 1076 } 1077 1078 // use `filter` to obtain the same behavior of `find` 1079 return arr.filter(check)[0]; 1080 } 1081 1082 /** 1083 * Return the index of the matching object 1084 * @method 1085 * @memberof Popper.Utils 1086 * @argument {Array} arr 1087 * @argument prop 1088 * @argument value 1089 * @returns index or -1 1090 */ 1091 function findIndex(arr, prop, value) { 1092 // use native findIndex if supported 1093 if (Array.prototype.findIndex) { 1094 return arr.findIndex(function (cur) { 1095 return cur[prop] === value; 1096 }); 1097 } 1098 1099 // use `find` + `indexOf` if `findIndex` isn't supported 1100 var match = find(arr, function (obj) { 1101 return obj[prop] === value; 1102 }); 1103 return arr.indexOf(match); 1104 } 1105 1106 /** 1107 * Loop trough the list of modifiers and run them in order, 1108 * each of them will then edit the data object. 1109 * @method 1110 * @memberof Popper.Utils 1111 * @param {dataObject} data 1112 * @param {Array} modifiers 1113 * @param {String} ends - Optional modifier name used as stopper 1114 * @returns {dataObject} 1115 */ 1116 function runModifiers(modifiers, data, ends) { 1117 var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends)); 1118
vendor: 8,484 bytes, lines 1119-1374
1119 modifiersToRun.forEach(function (modifier) { 1120 if (modifier['function']) { 1121 // eslint-disable-line dot-notation 1122 console.warn('`modifier.function` is deprecated, use `modifier.fn`!'); 1123 } 1124 var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation 1125 if (modifier.enabled && isFunction(fn)) { 1126 // Add properties to offsets to make them a complete clientRect object 1127 // we do this before each modifier to make sure the previous one doesn't 1128 // mess with these values 1129 data.offsets.popper = getClientRect(data.offsets.popper); 1130 data.offsets.reference = getClientRect(data.offsets.reference); 1131 1132 data = fn(data, modifier); 1133 } 1134 }); 1135 1136 return data; 1137 } 1138 1139 /** 1140 * Updates the position of the popper, computing the new offsets and applying 1141 * the new style.<br /> 1142 * Prefer `scheduleUpdate` over `update` because of performance reasons. 1143 * @method 1144 * @memberof Popper 1145 */ 1146 function update() { 1147 // if popper is destroyed, don't perform any further update 1148 if (this.state.isDestroyed) { 1149 return; 1150 } 1151 1152 var data = { 1153 instance: this, 1154 styles: {}, 1155 arrowStyles: {}, 1156 attributes: {}, 1157 flipped: false, 1158 offsets: {} 1159 }; 1160 1161 // compute reference element offsets 1162 data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); 1163 1164 // compute auto placement, store placement inside the data object, 1165 // modifiers will be able to edit `placement` if needed 1166 // and refer to originalPlacement to know the original value 1167 data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); 1168 1169 // store the computed placement inside `originalPlacement` 1170 data.originalPlacement = data.placement; 1171 1172 data.positionFixed = this.options.positionFixed; 1173 1174 // compute the popper offsets 1175 data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement); 1176 1177 data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; 1178 1179 // run the modifiers 1180 data = runModifiers(this.modifiers, data); 1181 1182 // the first `update` will call `onCreate` callback 1183 // the other ones will call `onUpdate` callback 1184 if (!this.state.isCreated) { 1185 this.state.isCreated = true; 1186 this.options.onCreate(data); 1187 } else { 1188 this.options.onUpdate(data); 1189 } 1190 } 1191 1192 /** 1193 * Helper used to know if the given modifier is enabled. 1194 * @method 1195 * @memberof Popper.Utils 1196 * @returns {Boolean} 1197 */ 1198 function isModifierEnabled(modifiers, modifierName) { 1199 return modifiers.some(function (_ref) { 1200 var name = _ref.name, 1201 enabled = _ref.enabled; 1202 return enabled && name === modifierName; 1203 }); 1204 } 1205 1206 /** 1207 * Get the prefixed supported property name 1208 * @method 1209 * @memberof Popper.Utils 1210 * @argument {String} property (camelCase) 1211 * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix) 1212 */ 1213 function getSupportedPropertyName(property) { 1214 var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O']; 1215 var upperProp = property.charAt(0).toUpperCase() + property.slice(1); 1216 1217 for (var i = 0; i < prefixes.length; i++) { 1218 var prefix = prefixes[i]; 1219 var toCheck = prefix ? '' + prefix + upperProp : property; 1220 if (typeof document.body.style[toCheck] !== 'undefined') { 1221 return toCheck; 1222 } 1223 } 1224 return null; 1225 } 1226 1227 /** 1228 * Destroys the popper. 1229 * @method 1230 * @memberof Popper 1231 */ 1232 function destroy() { 1233 this.state.isDestroyed = true; 1234 1235 // touch DOM only if `applyStyle` modifier is enabled 1236 if (isModifierEnabled(this.modifiers, 'applyStyle')) { 1237 this.popper.removeAttribute('x-placement'); 1238 this.popper.style.position = ''; 1239 this.popper.style.top = ''; 1240 this.popper.style.left = ''; 1241 this.popper.style.right = ''; 1242 this.popper.style.bottom = ''; 1243 this.popper.style.willChange = ''; 1244 this.popper.style[getSupportedPropertyName('transform')] = ''; 1245 } 1246 1247 this.disableEventListeners(); 1248 1249 // remove the popper if user explicitly asked for the deletion on destroy 1250 // do not use `remove` because IE11 doesn't support it 1251 if (this.options.removeOnDestroy) { 1252 this.popper.parentNode.removeChild(this.popper); 1253 } 1254 return this; 1255 } 1256 1257 /** 1258 * Get the window associated with the element 1259 * @argument {Element} element 1260 * @returns {Window} 1261 */ 1262 function getWindow(element) { 1263 var ownerDocument = element.ownerDocument; 1264 return ownerDocument ? ownerDocument.defaultView : window; 1265 } 1266 1267 function attachToScrollParents(scrollParent, event, callback, scrollParents) { 1268 var isBody = scrollParent.nodeName === 'BODY'; 1269 var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; 1270 target.addEventListener(event, callback, { passive: true }); 1271 1272 if (!isBody) { 1273 attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents); 1274 } 1275 scrollParents.push(target); 1276 } 1277 1278 /** 1279 * Setup needed event listeners used to update the popper position 1280 * @method 1281 * @memberof Popper.Utils 1282 * @private 1283 */ 1284 function setupEventListeners(reference, options, state, updateBound) { 1285 // Resize event listener on window 1286 state.updateBound = updateBound; 1287 getWindow(reference).addEventListener('resize', state.updateBound, { passive: true }); 1288 1289 // Scroll event listener on scroll parents 1290 var scrollElement = getScrollParent(reference); 1291 attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents); 1292 state.scrollElement = scrollElement; 1293 state.eventsEnabled = true; 1294 1295 return state; 1296 } 1297 1298 /** 1299 * It will add resize/scroll events and start recalculating 1300 * position of the popper element when they are triggered. 1301 * @method 1302 * @memberof Popper 1303 */ 1304 function enableEventListeners() { 1305 if (!this.state.eventsEnabled) { 1306 this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate); 1307 } 1308 } 1309 1310 /** 1311 * Remove event listeners used to update the popper position 1312 * @method 1313 * @memberof Popper.Utils 1314 * @private 1315 */ 1316 function removeEventListeners(reference, state) { 1317 // Remove resize event listener on window 1318 getWindow(reference).removeEventListener('resize', state.updateBound); 1319 1320 // Remove scroll event listener on scroll parents 1321 state.scrollParents.forEach(function (target) { 1322 target.removeEventListener('scroll', state.updateBound); 1323 }); 1324 1325 // Reset state 1326 state.updateBound = null; 1327 state.scrollParents = []; 1328 state.scrollElement = null; 1329 state.eventsEnabled = false; 1330 return state; 1331 } 1332 1333 /** 1334 * It will remove resize/scroll events and won't recalculate popper position 1335 * when they are triggered. It also won't trigger `onUpdate` callback anymore, 1336 * unless you call `update` method manually. 1337 * @method 1338 * @memberof Popper 1339 */ 1340 function disableEventListeners() { 1341 if (this.state.eventsEnabled) { 1342 cancelAnimationFrame(this.scheduleUpdate); 1343 this.state = removeEventListeners(this.reference, this.state); 1344 } 1345 } 1346 1347 /** 1348 * Tells if a given input is a number 1349 * @method 1350 * @memberof Popper.Utils 1351 * @param {*} input to check 1352 * @return {Boolean} 1353 */ 1354 function isNumeric(n) { 1355 return n !== '' && !isNaN(parseFloat(n)) && isFinite(n); 1356 } 1357 1358 /** 1359 * Set the style to the given popper 1360 * @method 1361 * @memberof Popper.Utils 1362 * @argument {Element} element - Element to apply the style to 1363 * @argument {Object} styles 1364 * Object with a list of properties and values which will be applied to the element 1365 */ 1366 function setStyles(element, styles) { 1367 Object.keys(styles).forEach(function (prop) { 1368 var unit = ''; 1369 // add unit if the value is numeric and is one of the following 1370 if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) { 1371 unit = 'px'; 1372 } 1373 element.style[prop] = styles[prop] + unit; 1374 });
1375 } 1376 1377 /** 1378 * Set the attributes to the given popper 1379 * @method 1380 * @memberof Popper.Utils 1381 * @argument {Element} element - Element to apply the attributes to 1382 * @argument {Object} styles 1383 * Object with a list of properties and values which will be applied to the element 1384 */ 1385 function setAttributes(element, attributes) { 1386 Object.keys(attributes).forEach(function (prop) { 1387 var value = attributes[prop]; 1388 if (value !== false) { 1389 element.setAttribute(prop, attributes[prop]); 1390 } else { 1391 element.removeAttribute(prop); 1392 } 1393 }); 1394 } 1395 1396 /** 1397 * @function 1398 * @memberof Modifiers 1399 * @argument {Object} data - The data object generated by `update` method 1400 * @argument {Object} data.styles - List of style properties - values to apply to popper element 1401 * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element 1402 * @argument {Object} options - Modifiers configuration and options 1403 * @returns {Object} The same data object 1404 */ 1405 function applyStyle(data) { 1406 // any property present in `data.styles` will be applied to the popper, 1407 // in this way we can make the 3rd party modifiers add custom styles to it 1408 // Be aware, modifiers could override the properties defined in the previous 1409 // lines of this modifier! 1410 setStyles(data.instance.popper, data.styles); 1411 1412 // any property present in `data.attributes` will be applied to the popper, 1413 // they will be set as HTML attributes of the element 1414 setAttributes(data.instance.popper, data.attributes); 1415 1416 // if arrowElement is defined and arrowStyles has some properties
vendor: 34,590 bytes, lines 1417-2309
1417 if (data.arrowElement && Object.keys(data.arrowStyles).length) { 1418 setStyles(data.arrowElement, data.arrowStyles); 1419 } 1420 1421 return data; 1422 } 1423 1424 /** 1425 * Set the x-placement attribute before everything else because it could be used 1426 * to add margins to the popper margins needs to be calculated to get the 1427 * correct popper offsets. 1428 * @method 1429 * @memberof Popper.modifiers 1430 * @param {HTMLElement} reference - The reference element used to position the popper 1431 * @param {HTMLElement} popper - The HTML element used as popper 1432 * @param {Object} options - Popper.js options 1433 */ 1434 function applyStyleOnLoad(reference, popper, options, modifierOptions, state) { 1435 // compute reference element offsets 1436 var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); 1437 1438 // compute auto placement, store placement inside the data object, 1439 // modifiers will be able to edit `placement` if needed 1440 // and refer to originalPlacement to know the original value 1441 var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding); 1442 1443 popper.setAttribute('x-placement', placement); 1444 1445 // Apply `position` to popper before anything else because 1446 // without the position applied we can't guarantee correct computations 1447 setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' }); 1448 1449 return options; 1450 } 1451 1452 /** 1453 * @function 1454 * @memberof Popper.Utils 1455 * @argument {Object} data - The data object generated by `update` method 1456 * @argument {Boolean} shouldRound - If the offsets should be rounded at all 1457 * @returns {Object} The popper's position offsets rounded 1458 * 1459 * The tale of pixel-perfect positioning. It's still not 100% perfect, but as 1460 * good as it can be within reason. 1461 * Discussion here: https://github.com/FezVrasta/popper.js/pull/715 1462 * 1463 * Low DPI screens cause a popper to be blurry if not using full pixels (Safari 1464 * as well on High DPI screens). 1465 * 1466 * Firefox prefers no rounding for positioning and does not have blurriness on 1467 * high DPI screens. 1468 * 1469 * Only horizontal placement and left/right values need to be considered. 1470 */ 1471 function getRoundedOffsets(data, shouldRound) { 1472 var _data$offsets = data.offsets, 1473 popper = _data$offsets.popper, 1474 reference = _data$offsets.reference; 1475 var round = Math.round, 1476 floor = Math.floor; 1477 1478 var noRound = function noRound(v) { 1479 return v; 1480 }; 1481 1482 var referenceWidth = round(reference.width); 1483 var popperWidth = round(popper.width); 1484 1485 var isVertical = ['left', 'right'].indexOf(data.placement) !== -1; 1486 var isVariation = data.placement.indexOf('-') !== -1; 1487 var sameWidthParity = referenceWidth % 2 === popperWidth % 2; 1488 var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1; 1489 1490 var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor; 1491 var verticalToInteger = !shouldRound ? noRound : round; 1492 1493 return { 1494 left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left), 1495 top: verticalToInteger(popper.top), 1496 bottom: verticalToInteger(popper.bottom), 1497 right: horizontalToInteger(popper.right) 1498 }; 1499 } 1500 1501 var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent); 1502 1503 /** 1504 * @function 1505 * @memberof Modifiers 1506 * @argument {Object} data - The data object generated by `update` method 1507 * @argument {Object} options - Modifiers configuration and options 1508 * @returns {Object} The data object, properly modified 1509 */ 1510 function computeStyle(data, options) { 1511 var x = options.x, 1512 y = options.y; 1513 var popper = data.offsets.popper; 1514 1515 // Remove this legacy support in Popper.js v2 1516 1517 var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) { 1518 return modifier.name === 'applyStyle'; 1519 }).gpuAcceleration; 1520 if (legacyGpuAccelerationOption !== undefined) { 1521 console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'); 1522 } 1523 var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration; 1524 1525 var offsetParent = getOffsetParent(data.instance.popper); 1526 var offsetParentRect = getBoundingClientRect(offsetParent); 1527 1528 // Styles 1529 var styles = { 1530 position: popper.position 1531 }; 1532 1533 var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox); 1534 1535 var sideA = x === 'bottom' ? 'top' : 'bottom'; 1536 var sideB = y === 'right' ? 'left' : 'right'; 1537 1538 // if gpuAcceleration is set to `true` and transform is supported, 1539 // we use `translate3d` to apply the position to the popper we 1540 // automatically use the supported prefixed version if needed 1541 var prefixedProperty = getSupportedPropertyName('transform'); 1542 1543 // now, let's make a step back and look at this code closely (wtf?) 1544 // If the content of the popper grows once it's been positioned, it 1545 // may happen that the popper gets misplaced because of the new content 1546 // overflowing its reference element 1547 // To avoid this problem, we provide two options (x and y), which allow 1548 // the consumer to define the offset origin. 1549 // If we position a popper on top of a reference element, we can set 1550 // `x` to `top` to make the popper grow towards its top instead of 1551 // its bottom. 1552 var left = void 0, 1553 top = void 0; 1554 if (sideA === 'bottom') { 1555 // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar) 1556 // and not the bottom of the html element 1557 if (offsetParent.nodeName === 'HTML') { 1558 top = -offsetParent.clientHeight + offsets.bottom; 1559 } else { 1560 top = -offsetParentRect.height + offsets.bottom; 1561 } 1562 } else { 1563 top = offsets.top; 1564 } 1565 if (sideB === 'right') { 1566 if (offsetParent.nodeName === 'HTML') { 1567 left = -offsetParent.clientWidth + offsets.right; 1568 } else { 1569 left = -offsetParentRect.width + offsets.right; 1570 } 1571 } else { 1572 left = offsets.left; 1573 } 1574 if (gpuAcceleration && prefixedProperty) { 1575 styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)'; 1576 styles[sideA] = 0; 1577 styles[sideB] = 0; 1578 styles.willChange = 'transform'; 1579 } else { 1580 // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties 1581 var invertTop = sideA === 'bottom' ? -1 : 1; 1582 var invertLeft = sideB === 'right' ? -1 : 1; 1583 styles[sideA] = top * invertTop; 1584 styles[sideB] = left * invertLeft; 1585 styles.willChange = sideA + ', ' + sideB; 1586 } 1587 1588 // Attributes 1589 var attributes = { 1590 'x-placement': data.placement 1591 }; 1592 1593 // Update `data` attributes, styles and arrowStyles 1594 data.attributes = _extends$1({}, attributes, data.attributes); 1595 data.styles = _extends$1({}, styles, data.styles); 1596 data.arrowStyles = _extends$1({}, data.offsets.arrow, data.arrowStyles); 1597 1598 return data; 1599 } 1600 1601 /** 1602 * Helper used to know if the given modifier depends from another one.<br /> 1603 * It checks if the needed modifier is listed and enabled. 1604 * @method 1605 * @memberof Popper.Utils 1606 * @param {Array} modifiers - list of modifiers 1607 * @param {String} requestingName - name of requesting modifier 1608 * @param {String} requestedName - name of requested modifier 1609 * @returns {Boolean} 1610 */ 1611 function isModifierRequired(modifiers, requestingName, requestedName) { 1612 var requesting = find(modifiers, function (_ref) { 1613 var name = _ref.name; 1614 return name === requestingName; 1615 }); 1616 1617 var isRequired = !!requesting && modifiers.some(function (modifier) { 1618 return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order; 1619 }); 1620 1621 if (!isRequired) { 1622 var _requesting = '`' + requestingName + '`'; 1623 var requested = '`' + requestedName + '`'; 1624 console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!'); 1625 } 1626 return isRequired; 1627 } 1628 1629 /** 1630 * @function 1631 * @memberof Modifiers 1632 * @argument {Object} data - The data object generated by update method 1633 * @argument {Object} options - Modifiers configuration and options 1634 * @returns {Object} The data object, properly modified 1635 */ 1636 function arrow(data, options) { 1637 var _data$offsets$arrow; 1638 1639 // arrow depends on keepTogether in order to work 1640 if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) { 1641 return data; 1642 } 1643 1644 var arrowElement = options.element; 1645 1646 // if arrowElement is a string, suppose it's a CSS selector 1647 if (typeof arrowElement === 'string') { 1648 arrowElement = data.instance.popper.querySelector(arrowElement); 1649 1650 // if arrowElement is not found, don't run the modifier 1651 if (!arrowElement) { 1652 return data; 1653 } 1654 } else { 1655 // if the arrowElement isn't a query selector we must check that the 1656 // provided DOM node is child of its popper node 1657 if (!data.instance.popper.contains(arrowElement)) { 1658 console.warn('WARNING: `arrow.element` must be child of its popper element!'); 1659 return data; 1660 } 1661 } 1662 1663 var placement = data.placement.split('-')[0]; 1664 var _data$offsets = data.offsets, 1665 popper = _data$offsets.popper, 1666 reference = _data$offsets.reference; 1667 1668 var isVertical = ['left', 'right'].indexOf(placement) !== -1; 1669 1670 var len = isVertical ? 'height' : 'width'; 1671 var sideCapitalized = isVertical ? 'Top' : 'Left'; 1672 var side = sideCapitalized.toLowerCase(); 1673 var altSide = isVertical ? 'left' : 'top'; 1674 var opSide = isVertical ? 'bottom' : 'right'; 1675 var arrowElementSize = getOuterSizes(arrowElement)[len]; 1676 1677 // 1678 // extends keepTogether behavior making sure the popper and its 1679 // reference have enough pixels in conjunction 1680 // 1681 1682 // top/left side 1683 if (reference[opSide] - arrowElementSize < popper[side]) { 1684 data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize); 1685 } 1686 // bottom/right side 1687 if (reference[side] + arrowElementSize > popper[opSide]) { 1688 data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; 1689 } 1690 data.offsets.popper = getClientRect(data.offsets.popper); 1691 1692 // compute center of the popper 1693 var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; 1694 1695 // Compute the sideValue using the updated popper offsets 1696 // take popper margin in account because we don't have this info available 1697 var css = getStyleComputedProperty(data.instance.popper); 1698 var popperMarginSide = parseFloat(css['margin' + sideCapitalized]); 1699 var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']); 1700 var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; 1701 1702 // prevent arrowElement from being placed not contiguously to its popper 1703 sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); 1704 1705 data.arrowElement = arrowElement; 1706 data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow); 1707 1708 return data; 1709 } 1710 1711 /** 1712 * Get the opposite placement variation of the given one 1713 * @method 1714 * @memberof Popper.Utils 1715 * @argument {String} placement variation 1716 * @returns {String} flipped placement variation 1717 */ 1718 function getOppositeVariation(variation) { 1719 if (variation === 'end') { 1720 return 'start'; 1721 } else if (variation === 'start') { 1722 return 'end'; 1723 } 1724 return variation; 1725 } 1726 1727 /** 1728 * List of accepted placements to use as values of the `placement` option.<br /> 1729 * Valid placements are: 1730 * - `auto` 1731 * - `top` 1732 * - `right` 1733 * - `bottom` 1734 * - `left` 1735 * 1736 * Each placement can have a variation from this list: 1737 * - `-start` 1738 * - `-end` 1739 * 1740 * Variations are interpreted easily if you think of them as the left to right 1741 * written languages. Horizontally (`top` and `bottom`), `start` is left and `end` 1742 * is right.<br /> 1743 * Vertically (`left` and `right`), `start` is top and `end` is bottom. 1744 * 1745 * Some valid examples are: 1746 * - `top-end` (on top of reference, right aligned) 1747 * - `right-start` (on right of reference, top aligned) 1748 * - `bottom` (on bottom, centered) 1749 * - `auto-end` (on the side with more space available, alignment depends by placement) 1750 * 1751 * @static 1752 * @type {Array} 1753 * @enum {String} 1754 * @readonly 1755 * @method placements 1756 * @memberof Popper 1757 */ 1758 var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; 1759 1760 // Get rid of `auto` `auto-start` and `auto-end` 1761 var validPlacements = placements.slice(3); 1762 1763 /** 1764 * Given an initial placement, returns all the subsequent placements 1765 * clockwise (or counter-clockwise). 1766 * 1767 * @method 1768 * @memberof Popper.Utils 1769 * @argument {String} placement - A valid placement (it accepts variations) 1770 * @argument {Boolean} counter - Set to true to walk the placements counterclockwise 1771 * @returns {Array} placements including their variations 1772 */ 1773 function clockwise(placement) { 1774 var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; 1775 1776 var index = validPlacements.indexOf(placement); 1777 var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index)); 1778 return counter ? arr.reverse() : arr; 1779 } 1780 1781 var BEHAVIORS = { 1782 FLIP: 'flip', 1783 CLOCKWISE: 'clockwise', 1784 COUNTERCLOCKWISE: 'counterclockwise' 1785 }; 1786 1787 /** 1788 * @function 1789 * @memberof Modifiers 1790 * @argument {Object} data - The data object generated by update method 1791 * @argument {Object} options - Modifiers configuration and options 1792 * @returns {Object} The data object, properly modified 1793 */ 1794 function flip(data, options) { 1795 // if `inner` modifier is enabled, we can't use the `flip` modifier 1796 if (isModifierEnabled(data.instance.modifiers, 'inner')) { 1797 return data; 1798 } 1799 1800 if (data.flipped && data.placement === data.originalPlacement) { 1801 // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides 1802 return data; 1803 } 1804 1805 var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed); 1806 1807 var placement = data.placement.split('-')[0]; 1808 var placementOpposite = getOppositePlacement(placement); 1809 var variation = data.placement.split('-')[1] || ''; 1810 1811 var flipOrder = []; 1812 1813 switch (options.behavior) { 1814 case BEHAVIORS.FLIP: 1815 flipOrder = [placement, placementOpposite]; 1816 break; 1817 case BEHAVIORS.CLOCKWISE: 1818 flipOrder = clockwise(placement); 1819 break; 1820 case BEHAVIORS.COUNTERCLOCKWISE: 1821 flipOrder = clockwise(placement, true); 1822 break; 1823 default: 1824 flipOrder = options.behavior; 1825 } 1826 1827 flipOrder.forEach(function (step, index) { 1828 if (placement !== step || flipOrder.length === index + 1) { 1829 return data; 1830 } 1831 1832 placement = data.placement.split('-')[0]; 1833 placementOpposite = getOppositePlacement(placement); 1834 1835 var popperOffsets = data.offsets.popper; 1836 var refOffsets = data.offsets.reference; 1837 1838 // using floor because the reference offsets may contain decimals we are not going to consider here 1839 var floor = Math.floor; 1840 var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom); 1841 1842 var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left); 1843 var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right); 1844 var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top); 1845 var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom); 1846 1847 var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; 1848 1849 // flip the variation if required 1850 var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; 1851 1852 // flips variation if reference element overflows boundaries 1853 var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); 1854 1855 // flips variation if popper content overflows boundaries 1856 var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop); 1857 1858 var flippedVariation = flippedVariationByRef || flippedVariationByContent; 1859 1860 if (overlapsRef || overflowsBoundaries || flippedVariation) { 1861 // this boolean to detect any flip loop 1862 data.flipped = true; 1863 1864 if (overlapsRef || overflowsBoundaries) { 1865 placement = flipOrder[index + 1]; 1866 } 1867 1868 if (flippedVariation) { 1869 variation = getOppositeVariation(variation); 1870 } 1871 1872 data.placement = placement + (variation ? '-' + variation : ''); 1873 1874 // this object contains `position`, we want to preserve it along with 1875 // any additional property we may add in the future 1876 data.offsets.popper = _extends$1({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement)); 1877 1878 data = runModifiers(data.instance.modifiers, data, 'flip'); 1879 } 1880 }); 1881 return data; 1882 } 1883 1884 /** 1885 * @function 1886 * @memberof Modifiers 1887 * @argument {Object} data - The data object generated by update method 1888 * @argument {Object} options - Modifiers configuration and options 1889 * @returns {Object} The data object, properly modified 1890 */ 1891 function keepTogether(data) { 1892 var _data$offsets = data.offsets, 1893 popper = _data$offsets.popper, 1894 reference = _data$offsets.reference; 1895 1896 var placement = data.placement.split('-')[0]; 1897 var floor = Math.floor; 1898 var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; 1899 var side = isVertical ? 'right' : 'bottom'; 1900 var opSide = isVertical ? 'left' : 'top'; 1901 var measurement = isVertical ? 'width' : 'height'; 1902 1903 if (popper[side] < floor(reference[opSide])) { 1904 data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement]; 1905 } 1906 if (popper[opSide] > floor(reference[side])) { 1907 data.offsets.popper[opSide] = floor(reference[side]); 1908 } 1909 1910 return data; 1911 } 1912 1913 /** 1914 * Converts a string containing value + unit into a px value number 1915 * @function 1916 * @memberof {modifiers~offset} 1917 * @private 1918 * @argument {String} str - Value + unit string 1919 * @argument {String} measurement - `height` or `width` 1920 * @argument {Object} popperOffsets 1921 * @argument {Object} referenceOffsets 1922 * @returns {Number|String} 1923 * Value in pixels, or original string if no values were extracted 1924 */ 1925 function toValue(str, measurement, popperOffsets, referenceOffsets) { 1926 // separate value from unit 1927 var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/); 1928 var value = +split[1]; 1929 var unit = split[2]; 1930 1931 // If it's not a number it's an operator, I guess 1932 if (!value) { 1933 return str; 1934 } 1935 1936 if (unit.indexOf('%') === 0) { 1937 var element = void 0; 1938 switch (unit) { 1939 case '%p': 1940 element = popperOffsets; 1941 break; 1942 case '%': 1943 case '%r': 1944 default: 1945 element = referenceOffsets; 1946 } 1947 1948 var rect = getClientRect(element); 1949 return rect[measurement] / 100 * value; 1950 } else if (unit === 'vh' || unit === 'vw') { 1951 // if is a vh or vw, we calculate the size based on the viewport 1952 var size = void 0; 1953 if (unit === 'vh') { 1954 size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); 1955 } else { 1956 size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); 1957 } 1958 return size / 100 * value; 1959 } else { 1960 // if is an explicit pixel unit, we get rid of the unit and keep the value 1961 // if is an implicit unit, it's px, and we return just the value 1962 return value; 1963 } 1964 } 1965 1966 /** 1967 * Parse an `offset` string to extrapolate `x` and `y` numeric offsets. 1968 * @function 1969 * @memberof {modifiers~offset} 1970 * @private 1971 * @argument {String} offset 1972 * @argument {Object} popperOffsets 1973 * @argument {Object} referenceOffsets 1974 * @argument {String} basePlacement 1975 * @returns {Array} a two cells array with x and y offsets in numbers 1976 */ 1977 function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) { 1978 var offsets = [0, 0]; 1979 1980 // Use height if placement is left or right and index is 0 otherwise use width 1981 // in this way the first offset will use an axis and the second one 1982 // will use the other one 1983 var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; 1984 1985 // Split the offset string to obtain a list of values and operands 1986 // The regex addresses values with the plus or minus sign in front (+10, -20, etc) 1987 var fragments = offset.split(/(\+|\-)/).map(function (frag) { 1988 return frag.trim(); 1989 }); 1990 1991 // Detect if the offset string contains a pair of values or a single one 1992 // they could be separated by comma or space 1993 var divider = fragments.indexOf(find(fragments, function (frag) { 1994 return frag.search(/,|\s/) !== -1; 1995 })); 1996 1997 if (fragments[divider] && fragments[divider].indexOf(',') === -1) { 1998 console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.'); 1999 } 2000 2001 // If divider is found, we divide the list of values and operands to divide 2002 // them by ofset X and Y. 2003 var splitRegex = /\s*,\s*|\s+/; 2004 var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; 2005 2006 // Convert the values with units to absolute pixels to allow our computations 2007 ops = ops.map(function (op, index) { 2008 // Most of the units rely on the orientation of the popper 2009 var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width'; 2010 var mergeWithPrevious = false; 2011 return op 2012 // This aggregates any `+` or `-` sign that aren't considered operators 2013 // e.g.: 10 + +5 => [10, +, +5] 2014 .reduce(function (a, b) { 2015 if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) { 2016 a[a.length - 1] = b; 2017 mergeWithPrevious = true; 2018 return a; 2019 } else if (mergeWithPrevious) { 2020 a[a.length - 1] += b; 2021 mergeWithPrevious = false; 2022 return a; 2023 } else { 2024 return a.concat(b); 2025 } 2026 }, []) 2027 // Here we convert the string values into number values (in px) 2028 .map(function (str) { 2029 return toValue(str, measurement, popperOffsets, referenceOffsets); 2030 }); 2031 }); 2032 2033 // Loop trough the offsets arrays and execute the operations 2034 ops.forEach(function (op, index) { 2035 op.forEach(function (frag, index2) { 2036 if (isNumeric(frag)) { 2037 offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1); 2038 } 2039 }); 2040 }); 2041 return offsets; 2042 } 2043 2044 /** 2045 * @function 2046 * @memberof Modifiers 2047 * @argument {Object} data - The data object generated by update method 2048 * @argument {Object} options - Modifiers configuration and options 2049 * @argument {Number|String} options.offset=0 2050 * The offset value as described in the modifier description 2051 * @returns {Object} The data object, properly modified 2052 */ 2053 function offset(data, _ref) { 2054 var offset = _ref.offset; 2055 var placement = data.placement, 2056 _data$offsets = data.offsets, 2057 popper = _data$offsets.popper, 2058 reference = _data$offsets.reference; 2059 2060 var basePlacement = placement.split('-')[0]; 2061 2062 var offsets = void 0; 2063 if (isNumeric(+offset)) { 2064 offsets = [+offset, 0]; 2065 } else { 2066 offsets = parseOffset(offset, popper, reference, basePlacement); 2067 } 2068 2069 if (basePlacement === 'left') { 2070 popper.top += offsets[0]; 2071 popper.left -= offsets[1]; 2072 } else if (basePlacement === 'right') { 2073 popper.top += offsets[0]; 2074 popper.left += offsets[1]; 2075 } else if (basePlacement === 'top') { 2076 popper.left += offsets[0]; 2077 popper.top -= offsets[1]; 2078 } else if (basePlacement === 'bottom') { 2079 popper.left += offsets[0]; 2080 popper.top += offsets[1]; 2081 } 2082 2083 data.popper = popper; 2084 return data; 2085 } 2086 2087 /** 2088 * @function 2089 * @memberof Modifiers 2090 * @argument {Object} data - The data object generated by `update` method 2091 * @argument {Object} options - Modifiers configuration and options 2092 * @returns {Object} The data object, properly modified 2093 */ 2094 function preventOverflow(data, options) { 2095 var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); 2096 2097 // If offsetParent is the reference element, we really want to 2098 // go one step up and use the next offsetParent as reference to 2099 // avoid to make this modifier completely useless and look like broken 2100 if (data.instance.reference === boundariesElement) { 2101 boundariesElement = getOffsetParent(boundariesElement); 2102 } 2103 2104 // NOTE: DOM access here 2105 // resets the popper's position so that the document size can be calculated excluding 2106 // the size of the popper element itself 2107 var transformProp = getSupportedPropertyName('transform'); 2108 var popperStyles = data.instance.popper.style; // assignment to help minification 2109 var top = popperStyles.top, 2110 left = popperStyles.left, 2111 transform = popperStyles[transformProp]; 2112 2113 popperStyles.top = ''; 2114 popperStyles.left = ''; 2115 popperStyles[transformProp] = ''; 2116 2117 var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); 2118 2119 // NOTE: DOM access here 2120 // restores the original style properties after the offsets have been computed 2121 popperStyles.top = top; 2122 popperStyles.left = left; 2123 popperStyles[transformProp] = transform; 2124 2125 options.boundaries = boundaries; 2126 2127 var order = options.priority; 2128 var popper = data.offsets.popper; 2129 2130 var check = { 2131 primary: function primary(placement) { 2132 var value = popper[placement]; 2133 if (popper[placement] < boundaries[placement] && !options.escapeWithReference) { 2134 value = Math.max(popper[placement], boundaries[placement]); 2135 } 2136 return defineProperty({}, placement, value); 2137 }, 2138 secondary: function secondary(placement) { 2139 var mainSide = placement === 'right' ? 'left' : 'top'; 2140 var value = popper[mainSide]; 2141 if (popper[placement] > boundaries[placement] && !options.escapeWithReference) { 2142 value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height)); 2143 } 2144 return defineProperty({}, mainSide, value); 2145 } 2146 }; 2147 2148 order.forEach(function (placement) { 2149 var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary'; 2150 popper = _extends$1({}, popper, check[side](placement)); 2151 }); 2152 2153 data.offsets.popper = popper; 2154 2155 return data; 2156 } 2157 2158 /** 2159 * @function 2160 * @memberof Modifiers 2161 * @argument {Object} data - The data object generated by `update` method 2162 * @argument {Object} options - Modifiers configuration and options 2163 * @returns {Object} The data object, properly modified 2164 */ 2165 function shift(data) { 2166 var placement = data.placement; 2167 var basePlacement = placement.split('-')[0]; 2168 var shiftvariation = placement.split('-')[1]; 2169 2170 // if shift shiftvariation is specified, run the modifier 2171 if (shiftvariation) { 2172 var _data$offsets = data.offsets, 2173 reference = _data$offsets.reference, 2174 popper = _data$offsets.popper; 2175 2176 var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1; 2177 var side = isVertical ? 'left' : 'top'; 2178 var measurement = isVertical ? 'width' : 'height'; 2179 2180 var shiftOffsets = { 2181 start: defineProperty({}, side, reference[side]), 2182 end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement]) 2183 }; 2184 2185 data.offsets.popper = _extends$1({}, popper, shiftOffsets[shiftvariation]); 2186 } 2187 2188 return data; 2189 } 2190 2191 /** 2192 * @function 2193 * @memberof Modifiers 2194 * @argument {Object} data - The data object generated by update method 2195 * @argument {Object} options - Modifiers configuration and options 2196 * @returns {Object} The data object, properly modified 2197 */ 2198 function hide(data) { 2199 if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) { 2200 return data; 2201 } 2202 2203 var refRect = data.offsets.reference; 2204 var bound = find(data.instance.modifiers, function (modifier) { 2205 return modifier.name === 'preventOverflow'; 2206 }).boundaries; 2207 2208 if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) { 2209 // Avoid unnecessary DOM access if visibility hasn't changed 2210 if (data.hide === true) { 2211 return data; 2212 } 2213 2214 data.hide = true; 2215 data.attributes['x-out-of-boundaries'] = ''; 2216 } else { 2217 // Avoid unnecessary DOM access if visibility hasn't changed 2218 if (data.hide === false) { 2219 return data; 2220 } 2221 2222 data.hide = false; 2223 data.attributes['x-out-of-boundaries'] = false; 2224 } 2225 2226 return data; 2227 } 2228 2229 /** 2230 * @function 2231 * @memberof Modifiers 2232 * @argument {Object} data - The data object generated by `update` method 2233 * @argument {Object} options - Modifiers configuration and options 2234 * @returns {Object} The data object, properly modified 2235 */ 2236 function inner(data) { 2237 var placement = data.placement; 2238 var basePlacement = placement.split('-')[0]; 2239 var _data$offsets = data.offsets, 2240 popper = _data$offsets.popper, 2241 reference = _data$offsets.reference; 2242 2243 var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1; 2244 2245 var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1; 2246 2247 popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0); 2248 2249 data.placement = getOppositePlacement(placement); 2250 data.offsets.popper = getClientRect(popper); 2251 2252 return data; 2253 } 2254 2255 /** 2256 * Modifier function, each modifier can have a function of this type assigned 2257 * to its `fn` property.<br /> 2258 * These functions will be called on each update, this means that you must 2259 * make sure they are performant enough to avoid performance bottlenecks. 2260 * 2261 * @function ModifierFn 2262 * @argument {dataObject} data - The data object generated by `update` method 2263 * @argument {Object} options - Modifiers configuration and options 2264 * @returns {dataObject} The data object, properly modified 2265 */ 2266 2267 /** 2268 * Modifiers are plugins used to alter the behavior of your poppers.<br /> 2269 * Popper.js uses a set of 9 modifiers to provide all the basic functionalities 2270 * needed by the library. 2271 * 2272 * Usually you don't want to override the `order`, `fn` and `onLoad` props. 2273 * All the other properties are configurations that could be tweaked. 2274 * @namespace modifiers 2275 */ 2276 var modifiers = { 2277 /** 2278 * Modifier used to shift the popper on the start or end of its reference 2279 * element.<br /> 2280 * It will read the variation of the `placement` property.<br /> 2281 * It can be one either `-end` or `-start`. 2282 * @memberof modifiers 2283 * @inner 2284 */ 2285 shift: { 2286 /** @prop {number} order=100 - Index used to define the order of execution */ 2287 order: 100, 2288 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 2289 enabled: true, 2290 /** @prop {ModifierFn} */ 2291 fn: shift 2292 }, 2293 2294 /** 2295 * The `offset` modifier can shift your popper on both its axis. 2296 * 2297 * It accepts the following units: 2298 * - `px` or unit-less, interpreted as pixels 2299 * - `%` or `%r`, percentage relative to the length of the reference element 2300 * - `%p`, percentage relative to the length of the popper element 2301 * - `vw`, CSS viewport width unit 2302 * - `vh`, CSS viewport height unit 2303 * 2304 * For length is intended the main axis relative to the placement of the popper.<br /> 2305 * This means that if the placement is `top` or `bottom`, the length will be the 2306 * `width`. In case of `left` or `right`, it will be the `height`. 2307 * 2308 * You can provide a single value (as `Number` or `String`), or a pair of values 2309 * as `String` divided by a comma or one (or more) white space
2309s.<br /> 2310 * The latter is a deprecated method because it leads to confusion and will be 2311 * removed in v2.<br /> 2312 * Additionally, it accepts additions and subtractions between different units. 2313 * Note that multiplications and divisions aren't supported. 2314 * 2315 * Valid examples are: 2316 * ``` 2317 * 10 2318 * '10%' 2319 * '10, 10' 2320 * '10%, 10' 2321 * '10 + 10%' 2322 * '10 - 5vh + 3%' 2323 * '-10px + 5vh, 5px - 6%' 2324 * ``` 2325 * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap 2326 * > with their reference element, unfortunately, you will have to disable the `flip` modifier. 2327 * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373). 2328 * 2329 * @memberof modifiers 2330 * @inner 2331 */ 2332 offset: { 2333 /** @prop {number} order=200 - Index used to define the order of execution */ 2334 order: 200, 2335 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 2336 enabled: true, 2337 /** @prop {ModifierFn} */ 2338 fn: offset, 2339 /** @prop {Number|String} offset=0 2340 * The offset value as described in the modifier description 2341 */ 2342 offset: 0 2343 }, 2344 2345 /** 2346 * Modifier used to prevent the popper from being positioned outside the boundary. 2347 * 2348 * A scenario exists where the reference itself is not within the boundaries.<br /> 2349 * We can say it has "escaped the boundaries" â or just "escaped".<br /> 2350 * In this case we need to decide whether the popper should either: 2351 * 2352 * - detach from the reference and remain "trapped" in the boundaries, or 2353 * - if it should ignore the boundary and "escape with its reference" 2354 * 2355 * When `escapeWithReference` is set to`true` and reference is completely 2356 * outside its boundaries, the popper will overflow (or completely leave) 2357 * the boundaries in order to remain attached to the edge of the reference. 2358 * 2359 * @memberof modifiers 2360 * @inner 2361 */ 2362 preventOverflow: { 2363 /** @prop {number} order=300 - Index used to define the order of execution */ 2364 order: 300, 2365 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 2366 enabled: true, 2367 /** @prop {ModifierFn} */ 2368 fn: preventOverflow, 2369 /** 2370 * @prop {Array} [priority=['left','right','top','bottom']] 2371 * Popper will try to prevent overflow following these priorities by default, 2372 * then, it could overflow on the left and on top of the `boundariesElement` 2373 */ 2374 priority: ['left', 'right', 'top', 'bottom'], 2375 /** 2376 * @prop {number} padding=5 2377 * Amount of pixel used to define a minimum distance between the boundaries 2378 * and the popper. This makes sure the popper always has a little padding 2379 * between the edges of its container 2380 */ 2381 padding: 5, 2382 /** 2383 * @prop {String|HTMLElement} boundariesElement='scrollParent' 2384 * Boundaries used by the modifier. Can be `scrollParent`, `window`, 2385 * `viewport` or any DOM element. 2386 */ 2387 boundariesElement: 'scrollParent' 2388 }, 2389 2390 /** 2391 * Modifier used to make sure the reference and its popper stay near each other 2392 * without leaving any gap between the two. Especially useful when the arrow is 2393 * enabled and you want to ensure that it points to its reference element. 2394 * It cares only about the first axis. You can still have poppers with margin 2395 * between the popper and its reference element. 2396 * @memberof modifiers 2397 * @inner 2398 */ 2399 keepTogether: { 2400 /** @prop {number} order=400 - Index used to define the order of execution */ 2401 order: 400, 2402 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 2403 enabled: true, 2404 /** @prop {ModifierFn} */ 2405 fn: keepTogether 2406 }, 2407 2408 /** 2409 * This modifier is used to move the `arrowElement` of the popper to make 2410 * sure it is positioned between the reference element and its popper element. 2411 * It will read the outer size of the `arrowElement` node to detect how many 2412 * pixels of conjunction are needed. 2413 * 2414 * It has no effect if no `arrowElement` is provided. 2415 * @memberof modifiers 2416 * @inner 2417 */ 2418 arrow: { 2419 /** @prop {number} order=500 - Index used to define the order of execution */ 2420 order: 500, 2421 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 2422 enabled: true, 2423 /** @prop {ModifierFn} */ 2424 fn: arrow, 2425 /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */ 2426 element: '[x-arrow]' 2427 }, 2428 2429 /** 2430 * Modifier used to flip the popper's placement when it starts to overlap its 2431 * reference element. 2432 * 2433 * Requires the `preventOverflow` modifier before it in order to work. 2434 * 2435 * **NOTE:** this modifier will interrupt the current update cycle and will 2436 * restart it if it detects the need to flip the placement. 2437 * @memberof modifiers 2438 * @inner 2439 */ 2440 flip: { 2441 /** @prop {number} order=600 - Index used to define the order of execution */ 2442 order: 600, 2443 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 2444 enabled: true, 2445 /** @prop {ModifierFn} */ 2446 fn: flip, 2447 /** 2448 * @prop {String|Array} behavior='flip' 2449 * The behavior used to change the popper's placement. It can be one of 2450 * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid 2451 * placements (with optional variations) 2452 */ 2453 behavior: 'flip', 2454 /** 2455 * @prop {number} padding=5 2456 * The popper will flip if it hits the edges of the `boundariesElement` 2457 */ 2458 padding: 5, 2459 /** 2460 * @prop {String|HTMLElement} boundariesElement='viewport' 2461 * The element which will define the boundaries of the popper position. 2462 * The popper will never be placed outside of the defined boundaries 2463 * (except if `keepTogether` is enabled) 2464 */ 2465 boundariesElement: 'viewport', 2466 /** 2467 * @prop {Boolean} flipVariations=false 2468 * The popper will switch placement variation between `-start` and `-end` when 2469 * the reference element overlaps its boundaries. 2470 * 2471 * The original placement should have a set variation. 2472 */ 2473 flipVariations: false, 2474 /** 2475 * @prop {Boolean} flipVariationsByContent=false 2476 * The popper will switch placement variation between `-start` and `-end` when 2477 * the popper element overlaps its reference boundaries. 2478 * 2479 * The original placement should have a set variation. 2480 */ 2481 flipVariationsByContent: false 2482 }, 2483 2484 /** 2485 * Modifier used to make the popper flow toward the inner of the reference element. 2486 * By default, when this modifier is disabled, the popper will be placed outside 2487 * the reference element. 2488 * @memberof modifiers 2489 * @inner 2490 */ 2491 inner: { 2492 /** @prop {number} order=700 - Index used to define the order of execution */ 2493 order: 700, 2494 /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */ 2495 enabled: false, 2496 /** @prop {ModifierFn} */ 2497 fn: inner 2498 }, 2499 2500 /** 2501 * Modifier used to hide the popper when its reference element is outside of the 2502 * popper boundaries. It will set a `x-out-of-boundaries` attribute which can 2503 * be used to hide with a CSS selector the popper when its reference is 2504 * out of boundaries. 2505 * 2506 * Requires the `preventOverflow` modifier before it in order to work. 2507 * @memberof modifiers 2508 * @inner 2509 */ 2510 hide: { 2511 /** @prop {number} order=800 - Index used to define the order of execution */ 2512 order: 800, 2513 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 2514 enabled: true, 2515 /** @prop {ModifierFn} */ 2516 fn: hide 2517 }, 2518 2519 /** 2520 * Computes the style that will be applied to the popper element to gets 2521 * properly positioned. 2522 * 2523 * Note that this modifier will not touch the DOM, it just prepares the styles 2524 * so that `applyStyle` modifier can apply it. This separation is useful 2525 * in case you need to replace `applyStyle` with a custom implementation. 2526 * 2527 * This modifier has `850` as `order` value to maintain backward compatibility 2528 * with previous versions of Popper.js. Expect the modifiers ordering method 2529 * to change in future major versions of the library. 2530 * 2531 * @memberof modifiers 2532 * @inner 2533 */ 2534 computeStyle: { 2535 /** @prop {number} order=850 - Index used to define the order of execution */ 2536 order: 850, 2537 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 2538 enabled: true, 2539 /** @prop {ModifierFn} */ 2540 fn: computeStyle, 2541 /** 2542 * @prop {Boolean} gpuAcceleration=true 2543 * If true, it uses the CSS 3D transformation to position the popper. 2544 * Otherwise, it will use the `top` and `left` properties 2545 */ 2546 gpuAcceleration: true, 2547 /** 2548 * @prop {string} [x='bottom'] 2549 * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin. 2550 * Change this if your popper should grow in a direction different from `bottom` 2551 */ 2552 x: 'bottom', 2553 /** 2554 * @prop {string} [x='left'] 2555 * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin. 2556 * Change this if your popper should grow in a direction different from `right` 2557 */ 2558 y: 'right' 2559 }, 2560 2561 /** 2562 * Applies the computed styles to the popper element. 2563 * 2564 * All the DOM manipulations are limited to this modifier. This is useful in case 2565 * you want to integrate Popper.js inside a framework or view library and you 2566 * want to delegate all the DOM manipulations to it. 2567 * 2568 * Note that if you disable this modifier, you must make sure the popper element 2569 * has its position set to `absolute` before Popper.js can do its work! 2570 * 2571 * Just disable this modifier and define your own to achieve the desired effect. 2572 * 2573 * @memberof modifiers 2574 * @inner 2575 */ 2576 applyStyle: { 2577 /** @prop {number} order=900 - Index used to define the order of execution */ 2578 order: 900, 2579 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 2580 enabled: true, 2581 /** @prop {ModifierFn} */
vendor: 5,215 bytes, lines 2582-2720
2582 fn: applyStyle, 2583 /** @prop {Function} */ 2584 onLoad: applyStyleOnLoad, 2585 /** 2586 * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier 2587 * @prop {Boolean} gpuAcceleration=true 2588 * If true, it uses the CSS 3D transformation to position the popper. 2589 * Otherwise, it will use the `top` and `left` properties 2590 */ 2591 gpuAcceleration: undefined 2592 } 2593 }; 2594 2595 /** 2596 * The `dataObject` is an object containing all the information used by Popper.js. 2597 * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks. 2598 * @name dataObject 2599 * @property {Object} data.instance The Popper.js instance 2600 * @property {String} data.placement Placement applied to popper 2601 * @property {String} data.originalPlacement Placement originally defined on init 2602 * @property {Boolean} data.flipped True if popper has been flipped by flip modifier 2603 * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper 2604 * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier 2605 * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`) 2606 * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`) 2607 * @property {Object} data.boundaries Offsets of the popper boundaries 2608 * @property {Object} data.offsets The measurements of popper, reference and arrow elements 2609 * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values 2610 * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values 2611 * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0 2612 */ 2613 2614 /** 2615 * Default options provided to Popper.js constructor.<br /> 2616 * These can be overridden using the `options` argument of Popper.js.<br /> 2617 * To override an option, simply pass an object with the same 2618 * structure of the `options` object, as the 3rd argument. For example: 2619 * ``` 2620 * new Popper(ref, pop, { 2621 * modifiers: { 2622 * preventOverflow: { enabled: false } 2623 * } 2624 * }) 2625 * ``` 2626 * @type {Object} 2627 * @static 2628 * @memberof Popper 2629 */ 2630 var Defaults = { 2631 /** 2632 * Popper's placement. 2633 * @prop {Popper.placements} placement='bottom' 2634 */ 2635 placement: 'bottom', 2636 2637 /** 2638 * Set this to true if you want popper to position it self in 'fixed' mode 2639 * @prop {Boolean} positionFixed=false 2640 */ 2641 positionFixed: false, 2642 2643 /** 2644 * Whether events (resize, scroll) are initially enabled. 2645 * @prop {Boolean} eventsEnabled=true 2646 */ 2647 eventsEnabled: true, 2648 2649 /** 2650 * Set to true if you want to automatically remove the popper when 2651 * you call the `destroy` method. 2652 * @prop {Boolean} removeOnDestroy=false 2653 */ 2654 removeOnDestroy: false, 2655 2656 /** 2657 * Callback called when the popper is created.<br /> 2658 * By default, it is set to no-op.<br /> 2659 * Access Popper.js instance with `data.instance`. 2660 * @prop {onCreate} 2661 */ 2662 onCreate: function onCreate() {}, 2663 2664 /** 2665 * Callback called when the popper is updated. This callback is not called 2666 * on the initialization/creation of the popper, but only on subsequent 2667 * updates.<br /> 2668 * By default, it is set to no-op.<br /> 2669 * Access Popper.js instance with `data.instance`. 2670 * @prop {onUpdate} 2671 */ 2672 onUpdate: function onUpdate() {}, 2673 2674 /** 2675 * List of modifiers used to modify the offsets before they are applied to the popper. 2676 * They provide most of the functionalities of Popper.js. 2677 * @prop {modifiers} 2678 */ 2679 modifiers: modifiers 2680 }; 2681 2682 /** 2683 * @callback onCreate 2684 * @param {dataObject} data 2685 */ 2686 2687 /** 2688 * @callback onUpdate 2689 * @param {dataObject} data 2690 */ 2691 2692 // Utils 2693 // Methods 2694 var Popper = function () { 2695 /** 2696 * Creates a new Popper.js instance. 2697 * @class Popper 2698 * @param {Element|referenceObject} reference - The reference element used to position the popper 2699 * @param {Element} popper - The HTML / XML element used as the popper 2700 * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults) 2701 * @return {Object} instance - The generated Popper.js instance 2702 */ 2703 function Popper(reference, popper) { 2704 var _this = this; 2705 2706 var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; 2707 classCallCheck(this, Popper); 2708 2709 this.scheduleUpdate = function () { 2710 return requestAnimationFrame(_this.update); 2711 }; 2712 2713 // make update() debounced, so that it only runs at most once-per-tick 2714 this.update = debounce(this.update.bind(this)); 2715 2716 // with {} we create a new object with the options inside it 2717 this.options = _extends$1({}, Popper.Defaults, options); 2718 2719 // init state 2720 this.state = {
vendor: 18,066 bytes, lines 2721-3246
2721 isDestroyed: false, 2722 isCreated: false, 2723 scrollParents: [] 2724 }; 2725 2726 // get reference and popper elements (allow jQuery wrappers) 2727 this.reference = reference && reference.jquery ? reference[0] : reference; 2728 this.popper = popper && popper.jquery ? popper[0] : popper; 2729 2730 // Deep merge modifiers options 2731 this.options.modifiers = {}; 2732 Object.keys(_extends$1({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) { 2733 _this.options.modifiers[name] = _extends$1({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {}); 2734 }); 2735 2736 // Refactoring modifiers' list (Object => Array) 2737 this.modifiers = Object.keys(this.options.modifiers).map(function (name) { 2738 return _extends$1({ 2739 name: name 2740 }, _this.options.modifiers[name]); 2741 }) 2742 // sort the modifiers by order 2743 .sort(function (a, b) { 2744 return a.order - b.order; 2745 }); 2746 2747 // modifiers have the ability to execute arbitrary code when Popper.js get inited 2748 // such code is executed in the same order of its modifier 2749 // they could add new properties to their options configuration 2750 // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`! 2751 this.modifiers.forEach(function (modifierOptions) { 2752 if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) { 2753 modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state); 2754 } 2755 }); 2756 2757 // fire the first update to position the popper in the right place 2758 this.update(); 2759 2760 var eventsEnabled = this.options.eventsEnabled; 2761 if (eventsEnabled) { 2762 // setup event listeners, they will take care of update the position in specific situations 2763 this.enableEventListeners(); 2764 } 2765 2766 this.state.eventsEnabled = eventsEnabled; 2767 } 2768 2769 // We can't use class properties because they don't get listed in the 2770 // class prototype and break stuff like Sinon stubs 2771 2772 2773 createClass(Popper, [{ 2774 key: 'update', 2775 value: function update$$1() { 2776 return update.call(this); 2777 } 2778 }, { 2779 key: 'destroy', 2780 value: function destroy$$1() { 2781 return destroy.call(this); 2782 } 2783 }, { 2784 key: 'enableEventListeners', 2785 value: function enableEventListeners$$1() { 2786 return enableEventListeners.call(this); 2787 } 2788 }, { 2789 key: 'disableEventListeners', 2790 value: function disableEventListeners$$1() { 2791 return disableEventListeners.call(this); 2792 } 2793 2794 /** 2795 * Schedules an update. It will run on the next UI update available. 2796 * @method scheduleUpdate 2797 * @memberof Popper 2798 */ 2799 2800 2801 /** 2802 * Collection of utilities useful when writing custom modifiers. 2803 * Starting from version 1.7, this method is available only if you 2804 * include `popper-utils.js` before `popper.js`. 2805 * 2806 * **DEPRECATION**: This way to access PopperUtils is deprecated 2807 * and will be removed in v2! Use the PopperUtils module directly instead. 2808 * Due to the high instability of the methods contained in Utils, we can't 2809 * guarantee them to follow semver. Use them at your own risk! 2810 * @static 2811 * @private 2812 * @type {Object} 2813 * @deprecated since version 1.8 2814 * @member Utils 2815 * @memberof Popper 2816 */ 2817 2818 }]); 2819 return Popper; 2820 }(); 2821 2822 /** 2823 * The `referenceObject` is an object that provides an interface compatible with Popper.js 2824 * and lets you use it as replacement of a real DOM node.<br /> 2825 * You can use this method to position a popper relatively to a set of coordinates 2826 * in case you don't have a DOM node to use as reference. 2827 * 2828 * ``` 2829 * new Popper(referenceObject, popperNode); 2830 * ``` 2831 * 2832 * NB: This feature isn't supported in Internet Explorer 10. 2833 * @name referenceObject 2834 * @property {Function} data.getBoundingClientRect 2835 * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method. 2836 * @property {number} data.clientWidth 2837 * An ES6 getter that will return the width of the virtual reference element. 2838 * @property {number} data.clientHeight 2839 * An ES6 getter that will return the height of the virtual reference element. 2840 */ 2841 2842 2843 Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils; 2844 Popper.placements = placements; 2845 Popper.Defaults = Defaults; 2846 2847 /** 2848 * ------------------------------------------------------------------------ 2849 * Constants 2850 * ------------------------------------------------------------------------ 2851 */ 2852 2853 var NAME = 'alert'; 2854 var VERSION = '4.6.0'; 2855 var DATA_KEY = 'bs.alert'; 2856 var EVENT_KEY = "." + DATA_KEY; 2857 var DATA_API_KEY = '.data-api'; 2858 var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME]; 2859 var SELECTOR_DISMISS = '[data-dismiss="alert"]'; 2860 var EVENT_CLOSE = "close" + EVENT_KEY; 2861 var EVENT_CLOSED = "closed" + EVENT_KEY; 2862 var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY; 2863 var CLASS_NAME_ALERT = 'alert'; 2864 var CLASS_NAME_FADE = 'fade'; 2865 var CLASS_NAME_SHOW = 'show'; 2866 /** 2867 * ------------------------------------------------------------------------ 2868 * Class Definition 2869 * ------------------------------------------------------------------------ 2870 */ 2871 2872 var Alert = /*#__PURE__*/function () { 2873 function Alert(element) { 2874 this._element = element; 2875 } // Getters 2876 2877 2878 var _proto = Alert.prototype; 2879 2880 // Public 2881 _proto.close = function close(element) { 2882 var rootElement = this._element; 2883 2884 if (element) { 2885 rootElement = this._getRootElement(element); 2886 } 2887 2888 var customEvent = this._triggerCloseEvent(rootElement); 2889 2890 if (customEvent.isDefaultPrevented()) { 2891 return; 2892 } 2893 2894 this._removeElement(rootElement); 2895 }; 2896 2897 _proto.dispose = function dispose() { 2898 $__default['default'].removeData(this._element, DATA_KEY); 2899 this._element = null; 2900 } // Private 2901 ; 2902 2903 _proto._getRootElement = function _getRootElement(element) { 2904 var selector = Util.getSelectorFromElement(element); 2905 var parent = false; 2906 2907 if (selector) { 2908 parent = document.querySelector(selector); 2909 } 2910 2911 if (!parent) { 2912 parent = $__default['default'](element).closest("." + CLASS_NAME_ALERT)[0]; 2913 } 2914 2915 return parent; 2916 }; 2917 2918 _proto._triggerCloseEvent = function _triggerCloseEvent(element) { 2919 var closeEvent = $__default['default'].Event(EVENT_CLOSE); 2920 $__default['default'](element).trigger(closeEvent); 2921 return closeEvent; 2922 }; 2923 2924 _proto._removeElement = function _removeElement(element) { 2925 var _this = this; 2926 2927 $__default['default'](element).removeClass(CLASS_NAME_SHOW); 2928 2929 if (!$__default['default'](element).hasClass(CLASS_NAME_FADE)) { 2930 this._destroyElement(element); 2931 2932 return; 2933 } 2934 2935 var transitionDuration = Util.getTransitionDurationFromElement(element); 2936 $__default['default'](element).one(Util.TRANSITION_END, function (event) { 2937 return _this._destroyElement(element, event); 2938 }).emulateTransitionEnd(transitionDuration); 2939 }; 2940 2941 _proto._destroyElement = function _destroyElement(element) { 2942 $__default['default'](element).detach().trigger(EVENT_CLOSED).remove(); 2943 } // Static 2944 ; 2945 2946 Alert._jQueryInterface = function _jQueryInterface(config) { 2947 return this.each(function () { 2948 var $element = $__default['default'](this); 2949 var data = $element.data(DATA_KEY); 2950 2951 if (!data) { 2952 data = new Alert(this); 2953 $element.data(DATA_KEY, data); 2954 } 2955 2956 if (config === 'close') { 2957 data[config](this); 2958 } 2959 }); 2960 }; 2961 2962 Alert._handleDismiss = function _handleDismiss(alertInstance) { 2963 return function (event) { 2964 if (event) { 2965 event.preventDefault(); 2966 } 2967 2968 alertInstance.close(this); 2969 }; 2970 }; 2971 2972 _createClass(Alert, null, [{ 2973 key: "VERSION", 2974 get: function get() { 2975 return VERSION; 2976 } 2977 }]); 2978 2979 return Alert; 2980 }(); 2981 /** 2982 * ------------------------------------------------------------------------ 2983 * Data Api implementation 2984 * ------------------------------------------------------------------------ 2985 */ 2986 2987 2988 $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert())); 2989 /** 2990 * ------------------------------------------------------------------------ 2991 * jQuery 2992 * ------------------------------------------------------------------------ 2993 */ 2994 2995 $__default['default'].fn[NAME] = Alert._jQueryInterface; 2996 $__default['default'].fn[NAME].Constructor = Alert; 2997 2998 $__default['default'].fn[NAME].noConflict = function () { 2999 $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT; 3000 return Alert._jQueryInterface; 3001 }; 3002 3003 /** 3004 * ------------------------------------------------------------------------ 3005 * Constants 3006 * ------------------------------------------------------------------------ 3007 */ 3008 3009 var NAME$1 = 'button'; 3010 var VERSION$1 = '4.6.0'; 3011 var DATA_KEY$1 = 'bs.button'; 3012 var EVENT_KEY$1 = "." + DATA_KEY$1; 3013 var DATA_API_KEY$1 = '.data-api'; 3014 var JQUERY_NO_CONFLICT$1 = $__default['default'].fn[NAME$1]; 3015 var CLASS_NAME_ACTIVE = 'active'; 3016 var CLASS_NAME_BUTTON = 'btn'; 3017 var CLASS_NAME_FOCUS = 'focus'; 3018 var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]'; 3019 var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]'; 3020 var SELECTOR_DATA_TOGGLE = '[data-toggle="button"]'; 3021 var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn'; 3022 var SELECTOR_INPUT = 'input:not([type="hidden"])'; 3023 var SELECTOR_ACTIVE = '.active'; 3024 var SELECTOR_BUTTON = '.btn'; 3025 var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$1 + DATA_API_KEY$1; 3026 var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1); 3027 var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$1 + DATA_API_KEY$1; 3028 /** 3029 * ------------------------------------------------------------------------ 3030 * Class Definition 3031 * ------------------------------------------------------------------------ 3032 */ 3033 3034 var Button = /*#__PURE__*/function () { 3035 function Button(element) { 3036 this._element = element; 3037 this.shouldAvoidTriggerChange = false; 3038 } // Getters 3039 3040 3041 var _proto = Button.prototype; 3042 3043 // Public 3044 _proto.toggle = function toggle() { 3045 var triggerChangeEvent = true; 3046 var addAriaPressed = true; 3047 var rootElement = $__default['default'](this._element).closest(SELECTOR_DATA_TOGGLES)[0]; 3048 3049 if (rootElement) { 3050 var input = this._element.querySelector(SELECTOR_INPUT); 3051 3052 if (input) { 3053 if (input.type === 'radio') { 3054 if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) { 3055 triggerChangeEvent = false; 3056 } else { 3057 var activeElement = rootElement.querySelector(SELECTOR_ACTIVE); 3058 3059 if (activeElement) { 3060 $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE); 3061 } 3062 } 3063 } 3064 3065 if (triggerChangeEvent) { 3066 // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input 3067 if (input.type === 'checkbox' || input.type === 'radio') { 3068 input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE); 3069 } 3070 3071 if (!this.shouldAvoidTriggerChange) { 3072 $__default['default'](input).trigger('change'); 3073 } 3074 } 3075 3076 input.focus(); 3077 addAriaPressed = false; 3078 } 3079 } 3080 3081 if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) { 3082 if (addAriaPressed) { 3083 this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE)); 3084 } 3085 3086 if (triggerChangeEvent) { 3087 $__default['default'](this._element).toggleClass(CLASS_NAME_ACTIVE); 3088 } 3089 } 3090 }; 3091 3092 _proto.dispose = function dispose() { 3093 $__default['default'].removeData(this._element, DATA_KEY$1); 3094 this._element = null; 3095 } // Static 3096 ; 3097 3098 Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) { 3099 return this.each(function () { 3100 var $element = $__default['default'](this); 3101 var data = $element.data(DATA_KEY$1); 3102 3103 if (!data) { 3104 data = new Button(this); 3105 $element.data(DATA_KEY$1, data); 3106 } 3107 3108 data.shouldAvoidTriggerChange = avoidTriggerChange; 3109 3110 if (config === 'toggle') { 3111 data[config](); 3112 } 3113 }); 3114 }; 3115 3116 _createClass(Button, null, [{ 3117 key: "VERSION", 3118 get: function get() { 3119 return VERSION$1; 3120 } 3121 }]); 3122 3123 return Button; 3124 }(); 3125 /** 3126 * ------------------------------------------------------------------------ 3127 * Data Api implementation 3128 * ------------------------------------------------------------------------ 3129 */ 3130 3131 3132 $__default['default'](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE_CARROT, function (event) { 3133 var button = event.target; 3134 var initialButton = button; 3135 3136 if (!$__default['default'](button).hasClass(CLASS_NAME_BUTTON)) { 3137 button = $__default['default'](button).closest(SELECTOR_BUTTON)[0]; 3138 } 3139 3140 if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) { 3141 event.preventDefault(); // work around Firefox bug #1540995 3142 } else { 3143 var inputBtn = button.querySelector(SELECTOR_INPUT); 3144 3145 if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) { 3146 event.preventDefault(); // work around Firefox bug #1540995 3147 3148 return; 3149 } 3150 3151 if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') { 3152 Button._jQueryInterface.call($__default['default'](button), 'toggle', initialButton.tagName === 'INPUT'); 3153 } 3154 } 3155 }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) { 3156 var button = $__default['default'](event.target).closest(SELECTOR_BUTTON)[0]; 3157 $__default['default'](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type)); 3158 }); 3159 $__default['default'](window).on(EVENT_LOAD_DATA_API, function () { 3160 // ensure correct active class is set to match the controls' actual values/states 3161 // find all checkboxes/readio buttons inside data-toggle groups 3162 var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS)); 3163 3164 for (var i = 0, len = buttons.length; i < len; i++) { 3165 var button = buttons[i]; 3166 var input = button.querySelector(SELECTOR_INPUT); 3167 3168 if (input.checked || input.hasAttribute('checked')) { 3169 button.classList.add(CLASS_NAME_ACTIVE); 3170 } else { 3171 button.classList.remove(CLASS_NAME_ACTIVE); 3172 } 3173 } // find all button toggles 3174 3175 3176 buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE)); 3177 3178 for (var _i = 0, _len = buttons.length; _i < _len; _i++) { 3179 var _button = buttons[_i]; 3180 3181 if (_button.getAttribute('aria-pressed') === 'true') { 3182 _button.classList.add(CLASS_NAME_ACTIVE); 3183 } else { 3184 _button.classList.remove(CLASS_NAME_ACTIVE); 3185 } 3186 } 3187 }); 3188 /** 3189 * ------------------------------------------------------------------------ 3190 * jQuery 3191 * ------------------------------------------------------------------------ 3192 */ 3193 3194 $__default['default'].fn[NAME$1] = Button._jQueryInterface; 3195 $__default['default'].fn[NAME$1].Constructor = Button; 3196 3197 $__default['default'].fn[NAME$1].noConflict = function () { 3198 $__default['default'].fn[NAME$1] = JQUERY_NO_CONFLICT$1; 3199 return Button._jQueryInterface; 3200 }; 3201 3202 /** 3203 * ------------------------------------------------------------------------ 3204 * Constants 3205 * ------------------------------------------------------------------------ 3206 */ 3207 3208 var NAME$3 = 'collapse'; 3209 var VERSION$3 = '4.6.0'; 3210 var DATA_KEY$3 = 'bs.collapse'; 3211 var EVENT_KEY$3 = "." + DATA_KEY$3; 3212 var DATA_API_KEY$3 = '.data-api'; 3213 var JQUERY_NO_CONFLICT$3 = $__default['default'].fn[NAME$3]; 3214 var Default$1 = { 3215 toggle: true, 3216 parent: '' 3217 }; 3218 var DefaultType$1 = { 3219 toggle: 'boolean', 3220 parent: '(string|element)' 3221 }; 3222 var EVENT_SHOW = "show" + EVENT_KEY$3; 3223 var EVENT_SHOWN = "shown" + EVENT_KEY$3; 3224 var EVENT_HIDE = "hide" + EVENT_KEY$3; 3225 var EVENT_HIDDEN = "hidden" + EVENT_KEY$3; 3226 var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3; 3227 var CLASS_NAME_SHOW$1 = 'show'; 3228 var CLASS_NAME_COLLAPSE = 'collapse'; 3229 var CLASS_NAME_COLLAPSING = 'collapsing'; 3230 var CLASS_NAME_COLLAPSED = 'collapsed'; 3231 var DIMENSION_WIDTH = 'width'; 3232 var DIMENSION_HEIGHT = 'height'; 3233 var SELECTOR_ACTIVES = '.show, .collapsing'; 3234 var SELECTOR_DATA_TOGGLE$1 = '[data-toggle="collapse"]'; 3235 /** 3236 * ------------------------------------------------------------------------ 3237 * Class Definition 3238 * ------------------------------------------------------------------------ 3239 */ 3240 3241 var Collapse = /*#__PURE__*/function () { 3242 function Collapse(element, config) { 3243 this._isTransitioning = false; 3244 this._element = element; 3245 this._config = this._getConfig(config); 3246 this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.i
vendor: 7,290 bytes, lines 3246-3454
3246d + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); 3247 var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$1)); 3248 3249 for (var i = 0, len = toggleList.length; i < len; i++) { 3250 var elem = toggleList[i]; 3251 var selector = Util.getSelectorFromElement(elem); 3252 var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) { 3253 return foundElem === element; 3254 }); 3255 3256 if (selector !== null && filterElement.length > 0) { 3257 this._selector = selector; 3258 3259 this._triggerArray.push(elem); 3260 } 3261 } 3262 3263 this._parent = this._config.parent ? this._getParent() : null; 3264 3265 if (!this._config.parent) { 3266 this._addAriaAndCollapsedClass(this._element, this._triggerArray); 3267 } 3268 3269 if (this._config.toggle) { 3270 this.toggle(); 3271 } 3272 } // Getters 3273 3274 3275 var _proto = Collapse.prototype; 3276 3277 // Public 3278 _proto.toggle = function toggle() { 3279 if ($__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) { 3280 this.hide(); 3281 } else { 3282 this.show(); 3283 } 3284 }; 3285 3286 _proto.show = function show() { 3287 var _this = this; 3288 3289 if (this._isTransitioning || $__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) { 3290 return; 3291 } 3292 3293 var actives; 3294 var activesData; 3295 3296 if (this._parent) { 3297 actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) { 3298 if (typeof _this._config.parent === 'string') { 3299 return elem.getAttribute('data-parent') === _this._config.parent; 3300 } 3301 3302 return elem.classList.contains(CLASS_NAME_COLLAPSE); 3303 }); 3304 3305 if (actives.length === 0) { 3306 actives = null; 3307 } 3308 } 3309 3310 if (actives) { 3311 activesData = $__default['default'](actives).not(this._selector).data(DATA_KEY$3); 3312 3313 if (activesData && activesData._isTransitioning) { 3314 return; 3315 } 3316 } 3317 3318 var startEvent = $__default['default'].Event(EVENT_SHOW); 3319 $__default['default'](this._element).trigger(startEvent); 3320 3321 if (startEvent.isDefaultPrevented()) { 3322 return; 3323 } 3324 3325 if (actives) { 3326 Collapse._jQueryInterface.call($__default['default'](actives).not(this._selector), 'hide'); 3327 3328 if (!activesData) { 3329 $__default['default'](actives).data(DATA_KEY$3, null); 3330 } 3331 } 3332 3333 var dimension = this._getDimension(); 3334 3335 $__default['default'](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING); 3336 this._element.style[dimension] = 0; 3337 3338 if (this._triggerArray.length) { 3339 $__default['default'](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true); 3340 } 3341 3342 this.setTransitioning(true); 3343 3344 var complete = function complete() { 3345 $__default['default'](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$1); 3346 _this._element.style[dimension] = ''; 3347 3348 _this.setTransitioning(false); 3349 3350 $__default['default'](_this._element).trigger(EVENT_SHOWN); 3351 }; 3352 3353 var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); 3354 var scrollSize = "scroll" + capitalizedDimension; 3355 var transitionDuration = Util.getTransitionDurationFromElement(this._element); 3356 $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 3357 this._element.style[dimension] = this._element[scrollSize] + "px"; 3358 }; 3359 3360 _proto.hide = function hide() { 3361 var _this2 = this; 3362 3363 if (this._isTransitioning || !$__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) { 3364 return; 3365 } 3366 3367 var startEvent = $__default['default'].Event(EVENT_HIDE); 3368 $__default['default'](this._element).trigger(startEvent); 3369 3370 if (startEvent.isDefaultPrevented()) { 3371 return; 3372 } 3373 3374 var dimension = this._getDimension(); 3375 3376 this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; 3377 Util.reflow(this._element); 3378 $__default['default'](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$1); 3379 var triggerArrayLength = this._triggerArray.length; 3380 3381 if (triggerArrayLength > 0) { 3382 for (var i = 0; i < triggerArrayLength; i++) { 3383 var trigger = this._triggerArray[i]; 3384 var selector = Util.getSelectorFromElement(trigger); 3385 3386 if (selector !== null) { 3387 var $elem = $__default['default']([].slice.call(document.querySelectorAll(selector))); 3388 3389 if (!$elem.hasClass(CLASS_NAME_SHOW$1)) { 3390 $__default['default'](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false); 3391 } 3392 } 3393 } 3394 } 3395 3396 this.setTransitioning(true); 3397 3398 var complete = function complete() { 3399 _this2.setTransitioning(false); 3400 3401 $__default['default'](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN); 3402 }; 3403 3404 this._element.style[dimension] = ''; 3405 var transitionDuration = Util.getTransitionDurationFromElement(this._element); 3406 $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 3407 }; 3408 3409 _proto.setTransitioning = function setTransitioning(isTransitioning) { 3410 this._isTransitioning = isTransitioning; 3411 }; 3412 3413 _proto.dispose = function dispose() { 3414 $__default['default'].removeData(this._element, DATA_KEY$3); 3415 this._config = null; 3416 this._parent = null; 3417 this._element = null; 3418 this._triggerArray = null; 3419 this._isTransitioning = null; 3420 } // Private 3421 ; 3422 3423 _proto._getConfig = function _getConfig(config) { 3424 config = _extends({}, Default$1, config); 3425 config.toggle = Boolean(config.toggle); // Coerce string values 3426 3427 Util.typeCheckConfig(NAME$3, config, DefaultType$1); 3428 return config; 3429 }; 3430 3431 _proto._getDimension = function _getDimension() { 3432 var hasWidth = $__default['default'](this._element).hasClass(DIMENSION_WIDTH); 3433 return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT; 3434 }; 3435 3436 _proto._getParent = function _getParent() { 3437 var _this3 = this; 3438 3439 var parent; 3440 3441 if (Util.isElement(this._config.parent)) { 3442 parent = this._config.parent; // It's a jQuery object 3443 3444 if (typeof this._config.parent.jquery !== 'undefined') { 3445 parent = this._config.parent[0]; 3446 } 3447 } else { 3448 parent = document.querySelector(this._config.parent); 3449 } 3450 3451 var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; 3452 var children = [].slice.call(parent.querySelectorAll(selector)); 3453 $__default['default'](children).each(function (i, element) { 3454 _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
vendor: 4,200 bytes, lines 3455-3573
3455 }); 3456 return parent; 3457 }; 3458 3459 _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { 3460 var isOpen = $__default['default'](element).hasClass(CLASS_NAME_SHOW$1); 3461 3462 if (triggerArray.length) { 3463 $__default['default'](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen); 3464 } 3465 } // Static 3466 ; 3467 3468 Collapse._getTargetFromElement = function _getTargetFromElement(element) { 3469 var selector = Util.getSelectorFromElement(element); 3470 return selector ? document.querySelector(selector) : null; 3471 }; 3472 3473 Collapse._jQueryInterface = function _jQueryInterface(config) { 3474 return this.each(function () { 3475 var $element = $__default['default'](this); 3476 var data = $element.data(DATA_KEY$3); 3477 3478 var _config = _extends({}, Default$1, $element.data(), typeof config === 'object' && config ? config : {}); 3479 3480 if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) { 3481 _config.toggle = false; 3482 } 3483 3484 if (!data) { 3485 data = new Collapse(this, _config); 3486 $element.data(DATA_KEY$3, data); 3487 } 3488 3489 if (typeof config === 'string') { 3490 if (typeof data[config] === 'undefined') { 3491 throw new TypeError("No method named \"" + config + "\""); 3492 } 3493 3494 data[config](); 3495 } 3496 }); 3497 }; 3498 3499 _createClass(Collapse, null, [{ 3500 key: "VERSION", 3501 get: function get() { 3502 return VERSION$3; 3503 } 3504 }, { 3505 key: "Default", 3506 get: function get() { 3507 return Default$1; 3508 } 3509 }]); 3510 3511 return Collapse; 3512 }(); 3513 /** 3514 * ------------------------------------------------------------------------ 3515 * Data Api implementation 3516 * ------------------------------------------------------------------------ 3517 */ 3518 3519 3520 $__default['default'](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) { 3521 // preventDefault only for <a> elements (which change the URL) not inside the collapsible element 3522 if (event.currentTarget.tagName === 'A') { 3523 event.preventDefault(); 3524 } 3525 3526 var $trigger = $__default['default'](this); 3527 var selector = Util.getSelectorFromElement(this); 3528 var selectors = [].slice.call(document.querySelectorAll(selector)); 3529 $__default['default'](selectors).each(function () { 3530 var $target = $__default['default'](this); 3531 var data = $target.data(DATA_KEY$3); 3532 var config = data ? 'toggle' : $trigger.data(); 3533 3534 Collapse._jQueryInterface.call($target, config); 3535 }); 3536 }); 3537 /** 3538 * ------------------------------------------------------------------------ 3539 * jQuery 3540 * ------------------------------------------------------------------------ 3541 */ 3542 3543 $__default['default'].fn[NAME$3] = Collapse._jQueryInterface; 3544 $__default['default'].fn[NAME$3].Constructor = Collapse; 3545 3546 $__default['default'].fn[NAME$3].noConflict = function () { 3547 $__default['default'].fn[NAME$3] = JQUERY_NO_CONFLICT$3; 3548 return Collapse._jQueryInterface; 3549 }; 3550 /** 3551 * ------------------------------------------------------------------------ 3552 * Constants 3553 * ------------------------------------------------------------------------ 3554 */ 3555 var NAME$4 = 'dropdown'; 3556 var VERSION$4 = '4.6.0'; 3557 var DATA_KEY$4 = 'bs.dropdown'; 3558 var EVENT_KEY$4 = "." + DATA_KEY$4; 3559 var DATA_API_KEY$4 = '.data-api'; 3560 var JQUERY_NO_CONFLICT$4 = $__default['default'].fn[NAME$4]; 3561 var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key 3562 3563 var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key 3564 3565 var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key 3566 3567 var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key 3568 3569 var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key 3570 3571 var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) 3572 3573 var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
vendor: 13,175 bytes, lines 3574-3959
3574 var EVENT_HIDE$1 = "hide" + EVENT_KEY$4; 3575 var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$4; 3576 var EVENT_SHOW$1 = "show" + EVENT_KEY$4; 3577 var EVENT_SHOWN$1 = "shown" + EVENT_KEY$4; 3578 var EVENT_CLICK = "click" + EVENT_KEY$4; 3579 var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$4 + DATA_API_KEY$4; 3580 var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$4 + DATA_API_KEY$4; 3581 var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$4 + DATA_API_KEY$4; 3582 var CLASS_NAME_DISABLED = 'disabled'; 3583 var CLASS_NAME_SHOW$2 = 'show'; 3584 var CLASS_NAME_DROPUP = 'dropup'; 3585 var CLASS_NAME_DROPRIGHT = 'dropright'; 3586 var CLASS_NAME_DROPLEFT = 'dropleft'; 3587 var CLASS_NAME_MENURIGHT = 'dropdown-menu-right'; 3588 var CLASS_NAME_POSITION_STATIC = 'position-static'; 3589 var SELECTOR_DATA_TOGGLE$2 = '[data-toggle="dropdown"]'; 3590 var SELECTOR_FORM_CHILD = '.dropdown form'; 3591 var SELECTOR_MENU = '.dropdown-menu'; 3592 var SELECTOR_NAVBAR_NAV = '.navbar-nav'; 3593 var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; 3594 var PLACEMENT_TOP = 'top-start'; 3595 var PLACEMENT_TOPEND = 'top-end'; 3596 var PLACEMENT_BOTTOM = 'bottom-start'; 3597 var PLACEMENT_BOTTOMEND = 'bottom-end'; 3598 var PLACEMENT_RIGHT = 'right-start'; 3599 var PLACEMENT_LEFT = 'left-start'; 3600 var Default$2 = { 3601 offset: 0, 3602 flip: true, 3603 boundary: 'scrollParent', 3604 reference: 'toggle', 3605 display: 'dynamic', 3606 popperConfig: null 3607 }; 3608 var DefaultType$2 = { 3609 offset: '(number|string|function)', 3610 flip: 'boolean', 3611 boundary: '(string|element)', 3612 reference: '(string|element)', 3613 display: 'string', 3614 popperConfig: '(null|object)' 3615 }; 3616 /** 3617 * ------------------------------------------------------------------------ 3618 * Class Definition 3619 * ------------------------------------------------------------------------ 3620 */ 3621 3622 var Dropdown = /*#__PURE__*/function () { 3623 function Dropdown(element, config) { 3624 this._element = element; 3625 this._popper = null; 3626 this._config = this._getConfig(config); 3627 this._menu = this._getMenuElement(); 3628 this._inNavbar = this._detectNavbar(); 3629 3630 this._addEventListeners(); 3631 } // Getters 3632 3633 3634 var _proto = Dropdown.prototype; 3635 3636 // Public 3637 _proto.toggle = function toggle() { 3638 if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED)) { 3639 return; 3640 } 3641 3642 var isActive = $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2); 3643 3644 Dropdown._clearMenus(); 3645 3646 if (isActive) { 3647 return; 3648 } 3649 3650 this.show(true); 3651 }; 3652 3653 _proto.show = function show(usePopper) { 3654 if (usePopper === void 0) { 3655 usePopper = false; 3656 } 3657 3658 if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2)) { 3659 return; 3660 } 3661 3662 var relatedTarget = { 3663 relatedTarget: this._element 3664 }; 3665 var showEvent = $__default['default'].Event(EVENT_SHOW$1, relatedTarget); 3666 3667 var parent = Dropdown._getParentFromElement(this._element); 3668 3669 $__default['default'](parent).trigger(showEvent); 3670 3671 if (showEvent.isDefaultPrevented()) { 3672 return; 3673 } // Totally disable Popper for Dropdowns in Navbar 3674 3675 3676 if (!this._inNavbar && usePopper) { 3677 /** 3678 * Check for Popper dependency 3679 * Popper - https://popper.js.org 3680 */ 3681 if (typeof Popper === 'undefined') { 3682 throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); 3683 } 3684 3685 var referenceElement = this._element; 3686 3687 if (this._config.reference === 'parent') { 3688 referenceElement = parent; 3689 } else if (Util.isElement(this._config.reference)) { 3690 referenceElement = this._config.reference; // Check if it's jQuery element 3691 3692 if (typeof this._config.reference.jquery !== 'undefined') { 3693 referenceElement = this._config.reference[0]; 3694 } 3695 } // If boundary is not `scrollParent`, then set position to `static` 3696 // to allow the menu to "escape" the scroll parent's boundaries 3697 // https://github.com/twbs/bootstrap/issues/24251 3698 3699 3700 if (this._config.boundary !== 'scrollParent') { 3701 $__default['default'](parent).addClass(CLASS_NAME_POSITION_STATIC); 3702 } 3703 3704 this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig()); 3705 } // If this is a touch-enabled device we add extra 3706 // empty mouseover listeners to the body's immediate children; 3707 // only needed because of broken event delegation on iOS 3708 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html 3709 3710 3711 if ('ontouchstart' in document.documentElement && $__default['default'](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) { 3712 $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop); 3713 } 3714 3715 this._element.focus(); 3716 3717 this._element.setAttribute('aria-expanded', true); 3718 3719 $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW$2); 3720 $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_SHOWN$1, relatedTarget)); 3721 }; 3722 3723 _proto.hide = function hide() { 3724 if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2)) { 3725 return; 3726 } 3727 3728 var relatedTarget = { 3729 relatedTarget: this._element 3730 }; 3731 var hideEvent = $__default['default'].Event(EVENT_HIDE$1, relatedTarget); 3732 3733 var parent = Dropdown._getParentFromElement(this._element); 3734 3735 $__default['default'](parent).trigger(hideEvent); 3736 3737 if (hideEvent.isDefaultPrevented()) { 3738 return; 3739 } 3740 3741 if (this._popper) { 3742 this._popper.destroy(); 3743 } 3744 3745 $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW$2); 3746 $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget)); 3747 }; 3748 3749 _proto.dispose = function dispose() { 3750 $__default['default'].removeData(this._element, DATA_KEY$4); 3751 $__default['default'](this._element).off(EVENT_KEY$4); 3752 this._element = null; 3753 this._menu = null; 3754 3755 if (this._popper !== null) { 3756 this._popper.destroy(); 3757 3758 this._popper = null; 3759 } 3760 }; 3761 3762 _proto.update = function update() { 3763 this._inNavbar = this._detectNavbar(); 3764 3765 if (this._popper !== null) { 3766 this._popper.scheduleUpdate(); 3767 } 3768 } // Private 3769 ; 3770 3771 _proto._addEventListeners = function _addEventListeners() { 3772 var _this = this; 3773 3774 $__default['default'](this._element).on(EVENT_CLICK, function (event) { 3775 event.preventDefault(); 3776 event.stopPropagation(); 3777 3778 _this.toggle(); 3779 }); 3780 }; 3781 3782 _proto._getConfig = function _getConfig(config) { 3783 config = _extends({}, this.constructor.Default, $__default['default'](this._element).data(), config); 3784 Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType); 3785 return config; 3786 }; 3787 3788 _proto._getMenuElement = function _getMenuElement() { 3789 if (!this._menu) { 3790 var parent = Dropdown._getParentFromElement(this._element); 3791 3792 if (parent) { 3793 this._menu = parent.querySelector(SELECTOR_MENU); 3794 } 3795 } 3796 3797 return this._menu; 3798 }; 3799 3800 _proto._getPlacement = function _getPlacement() { 3801 var $parentDropdown = $__default['default'](this._element.parentNode); 3802 var placement = PLACEMENT_BOTTOM; // Handle dropup 3803 3804 if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) { 3805 placement = $__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP; 3806 } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) { 3807 placement = PLACEMENT_RIGHT; 3808 } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) { 3809 placement = PLACEMENT_LEFT; 3810 } else if ($__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT)) { 3811 placement = PLACEMENT_BOTTOMEND; 3812 } 3813 3814 return placement; 3815 }; 3816 3817 _proto._detectNavbar = function _detectNavbar() { 3818 return $__default['default'](this._element).closest('.navbar').length > 0; 3819 }; 3820 3821 _proto._getOffset = function _getOffset() { 3822 var _this2 = this; 3823 3824 var offset = {}; 3825 3826 if (typeof this._config.offset === 'function') { 3827 offset.fn = function (data) { 3828 data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {}); 3829 return data; 3830 }; 3831 } else { 3832 offset.offset = this._config.offset; 3833 } 3834 3835 return offset; 3836 }; 3837 3838 _proto._getPopperConfig = function _getPopperConfig() { 3839 var popperConfig = { 3840 placement: this._getPlacement(), 3841 modifiers: { 3842 offset: this._getOffset(), 3843 flip: { 3844 enabled: this._config.flip 3845 }, 3846 preventOverflow: { 3847 boundariesElement: this._config.boundary 3848 } 3849 } 3850 }; // Disable Popper if we have a static display 3851 3852 if (this._config.display === 'static') { 3853 popperConfig.modifiers.applyStyle = { 3854 enabled: false 3855 }; 3856 } 3857 3858 return _extends({}, popperConfig, this._config.popperConfig); 3859 } // Static 3860 ; 3861 3862 Dropdown._jQueryInterface = function _jQueryInterface(config) { 3863 return this.each(function () { 3864 var data = $__default['default'](this).data(DATA_KEY$4); 3865 3866 var _config = typeof config === 'object' ? config : null; 3867 3868 if (!data) { 3869 data = new Dropdown(this, _config); 3870 $__default['default'](this).data(DATA_KEY$4, data); 3871 } 3872 3873 if (typeof config === 'string') { 3874 if (typeof data[config] === 'undefined') { 3875 throw new TypeError("No method named \"" + config + "\""); 3876 } 3877 3878 data[config](); 3879 } 3880 }); 3881 }; 3882 3883 Dropdown._clearMenus = function _clearMenus(event) { 3884 if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { 3885 return; 3886 } 3887 3888 var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2)); 3889 3890 for (var i = 0, len = toggles.length; i < len; i++) { 3891 var parent = Dropdown._getParentFromElement(toggles[i]); 3892 3893 var context = $__default['default'](toggles[i]).data(DATA_KEY$4); 3894 var relatedTarget = { 3895 relatedTarget: toggles[i] 3896 }; 3897 3898 if (event && event.type === 'click') { 3899 relatedTarget.clickEvent = event; 3900 } 3901 3902 if (!context) { 3903 continue; 3904 } 3905 3906 var dropdownMenu = context._menu; 3907 3908 if (!$__default['default'](parent).hasClass(CLASS_NAME_SHOW$2)) { 3909 continue; 3910 } 3911 3912 if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default['default'].contains(parent, event.target)) { 3913 continue; 3914 } 3915 3916 var hideEvent = $__default['default'].Event(EVENT_HIDE$1, relatedTarget); 3917 $__default['default'](parent).trigger(hideEvent); 3918 3919 if (hideEvent.isDefaultPrevented()) { 3920 continue; 3921 } // If this is a touch-enabled device we remove the extra 3922 // empty mouseover listeners we added for iOS support 3923 3924 3925 if ('ontouchstart' in document.documentElement) { 3926 $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop); 3927 } 3928 3929 toggles[i].setAttribute('aria-expanded', 'false'); 3930 3931 if (context._popper) { 3932 context._popper.destroy(); 3933 } 3934 3935 $__default['default'](dropdownMenu).removeClass(CLASS_NAME_SHOW$2); 3936 $__default['default'](parent).removeClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget)); 3937 } 3938 }; 3939 3940 Dropdown._getParentFromElement = function _getParentFromElement(element) { 3941 var parent; 3942 var selector = Util.getSelectorFromElement(element); 3943 3944 if (selector) { 3945 parent = document.querySelector(selector); 3946 } 3947 3948 return parent || element.parentNode; 3949 } // eslint-disable-next-line complexity 3950 ; 3951 3952 Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { 3953 // If not input/textarea: 3954 // - And not a key in REGEXP_KEYDOWN => not a dropdown command 3955 // If input/textarea: 3956 // - If space key => not a dropdown command 3957 // - If key is other than escape 3958 // - If key is not up or down => not a dropdown command 3959 // - If trigger inside the menu =>
vendor: 15,472 bytes, lines 3959-4420
3959 not a dropdown command 3960 if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default['default'](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { 3961 return; 3962 } 3963 3964 if (this.disabled || $__default['default'](this).hasClass(CLASS_NAME_DISABLED)) { 3965 return; 3966 } 3967 3968 var parent = Dropdown._getParentFromElement(this); 3969 3970 var isActive = $__default['default'](parent).hasClass(CLASS_NAME_SHOW$2); 3971 3972 if (!isActive && event.which === ESCAPE_KEYCODE) { 3973 return; 3974 } 3975 3976 event.preventDefault(); 3977 event.stopPropagation(); 3978 3979 if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) { 3980 if (event.which === ESCAPE_KEYCODE) { 3981 $__default['default'](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus'); 3982 } 3983 3984 $__default['default'](this).trigger('click'); 3985 return; 3986 } 3987 3988 var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) { 3989 return $__default['default'](item).is(':visible'); 3990 }); 3991 3992 if (items.length === 0) { 3993 return; 3994 } 3995 3996 var index = items.indexOf(event.target); 3997 3998 if (event.which === ARROW_UP_KEYCODE && index > 0) { 3999 // Up 4000 index--; 4001 } 4002 4003 if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { 4004 // Down 4005 index++; 4006 } 4007 4008 if (index < 0) { 4009 index = 0; 4010 } 4011 4012 items[index].focus(); 4013 }; 4014 4015 _createClass(Dropdown, null, [{ 4016 key: "VERSION", 4017 get: function get() { 4018 return VERSION$4; 4019 } 4020 }, { 4021 key: "Default", 4022 get: function get() { 4023 return Default$2; 4024 } 4025 }, { 4026 key: "DefaultType", 4027 get: function get() { 4028 return DefaultType$2; 4029 } 4030 }]); 4031 4032 return Dropdown; 4033 }(); 4034 /** 4035 * ------------------------------------------------------------------------ 4036 * Data Api implementation 4037 * ------------------------------------------------------------------------ 4038 */ 4039 4040 4041 $__default['default'](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$4 + " " + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) { 4042 event.preventDefault(); 4043 event.stopPropagation(); 4044 4045 Dropdown._jQueryInterface.call($__default['default'](this), 'toggle'); 4046 }).on(EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) { 4047 e.stopPropagation(); 4048 }); 4049 /** 4050 * ------------------------------------------------------------------------ 4051 * jQuery 4052 * ------------------------------------------------------------------------ 4053 */ 4054 4055 $__default['default'].fn[NAME$4] = Dropdown._jQueryInterface; 4056 $__default['default'].fn[NAME$4].Constructor = Dropdown; 4057 4058 $__default['default'].fn[NAME$4].noConflict = function () { 4059 $__default['default'].fn[NAME$4] = JQUERY_NO_CONFLICT$4; 4060 return Dropdown._jQueryInterface; 4061 }; 4062 4063 4064 /** 4065 * -------------------------------------------------------------------------- 4066 * Bootstrap (v4.6.0): tools/sanitizer.js 4067 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 4068 * -------------------------------------------------------------------------- 4069 */ 4070 var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']; 4071 var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; 4072 var DefaultWhitelist = { 4073 // Global attributes allowed on any supplied element below. 4074 '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], 4075 a: ['target', 'href', 'title', 'rel'], 4076 area: [], 4077 b: [], 4078 br: [], 4079 col: [], 4080 code: [], 4081 div: [], 4082 em: [], 4083 hr: [], 4084 h1: [], 4085 h2: [], 4086 h3: [], 4087 h4: [], 4088 h5: [], 4089 h6: [], 4090 i: [], 4091 img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], 4092 li: [], 4093 ol: [], 4094 p: [], 4095 pre: [], 4096 s: [], 4097 small: [], 4098 span: [], 4099 sub: [], 4100 sup: [], 4101 strong: [], 4102 u: [], 4103 ul: [] 4104 }; 4105 /** 4106 * A pattern that recognizes a commonly useful subset of URLs that are safe. 4107 * 4108 * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts 4109 */ 4110 4111 var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi; 4112 /** 4113 * A pattern that matches safe data URLs. Only matches image, video and audio types. 4114 * 4115 * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts 4116 */ 4117 4118 var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; 4119 4120 function allowedAttribute(attr, allowedAttributeList) { 4121 var attrName = attr.nodeName.toLowerCase(); 4122 4123 if (allowedAttributeList.indexOf(attrName) !== -1) { 4124 if (uriAttrs.indexOf(attrName) !== -1) { 4125 return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)); 4126 } 4127 4128 return true; 4129 } 4130 4131 var regExp = allowedAttributeList.filter(function (attrRegex) { 4132 return attrRegex instanceof RegExp; 4133 }); // Check if a regular expression validates the attribute. 4134 4135 for (var i = 0, len = regExp.length; i < len; i++) { 4136 if (attrName.match(regExp[i])) { 4137 return true; 4138 } 4139 } 4140 4141 return false; 4142 } 4143 4144 function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) { 4145 if (unsafeHtml.length === 0) { 4146 return unsafeHtml; 4147 } 4148 4149 if (sanitizeFn && typeof sanitizeFn === 'function') { 4150 return sanitizeFn(unsafeHtml); 4151 } 4152 4153 var domParser = new window.DOMParser(); 4154 var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); 4155 var whitelistKeys = Object.keys(whiteList); 4156 var elements = [].slice.call(createdDocument.body.querySelectorAll('*')); 4157 4158 var _loop = function _loop(i, len) { 4159 var el = elements[i]; 4160 var elName = el.nodeName.toLowerCase(); 4161 4162 if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) { 4163 el.parentNode.removeChild(el); 4164 return "continue"; 4165 } 4166 4167 var attributeList = [].slice.call(el.attributes); 4168 var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []); 4169 attributeList.forEach(function (attr) { 4170 if (!allowedAttribute(attr, whitelistedAttributes)) { 4171 el.removeAttribute(attr.nodeName); 4172 } 4173 }); 4174 }; 4175 4176 for (var i = 0, len = elements.length; i < len; i++) { 4177 var _ret = _loop(i); 4178 4179 if (_ret === "continue") continue; 4180 } 4181 4182 return createdDocument.body.innerHTML; 4183 } 4184 /** 4185 * ------------------------------------------------------------------------ 4186 * Constants 4187 * ------------------------------------------------------------------------ 4188 */ 4189 4190 var NAME$9 = 'tab'; 4191 var VERSION$9 = '4.6.0'; 4192 var DATA_KEY$9 = 'bs.tab'; 4193 var EVENT_KEY$9 = "." + DATA_KEY$9; 4194 var DATA_API_KEY$7 = '.data-api'; 4195 var JQUERY_NO_CONFLICT$9 = $__default['default'].fn[NAME$9]; 4196 var EVENT_HIDE$3 = "hide" + EVENT_KEY$9; 4197 var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$9; 4198 var EVENT_SHOW$3 = "show" + EVENT_KEY$9; 4199 var EVENT_SHOWN$3 = "shown" + EVENT_KEY$9; 4200 var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$9 + DATA_API_KEY$7; 4201 var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'; 4202 var CLASS_NAME_ACTIVE$3 = 'active'; 4203 var CLASS_NAME_DISABLED$1 = 'disabled'; 4204 var CLASS_NAME_FADE$4 = 'fade'; 4205 var CLASS_NAME_SHOW$6 = 'show'; 4206 var SELECTOR_DROPDOWN$1 = '.dropdown'; 4207 var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group'; 4208 var SELECTOR_ACTIVE$2 = '.active'; 4209 var SELECTOR_ACTIVE_UL = '> li > .active'; 4210 var SELECTOR_DATA_TOGGLE$4 = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]'; 4211 var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; 4212 var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active'; 4213 /** 4214 * ------------------------------------------------------------------------ 4215 * Class Definition 4216 * ------------------------------------------------------------------------ 4217 */ 4218 4219 var Tab = /*#__PURE__*/function () { 4220 function Tab(element) { 4221 this._element = element; 4222 } // Getters 4223 4224 4225 var _proto = Tab.prototype; 4226 4227 // Public 4228 _proto.show = function show() { 4229 var _this = this; 4230 4231 if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default['default'](this._element).hasClass(CLASS_NAME_ACTIVE$3) || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED$1)) { 4232 return; 4233 } 4234 4235 var target; 4236 var previous; 4237 var listElement = $__default['default'](this._element).closest(SELECTOR_NAV_LIST_GROUP$1)[0]; 4238 var selector = Util.getSelectorFromElement(this._element); 4239 4240 if (listElement) { 4241 var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$2; 4242 previous = $__default['default'].makeArray($__default['default'](listElement).find(itemSelector)); 4243 previous = previous[previous.length - 1]; 4244 } 4245 4246 var hideEvent = $__default['default'].Event(EVENT_HIDE$3, { 4247 relatedTarget: this._element 4248 }); 4249 var showEvent = $__default['default'].Event(EVENT_SHOW$3, { 4250 relatedTarget: previous 4251 }); 4252 4253 if (previous) { 4254 $__default['default'](previous).trigger(hideEvent); 4255 } 4256 4257 $__default['default'](this._element).trigger(showEvent); 4258 4259 if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { 4260 return; 4261 } 4262 4263 if (selector) { 4264 target = document.querySelector(selector); 4265 } 4266 4267 this._activate(this._element, listElement); 4268 4269 var complete = function complete() { 4270 var hiddenEvent = $__default['default'].Event(EVENT_HIDDEN$3, { 4271 relatedTarget: _this._element 4272 }); 4273 var shownEvent = $__default['default'].Event(EVENT_SHOWN$3, { 4274 relatedTarget: previous 4275 }); 4276 $__default['default'](previous).trigger(hiddenEvent); 4277 $__default['default'](_this._element).trigger(shownEvent); 4278 }; 4279 4280 if (target) { 4281 this._activate(target, target.parentNode, complete); 4282 } else { 4283 complete(); 4284 } 4285 }; 4286 4287 _proto.dispose = function dispose() { 4288 $__default['default'].removeData(this._element, DATA_KEY$9); 4289 this._element = null; 4290 } // Private 4291 ; 4292 4293 _proto._activate = function _activate(element, container, callback) { 4294 var _this2 = this; 4295 4296 var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default['default'](container).find(SELECTOR_ACTIVE_UL) : $__default['default'](container).children(SELECTOR_ACTIVE$2); 4297 var active = activeElements[0]; 4298 var isTransitioning = callback && active && $__default['default'](active).hasClass(CLASS_NAME_FADE$4); 4299 4300 var complete = function complete() { 4301 return _this2._transitionComplete(element, active, callback); 4302 }; 4303 4304 if (active && isTransitioning) { 4305 var transitionDuration = Util.getTransitionDurationFromElement(active); 4306 $__default['default'](active).removeClass(CLASS_NAME_SHOW$6).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 4307 } else { 4308 complete(); 4309 } 4310 }; 4311 4312 _proto._transitionComplete = function _transitionComplete(element, active, callback) { 4313 if (active) { 4314 $__default['default'](active).removeClass(CLASS_NAME_ACTIVE$3); 4315 var dropdownChild = $__default['default'](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0]; 4316 4317 if (dropdownChild) { 4318 $__default['default'](dropdownChild).removeClass(CLASS_NAME_ACTIVE$3); 4319 } 4320 4321 if (active.getAttribute('role') === 'tab') { 4322 active.setAttribute('aria-selected', false); 4323 } 4324 } 4325 4326 $__default['default'](element).addClass(CLASS_NAME_ACTIVE$3); 4327 4328 if (element.getAttribute('role') === 'tab') { 4329 element.setAttribute('aria-selected', true); 4330 } 4331 4332 Util.reflow(element); 4333 4334 if (element.classList.contains(CLASS_NAME_FADE$4)) { 4335 element.classList.add(CLASS_NAME_SHOW$6); 4336 } 4337 4338 if (element.parentNode && $__default['default'](element.parentNode).hasClass(CLASS_NAME_DROPDOWN_MENU)) { 4339 var dropdownElement = $__default['default'](element).closest(SELECTOR_DROPDOWN$1)[0]; 4340 4341 if (dropdownElement) { 4342 var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE$1)); 4343 $__default['default'](dropdownToggleList).addClass(CLASS_NAME_ACTIVE$3); 4344 } 4345 4346 element.setAttribute('aria-expanded', true); 4347 } 4348 4349 if (callback) { 4350 callback(); 4351 } 4352 } // Static 4353 ; 4354 4355 Tab._jQueryInterface = function _jQueryInterface(config) { 4356 return this.each(function () { 4357 var $this = $__default['default'](this); 4358 var data = $this.data(DATA_KEY$9); 4359 4360 if (!data) { 4361 data = new Tab(this); 4362 $this.data(DATA_KEY$9, data); 4363 } 4364 4365 if (typeof config === 'string') { 4366 if (typeof data[config] === 'undefined') { 4367 throw new TypeError("No method named \"" + config + "\""); 4368 } 4369 4370 data[config](); 4371 } 4372 }); 4373 }; 4374 4375 _createClass(Tab, null, [{ 4376 key: "VERSION", 4377 get: function get() { 4378 return VERSION$9; 4379 } 4380 }]); 4381 4382 return Tab; 4383 }(); 4384 /** 4385 * ------------------------------------------------------------------------ 4386 * Data Api implementation 4387 * ------------------------------------------------------------------------ 4388 */ 4389 $__default['default'](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) { 4390 event.preventDefault(); 4391 4392 Tab._jQueryInterface.call($__default['default'](this), 'show'); 4393 }); 4394 /** 4395 * ------------------------------------------------------------------------ 4396 * jQuery 4397 * ------------------------------------------------------------------------ 4398 */ 4399 4400 $__default['default'].fn[NAME$9] = Tab._jQueryInterface; 4401 $__default['default'].fn[NAME$9].Constructor = Tab; 4402 4403 $__default['default'].fn[NAME$9].noConflict = function () { 4404 $__default['default'].fn[NAME$9] = JQUERY_NO_CONFLICT$9; 4405 return Tab._jQueryInterface; 4406 }; 4407 4408 exports.Alert = Alert; 4409 exports.Button = Button; 4410 exports.Collapse = Collapse; 4411 exports.Dropdown = Dropdown; 4412 exports.Tab = Tab; 4413 exports.Util = Util; 4414 4415 Object.defineProperty(exports, '__esModule', { value: true }); 4416 4417}))); 4418/* ======================================================================== 4419 * Bootstrap: affix.js v3.4.1 4420 * https://getbootstrap.com/docs/3.4/javascript/#affix
4421 * ======================================================================== 4422 * Copyright 2011-2019 Twitter, Inc. 4423 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 4424 * ======================================================================== */ 4425!function(t){"use strict";var i=function(e,o){this.options=t.extend({},i.DEFAULTS,o);var f=this.options.target===i.DEFAULTS.target?t(this.options.target):t(document).find(this.options.target);this.$target=f.on("scroll.bs.affix.data-api",t.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",t.proxy(this.checkPositionWithEventLoop,this)),this.$element=t(e),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};function e(e){return this.each(function(){var o=t(this),f=o.data("bs.affix"),n="object"==typeof e&&e;f||o.data("bs.affix",f=new i(this,n)),"string"==typeof e&&f[e]()})}i.VERSION="3.4.1",i.RESET="affix affix-top affix-bottom",i.DEFAULTS={offset:0,target:window},i.prototype.getState=function(t,i,e,o){var f=this.$target.scrollTop(),n=this.$element.offset(),s=this.$target.height();if(null!=e&&"top"==this.affixed)return f<e&&"top";if("bottom"==this.affixed)return null!=e?!(f+this.unpin<=n.top)&&"bottom":!(f+s<=t-o)&&"bottom";var a=null==this.affixed,h=a?f:n.top;return null!=e&&f<=e?"top":null!=o&&h+(a?s:i)>=t-o&&"bottom"},i.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(i.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},i.prototype.checkPositionWithEventLoop=function(){setTimeout(t.proxy(this.checkPosition,this),1)},i.prototype.checkPosition=function(){if(this.$element.is(":visible")){var e=this.$element.height(),o=this.options.offset,f=o.top,n=o.bottom,s=Math.max(t(document).height(),t(document.body).height());"object"!=typeof o&&(n=f=o),"function"==typeof f&&(f=o.top(this.$element)),"function"==typeof n&&(n=o.bottom(this.$element));var a=this.getState(s,e,f,n);if(this.affixed!=a){null!=this.unpin&&this.$element.css("top","");var h="affix"+(a?"-"+a:""),r=t.Event(h+".bs.affix");if(this.$element.trigger(r),r.isDefaultPrevented())return;this.affixed=a,this.unpin="bottom"==a?this.getPinnedOffset():null,this.$element.removeClass(i.RESET).addClass(h).trigger(h.replace("affix","affixed")+".bs.affix")}"bottom"==a&&this.$element.offset({top:s-e-n})}};var o=t.fn.affix;t.fn.affix=e,t.fn.affix.Constructor=i,t.fn.affix.noConflict=function(){return t.fn.affix=o,this},t(window).on("load",function(){t('[data-spy="affix"]').each(function(){var i=t(this),o=i.data();o.offset=o.offset||{},null!=o.offsetBottom&&(o.offset.bottom=o.offsetBottom),null!=o.offsetTop&&(o.offset.top=o.offsetTop),e.call(i,o)})})}(jQuery); 4426/*! jQuery Validation Plugin - v1.19.5 - 7/1/2022 4427 * https://jqueryvalidation.org/ 4428 * Copyright (c) 2022 Jörn Zaefferer; Licensed MIT */ 4429!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.submitButton=b.currentTarget,a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.submitButton&&(c.settings.submitHandler||c.formSubmitted)&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!(c.settings.submitHandler&&!c.settings.debug)||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element
vendor: 13,156 bytes, line 4429
4429(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0],k="undefined"!=typeof this.attr("contenteditable")&&"false"!==this.attr("contenteditable");if(null!=j&&(!j.form&&k&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}});var b=function(a){return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};a.extend(a.expr.pseudos||a.expr[":"],{blank:function(c){return!b(""+a(c).val())},filled:function(c){var d=a(c).val();return null!==d&&!!b(""+d)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");if(!this.form&&c&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name")),d===this.form){var e=a.data(this.form,"validator"),f="on"+b.type.replace(/^validate/,""),g=e.settings;g[f]&&!a(this).is(g.ignore)&&g[f].call(e,this,b)}}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.currentForm,e=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){e[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").trigger("focus").trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name"),e="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),e&&(this.form=a(this).closest("form")[0],this.name=d),this.form===b.currentForm&&(!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0))})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type,g="undefined"!=typeof e.attr("contenteditable")&&"false"!==e.attr("contenteditable");return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=g?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);"function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f&&(j=f.call(b,j),delete g.normalizer);for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a]},defaultMessage:function(b,c){"string"==typeof c&&(c={method:c});var d=this.findDefined(this.customMessage(b.name,c.method),this.customDataMessage(b,c.method),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c.method],"<strong>Warning: No message defined for "+b.name+"</strong>"),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.n
4429ame],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return void 0===a?"":a.replace(/([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);
vendor: 4,097 bytes, line 4429
4429return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()&&0===this.pendingRequest?(a(this.currentForm).trigger("submit"),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur").find(".validate-lessThan-blur").off(".validate-lessThan").removeClass("validate-lessThan-blur").find(".validate-lessThanEqual-blur").off(".validate-lessThanEqual").removeClass("validate-lessThanEqual-blur").find(".validate-greaterThanEqual-blur").off(".validate-greaterThanEqual").removeClass("validate-greaterThanEqual-blur").find(".validate-greaterThan-blur").off(".validate-greaterThan").removeClass("validate-greaterThan-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a["date"===b?"dateISO":c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),""===d&&(d=!0),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(a,d){b[a]="function"==typeof d&&"normalizer"!==a?d(c):d}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var a;b[this]&&(Array.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(a=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(a[0]),Number(a[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.val
4429idator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:void 0!==b&&null!==b&&b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(a)},date:function(){var a=!1;return function(b,c){return a||(a=!0,this.settings.debug&&window.console&&console.warn("The `date` method is deprecated and will be removed in version '2.0.0'.\nPlease don't use it, since it relies on the Date constructor, which\nbehaves very differently across browsers and locales. Use `dateISO`\ninstead or one of the locale specific methods in `localizations/`\nand `additional-methods.js`.")),this.optional(c)||!/Invalid|NaN/.test(new Date(b).toString())}}(),dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c},maxlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d<=c},rangelength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c[0]&&d<=c[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var c,d={};return a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,c){var e=a.port;"abort"===a.mode&&(d[e]&&d[e].abort(),d[e]=c)}):(c=a.ajax,a.ajax=function(b){var e=("mode"in b?b:a.ajaxSettings).mode,f=("port"in b?b:a.ajaxSettings).port;return"abort"===e?(d[f]&&d[f].abort(),d[f]=c.apply(this,arguments),d[f]):c.apply(this,arguments)}),a}); 4430/* 4431* jquery-match-height 0.7.2 by @liabru 4432* http://brm.io/jquery-match-height/ 4433* License MIT 4434*/ 4435!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):t(jQuery)}(function(t){var e=-1,o=-1,n=function(t){return parseFloat(t)||0},a=function(e){var o=1,a=t(e),i=null,r=[];return a.each(function(){var e=t(this),a=e.offset().top-n(e.css("margin-top")),s=r.length>0?r[r.length-1]:null;null===s?r.push(e):Math.floor(Math.abs(i-a))<=o?r[r.length-1]=s.add(e):r.push(e),i=a}),r},i=function(e){var o={ 4436byRow:!0,property:"height",target:null,remove:!1};return"object"==typeof e?t.extend(o,e):("boolean"==typeof e?o.byRow=e:"remove"===e&&(o.remove=!0),o)},r=t.fn.matchHeight=function(e){var o=i(e);if(o.remove){var n=this;return this.css(o.property,""),t.each(r._groups,function(t,e){e.elements=e.elements.not(n)}),this}return this.length<=1&&!o.target?this:(r._groups.push({elements:this,options:o}),r._apply(this,o),this)};r.version="0.7.2",r._groups=[],r._throttle=80,r._maintainScroll=!1,r._beforeUpdate=null, 4437r._afterUpdate=null,r._rows=a,r._parse=n,r._parseOptions=i,r._apply=function(e,o){var s=i(o),h=t(e),l=[h],c=t(window).scrollTop(),p=t("html").outerHeight(!0),u=h.parents().filter(":hidden");return u.each(function(){var e=t(this);e.data("style-cache",e.attr("style"))}),u.css("display","block"),s.byRow&&!s.target&&(h.each(function(){var e=t(this),o=e.css("display");"inline-block"!==o&&"flex"!==o&&"inline-flex"!==o&&(o="block"),e.data("style-cache",e.attr("style")),e.css({display:o,"padding-top":"0", 4438"padding-bottom":"0","margin-top":"0","margin-bottom":"0","border-top-width":"0","border-bottom-width":"0",height:"100px",overflow:"hidden"})}),l=a(h),h.each(function(){var e=t(this);e.attr("style",e.data("style-cache")||"")})),t.each(l,function(e,o){var a=t(o),i=0;if(s.target)i=s.target.outerHeight(!1);else{if(s.byRow&&a.length<=1)return void a.css(s.property,"");a.each(function(){var e=t(this),o=e.attr("style"),n=e.css("display");"inline-block"!==n&&"flex"!==n&&"inline-flex"!==n&&(n="block");var a={ 4439display:n};a[s.property]="",e.css(a),e.outerHeight(!1)>i&&(i=e.outerHeight(!1)),o?e.attr("style",o):e.css("display","")})}a.each(function(){var e=t(this),o=0;s.target&&e.is(s.target)||("border-box"!==e.css("box-sizing")&&(o+=n(e.css("border-top-width"))+n(e.css("border-bottom-width")),o+=n(e.css("padding-top"))+n(e.css("padding-bottom"))),e.css(s.property,i-o+"px"))})}),u.each(function(){var e=t(this);e.attr("style",e.data("style-cache")||null)}),r._maintainScroll&&t(window).scrollTop(c/p*t("html").outerHeight(!0)), 4440this},r._applyDataApi=function(){var e={};t("[data-match-height], [data-mh]").each(function(){var o=t(this),n=o.attr("data-mh")||o.attr("data-match-height");n in e?e[n]=e[n].add(o):e[n]=o}),t.each(e,function(){this.matchHeight(!0)})};var s=function(e){r._beforeUpdate&&r._beforeUpdate(e,r._groups),t.each(r._groups,function(){r._apply(this.elements,this.options)}),r._afterUpdate&&r._afterUpdate(e,r._groups)};r._update=function(n,a){if(a&&"resize"===a.type){var i=t(window).width();if(i===e)return;e=i; 4441}n?o===-1&&(o=setTimeout(function(){s(a),o=-1},r._throttle)):s(a)},t(r._applyDataApi);var h=t.fn.on?"on":"bind";t(window)[h]("load",function(t){r._update(!1,t)}),t(window)[h]("resize orientationchange",function(t){r._update(!0,t)})}); 4442/*! 4443 * JavaScript Cookie v2.2.1 4444 * https://github.com/js-cookie/js-cookie 4445 * 4446 * Copyright 2006, 2015 Klaus Hartl & Fagner Brack 4447 * Released under the MIT license 4448 */ 4449!function(e){var n;if("function"==typeof define&&define.amd&&(define(e),n=!0),"object"==typeof exports&&(module.exports=e(),n=!0),!n){var t=window.Cookies,o=window.Cookies=e();o.noConflict=function(){return window.Cookies=t,o}}}(function(){function e(){for(var e=0,n={};e<arguments.length;e++){var t=arguments[e];
4449for(var o in t)n[o]=t[o]}return n}function n(e){return e.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent)}return function t(o){function r(){}function i(n,t,i){if("undefined"!=typeof document){"number"==typeof(i=e({path:"/"},r.defaults,i)).expires&&(i.expires=new Date(1*new Date+864e5*i.expires)),i.expires=i.expires?i.expires.toUTCString():"";try{var c=JSON.stringify(t);/^[\{\[]/.test(c)&&(t=c)}catch(e){}t=o.write?o.write(t,n):encodeURIComponent(String(t)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=encodeURIComponent(String(n)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var f="";for(var u in i)i[u]&&(f+="; "+u,!0!==i[u]&&(f+="="+i[u].split(";")[0]));return document.cookie=n+"="+t+f}}function c(e,t){if("undefined"!=typeof document){for(var r={},i=document.cookie?document.cookie.split("; "):[],c=0;c<i.length;c++){var f=i[c].split("="),u=f.slice(1).join("=");t||'"'!==u.charAt(0)||(u=u.slice(1,-1));try{var a=n(f[0]);if(u=(o.read||o)(u,a)||n(u),t)try{u=JSON.parse(u)}catch(e){}if(r[a]=u,e===a)break}catch(e){}}return e?r[e]:r}}return r.set=i,r.get=function(e){return c(e,!1)},r.getJSON=function(e){return c(e,!0)},r.remove=function(n,t){i(n,"",e(t,{expires:-1}))},r.defaults={},r.withConverter=t,r}(function(){})}); 4450//# sourceMappingURL=/sm/b0ce608ffc029736e9ac80a8dd6a7db2da8e1d45d2dcfc92043deb2214aa30d8.map 4451/** 4452 * This script provides the interaction with the SEC filing header by allowing 4453 * users to toggle the visibility of the document dropdown box. The box can be shown or hidden 4454 * by clicking on the document links button, clicking outside the box, or tabbing out of the box. 4455 * 4456 * @author Nick Tesh 4457 */ 4458 4459let filingHeader = document.querySelector("#sec-filing-header"); 4460 4461if (filingHeader) { 4462 let documentBox = document.querySelector("#sec-filing-header--document-box"); 4463 let documentDetails = document.querySelector("#document-details"); 4464 4465 // Toggle the visibility of the documents links dropdown on click 4466 documentDetails.addEventListener("click", function() { 4467 if (documentBox.style.display === "none" || !documentBox.style.display) { 4468 documentBox.style.display = "block"; 4469 documentDetails.setAttribute('aria-expanded', 'true'); 4470 } else { 4471 documentBox.style.display = "none"; 4472 documentDetails.setAttribute('aria-expanded', 'false'); 4473 } 4474 4475 // Toggle the class "open" on the document links button 4476 documentDetails.classList.toggle("open"); 4477 }); 4478 4479 // Hide the documents links dropdown when you click outside of the box 4480 document.addEventListener("click", function(event) { 4481 if (!documentBox.contains(event.target) && !documentDetails.contains(event.target) && documentBox.style.display !== "none") { 4482 documentBox.style.display = "none"; 4483 documentDetails.classList.remove("open"); 4484 documentDetails.setAttribute('aria-expanded', 'false'); 4485 } 4486 }); 4487 4488 // Hide the documents links dropdown when you tab outside of the box 4489 documentBox.addEventListener("focusout", function(event) { 4490 let isMovingOutOfDocumentBox = !documentBox.contains(event.relatedTarget); 4491 if (isMovingOutOfDocumentBox) { 4492 documentBox.style.display = "none"; 4493 documentDetails.classList.remove("open"); 4494 documentDetails.setAttribute('aria-expanded', 'false'); 4495 } 4496 }); 4497} 4498 4499/** 4500 * This script checks if the lang attribute is present on the filing HTML element 4501 * If the lang attribute is not present, it will add it and set it to "en" 4502 */ 4503 4504let htmlElement = document.documentElement; 4505 4506// Check if the 'lang' attribute is present 4507if (!htmlElement.hasAttribute('lang')) { 4508 // Set the 'lang' attribute to 'en' 4509 htmlElement.setAttribute('lang', 'en'); 4510} 4511/* EqDialog class 4512 * Helper class to provide Fancybox create_dialogality using the native HTML dialog element 4513 * 4514 * See MDN documentation for details on how the native element works 4515 * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog 4516 */ 4517 4518const eq_dialog_defaults = { 4519 selector: '.eq-dialog', 4520 show_close_button: true, 4521 close_button_text: 'Close dialog', 4522 aria_label: 'Dialog',
4523 // remove_inline_content: takes inline divs used for content and removes duplicates 4524 remove_inline_content: false, 4525 style: { 4526 width: '800px', 4527 }, 4528 onOpen: null, 4529 description: false 4530} 4531// Default HTML template for dialog content 4532eq_dialog_defaults.template_inner = `<div class="eq-dialog-inner"></div>`; 4533eq_dialog_defaults.template_close_button = `<form class="eq-close-btn" method="dialog"><button autofocus aria-label="{{close_btn_txt}}"></button></form>`; 4534eq_dialog_defaults.template_video = `<video class="eq-dialog-video" controls autoplay>` + 4535 `<source src="{{src}}" type="{{format}}" />` + 4536 'Sorry, your browser doesn\'t support embedded videos, <a href="{{src}}">download</a> and watch with your favorite video player!' + 4537 `</video>`; 4538 4539class EqDialog { 4540 constructor(options = {}) { 4541 this.settings = JSON.parse(JSON.stringify(eq_dialog_defaults)); 4542 // override defaults if provided 4543 for (const prop in options) { 4544 this.settings[prop] = options[prop]; 4545 if (prop === 'style') { 4546 for (const style_name in options.style) { 4547 this.settings.style[style_name] = options.style[style_name]; 4548 } 4549 } 4550 } 4551 4552 // Listen for tab press, if modal is open keep focus locked 4553 document.addEventListener('keydown', (e) => { 4554 let dialog = document.querySelector('dialog[open]'); 4555 if (!dialog) { 4556 return; 4557 } 4558 // Dynamically find all focusable elements and determine the first and last one 4559 let dialog_focusables = dialog.querySelectorAll('button,input,select,textarea,iframe,area,a,*[tabindex="0"]'); 4560 let first_focus = dialog_focusables.item(0); 4561 let last_focus = dialog_focusables.item(dialog_focusables.length - 1); 4562 if (!e.shiftKey && e.key === 'Tab') { 4563 if (document.activeElement == last_focus) { 4564 e.preventDefault(); 4565 first_focus.focus(); 4566 } 4567 } 4568 if (e.shiftKey && e.key === 'Tab') { 4569 if (document.activeElement == first_focus) { 4570 e.preventDefault(); 4571 last_focus.focus(); 4572 } 4573 } 4574 if (first_focus == last_focus) { 4575 let close_button = dialog.querySelector("button"); 4576 close_button.scrollIntoView({ behavior: "smooth", block: "center" }); 4577 } 4578 }); 4579 } 4580 4581 // Find all dialog buttons/links and generate HTML 4582 init() { 4583 let dialog_btns = document.querySelectorAll(this.settings.selector); 4584 dialog_btns.forEach((el) => { 4585 let dialog_type, dialog_id, href, src, textDescription; 4586 dialog_type = el.dataset.type ? el.dataset.type : false; 4587 // Determine source of dialog content from href attribute or data-target attribute 4588 href = el.getAttribute('href'); 4589 src = href ? href : el.dataset.target ? el.dataset.target : false; 4590 textDescription = el.dataset.description ? el.dataset.description : false; 4591 4592 if (!src) { 4593 console.error(`Could not determine the dialog source. Please set the attribute 'href' or 'data-target'`); 4594 return; 4595 } 4596 // Determine what kind of dialog is being created 4597 if (!dialog_type) { 4598 if (src.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)) { 4599 dialog_type = 'image'; 4600 } else if (src.match(/\.(mp4|mov|ogg|webm)((\?|#).*)?$/i)) { 4601 dialog_type = 'video'; 4602 } else if (src.match(/\.(pdf)((\?|#).*)?$/i)) { 4603 dialog_type = 'iframe'; 4604 } else if (src[0] === '#') { 4605 dialog_type = 'inline'; 4606 } else { 4607 console.error(`Could not determine the dialog type for ${src}. Please specify the attribute 'data-type' or 'href'.`); 4608 return; 4609 } 4610 } 4611 // Create an ID to assign to the dialog, take the existing ID attribute if there is one 4612 dialog_id = dialog_type === 'inline' && src ? src.substring(1) : this.generate_dialog_id(dialog_type); 4613 4614 // Converts URL links to anchor link to prevent navigating away from page 4615 if (href) { 4616 el.setAttribute('href', `#${dialog_id}`); 4617 el.setAttribute('role', 'button'); 4618 } 4619 // Assign event listeners the link/button to open the modal 4620 el.addEventListener('click', (e) => { 4621 e.preventDefault(); 4622 let dlg = this.create_dialog({ 4623 dialog_type: dialog_type, 4624 dialog_id: dialog_id, 4625 src: src, 4626 img_alt: el.dataset.imgAlt ? el.dataset.imgAlt : '', 4627 close_button_text: el.dataset.closebtntxt ? el.dataset.closebtntxt : this.settings.close_button_text, 4628 aria_label: el.dataset.arialabel ? el.dataset.arialabel : this.settings.aria_label, 4629 description: textDescription 4630 }); 4631 if (!dlg) { 4632 return; 4633 } 4634 dlg.showModal(); 4635 if (typeof this.settings.onOpen === 'function') { 4636 this.settings.onOpen(dlg); 4637 } 4638 }); 4639 }); 4640 } 4641 4642 // Create and open a dialog immediately 4643 // The source is either the ID of a target element (without the #) or URL for the media file 4644 open(dialog_type, source, textDescription, img_alt = '') { 4645 if (dialog_type === 'inline' && !source) { 4646 console.error(`Inline dialogs must have a target.`); 4647 return; 4648 } 4649 if (dialog_type === 'image' || dialog_type === 'iframe' || dialog_type === 'video' && !source) { 4650 console.error(`Media dialogs must have a source.`); 4651 return; 4652 } 4653 let dlg = this.create_dialog({ 4654 dialog_type: dialog_type, 4655 dialog_id: dialog_type === 'inline' ? source : this.generate_dialog_id(dialog_type), 4656 src: dialog_type === 'inline' ? '' : source, 4657 img_alt: img_alt, 4658 close_button_text: this.settings.close_button_text, 4659 description: textDescription 4660 }); 4661 if (!dlg) { 4662 return; 4663 } 4664 dlg.showModal(); 4665 } 4666 4667 /* Creates HTML dialog element with given parameters 4668 * Parameters: 4669 * dialog_id - ID of the target element the inline dialog will pull content from 4670 * src - URL of the image or iframe to be displayed 4671 * img_alt - Alt text to add to the image dialog 4672 */ 4673 create_dialog(params = {}) { 4674 let settings = this.settings; 4675 let has_form = false; 4676 // Create element for dialog 4677 let dialog = document.createElement('dialog'); 4678 jq(dialog).attr('aria-modal', 'true'); 4679 jq(dialog).attr('aria-label', params.aria_label); 4680 dialog.classList.add('eq-dialog-wrapper'); 4681 dialog.innerHTML = settings.template_inner; 4682 4683 let dialog_content = ''; 4684 if (settings.show_close_button) { 4685 let close_btn_html = settings.template_close_button; 4686 close_btn_html = close_btn_html.replace('{{close_btn_txt}}', params.close_button_text); 4687 dialog_content += close_btn_html; 4688 } 4689 if (params.dialog_type === 'inline') { 4690 let inline_div = document.getElementById(params.dialog_id); 4691 if (!inline_div) { 4692 console.error('Unable to find element with ID of \'#' + params.dialog_id + '\''); 4693 return false; 4694 } 4695 has_form = inline_div.querySelector('form'); 4696 dialog_content += inline_div.innerHTML;
4697 // Hide target inline div to prevent duplicate ID error 4698 if (this.settings.remove_inline_content) { 4699 inline_div.remove(); 4700 } else { 4701 inline_div.style.display = 'none'; 4702 } 4703 } 4704 if (params.dialog_type === 'image') { 4705 dialog_content += `<img src="${params.src}" alt="${params.img_alt}">`; 4706 } 4707 if (params.dialog_type === 'video') { 4708 let matcher = /(?:\.([^.]+))?$/; 4709 let format = 'video/' + matcher.exec(params.src)[1]; 4710 let vid_tpl = settings.template_video; 4711 vid_tpl = vid_tpl.replace('{{src}}', params.src); 4712 vid_tpl = vid_tpl.replace('{{format}}', format); 4713 dialog_content += vid_tpl; 4714 } 4715 if (params.dialog_type === 'iframe') { 4716 dialog_content += `<iframe ${params.description ? 'aria-label="' + params.description + '"' : ''} src="${params.src}"></iframe>`; 4717 } 4718 4719 // Apply styling 4720 let inner_el = dialog.querySelector('.eq-dialog-inner'); 4721 for (const style_name in settings.style) { 4722 inner_el.style[style_name] = settings.style[style_name]; 4723 } 4724 // Add content to dialog and add it to the DOM 4725 inner_el.innerHTML = dialog_content; 4726 document.body.appendChild(dialog); 4727 4728 // Popup specific functionality 4729 if (has_form) { 4730 hCaptchaOnLoad(); 4731 validate_forms(); 4732 } 4733 4734 // Add event listener to hide the dialog when it is closed 4735 dialog.addEventListener('close', () => { 4736 dialog.remove(); 4737 }); 4738 4739 //Close dialog when link inside dialog is clicked 4740 jq(dialog) 4741 .find("a") 4742 .click(function () { 4743 dialog.remove(); 4744 }); 4745 4746 return dialog; 4747 } 4748 4749 generate_dialog_id(dialog_type) { 4750 let index = 0; 4751 let id = dialog_type + '-dialog-' + index; 4752 while (document.getElementById(id)) { 4753 index++; 4754 id = dialog_type + '-dialog-' + index; 4755 } 4756 return id; 4757 } 4758} 4759 4760/** 4761 * table-wrapper.js - A library for automatically wrapping tables with a scrollable figure element 4762 * and applying visual indicators (shadows) to indicate horizontal and vertical scroll overflow. 4763 * 4764 * By default, horizontal scrolling is enabled, and optional attributes allow for enabling vertical 4765 * scrolling, setting maximum table heights, and customizing scroll note text and shadows. 4766 * 4767 * @class TableWrapper 4768 * @author Nick Tesh 4769 * @version 1.0.0 4770 * @param {Object} [options={}] - Configuration options to customize the library behavior. 4771 * @property {string} parentClass - Class for the parent element wrapping the table. 4772 * @property {string} figureClass - Class for the scrollable figure element wrapping the table. 4773 * @property {string} shadowLeftClass - Class for the left shadow indicator. 4774 * @property {string} shadowRightClass - Class for the right shadow indicator. 4775 * @property {string} shadowTopClass - Class for the top shadow indicator. 4776 * @property {string} shadowBottomClass - Class for the bottom shadow indicator. 4777 * @property {string} defaultAriaLabel - Default aria-label for the figure element for accessibility. 4778 * @property {string} scrollNoteClass - Class for the scroll note displayed above the parent element. 4779 */ 4780class TableWrapper { 4781 /** 4782 * @constructor 4783 * @param {Object} [options={}] - Custom configuration options. 4784 */ 4785 constructor(options = {}) { 4786 this.defaultOptions = { 4787 parentClass: 'tw-parent', 4788 figureClass: 'table-figure', 4789 shadowLeftClass: 'left-shadow-block', 4790 shadowRightClass: 'right-shadow-block', 4791 shadowTopClass: 'top-shadow-block', 4792 shadowBottomClass: 'bottom-shadow-block', 4793 defaultAriaLabel: 'Scrollable table', 4794 scrollNoteClass: 'tw-scroll-note', 4795 }; 4796 this.options = { ...this.defaultOptions, ...options }; 4797 } 4798 4799 /** 4800 * Initializes the library by wrapping tables, updating shadows, and attaching event listeners. 4801 * @public 4802 */ 4803 init() { 4804 this.wrapTables(); 4805 this.updateShadows(); 4806 this.attachListeners(); 4807 } 4808 4809 /** 4810 * Wraps tables in a scrollable figure element, applies max height, and adds shadows and scroll notes. 4811 * @private 4812 */ 4813 wrapTables() { 4814 const parents = document.querySelectorAll(`.${this.options.parentClass}`); 4815 let uniqueIdCounter = 0; 4816
4817 parents.forEach((parent) => { 4818 const content = parent.querySelector('table'); 4819 if (!content) return; 4820 4821 // Assign unique IDs 4822 if (!parent.id) { 4823 parent.id = `tw-parent-${uniqueIdCounter++}`; 4824 } 4825 4826 // Check if a scroll note already exists and skip adding another 4827 const existingScrollNote = parent.previousElementSibling; 4828 if ( 4829 existingScrollNote?.classList.contains(this.options.scrollNoteClass) 4830 ) { 4831 return; 4832 } 4833 4834 // Wrap the table inside a figure 4835 const figure = document.createElement('figure'); 4836 figure.className = this.options.figureClass; 4837 figure.setAttribute('tabindex', '0'); 4838 figure.setAttribute( 4839 'aria-label', 4840 parent.dataset.ariaLabel || this.options.defaultAriaLabel, 4841 ); 4842 4843 content.parentNode.insertBefore(figure, content); 4844 figure.appendChild(content); 4845 4846 // Add max-height for vertical scrolling if specified 4847 const maxHeight = parent.dataset.maxHeight; 4848 const mobileWidth = parent.dataset.mobileWidth; 4849 if (maxHeight) { 4850 if (!mobileWidth || window.innerWidth <= parseInt(mobileWidth, 10)) { 4851 figure.style.maxHeight = `${maxHeight}px`; 4852 figure.style.overflowY = 'auto'; 4853 } 4854 } 4855 4856 // Add horizontal shadows 4857 parent.insertAdjacentHTML( 4858 'afterbegin', 4859 `<span class="${this.options.shadowLeftClass}" aria-hidden="true"></span>`, 4860 ); 4861 parent.insertAdjacentHTML( 4862 'beforeend', 4863 `<span class="${this.options.shadowRightClass}" aria-hidden="true"></span>`, 4864 ); 4865 4866 // Add vertical shadows 4867 if (maxHeight) { 4868 parent.insertAdjacentHTML( 4869 'afterbegin', 4870 `<span class="${this.options.shadowTopClass}" aria-hidden="true"></span>`, 4871 ); 4872 parent.insertAdjacentHTML( 4873 'beforeend', 4874 `<span class="${this.options.shadowBottomClass}" aria-hidden="true"></span>`, 4875 ); 4876 } 4877 4878 // Add dynamic scroll note above the parent 4879 const scrollNote = document.createElement('div'); 4880 scrollNote.className = this.options.scrollNoteClass; 4881 scrollNote.textContent = 'Scroll to view â'; 4882 parent.parentNode.insertBefore(scrollNote, parent); 4883 }); 4884 } 4885 4886 /** 4887 * Updates the visibility of shadows based on scroll position and overflow. 4888 * @private 4889 */ 4890 updateShadows() { 4891 const figures = document.querySelectorAll(`.${this.options.figureClass}`); 4892 4893 figures.forEach((figure) => { 4894 const parent = figure.closest(`.${this.options.parentClass}`); 4895 const content = figure.querySelector('table'); 4896 const scrollNote = parent.previousElementSibling; 4897 4898 if (!content) return; 4899 4900 // Horizontal Shadows 4901 const scrollLeft = figure.scrollLeft; 4902 const maxScrollLeft = content.scrollWidth - figure.clientWidth; 4903 4904 const shadowLeft = parent.querySelector( 4905 `.${this.options.shadowLeftClass}`, 4906 ); 4907 const shadowRight = parent.querySelector( 4908 `.${this.options.shadowRightClass}`, 4909 ); 4910 4911 let hasHorizontalScroll = false; 4912 if (content.scrollWidth > figure.clientWidth) { 4913 hasHorizontalScroll = true; 4914 shadowLeft?.classList.toggle('visible', scrollLeft > 0); 4915 shadowRight?.classList.toggle('visible', scrollLeft < maxScrollLeft); 4916 } else { 4917 shadowLeft?.classList.remove('visible'); 4918 shadowRight?.classList.remove('visible'); 4919 } 4920 4921 // Vertical Shadows 4922 let hasVerticalScroll = false; 4923 if (figure.style.maxHeight) { 4924 const scrollTop = figure.scrollTop; 4925 const maxScrollTop = content.scrollHeight - figure.clientHeight; 4926 4927 const shadowTop = parent.querySelector( 4928 `.${this.options.shadowTopClass}`, 4929 ); 4930 const shadowBottom = parent.querySelector( 4931 `.${this.options.shadowBottomClass}`, 4932 ); 4933 4934 if (content.scrollHeight > figure.clientHeight) { 4935 hasVerticalScroll = true; 4936 shadowTop?.classList.toggle('visible', scrollTop > 0); 4937 shadowBottom?.classList.toggle('visible', scrollTop < maxScrollTop); 4938 } else { 4939 shadowTop?.classList.remove('visible'); 4940 shadowBottom?.classList.remove('visible'); 4941 } 4942 } 4943 4944 // Update scroll note based on scroll direction 4945 // This dynamically updates the "Scroll to view" note to include visual and screen reader indicators 4946 // based on the scrollable directions detected for the table: 4947 // - Horizontal scroll: Adds a "left or right" indication with a corresponding SVG icon. 4948 // - Vertical scroll: Adds an "up or down" indication with a corresponding SVG icon.
4949 // - Both horizontal and vertical scrolls: Combines both indications. 4950 // If no scrolling is detected, the note is hidden. 4951 if (scrollNote) { 4952 if (hasHorizontalScroll && hasVerticalScroll) { 4953 scrollNote.innerHTML = ` 4954 <span>Scroll to view <span class="sr-only">up, down, left, or right</span></span> 4955 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M19.2307 10.6154H0.769228C0.344384 10.6154 0 10.271 0 9.84615C0 9.4213 0.344384 9.07692 0.769228 9.07692H19.2307C19.6556 9.07692 19.9999 9.4213 19.9999 9.84615C19.9999 10.271 19.6556 10.6154 19.2307 10.6154Z"/><path d="M3.84615 13.6923C3.64927 13.6923 3.45242 13.6172 3.30223 13.467L0.225317 10.3901C-0.0751056 10.0897 -0.0751056 9.60265 0.225317 9.30223L3.30223 6.22532C3.60265 5.92489 4.08969 5.92489 4.39007 6.22532C4.69046 6.52574 4.6905 7.01278 4.39007 7.31316L1.85708 9.84615L4.39007 12.3791C4.6905 12.6795 4.6905 13.1666 4.39007 13.467C4.23988 13.6172 4.04304 13.6923 3.84615 13.6923Z"/><path d="M16.1538 13.6923C15.957 13.6923 15.7601 13.6172 15.6098 13.467C15.3094 13.1666 15.3094 12.6795 15.6098 12.3791L18.1429 9.84615L15.6099 7.31316C15.3095 7.01274 15.3095 6.5257 15.6099 6.22532C15.9103 5.92493 16.3974 5.9249 16.6978 6.22532L19.7747 9.30223C20.0751 9.60265 20.0751 10.0897 19.7747 10.3901L16.6978 13.467C16.5475 13.6172 16.3506 13.6923 16.1538 13.6923Z"/><path d="M9.38464 19.2307V0.769228C9.38464 0.344384 9.72902 0 10.1539 0C10.5787 0 10.9231 0.344384 10.9231 0.769228V19.2307C10.9231 19.6556 10.5787 19.9999 10.1539 19.9999C9.72902 19.9999 9.38464 19.6556 9.38464 19.2307Z"/><path d="M6.30771 3.84615C6.30771 3.64927 6.38278 3.45242 6.53297 3.30223L9.60989 0.225317C9.91031 -0.0751056 10.3973 -0.0751056 10.6978 0.225317L13.7747 3.30223C14.0751 3.60265 14.0751 4.08969 13.7747 4.39007C13.4743 4.69046 12.9872 4.6905 12.6868 4.39007L10.1538 1.85708L7.62089 4.39007C7.32047 4.6905 6.8334 4.6905 6.53301 4.39007C6.38278 4.23988 6.30771 4.04304 6.30771 3.84615Z"/><path d="M6.30769 16.1538C6.30769 15.957 6.38277 15.7601 6.53296 15.6098C6.83338 15.3094 7.32046 15.3094 7.62084 15.6098L10.1538 18.1429L12.6868 15.6099C12.9872 15.3095 13.4743 15.3095 13.7747 15.6099C14.0751 15.9103 14.0751 16.3974 13.7747 16.6978L10.6978 19.7747C10.3973 20.0751 9.91029 20.0751 9.60987 19.7747L6.53296 16.6978C6.38277 16.5475 6.30769 16.3506 6.30769 16.1538Z"/></svg>`; 4956 } else if (hasHorizontalScroll) { 4957 scrollNote.innerHTML = ` 4958 <span>Scroll to view <span class="sr-only">left or right</span></span> 4959 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M19.2307 10.6154H0.769228C0.344384 10.6154 0 10.271 0 9.84615C0 9.4213 0.344384 9.07692 0.769228 9.07692H19.2307C19.6556 9.07692 19.9999 9.4213 19.9999 9.84615C19.9999 10.271 19.6556 10.6154 19.2307 10.6154Z"/><path d="M3.84615 13.6923C3.64927 13.6923 3.45242 13.6172 3.30223 13.467L0.225317 10.3901C-0.0751056 10.0897 -0.0751056 9.60265 0.225317 9.30223L3.30223 6.22532C3.60265 5.92489 4.08969 5.92489 4.39007 6.22532C4.69046 6.52574 4.6905 7.01278 4.39007 7.31316L1.85708 9.84615L4.39007 12.3791C4.6905 12.6795 4.6905 13.1666 4.39007 13.467C4.23988 13.6172 4.04304 13.6923 3.84615 13.6923Z"/><path d="M16.1538 13.6923C15.957 13.6923 15.7601 13.6172 15.6098 13.467C15.3094 13.1666 15.3094 12.6795 15.6098 12.3791L18.1429 9.84615L15.6099 7.31316C15.3095 7.01274 15.3095 6.5257 15.6099 6.22532C15.9103 5.92493 16.3974 5.9249 16.6978 6.22532L19.7747 9.30223C20.0751 9.60265 20.0751 10.0897 19.7747 10.3901L16.6978 13.467C16.5475 13.6172 16.3506 13.6923 16.1538 13.6923Z"/></svg>`; 4960 } else if (hasVerticalScroll) { 4961 scrollNote.innerHTML = ` 4962 <span>Scroll to view <span class="sr-only">up or down</span></span> 4963 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M9.84617 20C9.42132 20 9.07693 19.6556 9.07693 19.2308V0.769231C9.07693 0.344385 9.42132 0 9.84617 0C10.271 0 10.6154 0.344385 10.6154 0.769231V19.2308C10.6154 19.6556 10.271 20 9.84617 20Z"/><path d="M9.84616 20C9.64928 20 9.45243 19.9249 9.30224 19.7747L6.22532 16.6978C5.92489 16.3974 5.92489 15.9103 6.22532 15.6099C6.52574 15.3095 7.01278 15.3095 7.31316 15.6099L9.84616 18.1429L12.3791 15.6099C12.6795 15.3095 13.1666 15.3095 13.467 15.6099C13.7674 15.9103 13.7674 16.3974 13.467 16.6978L10.3901 19.7747C10.2399 19.9249 10.
4963043 20 9.84616 20Z" /><path d="M12.9232 4.61543C12.7263 4.61543 12.5295 4.54031 12.3792 4.39012L9.84627 1.85712L7.31327 4.39012C7.01285 4.69054 6.52581 4.69054 6.22542 4.39012C5.92504 4.08969 5.925 3.60266 6.22542 3.30227L9.30235 0.225349C9.60277 -0.075036 10.0898 -0.0750744 10.3902 0.225349L13.4672 3.30227C13.7676 3.60269 13.7676 4.08973 13.4672 4.39012C13.3169 4.54031 13.12 4.61543 12.9232 4.61543Z"/></svg`; 4964 } else { 4965 scrollNote.style.display = 'none'; 4966 } 4967 scrollNote.style.display = 4968 hasHorizontalScroll || hasVerticalScroll ? 'block' : 'none'; 4969 } 4970 }); 4971 } 4972 4973 /** 4974 * Attaches event listeners for scroll and resize events. 4975 * @private 4976 */ 4977 attachListeners() { 4978 // Attach scroll listeners to each figure 4979 const figures = document.querySelectorAll(`.${this.options.figureClass}`); 4980 figures.forEach((figure) => { 4981 figure.addEventListener('scroll', () => this.updateShadows()); 4982 }); 4983 4984 // Attach resize listener to handle mobile-width logic dynamically 4985 window.addEventListener('resize', () => { 4986 this.handleResponsiveMaxHeight(); 4987 this.updateShadows(); 4988 }); 4989 } 4990 4991 /** 4992 * Handles the application of max-height and vertical scrolling based on the specified screen width. 4993 * 4994 * This method dynamically applies or removes the `max-height` and enables or disables vertical scrolling 4995 * on the figure element based on the `data-max-height` and `data-mobile-width` attributes. If no 4996 * `data-mobile-width` is specified, the `max-height` is always applied. Additionally, this method ensures 4997 * that top and bottom shadows are shown or hidden based on the scrolling requirements. 4998 * 4999 * @private 5000 */ 5001 handleResponsiveMaxHeight() { 5002 const parents = document.querySelectorAll(`.${this.options.parentClass}`); 5003 parents.forEach((parent) => { 5004 const figure = parent.querySelector(`.${this.options.figureClass}`); 5005 if (!figure) return; 5006 5007 const maxHeight = parent.dataset.maxHeight; 5008 const mobileWidth = parent.dataset.mobileWidth; 5009 5010 if (maxHeight) { 5011 if (!mobileWidth || window.innerWidth <= parseInt(mobileWidth, 10)) { 5012 // Apply max-height and enable vertical scrolling 5013 figure.style.maxHeight = `${maxHeight}px`; 5014 figure.style.overflowY = 'auto'; 5015 5016 // Ensure top/bottom shadows are available for vertical scrolling 5017 const shadowTop = parent.querySelector( 5018 `.${this.options.shadowTopClass}`, 5019 ); 5020 const shadowBottom = parent.querySelector( 5021 `.${this.options.shadowBottomClass}`, 5022 ); 5023 shadowTop?.classList.add('visible'); 5024 shadowBottom?.classList.add('visible'); 5025 } else { 5026 // Clear max-height and remove vertical shadows 5027 figure.style.maxHeight = ''; 5028 figure.style.overflowY = ''; 5029 5030 const shadowTop = parent.querySelector( 5031 `.${this.options.shadowTopClass}`, 5032 ); 5033 const shadowBottom = parent.querySelector( 5034 `.${this.options.shadowBottomClass}`, 5035 ); 5036 shadowTop?.classList.remove('visible'); 5037 shadowBottom?.classList.remove('visible'); 5038 } 5039 } 5040 }); 5041 } 5042} 5043 5044// Initialize TableWrapper 5045document.addEventListener('DOMContentLoaded', () => { 5046 const tableWrapper = new TableWrapper(); 5047 tableWrapper.init(); 5048}); 5049/** 5050 * Custom JavaScript overrides for Elastic Search integration. 5051 */ 5052 5053// This will remove attributes that are not needed 5054function waitForElm(selector) { 5055 return new Promise(resolve => { 5056 if (document.querySelector(selector)) { 5057 return resolve(document.querySelector(selector)); 5058 } 5059 5060 const observer = new MutationObserver(() => { 5061 const elem = document.querySelector(selector); 5062 if (elem) { 5063 resolve(elem); 5064 observer.disconnect(); 5065 } 5066 }); 5067 5068 observer.observe(document.body, { 5069 childList: true, 5070 subtree: true 5071 }); 5072 });
5073} 5074 5075// Wait for the Elastic Search input form to load, then remove unneeded ARIA attributes 5076waitForElm('.sui-layout-header__inner form').then((elm) => { 5077 if (elm) { 5078 elm.removeAttribute('role'); 5079 elm.removeAttribute('aria-expanded'); 5080 elm.removeAttribute('aria-haspopup'); 5081 elm.removeAttribute('aria-labelledby'); 5082 } 5083}); 5084var jq=jQuery.noConflict();var companyVars=JSON.parse(document.getElementById("companyVars").innerText),asset_url=companyVars.asset_url,website_base_url=companyVars.website_base_url,ir_base_url=companyVars.ir_base_url,hCaptchaSiteKey=companyVars.hCaptchaSiteKey,isQmod=companyVars.isQmod,userSnapEnabled=companyVars.userSnapEnabled;jq.fn.accessibleClick=function(handler){jq(this).on("click keyup",function(event){if(event.type==="keyup"){var code=event.which;if(code!==32&&code!==13){return false}}handler.call(this,event)})};var captchaIDs={};function hCaptchaOnLoad(){ 5085// Add hcaptcha to all forms on a page 5086jq(".h-captcha").each(function(){var form=jq(this).closest("form");window.captchaIDs[form[0].id]=hcaptcha.render(this.id,{sitekey:window.hCaptchaSiteKey,callback:function(token){jq("<input>",{type:"hidden",name:"h-captcha-response",value:token}).appendTo(form);form.submit()}})})}function validate_forms(){var validator=jq(".validate-form");validator.each(function(){var $form=jq(this);var formID=$form.attr("id");jq(this).validate({errorElement:"span",errorClass:"error eq-error",rules:{password_confirm:{equalTo:"#password",messages:{equalTo:"Passwords must be the same"}}},errorPlacement:function(error,element){var elementId=element.attr("id");var errorId=elementId+"-error";element.attr("aria-describedby",errorId);element.attr("aria-invalid","true");if(element.attr("type")==="radio"){error.prependTo(element.parent())}else{error.appendTo(element.parent())}},success:function(label){var elementId=label.attr("id").replace("-error","");var errorId=elementId+"-error";var inputElement=jq("#"+elementId);inputElement.removeAttr("aria-describedby");inputElement.removeAttr("aria-invalid");label.remove()},submitHandler:function(form){if(hcaptcha.getResponse(window.captchaIDs[formID])){form.submit()}else{hcaptcha.reset(window.captchaIDs[formID]);hcaptcha.execute(window.captchaIDs[formID])}},invalidHandler:function(event,validator){if(validator.errorList.length>=1){let errorElement=validator.errorList[0].element;errorElement.scrollIntoView({behavior:"instant",block:"center"});errorElement.focus()}}})});jq.validator.methods.email=function(value,element){return this.optional(element)||/^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(value)}}jq(document).ready(function(){validate_forms();const paginationMobile=jq("#pagination--mobile");if(paginationMobile.length){jq(this).find("#pagination--mobile-select").change(function(){var selectedPage=jq(this).val();location.href=encodeURI(selectedPage)})} 5087// Add noopener to all links that open in a new tab. 5088jq('a[target="_blank"]').each(function(){var linkRel=jq(this).attr("rel");if(!linkRel||linkRel&&linkRel.indexOf("noopener")==-1){var newRel=linkRel===undefined?"":linkRel;newRel+=linkRel&&linkRel.length?" noopener":"noopener";jq(this).attr("rel",newRel)} 5089// Add descriptive text for screen readers if there's not already a title attr set 5090if(this.getAttribute("title")===null){this.setAttribute("title","Opens in a new window")}});addRequiredAsteriskToLabels();var scrollMore=document.getElementById("scroll-more");var mainContent=document.getElementById("mainContent");if(!mainContent&&scrollMore){scrollMore.style.display="none"}else if(scrollMore){jq(scrollMore).accessibleClick(function(e){e.preventDefault(); 5091// Adjust scroll offset based on header height 5092let header=document.querySelector("#header");var animationDistance=window.innerWidth<=991&&header&&window.getComputedStyle(header).getPropertyValue("position")!=="fixed"?0:jq("#header").outerHeight();jq("html, body").animate({scrollTop:jq(mainContent).offset().top-animationDistance},"slow")})}jq("#header.affixed").affix({offset:{top:1}}); 5093//Circle Stat with Percentage Animation 5094var divPercentage=jq(".stats-row-w-percents");if(divPercentage.length){jq(document).bind("scroll",function(ev){var scrollOffset=jq(document).scrollTop();var containerOffset=jq(".stats-row-w-percents").offset().top-window.innerHeight;if(scrollOffset>containerOffset){jq(".stats-row-w-percents .stat").each(function(){var percDiv=jq(this).find(".number"),svgElm=jq(this).find(".circle"),percentNumber=jq(this).attr("data-percent");svgElm.attr("stroke-dasharray",percentNumber+", 100");svgElm.addClass("active");jq({percentage:0}).stop(true).animate({percentage:percentNumber},{duration:2e3,step:function(){var percentageVal=Math.round(this.percentage);percDiv.text(percentageVal+"%")}}).promise().done(function(){percDiv.text(percentNumber+"%")})});jq(document).unbind("scroll")}})}var menuRight=document.getElementById("mobile-nav"),showRight=document.getElementById("showRight");jq.fn.openMobileRightMenu=function(){toggleMenuKeybind();jq(".mobile-nav-trigger").toggleClass("active");jq("body").toggleClass("push-to-left");jq(menuRight).toggleClass("cbp-spmenu-open");disableOther("showRight");if(jq(".mobile-nav-trigger").hasClass("active")){jq(".mobile-nav-trigger").attr("aria-label","Close main navigation");jq(".mobile-nav-trigger").attr("aria-expanded","true")}else{jq(".mobile-nav-trigger").attr("aria-label","Expand main navigation");
5094jq(".mobile-nav-trigger").attr("aria-expanded","false")}};jq(".main-menu a").on("click",function(){if(jq(".mobile-nav-trigger").hasClass("active")){jq(".mobile-nav-trigger").removeClass("active");jq("body").removeClass("push-to-left");jq(menuRight).removeClass("cbp-spmenu-open")}});function disableOther(button){if(button!=="showRight"){jq(showRight).toggleClass("disabled")}}function toggleMenuKeybind(){var $body=jq("body");if($body.hasClass("push-to-left")){$body.off("keydown")}else{$body.on("keydown",function(e){if(e.which==27){jq(".main-nav").toggleClass("active");jq(showRight).toggleClass("active");jq("body").toggleClass("push-to-left");jq(menuRight).toggleClass("cbp-spmenu-open");disableOther("showRight");$body.off("keydown")}})}}var fileInput=jq(".file-text input");fileInput.change(function(e){$this=jq(this);var val=$this.val().split("\\");var length=val.length;var filename=val[length-1];jq(this).parent(".file-text").children(".text-wrapper").text(filename)});jq("#sec-filing-filter select").on("change",function(e){jq(this).closest("form").submit()});var $filterSelect=jq(".row-filter .eq-select");if($filterSelect.length){$filterSelect.on("change",function(){var url=window.location.protocol+"//"+window.location.hostname+window.location.pathname;var query="";jq(".row-filter .eq-select").each(function(){var prefix="&";if(query.length===0){prefix="?"}if(jq(this).val()!=-1){query+=prefix+jq(this).attr("name")+"="+jq(this).val()}});url=url+query;if(!query){var full_url=url+"?year="+jq(this).val();if(window.location.href!=full_url){window.location.href=full_url}}else{if(window.location.href!=url){window.location.href=url}}})}if(jq(".module-resources-page").length){var viewModel=new ViewModel(JSON.parse(document.getElementById("resourcesVm").innerText))}if(jq(".news-slider").length){jq(".news-slider").slick(JSON.parse(document.getElementById("newsSlickOptions").innerText))}jq(".spr-expandable").hide();jq(".spr-toggle-expandable").click(function(){jq(this).next(".spr-expandable").toggle("blind");jq(this).toggleClass("expanded");if(jq(this).hasClass("expanded")){jq(this).attr("aria-pressed",true)}else{jq(this).attr("aria-pressed",false)}});var $majorAnnouncement=jq("#majorAnnouncement");var majorAnnouncementCookieName="eqMajorAnnouncement";if($majorAnnouncement.length){var majorAnnouncementTimestamp=$majorAnnouncement.data("timestamp");var majorAnnouncementCookie=Cookies.get(majorAnnouncementCookieName);if(majorAnnouncementCookie!=majorAnnouncementTimestamp){let announcements=new EqDialog({show_close_button:true});announcements.open("inline","majorAnnouncement");Cookies.set(majorAnnouncementCookieName,majorAnnouncementTimestamp,{secure:true,domain:window.location.hostname,expires:7})}} 5095// Add Class to body if there is a scoll bar in the page 5096if(jq(document).width()<jq(window).outerWidth()){jq("body").addClass("scrollbar")}function resize_events(){if(window.innerWidth<=991){jq(".mobile-nav-trigger").attr("tabindex",0);jq(".mobile-sub-nav-trigger").attr("tabindex",0);jq(".has-children ul li a").attr("tabindex","-1");jq(".cbp-spmenu > .main-menu ul").attr("aria-hidden","true");jq(".has-children ul").attr("aria-hidden","true");jq(".cbp-spmenu > .main-menu > li > ul").attr("aria-hidden","true");if(jq(".cbp-spmenu").hasClass("cbp-spmenu-open")){jq(".cbp-spmenu > .main-menu > li > a").attr("tabindex",0)}else{jq(".cbp-spmenu > .main-menu > li > a").attr("tabindex",-1)}}else{jq(".mobile-nav-trigger").attr("tabindex","");jq(".mobile-sub-nav-trigger").attr("tabindex","");jq(".has-children ul li a").attr("tabindex","");jq(".has-children ul").attr("aria-hidden","false");jq(".cbp-spmenu > .main-menu > li > ul").attr("aria-hidden","false");jq(".cbp-spmenu > .main-menu > li > a").attr("tabindex",0)}}resize_events();jq(window).resize(function(evt){resize_events()});jq(".mobile-nav-trigger").on("click",function(evt){evt.stopPropagation();jq(this).openMobileRightMenu();resize_events();return false});jq(".cbp-spmenu").accessibleClick(function(evt){evt.stopPropagation()});jq("body").on("click",function(evt){if(this.classList.contains("push-to-left")){jq(this).openMobileRightMenu();resize_events();return false}});var windowW=window.innerWidth;jq(window).resize(function(){windowW=window.innerWidth});jq(".main-menu > .has-children > a").accessibleClick(function(e){if(windowW>=992)return;if(this.parentElement.classList.contains("active")){this.parentElement.classList.remove("active");return}jq(".main-menu > .has-children").each(function(){this.classList.remove("active")});this.parentElement.classList.add("active")});jq("#mobile-nav ul a").accessibleClick(function(e){if(windowW>=992)return;let navMenu=document.getElementById("mobile-nav");jq("#mobile-nav").toggleClass("cbp-spmenu-open");jq("body").toggleClass("push-to-left");jq("#showRight").toggleClass("active")});jq(".mobile-sub-nav-trigger").accessibleClick(function(evt){if(evt.type!="click"){jq(this).click();return false}}); 5097//Accessible click for Financial Results collapse elements 5098jq(".quarterly-results [role=button]").accessibleClick(function(evt){if(evt.type!="click"){jq(this).click();return false}});var FinancialResultsExpandBtn=jq(".expand-all-quarters");var QuarterHeaders=jq(".quarterly-results .header");FinancialResultsExpandBtn.on("click",function(e){if(jq(this).text()=="Expand All"){QuarterHeaders.filter(".collapsed").click()}else{QuarterHeaders.filter(":not(collapsed)").click()}});QuarterHeaders.on("click",function(e){if(FinancialResultsExpandBtn.length){
5099//Allow for collapse animation to complete 5100setTimeout(updateExpandBtnText,200,FinancialResultsExpandBtn,".quarterly-results .header")}}); 5101// Allows upload of cover letter via styled link by triggering hidden upload/input field 5102jq("#cover_letter").on("click",function(e){e.preventDefault();jq("#upload_cover_letter:hidden").trigger("click")});jq(".chart-table-expander").on("click",function(e){e.target.classList.toggle("hidden");e.target.parentElement.querySelector(".chart-legend").classList.toggle("hidden")});jq(".report .th").each(function(){const innerContent=jq(this).html().trim();const regex=/^<sup>(\[\d+\]|\d+|\[\*\]|\*)<\/sup>$/;if(regex.test(innerContent)){jq(this).css({width:"0%","padding-left":"0"})}}); 5103/** 5104 * Accessibility Fix for Radio Inputs 5105 **/let radioLabels=document.querySelectorAll(".eq-radio label");radioLabels.forEach(function(radioLabel){radioLabel.setAttribute("tabindex","0");radioLabel.addEventListener("keydown",function(e){if(e.key===" "||e.keyCode===32){e.preventDefault();let associatedRadio=document.getElementById(this.getAttribute("for"));if(associatedRadio&&!associatedRadio.checked){associatedRadio.checked=true;associatedRadio.dispatchEvent(new Event("change"))}}})}); 5106// MOBILE MENU TRAP FOCUS 5107let lastNavItem=jq(".main-menu > li:last-child > a");let mobileTrigger=jq(".mobile-nav-trigger");lastNavItem.on("keydown",function(e){if(!e.shiftKey&&e.key==="Tab"&&mobileTrigger.hasClass("active")){e.preventDefault();mobileTrigger.focus()}});mobileTrigger.on("keydown",function(e){if(e.shiftKey&&e.key==="Tab"&&mobileTrigger.hasClass("active")){e.preventDefault();lastNavItem.focus()}}); 5108//CCPA Request Form 5109jq('#ccpa-request-form input[name="claim"]').change(function(){let value=jq(this).val();if(value=="Resident"){jq(".show-resident").removeClass("hide");jq(".show-representative").addClass("hide");jq("#certify_resident").addClass("required");jq("#certify_resident").attr("aria-required","true");jq(".show-representative .conditional-required, #certify_representative").removeClass("required");jq(".show-representative .conditional-required, #certify_representative").removeClass("error");jq(".show-representative .conditional-required, #certify_representative").removeAttr("aria-required")}else if(value=="Representative"){jq(".show-representative").removeClass("hide");jq(".show-resident").addClass("hide");jq("#certify_resident").removeClass("required");jq("#certify_resident").removeClass("error");jq("#certify_resident").removeAttr("aria-required");jq(".show-representative .conditional-required, #certify_representative").addClass("required");jq(".show-representative .conditional-required, #certify_representative").attr("aria-required","true")}});let forms=jq("form");if(forms.length>1){const idCounts={};forms.each(function(formIndex,form){jq(form).find("input").each(function(inputIndex,input){const currentId=jq(input).attr("id");if(currentId){if(!idCounts[currentId]){idCounts[currentId]=0}idCounts[currentId]++;const uniqueId=`${currentId}_${formIndex}`;jq(input).attr("id",uniqueId);jq(form).find(`label[for="${currentId}"]`).attr("for",uniqueId)}})})}jq(".collapse").on("shown.bs.collapse",function(event){let contentElement=jq(this).find(".text")[0];if(contentElement){if(!isElementInViewport(contentElement)){contentElement.scrollIntoView({behavior:"smooth",block:"end",inline:"nearest"})}}});let eq_dialogs=new EqDialog;eq_dialogs.init()});function isElementInViewport(el){var rect=el.getBoundingClientRect();return rect.top>=0&&rect.left>=0&&rect.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&rect.right<=(window.innerWidth||document.documentElement.clientWidth)} 5110// Adds asterisk to the labels of required form inputs 5111function addRequiredAsteriskToLabels(){jq("form .required").siblings("label").each(function(){let currentText=jq(this).text();jq(this).text(currentText+"*")})} 5112/** 5113 * addCustomErrorFormHandlers 5114 * 5115 * Sets up custom error handling for forms, specifically targeting required 5116 * checkboxes and radio button groups. Displays error messages and applies 5117 * border styling to elements that fail validation. Enhances accessibility by 5118 * updating ARIA attributes based on user interactions. 5119 * 5120 * - Applies different border colors for elements within dark-themed sections. 5121 * - Adds or removes error messages and styles based on validation results. 5122 * - Updates ARIA attributes for better accessibility. 5123 */function addCustomErrorFormHandlers(){const BORDER_COLOR_LIGHT="#D40033";const BORDER_COLOR_DARK="#FA003A";jq("form").on("submit",function(e){jq("ul.checkboxes.required, ul.radios.required").each(function(){let type=jq(this).hasClass("checkboxes")?"checkbox":"radio";let borderColor=jq(this).closest(".dark").length>0?BORDER_COLOR_DARK:BORDER_COLOR_LIGHT;if(jq(this).find('input[type="'+type+'"]:checked').length===0){jq(this).css("border","1p
5123x solid "+borderColor);let errorId=jq(this).parent().attr("aria-labelledby")+"-error";jq(this).parent().attr("aria-describedby",errorId); 5124// Add error message if it does not already exist 5125if(jq(this).siblings(".eq-error").length===0){jq(this).after(`<span class="eq-error" id="${errorId}">This field is required</span>`)}}else{jq(this).css("border","");jq(this).siblings(".eq-error").remove();jq(this).parent().removeAttr("aria-describedby")}})});jq(document).on("change",'ul.checkboxes input[type="checkbox"], ul.radios input[type="radio"]',function(){let ul=jq(this).closest("ul.checkboxes, ul.radios"); 5126// Update ARIA attributes for accessibility 5127if(jq(this).attr("type")==="radio"){ul.find('input[type="radio"]').attr("aria-checked","false");jq(this).attr("aria-checked","true")}else{jq(this).attr("aria-checked",this.checked)}if(ul.find("input:checked").length>0){ul.css("border","");ul.siblings(".eq-error").remove()}}); 5128// Initialize ARIA attributes on page load 5129jq('ul.checkboxes input[type="checkbox"], ul.radios input[type="radio"]').each(function(){jq(this).attr("aria-checked",this.checked)})}jq(document).ready(function(){addCustomErrorFormHandlers()});let windowLocationHash=window.location.hash;if(windowLocationHash.length){let hashElement=jq(windowLocationHash);if(hashElement.length){let offset=0;let header=jq("#header");let subNav=jq(".sub-navigation");if(header.length){offset+=header.outerHeight()}if(subNav.length){offset+=subNav.outerHeight()}jq("html,body").animate({scrollTop:hashElement.offset().top-offset},300)}}jq('a[href*="#"]').on("click",function(event){if(jq(this).hasClass("chart-legend-trigger")||jq(this).hasClass("accordion-btn")||jq(this).hasClass("eq-dialog")||jq(this).closest(".tab-header").length){return}if(this.hash!==""){if(this.href==window.location.href){event.preventDefault()}let hash=this.hash;let id=hash.split("#")[1];let el=document.getElementById(id);if(el&&el.classList.contains("panel-collapse")){setTimeout(()=>{smoothScrollToHash(hash)},100)}else{smoothScrollToHash(hash)}}});function smoothScrollToHash(hash){if(hash.length){let hashElement=jq(hash);if(hashElement.length){let offset=0;let header=jq("#header");let subNav=jq(".sub-navigation");if(header.length){offset+=header.outerHeight()}if(subNav.length){offset+=subNav.outerHeight()}jq("html,body").animate({scrollTop:hashElement.offset().top-offset},800,function(){ 5130// Add hash (#) to URL when done scrolling 5131window.location.hash=hash})}}}function elementsAreCollapsed(selector="[data-toggle='collapse']"){if(jq(selector+".collapsed").length){return true}else{return false}}function updateExpandBtnText(btn,collapseTarget){if(!btn){return}if(elementsAreCollapsed(collapseTarget)){btn.text("Expand All")}else{btn.text("Collapse All")}}jq("[id^=ir-sec-all]").change(function(){const parentCheckbox=jq(this);const childCheckboxes=parentCheckbox.closest(".eq-checkbox").find(".ir-sec-sub");if(parentCheckbox.is(":checked")){childCheckboxes.prop("checked",true).prop("disabled",true).attr("aria-checked",true).removeAttr("checked")}else{childCheckboxes.prop("checked",false).prop("disabled",false).attr("aria-checked",false).removeAttr("checked")}}); 5132// Auto-uncheck parent if any child is unchecked 5133jq(".ir-sec-sub").change(function(){const parentCheckbox=jq("#ir-sec-all");const childCheckboxes=parentCheckbox.closest(".eq-checkbox").find(".ir-sec-sub");if(!jq(this).is(":checked")){parentCheckbox.prop("checked",false).attr("aria-checked",false).removeAttr("checked")}else{const allChecked=childCheckboxes.toArray().every(checkbox=>checkbox.checked);parentCheckbox.prop("checked",allChecked).attr("aria-checked",allChecked);if(allChecked){parentCheckbox.attr("checked","checked")}else{parentCheckbox.removeAttr("checked")}}}); 5134// Additional Checkbox Groups Support for Nested Structure 5135jq("[id^=ir-sec-all_][id$=_1]").change(function(){const parentCheckbox=jq(this);const childCheckboxes=parentCheckbox.closest("li.eq-checkbox").find("ul li.eq-checkbox input.ir-sec-sub");if(parentCheckbox.is(":checked")){childCheckboxes.prop("checked",true).prop("disabled",true).attr("aria-checked",true).removeAttr("checked")}
5135else{childCheckboxes.prop("checked",false).prop("disabled",false).attr("aria-checked",false).removeAttr("checked")}});jq(document).ready(function(){jq("[id^=ir-sec-all_][id$=_1]:checked").trigger("change")}); 5136// Auto-uncheck parent if any child is unchecked (for nested structure) 5137jq("ul.checkboxes .ir-sec-sub").change(function(){const parentCheckbox=jq(this).closest("li.eq-checkbox").prev('input[type="checkbox"]');const childCheckboxes=parentCheckbox.closest("li.eq-checkbox").find("ul li.eq-checkbox input.ir-sec-sub");if(!jq(this).is(":checked")){parentCheckbox.prop("checked",false).attr("aria-checked",false).removeAttr("checked")}else{const allChecked=childCheckboxes.toArray().every(checkbox=>checkbox.checked);parentCheckbox.prop("checked",allChecked).attr("aria-checked",allChecked);if(allChecked){parentCheckbox.attr("checked","checked")}else{parentCheckbox.removeAttr("checked")}}});var $timelineEl=jq(".module-timeline");if($timelineEl.length){var timeline={resizePoints:function(){if(jq(window).outerWidth()<768)return;jq(".point-wrapper").each(function(){var point=jq(this).find(".point");jq(this).css("height",point.outerHeight()/1.2)})}};var resizeTimer;jq(window).on("resize",function(e){clearTimeout(resizeTimer);resizeTimer=setTimeout(timeline.resizePoints,250)});timeline.resizePoints()} 5138//Add Class to body if page has scrollbar 5139jq(window).on("resize",function(e){if(jq(document).width()<jq(window).outerWidth()){jq("body").addClass("scrollbar")}else{jq("body").removeClass("scrollbar")}}); 5140// Scroll More CTA templates 5141var scrollMore=document.getElementById("scroll-more-alt");if(scrollMore){jq(scrollMore).accessibleClick(function(e){e.preventDefault();var target=jq("#scroll-more-anchor");jq("html,body").animate({scrollTop:target.offset().top-jq("#header").height()},"slow")})}document.addEventListener("DOMContentLoaded",()=>{if(document.querySelector(".report")){const reportTable=document.querySelector(".report");if(reportTable){const tdWithLinks=reportTable.querySelectorAll("td a");tdWithLinks.forEach(aElement=>{const span=document.createElement("span");span.innerHTML=aElement.innerHTML;aElement.parentNode.replaceChild(span,aElement);span.classList.add("a")})}}}); 5142// Accesibility Form 5143let formCounter=0;jq(".add-request").accessibleClick(function(){formCounter++;let newFields='<div class="info-block">'+'<div class="form-group">'+'<label for="url-'+formCounter+'">URL of requested document or webpage:</label>'+'<input type="text" name="url-'+formCounter+'" id="url-'+formCounter+'" value="" class="required form-control" placeholder="ex. https://www.website.com/page" />'+"</div>"+'<div class="form-group">'+'<label for="description-'+formCounter+'">Description of request or issue related to URL:</label>'+'<textarea name="description-'+formCounter+'" id="description-'+formCounter+'" value="" class="required form-control" placeholder="Enter a description of your request or issue related to the URL inputted above"></textarea>'+"</div>"+"</div>";jq(".request-info").append(newFields);jq("#url-"+formCounter).focus()}); 5144/** 5145 * Global - Decorative Image Alt Check 5146 * 5147 * This will check all images across the site to see if the image has a 5148 * empty or missing alt attribute. If so, aria-hidden="true" will be set. 5149 */jq("img").each((ind,el)=>{if(!jq(el).attr("alt")||jq(el).attr("alt").trim()===""){jq(el).attr("aria-hidden","true")}});jq(document).ready(function(){let scrollMore=document.getElementById("scroll-more-midtown");if(scrollMore){jq(scrollMore).accessibleClick(function(e){e.preventDefault();let target=jq("#scroll-more-anchor");jq("html,body").animate({scrollTop:target.offset().top-jq("#header").height()},"slow")})}});const createSuperscriptLink=id=>`<a href="#footnoteDesc${id}" aria-describedby="footnoteDesc${id}" tabindex="0" data-footnote="${id}" class="span-asterisk"><sup>*</sup></a>`;let footnoteCounter=0;function processFootnotesInSection(stats,footnotes){footnotes.forEach(footnote=>{if(footnote.textContent.trim().startsWith("*")){footnote.outerHTML=`<p id="footnoteDesc${++footnoteCounter}" class="footnote-desc" aria-label="Footnote ${footnoteCounter}" role="status" tabindex="0">${footnote.innerHTML}</p>`}});
5149stats.forEach(stat=>{let localCounter=footnoteCounter-1;stat.innerHTML=stat.innerHTML.replace(/\*/g,()=>createSuperscriptLink(++localCounter))})}function processAllFootnotes(){const sections=document.querySelectorAll(".container");sections.forEach(section=>{const stats=section.querySelectorAll(".stat p, .stat-box p");const footnotes=section.querySelectorAll(".financial-disclaimer .financial-text p, .source p");processFootnotesInSection(stats,footnotes)})}document.addEventListener("DOMContentLoaded",processAllFootnotes); 5150/** 5151 * Adjusts the scroll position to ensure the focused element is visible within the viewport. 5152 * 5153 * The function checks if the element is above the visible area or below the viewport, 5154 * and if so, it adjusts the scroll position to bring the element into view with extra space. 5155 */function adjustScrollPosition(e){const headerHeight=document.querySelector("#header").offsetHeight;const extraSpace=80;const totalHeight=headerHeight+extraSpace;const elementTop=e.target.getBoundingClientRect().top;const elementBottom=e.target.getBoundingClientRect().bottom;let is_affixed=jq(e.target).closest(".affix").length;if(!is_affixed&&(elementTop<totalHeight||elementBottom>window.innerHeight)){window.scrollTo({top:elementTop+window.scrollY-totalHeight,behavior:"smooth"})}}document.addEventListener("keydown",e=>{if(e.key==="Tab"&&e.shiftKey){document.addEventListener("focusin",adjustScrollPosition)}else{document.removeEventListener("focusin",adjustScrollPosition)}});document.querySelectorAll(".full-news-article table, .financials table").forEach((table,index)=>{const parentWrapper=document.createElement("div");parentWrapper.className="tw-parent";parentWrapper.setAttribute("data-aria-label",`Table ${index+1}`);table.parentNode.insertBefore(parentWrapper,table);parentWrapper.appendChild(table)});document.addEventListener("keydown",event=>{const activeTab=document.activeElement.closest(".tab-header .nav-link");if(!activeTab)return;const tabHeader=activeTab.closest(".tab-header");const tabs=Array.from(tabHeader.querySelectorAll(".nav-link"));const currentIndex=tabs.indexOf(activeTab);let newIndex=-1;if(event.key==="ArrowRight"){newIndex=(currentIndex+1)%tabs.length}else if(event.key==="ArrowLeft"){newIndex=(currentIndex-1+tabs.length)%tabs.length}if(newIndex>=0){event.preventDefault(); 5156// Activate the new tab 5157const newTab=tabs[newIndex];newTab.focus();newTab.click()}}); 5158 5159/* Site-Specific JavaScript */ 5160 5161document.addEventListener('DOMContentLoaded', function () { 5162 document.querySelectorAll('a[data-toggle="tab"]').forEach(function(tab) { 5163 tab.addEventListener('shown.bs.tab', function (e) { 5164 var targetId = tab.getAttribute('href'); 5165 if (targetId) { 5166 var pane = document.querySelector(targetId); 5167 if (pane) { 5168 pane.focus(); 5169 } 5170 } 5171 }); 5172 // Fallback for keyboard activation 5173 tab.addEventListener('keydown', function(e) { 5174 if (e.key === 'Enter' || e.key === ' ') { 5175 setTimeout(function() { 5176 var targetId = tab.getAttribute('href'); 5177 if (targetId) { 5178 var pane = document.querySelector(targetId); 5179 if (pane) { 5180 pane.focus(); 5181 } 5182 } 5183 }, 0); 5184 } 5185 }); 5186 }); 5187}); 5188 5189// Compensate for scrollbar width change on megamenu hover 5190(function() { 5191 const megamenuLinks = jq('.arm-navigation.js-navigation > .arm-navigation__menu > .arm-navigation__menu-link'); 5192 var targetElement = jq('#container-d6786bf766 > .header'); 5193 5194 // Attach mouseleave handler once, outside the loop 5195 targetElement.on('mouseleave', function() { 5196 if (targetElement) { 5197 targetElement.width('100%'); 5198 } 5199 }); 5200 5201 megamenuLinks.each(function(index, link) { 5202 jq(this).on('mouseenter', function() { 5203 var widthBefore = document.documentElement.clientWidth; 5204 // Use requestAnimationFrame to check width after any layout changes 5205 requestAnimationFrame(function() { 5206 var widthAfter = window.innerWidth; 5207 var diff = widthBefore - widthAfter; 5208 if (targetElement && diff !== 0) { 5209 targetElement.width(widthBefore + 'px'); 5210 } 5211 }); 5212 }); 5213 });
5214})();
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.