Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ !function(a,b){"object..

Decoded Output download

<?  /*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ 
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s]+|[\s]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\ \t\r\n\f]",M="(?:\\.|[\w-]|[^\x00-\xa0])+",N="\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\.|[^\\'])*)'|\"((?:\\.|[^\\\"])*)\"|("+M+"))|)"+L+"*\]",O=":("+M+")(?:\((('((?:\\.|[^\\'])*)'|\"((?:\\.|[^\\\"])*)\")|((?:\\.|[^\\()[\]]|"+N+")*)|.*)\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\])(?:\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\]'\"]*?)"+L+"*\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\("+L+"*(even|odd|(([+-]|)(\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\d+)|))"+L+"*\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\("+L+"*((?:-\d)?\d*)"+L+"*\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\/g,ba=new RegExp("\\([\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-
\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; 
}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\.)"+p.join("\.(?:.*\.|)")+"(\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\.)"+r.join("\.(?:.*\.|)")+"(\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{ 
marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/
/g,sb=/[ 	
]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(sb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[	
]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\
]|\["\\/bfnrt]|\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ 	]*([^
]*)
?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/
?
/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(ac,"
")}}):{name:b.name,value:c.replace(ac,"
")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({ 
padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n}); 
 
 
/*! 
   Copyright 2008-2019 SpryMedia Ltd. 
 
 This source file is free software, available under the following license: 
   MIT license - http://datatables.net/license 
 
 This source file is distributed in the hope that it will be useful, but 
 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. 
 
 For details please refer to: http://www.datatables.net 
 DataTables 1.10.20 
 2008-2019 SpryMedia Ltd - datatables.net/license 
*/ 
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(f,z,y){f instanceof String&&(f=String(f));for(var p=f.length,H=0;H<p;H++){var L=f[H];if(z.call(y,L,H,f))return{i:H,v:L}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1; 
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(f,z,y){f!=Array.prototype&&f!=Object.prototype&&(f[z]=y.value)};$jscomp.getGlobal=function(f){return"undefined"!=typeof window&&window===f?f:"undefined"!=typeof global&&null!=global?global:f};$jscomp.global=$jscomp.getGlobal(this); 
$jscomp.polyfill=function(f,z,y,p){if(z){y=$jscomp.global;f=f.split(".");for(p=0;p<f.length-1;p++){var H=f[p];H in y||(y[H]={});y=y[H]}f=f[f.length-1];p=y[f];z=z(p);z!=p&&null!=z&&$jscomp.defineProperty(y,f,{configurable:!0,writable:!0,value:z})}};$jscomp.polyfill("Array.prototype.find",function(f){return f?f:function(f,y){return $jscomp.findInternal(this,f,y).v}},"es6","es3"); 
(function(f){"function"===typeof define&&define.amd?define(["jquery"],function(z){return f(z,window,document)}):"object"===typeof exports?module.exports=function(z,y){z||(z=window);y||(y="undefined"!==typeof window?require("jquery"):require("jquery")(z));return f(y,z,z.document)}:f(jQuery,window,document)})(function(f,z,y,p){function H(a){var b,c,d={};f.each(a,function(e,h){(b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" ")&&(c=e.replace(b[0],b[2].toLowerCase()), 
d[c]=e,"o"===b[1]&&H(a[e]))});a._hungarianMap=d}function L(a,b,c){a._hungarianMap||H(a);var d;f.each(b,function(e,h){d=a._hungarianMap[e];d===p||!c&&b[d]!==p||("o"===d.charAt(0)?(b[d]||(b[d]={}),f.extend(!0,b[d],b[e]),L(a[d],b[d],c)):b[d]=b[e])})}function Ga(a){var b=q.defaults.oLanguage,c=b.sDecimal;c&&Ha(c);if(a){var d=a.sZeroRecords;!a.sEmptyTable&&d&&"No data available in table"===b.sEmptyTable&&M(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&d&&"Loading..."===b.sLoadingRecords&&M(a,a, 
"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&c!==a&&Ha(a)}}function jb(a){F(a,"ordering","bSort");F(a,"orderMulti","bSortMulti");F(a,"orderClasses","bSortClasses");F(a,"orderCellsTop","bSortCellsTop");F(a,"order","aaSorting");F(a,"orderFixed","aaSortingFixed");F(a,"paging","bPaginate");F(a,"pagingType","sPaginationType");F(a,"pageLength","iDisplayLength");F(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%": 
"");"boolean"===typeof a.scrollX&&(a.scrollX=a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&L(q.models.oSearch,a[b])}function kb(a){F(a,"orderable","bSortable");F(a,"orderData","aDataSort");F(a,"orderSequence","asSorting");F(a,"orderDataType","sortDataType");var b=a.aDataSort;"number"!==typeof b||f.isArray(b)||(a.aDataSort=[b])}function lb(a){if(!q.__browser){var b={};q.__browser=b;var c=f("<div/>").css({position:"fixed",top:0,left:-1*f(z).scrollLeft(),height:1,width:1, 
overflow:"hidden"}).append(f("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(f("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}f.extend(a.oBrowser,q.__browser);a.oScroll.iBarWidth=q.__browser.barWidth} 
function mb(a,b,c,d,e,h){var g=!1;if(c!==p){var k=c;g=!0}for(;d!==e;)a.hasOwnProperty(d)&&(k=g?b(k,a[d],d,a):a[d],g=!0,d+=h);return k}function Ia(a,b){var c=q.defaults.column,d=a.aoColumns.length;c=f.extend({},q.models.oColumn,c,{nTh:b?b:y.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=f.extend({},q.models.oSearch,c[d]);ma(a,d,f(b).data())}function ma(a,b,c){b=a.aoColumns[b]; 
var d=a.oClasses,e=f(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var h=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);h&&(b.sWidthOrig=h[1])}c!==p&&null!==c&&(kb(c),L(q.defaults.column,c,!0),c.mDataProp===p||c.mData||(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),f.extend(b,c),M(b,c,"sWidth","sWidthOrig"),c.iDataSort!==p&&(b.aDataSort=[c.iDataSort]),M(b,c,"aDataSort"));var g=b.mData,k=U(g), 
l=b.mRender?U(b.mRender):null;c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=f.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=k(a,b,p,c);return l&&b?l(d,b,a,c):d};b.fnSetData=function(a,b,c){return Q(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==f.inArray("asc",b.asSorting);c=-1!==f.inArray("desc",b.asSorting);b.bSortable&&(a||c)?a&&!c?(b.sSortingClass= 
d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI):(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI="")}function aa(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ja(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;""===b.sY&&""===b.sX||na(a);A(a,null,"column-sizing",[a])}function ba(a,b){a=oa(a,"bVisible");return"number"=== 
typeof a[b]?a[b]:null}function ca(a,b){a=oa(a,"bVisible");b=f.inArray(b,a);return-1!==b?b:null}function W(a){var b=0;f.each(a.aoColumns,function(a,d){d.bVisible&&"none"!==f(d.nTh).css("display")&&b++});return b}function oa(a,b){var c=[];f.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Ka(a){var b=a.aoColumns,c=a.aoData,d=q.ext.type.detect,e,h,g;var k=0;for(e=b.length;k<e;k++){var f=b[k];var n=[];if(!f.sType&&f._sManualType)f.sType=f._sManualType;else if(!f.sType){var m=0;for(h= 
d.length;m<h;m++){var w=0;for(g=c.length;w<g;w++){n[w]===p&&(n[w]=I(a,w,k,"type"));var u=d[m](n[w],a);if(!u&&m!==d.length-1)break;if("html"===u)break}if(u){f.sType=u;break}}f.sType||(f.sType="string")}}}function nb(a,b,c,d){var e,h,g,k=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){var l=b[e];var n=l.targets!==p?l.targets:l.aTargets;f.isArray(n)||(n=[n]);var m=0;for(h=n.length;m<h;m++)if("number"===typeof n[m]&&0<=n[m]){for(;k.length<=n[m];)Ia(a);d(n[m],l)}else if("number"===typeof n[m]&&0>n[m])d(k.length+ 
n[m],l);else if("string"===typeof n[m]){var w=0;for(g=k.length;w<g;w++)("_all"==n[m]||f(k[w].nTh).hasClass(n[m]))&&d(w,l)}}if(c)for(e=0,a=c.length;e<a;e++)d(e,c[e])}function R(a,b,c,d){var e=a.aoData.length,h=f.extend(!0,{},q.models.oRow,{src:c?"dom":"data",idx:e});h._aData=b;a.aoData.push(h);for(var g=a.aoColumns,k=0,l=g.length;k<l;k++)g[k].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==p&&(a.aIds[b]=h);!c&&a.oFeatures.bDeferRender||La(a,e,c,d);return e}function pa(a,b){var c;b instanceof 
f||(b=f(b));return b.map(function(b,e){c=Ma(a,e);return R(a,c.data,e,c.cells)})}function I(a,b,c,d){var e=a.iDraw,h=a.aoColumns[c],g=a.aoData[b]._aData,k=h.sDefaultContent,f=h.fnGetData(g,d,{settings:a,row:b,col:c});if(f===p)return a.iDrawError!=e&&null===k&&(O(a,0,"Requested unknown parameter "+("function"==typeof h.mData?"{function}":"'"+h.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),k;if((f===g||null===f)&&null!==k&&d!==p)f=k;else if("function"===typeof f)return f.call(g);return null=== 
f&&"display"==d?"":f}function ob(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d,{settings:a,row:b,col:c})}function Na(a){return f.map(a.match(/(\.|[^\.])+/g)||[""],function(a){return a.replace(/\\./g,".")})}function U(a){if(f.isPlainObject(a)){var b={};f.each(a,function(a,c){c&&(b[a]=U(c))});return function(a,c,h,g){var d=b[c]||b._;return d!==p?d(a,c,h,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,h,g){return a(b,c,h,g)};if("string"!==typeof a|| 
-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("("))return function(b,c){return b[a]};var c=function(a,b,h){if(""!==h){var d=Na(h);for(var e=0,l=d.length;e<l;e++){h=d[e].match(da);var n=d[e].match(X);if(h){d[e]=d[e].replace(da,"");""!==d[e]&&(a=a[d[e]]);n=[];d.splice(0,e+1);d=d.join(".");if(f.isArray(a))for(e=0,l=a.length;e<l;e++)n.push(c(a[e],b,d));a=h[0].substring(1,h[0].length-1);a=""===a?n:n.join(a);break}else if(n){d[e]=d[e].replace(X,"");a=a[d[e]]();continue}if(null===a||a[d[e]]=== 
p)return p;a=a[d[e]]}}return a};return function(b,e){return c(b,e,a)}}function Q(a){if(f.isPlainObject(a))return Q(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"!==typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("("))return function(b,d){b[a]=d};var b=function(a,d,e){e=Na(e);var c=e[e.length-1];for(var g,k,l=0,n=e.length-1;l<n;l++){g=e[l].match(da);k=e[l].match(X);if(g){e[l]=e[l].replace(da,"");a[e[l]]=[];c=e.slice(); 
c.splice(0,l+1);g=c.join(".");if(f.isArray(d))for(k=0,n=d.length;k<n;k++)c={},b(c,d[k],g),a[e[l]].push(c);else a[e[l]]=d;return}k&&(e[l]=e[l].replace(X,""),a=a[e[l]](d));if(null===a[e[l]]||a[e[l]]===p)a[e[l]]={};a=a[e[l]]}if(c.match(X))a[c.replace(X,"")](d);else a[c.replace(da,"")]=d};return function(c,d){return b(c,d,a)}}function Oa(a){return J(a.aoData,"_aData")}function qa(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function ra(a,b,c){for(var d=-1,e=0,h=a.length;e< 
h;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===p&&a.splice(d,1)}function ea(a,b,c,d){var e=a.aoData[b],h,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=I(a,b,d,"display")};if("dom"!==c&&(c&&"auto"!==c||"dom"!==e.src)){var k=e.anCells;if(k)if(d!==p)g(k[d],d);else for(c=0,h=k.length;c<h;c++)g(k[c],c)}else e._aData=Ma(a,e,d,d===p?p:e._aData).data;e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==p)g[d].sType=null;else{c=0;for(h=g.length;c<h;c++)g[c].sType=null; 
Pa(a,e)}}function Ma(a,b,c,d){var e=[],h=b.firstChild,g,k=0,l,n=a.aoColumns,m=a._rowReadObject;d=d!==p?d:m?{}:[];var w=function(a,b){if("string"===typeof a){var c=a.indexOf("@");-1!==c&&(c=a.substring(c+1),Q(a)(d,b.getAttribute(c)))}},u=function(a){if(c===p||c===k)g=n[k],l=f.trim(a.innerHTML),g&&g._bAttrSrc?(Q(g.mData._)(d,l),w(g.mData.sort,a),w(g.mData.type,a),w(g.mData.filter,a)):m?(g._setter||(g._setter=Q(g.mData)),g._setter(d,l)):d[k]=l;k++};if(h)for(;h;){var q=h.nodeName.toUpperCase();if("TD"== 
q||"TH"==q)u(h),e.push(h);h=h.nextSibling}else for(e=b.anCells,h=0,q=e.length;h<q;h++)u(e[h]);(b=b.firstChild?b:b.nTr)&&(b=b.getAttribute("id"))&&Q(a.rowId)(d,b);return{data:d,cells:e}}function La(a,b,c,d){var e=a.aoData[b],h=e._aData,g=[],k,l;if(null===e.nTr){var n=c||y.createElement("tr");e.nTr=n;e.anCells=g;n._DT_RowIndex=b;Pa(a,e);var m=0;for(k=a.aoColumns.length;m<k;m++){var w=a.aoColumns[m];var p=(l=c?!1:!0)?y.createElement(w.sCellType):d[m];p._DT_CellIndex={row:b,column:m};g.push(p);if(l|| 
!(c&&!w.mRender&&w.mData===m||f.isPlainObject(w.mData)&&w.mData._===m+".display"))p.innerHTML=I(a,b,m,"display");w.sClass&&(p.className+=" "+w.sClass);w.bVisible&&!c?n.appendChild(p):!w.bVisible&&c&&p.parentNode.removeChild(p);w.fnCreatedCell&&w.fnCreatedCell.call(a.oInstance,p,I(a,b,m),h,b,m)}A(a,"aoRowCreatedCallback",null,[n,h,b,g])}e.nTr.setAttribute("role","row")}function Pa(a,b){var c=b.nTr,d=b._aData;if(c){if(a=a.rowIdFn(d))c.id=a;d.DT_RowClass&&(a=d.DT_RowClass.split(" "),b.__rowc=b.__rowc? 
ta(b.__rowc.concat(a)):a,f(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&f(c).attr(d.DT_RowAttr);d.DT_RowData&&f(c).data(d.DT_RowData)}}function pb(a){var b,c,d=a.nTHead,e=a.nTFoot,h=0===f("th, td",d).length,g=a.oClasses,k=a.aoColumns;h&&(c=f("<tr/>").appendTo(d));var l=0;for(b=k.length;l<b;l++){var n=k[l];var m=f(n.nTh).addClass(n.sClass);h&&m.appendTo(c);a.oFeatures.bSort&&(m.addClass(n.sSortingClass),!1!==n.bSortable&&(m.attr("tabindex",a.iTabIndex).attr("aria-controls", 
a.sTableId),Qa(a,n.nTh,l)));n.sTitle!=m[0].innerHTML&&m.html(n.sTitle);Ra(a,"header")(a,m,n,g)}h&&fa(a.aoHeader,d);f(d).find(">tr").attr("role","row");f(d).find(">tr>th, >tr>td").addClass(g.sHeaderTH);f(e).find(">tr>th, >tr>td").addClass(g.sFooterTH);if(null!==e)for(a=a.aoFooter[0],l=0,b=a.length;l<b;l++)n=k[l],n.nTf=a[l].cell,n.sClass&&f(n.nTf).addClass(n.sClass)}function ha(a,b,c){var d,e,h=[],g=[],k=a.aoColumns.length;if(b){c===p&&(c=!1);var l=0;for(d=b.length;l<d;l++){h[l]=b[l].slice();h[l].nTr= 
b[l].nTr;for(e=k-1;0<=e;e--)a.aoColumns[e].bVisible||c||h[l].splice(e,1);g.push([])}l=0;for(d=h.length;l<d;l++){if(a=h[l].nTr)for(;e=a.firstChild;)a.removeChild(e);e=0;for(b=h[l].length;e<b;e++){var n=k=1;if(g[l][e]===p){a.appendChild(h[l][e].cell);for(g[l][e]=1;h[l+k]!==p&&h[l][e].cell==h[l+k][e].cell;)g[l+k][e]=1,k++;for(;h[l][e+n]!==p&&h[l][e].cell==h[l][e+n].cell;){for(c=0;c<k;c++)g[l+c][e+n]=1;n++}f(h[l][e].cell).attr("rowspan",k).attr("colspan",n)}}}}}function S(a){var b=A(a,"aoPreDrawCallback", 
"preDraw",[a]);if(-1!==f.inArray(!1,b))K(a,!1);else{b=[];var c=0,d=a.asStripeClasses,e=d.length,h=a.oLanguage,g=a.iInitDisplayStart,k="ssp"==D(a),l=a.aiDisplay;a.bDrawing=!0;g!==p&&-1!==g&&(a._iDisplayStart=k?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);g=a._iDisplayStart;var n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,K(a,!1);else if(!k)a.iDraw++;else if(!a.bDestroying&&!qb(a))return;if(0!==l.length)for(h=k?a.aoData.length:n,k=k?0:g;k<h;k++){var m=l[k],w=a.aoData[m]; 
null===w.nTr&&La(a,m);var u=w.nTr;if(0!==e){var q=d[c%e];w._sRowStripe!=q&&(f(u).removeClass(w._sRowStripe).addClass(q),w._sRowStripe=q)}A(a,"aoRowCallback",null,[u,w._aData,c,k,m]);b.push(u);c++}else c=h.sZeroRecords,1==a.iDraw&&"ajax"==D(a)?c=h.sLoadingRecords:h.sEmptyTable&&0===a.fnRecordsTotal()&&(c=h.sEmptyTable),b[0]=f("<tr/>",{"class":e?d[0]:""}).append(f("<td />",{valign:"top",colSpan:W(a),"class":a.oClasses.sRowEmpty}).html(c))[0];A(a,"aoHeaderCallback","header",[f(a.nTHead).children("tr")[0], 
Oa(a),g,n,l]);A(a,"aoFooterCallback","footer",[f(a.nTFoot).children("tr")[0],Oa(a),g,n,l]);d=f(a.nTBody);d.children().detach();d.append(f(b));A(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function V(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&rb(a);d?ia(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;S(a);a._drawHold=!1}function sb(a){var b=a.oClasses,c=f(a.nTable);c=f("<div/>").insertBefore(c);var d=a.oFeatures,e= 
f("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var h=a.sDom.split(""),g,k,l,n,m,p,u=0;u<h.length;u++){g=null;k=h[u];if("<"==k){l=f("<div/>")[0];n=h[u+1];if("'"==n||'"'==n){m="";for(p=2;h[u+p]!=n;)m+=h[u+p],p++;"H"==m?m=b.sJUIHeader:"F"==m&&(m=b.sJUIFooter);-1!=m.indexOf(".")?(n=m.split("."),l.id=n[0].substr(1,n[0].length-1),l.className=n[1]):"#"==m.charAt(0)?l.id=m.substr(1, 
m.length-1):l.className=m;u+=p}e.append(l);e=f(l)}else if(">"==k)e=e.parent();else if("l"==k&&d.bPaginate&&d.bLengthChange)g=tb(a);else if("f"==k&&d.bFilter)g=ub(a);else if("r"==k&&d.bProcessing)g=vb(a);else if("t"==k)g=wb(a);else if("i"==k&&d.bInfo)g=xb(a);else if("p"==k&&d.bPaginate)g=yb(a);else if(0!==q.ext.feature.length)for(l=q.ext.feature,p=0,n=l.length;p<n;p++)if(k==l[p].cFeature){g=l[p].fnInit(a);break}g&&(l=a.aanFeatures,l[k]||(l[k]=[]),l[k].push(g),e.append(g))}c.replaceWith(e);a.nHolding= 
null}function fa(a,b){b=f(b).children("tr");var c,d,e;a.splice(0,a.length);var h=0;for(e=b.length;h<e;h++)a.push([]);h=0;for(e=b.length;h<e;h++){var g=b[h];for(c=g.firstChild;c;){if("TD"==c.nodeName.toUpperCase()||"TH"==c.nodeName.toUpperCase()){var k=1*c.getAttribute("colspan");var l=1*c.getAttribute("rowspan");k=k&&0!==k&&1!==k?k:1;l=l&&0!==l&&1!==l?l:1;var n=0;for(d=a[h];d[n];)n++;var m=n;var p=1===k?!0:!1;for(d=0;d<k;d++)for(n=0;n<l;n++)a[h+n][m+d]={cell:c,unique:p},a[h+n].nTr=g}c=c.nextSibling}}} 
function ua(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],fa(c,b)));b=0;for(var e=c.length;b<e;b++)for(var h=0,g=c[b].length;h<g;h++)!c[b][h].unique||d[h]&&a.bSortCellsTop||(d[h]=c[b][h].cell);return d}function va(a,b,c){A(a,"aoServerParams","serverParams",[b]);if(b&&f.isArray(b)){var d={},e=/(.*?)\[\]$/;f.each(b,function(a,b){(a=b.name.match(e))?(a=a[0],d[a]||(d[a]=[]),d[a].push(b.value)):d[b.name]=b.value});b=d}var h=a.ajax,g=a.oInstance,k=function(b){A(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(f.isPlainObject(h)&& 
h.data){var l=h.data;var n="function"===typeof l?l(b,a):l;b="function"===typeof l&&n?n:f.extend(!0,b,n);delete h.data}n={data:b,success:function(b){var c=b.error||b.sError;c&&O(a,0,c);a.json=b;k(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c,d){d=A(a,null,"xhr",[a,null,a.jqXHR]);-1===f.inArray(!0,d)&&("parsererror"==c?O(a,0,"Invalid JSON response",1):4===b.readyState&&O(a,0,"Ajax error",7));K(a,!1)}};a.oAjaxData=b;A(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(g, 
a.sAjaxSource,f.map(b,function(a,b){return{name:b,value:a}}),k,a):a.sAjaxSource||"string"===typeof h?a.jqXHR=f.ajax(f.extend(n,{url:h||a.sAjaxSource})):"function"===typeof h?a.jqXHR=h.call(g,b,k,a):(a.jqXHR=f.ajax(f.extend(n,h)),h.data=l)}function qb(a){return a.bAjaxDataGet?(a.iDraw++,K(a,!0),va(a,zb(a),function(b){Ab(a,b)}),!1):!0}function zb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,h=a.aoPreSearchCols,g=[],k=Y(a);var l=a._iDisplayStart;var n=!1!==d.bPaginate?a._iDisplayLength: 
-1;var m=function(a,b){g.push({name:a,value:b})};m("sEcho",a.iDraw);m("iColumns",c);m("sColumns",J(b,"sName").join(","));m("iDisplayStart",l);m("iDisplayLength",n);var p={draw:a.iDraw,columns:[],order:[],start:l,length:n,search:{value:e.sSearch,regex:e.bRegex}};for(l=0;l<c;l++){var u=b[l];var sa=h[l];n="function"==typeof u.mData?"function":u.mData;p.columns.push({data:n,name:u.sName,searchable:u.bSearchable,orderable:u.bSortable,search:{value:sa.sSearch,regex:sa.bRegex}});m("mDataProp_"+l,n);d.bFilter&& 
(m("sSearch_"+l,sa.sSearch),m("bRegex_"+l,sa.bRegex),m("bSearchable_"+l,u.bSearchable));d.bSort&&m("bSortable_"+l,u.bSortable)}d.bFilter&&(m("sSearch",e.sSearch),m("bRegex",e.bRegex));d.bSort&&(f.each(k,function(a,b){p.order.push({column:b.col,dir:b.dir});m("iSortCol_"+a,b.col);m("sSortDir_"+a,b.dir)}),m("iSortingCols",k.length));b=q.ext.legacy.ajax;return null===b?a.sAjaxSource?g:p:b?g:p}function Ab(a,b){var c=function(a,c){return b[a]!==p?b[a]:b[c]},d=wa(a,b),e=c("sEcho","draw"),h=c("iTotalRecords", 
"recordsTotal");c=c("iTotalDisplayRecords","recordsFiltered");if(e){if(1*e<a.iDraw)return;a.iDraw=1*e}qa(a);a._iRecordsTotal=parseInt(h,10);a._iRecordsDisplay=parseInt(c,10);e=0;for(h=d.length;e<h;e++)R(a,d[e]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;S(a);a._bInitComplete||xa(a,b);a.bAjaxDataGet=!0;K(a,!1)}function wa(a,b){a=f.isPlainObject(a.ajax)&&a.ajax.dataSrc!==p?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===a?b.aaData||b[a]:""!==a?U(a)(b):b}function ub(a){var b=a.oClasses,c= 
a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,h=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',k=d.sSearch;k=k.match(/_INPUT_/)?k.replace("_INPUT_",g):k+g;b=f("<div/>",{id:h.f?null:c+"_filter","class":b.sFilter}).append(f("<label/>").append(k));h=function(){var b=this.value?this.value:"";b!=e.sSearch&&(ia(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,S(a))};g=null!==a.searchDelay?a.searchDelay:"ssp"===D(a)?400:0;var l=f("input", 
b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",g?Sa(h,g):h).on("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);f(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{l[0]!==y.activeElement&&l.val(e.sSearch)}catch(w){}});return b[0]}function ia(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,h=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive},g=function(a){return a.bEscapeRegex!== 
p?!a.bEscapeRegex:a.bRegex};Ka(a);if("ssp"!=D(a)){Bb(a,b.sSearch,c,g(b),b.bSmart,b.bCaseInsensitive);h(b);for(b=0;b<e.length;b++)Cb(a,e[b].sSearch,b,g(e[b]),e[b].bSmart,e[b].bCaseInsensitive);Db(a)}else h(b);a.bFiltered=!0;A(a,null,"search",[a])}function Db(a){for(var b=q.ext.search,c=a.aiDisplay,d,e,h=0,g=b.length;h<g;h++){for(var k=[],l=0,n=c.length;l<n;l++)e=c[l],d=a.aoData[e],b[h](a,d._aFilterData,e,d._aData,l)&&k.push(e);c.length=0;f.merge(c,k)}}function Cb(a,b,c,d,e,h){if(""!==b){var g=[],k= 
a.aiDisplay;d=Ta(b,d,e,h);for(e=0;e<k.length;e++)b=a.aoData[k[e]]._aFilterData[c],d.test(b)&&g.push(k[e]);a.aiDisplay=g}}function Bb(a,b,c,d,e,h){e=Ta(b,d,e,h);var g=a.oPreviousSearch.sSearch,k=a.aiDisplayMaster;h=[];0!==q.ext.search.length&&(c=!0);var f=Eb(a);if(0>=b.length)a.aiDisplay=k.slice();else{if(f||c||d||g.length>b.length||0!==b.indexOf(g)||a.bSorted)a.aiDisplay=k.slice();b=a.aiDisplay;for(c=0;c<b.length;c++)e.test(a.aoData[b[c]]._sFilterRow)&&h.push(b[c]);a.aiDisplay=h}}function Ta(a,b, 
c,d){a=b?a:Ua(a);c&&(a="^(?=.*?"+f.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0)){var b=a.match(/^"(.*)"$/);a=b?b[1]:a}return a.replace('"',"")}).join(")(?=.*?")+").*$");return new RegExp(a,d?"i":"")}function Eb(a){var b=a.aoColumns,c,d,e=q.ext.type.search;var h=!1;var g=0;for(c=a.aoData.length;g<c;g++){var k=a.aoData[g];if(!k._aFilterData){var f=[];var n=0;for(d=b.length;n<d;n++){h=b[n];if(h.bSearchable){var m=I(a,g,n,"filter");e[h.sType]&&(m=e[h.sType](m));null===m&&(m=""); 
"string"!==typeof m&&m.toString&&(m=m.toString())}else m="";m.indexOf&&-1!==m.indexOf("&")&&(ya.innerHTML=m,m=$b?ya.textContent:ya.innerText);m.replace&&(m=m.replace(/[
]/g,""));f.push(m)}k._aFilterData=f;k._sFilterRow=f.join("  ");h=!0}}return h}function Fb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function Gb(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function xb(a){var b=a.sTableId,c=a.aanFeatures.i, 
d=f("<div/>",{"class":a.oClasses.sInfo,id:c?null:b+"_info"});c||(a.aoDrawCallback.push({fn:Hb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),f(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Hb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+1,e=a.fnDisplayEnd(),h=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),k=g?c.sInfo:c.sInfoEmpty;g!==h&&(k+=" "+c.sInfoFiltered);k+=c.sInfoPostFix;k=Ib(a,k);c=c.fnInfoCallback;null!==c&&(k=c.call(a.oInstance, 
a,d,e,h,g,k));f(b).html(k)}}function Ib(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,h=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,h)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(h/e)))}function ja(a){var b=a.iInitDisplayStart,c=a.aoColumns;var d=a.oFeatures;var e=a.bDeferLoading;if(a.bInitialised){sb(a); 
pb(a);ha(a,a.aoHeader);ha(a,a.aoFooter);K(a,!0);d.bAutoWidth&&Ja(a);var h=0;for(d=c.length;h<d;h++){var g=c[h];g.sWidth&&(g.nTh.style.width=B(g.sWidth))}A(a,null,"preInit",[a]);V(a);c=D(a);if("ssp"!=c||e)"ajax"==c?va(a,[],function(c){var d=wa(a,c);for(h=0;h<d.length;h++)R(a,d[h]);a.iInitDisplayStart=b;V(a);K(a,!1);xa(a,c)},a):(K(a,!1),xa(a))}else setTimeout(function(){ja(a)},200)}function xa(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&aa(a);A(a,null,"plugin-init",[a,b]);A(a,"aoInitComplete","init", 
[a,b])}function Va(a,b){b=parseInt(b,10);a._iDisplayLength=b;Wa(a);A(a,null,"length",[a,b])}function tb(a){var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=f.isArray(d[0]),h=e?d[0]:d;d=e?d[1]:d;e=f("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect});for(var g=0,k=h.length;g<k;g++)e[0][g]=new Option("number"===typeof d[g]?a.fnFormatNumber(d[g]):d[g],h[g]);var l=f("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(l[0].id=c+"_length");l.children().append(a.oLanguage.sLengthMenu.replace("_MENU_", 
e[0].outerHTML));f("select",l).val(a._iDisplayLength).on("change.DT",function(b){Va(a,f(this).val());S(a)});f(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&f("select",l).val(d)});return l[0]}function yb(a){var b=a.sPaginationType,c=q.ext.pager[b],d="function"===typeof c,e=function(a){S(a)};b=f("<div/>").addClass(a.oClasses.sPaging+b)[0];var h=a.aanFeatures;d||c.fnInit(a,b,e);h.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,g=a._iDisplayLength, 
f=a.fnRecordsDisplay(),m=-1===g;b=m?0:Math.ceil(b/g);g=m?1:Math.ceil(f/g);f=c(b,g);var p;m=0;for(p=h.p.length;m<p;m++)Ra(a,"pageButton")(a,h.p[m],m,f,b,g)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Xa(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,h=a.fnRecordsDisplay();0===h||-1===e?d=0:"number"===typeof b?(d=b*e,d>h&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e<h&&(d+=e):"last"==b?d=Math.floor((h-1)/e)*e:O(a,0,"Unknown paging action: "+b,5);b= 
a._iDisplayStart!==d;a._iDisplayStart=d;b&&(A(a,null,"page",[a]),c&&S(a));return b}function vb(a){return f("<div/>",{id:a.aanFeatures.r?null:a.sTableId+"_processing","class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function K(a,b){a.oFeatures.bProcessing&&f(a.aanFeatures.r).css("display",b?"block":"none");A(a,null,"processing",[a,b])}function wb(a){var b=f(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY, 
h=a.oClasses,g=b.children("caption"),k=g.length?g[0]._captionSide:null,l=f(b[0].cloneNode(!1)),n=f(b[0].cloneNode(!1)),m=b.children("tfoot");m.length||(m=null);l=f("<div/>",{"class":h.sScrollWrapper}).append(f("<div/>",{"class":h.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?d?B(d):null:"100%"}).append(f("<div/>",{"class":h.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(l.removeAttr("id").css("margin-left",0).append("top"===k?g:null).append(b.children("thead"))))).append(f("<div/>", 
{"class":h.sScrollBody}).css({position:"relative",overflow:"auto",width:d?B(d):null}).append(b));m&&l.append(f("<div/>",{"class":h.sScrollFoot}).css({overflow:"hidden",border:0,width:d?d?B(d):null:"100%"}).append(f("<div/>",{"class":h.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",0).append("bottom"===k?g:null).append(b.children("tfoot")))));b=l.children();var p=b[0];h=b[1];var u=m?b[2]:null;if(d)f(h).on("scroll.DT",function(a){a=this.scrollLeft;p.scrollLeft=a;m&&(u.scrollLeft=a)}); 
f(h).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=p;a.nScrollBody=h;a.nScrollFoot=u;a.aoDrawCallback.push({fn:na,sName:"scrolling"});return l[0]}function na(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY;b=b.iBarWidth;var h=f(a.nScrollHead),g=h[0].style,k=h.children("div"),l=k[0].style,n=k.children("table");k=a.nScrollBody;var m=f(k),w=k.style,u=f(a.nScrollFoot).children("div"),q=u.children("table"),t=f(a.nTHead),r=f(a.nTable),v=r[0],za=v.style,T=a.nTFoot?f(a.nTFoot):null,A=a.oBrowser, 
x=A.bScrollOversize,ac=J(a.aoColumns,"nTh"),Ya=[],y=[],z=[],C=[],G,H=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};var D=k.scrollHeight>k.clientHeight;if(a.scrollBarVis!==D&&a.scrollBarVis!==p)a.scrollBarVis=D,aa(a);else{a.scrollBarVis=D;r.children("thead, tfoot").remove();if(T){var E=T.clone().prependTo(r);var F=T.find("tr");E=E.find("tr")}var I=t.clone().prependTo(r);t=t.find("tr");D=I.find("tr");I.find("th, td").removeAttr("tabindex"); 
c||(w.width="100%",h[0].style.width="100%");f.each(ua(a,I),function(b,c){G=ba(a,b);c.style.width=a.aoColumns[G].sWidth});T&&N(function(a){a.style.width=""},E);h=r.outerWidth();""===c?(za.width="100%",x&&(r.find("tbody").height()>k.offsetHeight||"scroll"==m.css("overflow-y"))&&(za.width=B(r.outerWidth()-b)),h=r.outerWidth()):""!==d&&(za.width=B(d),h=r.outerWidth());N(H,D);N(function(a){z.push(a.innerHTML);Ya.push(B(f(a).css("width")))},D);N(function(a,b){-1!==f.inArray(a,ac)&&(a.style.width=Ya[b])}, 
t);f(D).height(0);T&&(N(H,E),N(function(a){C.push(a.innerHTML);y.push(B(f(a).css("width")))},E),N(function(a,b){a.style.width=y[b]},F),f(E).height(0));N(function(a,b){a.innerHTML='<div class="dataTables_sizing">'+z[b]+"</div>";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width=Ya[b]},D);T&&N(function(a,b){a.innerHTML='<div class="dataTables_sizing">'+C[b]+"</div>";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width=y[b]},E);r.outerWidth()< 
h?(F=k.scrollHeight>k.offsetHeight||"scroll"==m.css("overflow-y")?h+b:h,x&&(k.scrollHeight>k.offsetHeight||"scroll"==m.css("overflow-y"))&&(za.width=B(F-b)),""!==c&&""===d||O(a,1,"Possible column misalignment",6)):F="100%";w.width=B(F);g.width=B(F);T&&(a.nScrollFoot.style.width=B(F));!e&&x&&(w.height=B(v.offsetHeight+b));c=r.outerWidth();n[0].style.width=B(c);l.width=B(c);d=r.height()>k.clientHeight||"scroll"==m.css("overflow-y");e="padding"+(A.bScrollbarLeft?"Left":"Right");l[e]=d?b+"px":"0px";T&& 
(q[0].style.width=B(c),u[0].style.width=B(c),u[0].style[e]=d?b+"px":"0px");r.children("colgroup").insertBefore(r.children("thead"));m.trigger("scroll");!a.bSorted&&!a.bFiltered||a._drawHold||(k.scrollTop=0)}}function N(a,b,c){for(var d=0,e=0,h=b.length,g,k;e<h;){g=b[e].firstChild;for(k=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,k,d):a(g,d),d++),g=g.nextSibling,k=c?k.nextSibling:null;e++}}function Ja(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,e=d.sY,h=d.sX,g=d.sXInner,k=c.length,l=oa(a,"bVisible"), 
n=f("th",a.nTHead),m=b.getAttribute("width"),p=b.parentNode,u=!1,q,t=a.oBrowser;d=t.bScrollOversize;(q=b.style.width)&&-1!==q.indexOf("%")&&(m=q);for(q=0;q<l.length;q++){var r=c[l[q]];null!==r.sWidth&&(r.sWidth=Jb(r.sWidthOrig,p),u=!0)}if(d||!u&&!h&&!e&&k==W(a)&&k==n.length)for(q=0;q<k;q++)l=ba(a,q),null!==l&&(c[l].sWidth=B(n.eq(q).width()));else{k=f(b).clone().css("visibility","hidden").removeAttr("id");k.find("tbody tr").remove();var v=f("<tr/>").appendTo(k.find("tbody"));k.find("thead, tfoot").remove(); 
k.append(f(a.nTHead).clone()).append(f(a.nTFoot).clone());k.find("tfoot th, tfoot td").css("width","");n=ua(a,k.find("thead")[0]);for(q=0;q<l.length;q++)r=c[l[q]],n[q].style.width=null!==r.sWidthOrig&&""!==r.sWidthOrig?B(r.sWidthOrig):"",r.sWidthOrig&&h&&f(n[q]).append(f("<div/>").css({width:r.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(q=0;q<l.length;q++)u=l[q],r=c[u],f(Kb(a,u)).clone(!1).append(r.sContentPadding).appendTo(v);f("[name]",k).removeAttr("name");r=f("<div/>").css(h|| 
e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(k).appendTo(p);h&&g?k.width(g):h?(k.css("width","auto"),k.removeAttr("width"),k.width()<p.clientWidth&&m&&k.width(p.clientWidth)):e?k.width(p.clientWidth):m&&k.width(m);for(q=e=0;q<l.length;q++)p=f(n[q]),g=p.outerWidth()-p.width(),p=t.bBounding?Math.ceil(n[q].getBoundingClientRect().width):p.outerWidth(),e+=p,c[l[q]].sWidth=B(p-g);b.style.width=B(e);r.remove()}m&&(b.style.width=B(m));!m&&!h||a._reszEvt||(b=function(){f(z).on("resize.DT-"+ 
a.sInstance,Sa(function(){aa(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0)}function Jb(a,b){if(!a)return 0;a=f("<div/>").css("width",B(a)).appendTo(b||y.body);b=a[0].offsetWidth;a.remove();return b}function Kb(a,b){var c=Lb(a,b);if(0>c)return null;var d=a.aoData[c];return d.nTr?d.anCells[b]:f("<td/>").html(I(a,c,b,"display"))[0]}function Lb(a,b){for(var c,d=-1,e=-1,h=0,g=a.aoData.length;h<g;h++)c=I(a,h,b,"display")+"",c=c.replace(bc,""),c=c.replace(/&nbsp;/g," "),c.length>d&&(d=c.length,e=h);return e} 
function B(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Y(a){var b=[],c=a.aoColumns;var d=a.aaSortingFixed;var e=f.isPlainObject(d);var h=[];var g=function(a){a.length&&!f.isArray(a[0])?h.push(a):f.merge(h,a)};f.isArray(d)&&g(d);e&&d.pre&&g(d.pre);g(a.aaSorting);e&&d.post&&g(d.post);for(a=0;a<h.length;a++){var k=h[a][0];g=c[k].aDataSort;d=0;for(e=g.length;d<e;d++){var l=g[d];var n=c[l].sType||"string";h[a]._idx===p&&(h[a]._idx=f.inArray(h[a][1],c[l].asSorting)); 
b.push({src:k,col:l,dir:h[a][1],index:h[a]._idx,type:n,formatter:q.ext.type.order[n+"-pre"]})}}return b}function rb(a){var b,c=[],d=q.ext.type.order,e=a.aoData,h=0,g=a.aiDisplayMaster;Ka(a);var k=Y(a);var f=0;for(b=k.length;f<b;f++){var n=k[f];n.formatter&&h++;Mb(a,n.col)}if("ssp"!=D(a)&&0!==k.length){f=0;for(b=g.length;f<b;f++)c[g[f]]=f;h===k.length?g.sort(function(a,b){var d,h=k.length,g=e[a]._aSortData,f=e[b]._aSortData;for(d=0;d<h;d++){var l=k[d];var m=g[l.col];var n=f[l.col];m=m<n?-1:m>n?1:0; 
if(0!==m)return"asc"===l.dir?m:-m}m=c[a];n=c[b];return m<n?-1:m>n?1:0}):g.sort(function(a,b){var h,g=k.length,f=e[a]._aSortData,l=e[b]._aSortData;for(h=0;h<g;h++){var m=k[h];var n=f[m.col];var p=l[m.col];m=d[m.type+"-"+m.dir]||d["string-"+m.dir];n=m(n,p);if(0!==n)return n}n=c[a];p=c[b];return n<p?-1:n>p?1:0})}a.bSorted=!0}function Nb(a){var b=a.aoColumns,c=Y(a);a=a.oLanguage.oAria;for(var d=0,e=b.length;d<e;d++){var h=b[d];var g=h.asSorting;var k=h.sTitle.replace(/<.*?>/g,"");var f=h.nTh;f.removeAttribute("aria-sort"); 
h.bSortable&&(0<c.length&&c[0].col==d?(f.setAttribute("aria-sort","asc"==c[0].dir?"ascending":"descending"),h=g[c[0].index+1]||g[0]):h=g[0],k+="asc"===h?a.sSortAscending:a.sSortDescending);f.setAttribute("aria-label",k)}}function Za(a,b,c,d){var e=a.aaSorting,h=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===p&&(c=f.inArray(a[1],h));return c+1<h.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=f.inArray(b,J(e,"0")),-1!==c?(b=g(e[c],!0),null=== 
b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=h[b],e[c]._idx=b)):(e.push([b,h[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=h[b],e[0]._idx=b):(e.length=0,e.push([b,h[0]]),e[0]._idx=0);V(a);"function"==typeof d&&d(a)}function Qa(a,b,c,d){var e=a.aoColumns[c];$a(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(K(a,!0),setTimeout(function(){Za(a,c,b.shiftKey,d);"ssp"!==D(a)&&K(a,!1)},0)):Za(a,c,b.shiftKey,d))})}function Aa(a){var b=a.aLastSort, 
c=a.oClasses.sSortColumn,d=Y(a),e=a.oFeatures,h;if(e.bSort&&e.bSortClasses){e=0;for(h=b.length;e<h;e++){var g=b[e].src;f(J(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3))}e=0;for(h=d.length;e<h;e++)g=d[e].src,f(J(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Mb(a,b){var c=a.aoColumns[b],d=q.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,ca(a,b)));for(var h,g=q.ext.type.order[c.sType+"-pre"],k=0,f=a.aoData.length;k<f;k++)if(c=a.aoData[k],c._aSortData||(c._aSortData= 
[]),!c._aSortData[b]||d)h=d?e[k]:I(a,k,b,"sort"),c._aSortData[b]=g?g(h):h}function Ba(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:f.extend(!0,[],a.aaSorting),search:Fb(a.oPreviousSearch),columns:f.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:Fb(a.aoPreSearchCols[d])}})};A(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Ob(a,b,c){var d, 
e,h=a.aoColumns;b=function(b){if(b&&b.time){var g=A(a,"aoStateLoadParams","stateLoadParams",[a,b]);if(-1===f.inArray(!1,g)&&(g=a.iStateDuration,!(0<g&&b.time<+new Date-1E3*g||b.columns&&h.length!==b.columns.length))){a.oLoadedState=f.extend(!0,{},b);b.start!==p&&(a._iDisplayStart=b.start,a.iInitDisplayStart=b.start);b.length!==p&&(a._iDisplayLength=b.length);b.order!==p&&(a.aaSorting=[],f.each(b.order,function(b,c){a.aaSorting.push(c[0]>=h.length?[0,c[1]]:c)}));b.search!==p&&f.extend(a.oPreviousSearch, 
Gb(b.search));if(b.columns)for(d=0,e=b.columns.length;d<e;d++)g=b.columns[d],g.visible!==p&&(h[d].bVisible=g.visible),g.search!==p&&f.extend(a.aoPreSearchCols[d],Gb(g.search));A(a,"aoStateLoaded","stateLoaded",[a,b])}}c()};if(a.oFeatures.bStateSave){var g=a.fnStateLoadCallback.call(a.oInstance,a,b);g!==p&&b(g)}else c()}function Ca(a){var b=q.settings;a=f.inArray(a,J(b,"nTable"));return-1!==a?b[a]:null}function O(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+ 
d);if(b)z.console&&console.log&&console.log(c);else if(b=q.ext,b=b.sErrMode||b.errMode,a&&A(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function M(a,b,c,d){f.isArray(c)?f.each(c,function(c,d){f.isArray(d)?M(a,b,d[0],d[1]):M(a,b,d)}):(d===p&&(d=c),b[c]!==p&&(a[d]=b[c]))}function ab(a,b,c){var d;for(d in b)if(b.hasOwnProperty(d)){var e=b[d];f.isPlainObject(e)?(f.isPlainObject(a[d])||(a[d]={}),f.extend(!0,a[d],e)):c&&"data"!==d&&"aaData"!== 
d&&f.isArray(e)?a[d]=e.slice():a[d]=e}return a}function $a(a,b,c){f(a).on("click.DT",b,function(b){f(a).blur();c(b)}).on("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).on("selectstart.DT",function(){return!1})}function E(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function A(a,b,c,d){var e=[];b&&(e=f.map(a[b].slice().reverse(),function(b,c){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=f.Event(c+".dt"),f(a.nTable).trigger(b,d),e.push(b.result));return e}function Wa(a){var b=a._iDisplayStart, 
c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Ra(a,b){a=a.renderer;var c=q.ext.renderer[b];return f.isPlainObject(a)&&a[b]?c[a[b]]||c._:"string"===typeof a?c[a]||c._:c._}function D(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ka(a,b){var c=Pb.numbers_length,d=Math.floor(c/2);b<=c?a=Z(0,b):a<=d?(a=Z(0,c-2),a.push("ellipsis"),a.push(b-1)):(a>=b-1-d?a=Z(b-(c-2),b):(a=Z(a-d+2,a+d-1),a.push("ellipsis"), 
a.push(b-1)),a.splice(0,0,"ellipsis"),a.splice(0,0,0));a.DT_el="span";return a}function Ha(a){f.each({num:function(b){return Da(b,a)},"num-fmt":function(b){return Da(b,a,bb)},"html-num":function(b){return Da(b,a,Ea)},"html-num-fmt":function(b){return Da(b,a,Ea,bb)}},function(b,c){C.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(C.type.search[b+a]=C.type.search.html)})}function Qb(a){return function(){var b=[Ca(this[q.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return q.ext.internal[a].apply(this, 
b)}}var q=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new v(Ca(this[C.iApiIndex])):new v(this)};this.fnAddData=function(a,b){var c=this.api(!0);a=f.isArray(a)&&(f.isArray(a[0])||f.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===p||b)&&c.draw();return a.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===p||a?b.draw(!1): 
(""!==d.sX||""!==d.sY)&&na(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===p||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0);a=d.rows(a);var e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===p||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,d,e,f){e=this.api(!0);null===b||b===p? 
e.search(a,c,d,f):e.column(b).search(a,c,d,f);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==p){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==p||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==p?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(), 
[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){a=this.api(!0).page(a);(b===p||b)&&a.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===p||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return Ca(this[C.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener= 
function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===p||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===p||e)&&h.columns.adjust();(d===p||d)&&h.draw();return 0};this.fnVersionCheck=C.fnVersionCheck;var b=this,c=a===p,d=this.length;c&&(a={});this.oApi=this.internal=C.internal;for(var e in q.ext.internal)e&&(this[e]=Qb(e));this.each(function(){var e={},g=1<d?ab(e,a,!0):a,k=0,l;e=this.getAttribute("id");var n=!1,m=q.defaults,w=f(this);if("table"!= 
this.nodeName.toLowerCase())O(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{jb(m);kb(m.column);L(m,m,!0);L(m.column,m.column,!0);L(m,f.extend(g,w.data()),!0);var u=q.settings;k=0;for(l=u.length;k<l;k++){var t=u[k];if(t.nTable==this||t.nTHead&&t.nTHead.parentNode==this||t.nTFoot&&t.nTFoot.parentNode==this){var v=g.bRetrieve!==p?g.bRetrieve:m.bRetrieve;if(c||v)return t.oInstance;if(g.bDestroy!==p?g.bDestroy:m.bDestroy){t.oInstance.fnDestroy();break}else{O(t,0,"Cannot reinitialise DataTable", 
3);return}}if(t.sTableId==this.id){u.splice(k,1);break}}if(null===e||""===e)this.id=e="DataTables_Table_"+q.ext._unique++;var r=f.extend(!0,{},q.models.oSettings,{sDestroyWidth:w[0].style.width,sInstance:e,sTableId:e});r.nTable=this;r.oApi=b.internal;r.oInit=g;u.push(r);r.oInstance=1===b.length?b:w.dataTable();jb(g);Ga(g.oLanguage);g.aLengthMenu&&!g.iDisplayLength&&(g.iDisplayLength=f.isArray(g.aLengthMenu[0])?g.aLengthMenu[0][0]:g.aLengthMenu[0]);g=ab(f.extend(!0,{},m),g);M(r.oFeatures,g,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" ")); 
M(r,g,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]);M(r.oScroll,g,[["sScrollX","sX"],["sScrollXInner","sXInner"], 
["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);M(r.oLanguage,g,"fnInfoCallback");E(r,"aoDrawCallback",g.fnDrawCallback,"user");E(r,"aoServerParams",g.fnServerParams,"user");E(r,"aoStateSaveParams",g.fnStateSaveParams,"user");E(r,"aoStateLoadParams",g.fnStateLoadParams,"user");E(r,"aoStateLoaded",g.fnStateLoaded,"user");E(r,"aoRowCallback",g.fnRowCallback,"user");E(r,"aoRowCreatedCallback",g.fnCreatedRow,"user");E(r,"aoHeaderCallback",g.fnHeaderCallback,"user");E(r,"aoFooterCallback",g.fnFooterCallback, 
"user");E(r,"aoInitComplete",g.fnInitComplete,"user");E(r,"aoPreDrawCallback",g.fnPreDrawCallback,"user");r.rowIdFn=U(g.rowId);lb(r);var x=r.oClasses;f.extend(x,q.ext.classes,g.oClasses);w.addClass(x.sTable);r.iInitDisplayStart===p&&(r.iInitDisplayStart=g.iDisplayStart,r._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(r.bDeferLoading=!0,e=f.isArray(g.iDeferLoading),r._iRecordsDisplay=e?g.iDeferLoading[0]:g.iDeferLoading,r._iRecordsTotal=e?g.iDeferLoading[1]:g.iDeferLoading);var y=r.oLanguage; 
f.extend(!0,y,g.oLanguage);y.sUrl&&(f.ajax({dataType:"json",url:y.sUrl,success:function(a){Ga(a);L(m.oLanguage,a);f.extend(!0,y,a);ja(r)},error:function(){ja(r)}}),n=!0);null===g.asStripeClasses&&(r.asStripeClasses=[x.sStripeOdd,x.sStripeEven]);e=r.asStripeClasses;var z=w.children("tbody").find("tr").eq(0);-1!==f.inArray(!0,f.map(e,function(a,b){return z.hasClass(a)}))&&(f("tbody tr",this).removeClass(e.join(" ")),r.asDestroyStripes=e.slice());e=[];u=this.getElementsByTagName("thead");0!==u.length&& 
(fa(r.aoHeader,u[0]),e=ua(r));if(null===g.aoColumns)for(u=[],k=0,l=e.length;k<l;k++)u.push(null);else u=g.aoColumns;k=0;for(l=u.length;k<l;k++)Ia(r,e?e[k]:null);nb(r,g.aoColumnDefs,u,function(a,b){ma(r,a,b)});if(z.length){var B=function(a,b){return null!==a.getAttribute("data-"+b)?b:null};f(z[0]).children("th, td").each(function(a,b){var c=r.aoColumns[a];if(c.mData===a){var d=B(b,"sort")||B(b,"order");b=B(b,"filter")||B(b,"search");if(null!==d||null!==b)c.mData={_:a+".display",sort:null!==d?a+".@data-"+ 
d:p,type:null!==d?a+".@data-"+d:p,filter:null!==b?a+".@data-"+b:p},ma(r,a)}})}var C=r.oFeatures;e=function(){if(g.aaSorting===p){var a=r.aaSorting;k=0;for(l=a.length;k<l;k++)a[k][1]=r.aoColumns[k].asSorting[0]}Aa(r);C.bSort&&E(r,"aoDrawCallback",function(){if(r.bSorted){var a=Y(r),b={};f.each(a,function(a,c){b[c.src]=c.dir});A(r,null,"order",[r,a,b]);Nb(r)}});E(r,"aoDrawCallback",function(){(r.bSorted||"ssp"===D(r)||C.bDeferRender)&&Aa(r)},"sc");a=w.children("caption").each(function(){this._captionSide= 
f(this).css("caption-side")});var b=w.children("thead");0===b.length&&(b=f("<thead/>").appendTo(w));r.nTHead=b[0];b=w.children("tbody");0===b.length&&(b=f("<tbody/>").appendTo(w));r.nTBody=b[0];b=w.children("tfoot");0===b.length&&0<a.length&&(""!==r.oScroll.sX||""!==r.oScroll.sY)&&(b=f("<tfoot/>").appendTo(w));0===b.length||0===b.children().length?w.addClass(x.sNoFooter):0<b.length&&(r.nTFoot=b[0],fa(r.aoFooter,r.nTFoot));if(g.aaData)for(k=0;k<g.aaData.length;k++)R(r,g.aaData[k]);else(r.bDeferLoading|| 
"dom"==D(r))&&pa(r,f(r.nTBody).children("tr"));r.aiDisplay=r.aiDisplayMaster.slice();r.bInitialised=!0;!1===n&&ja(r)};g.bStateSave?(C.bStateSave=!0,E(r,"aoDrawCallback",Ba,"state_save"),Ob(r,g,e)):e()}});b=null;return this},C,t,x,cb={},Rb=/[
]/g,Ea=/<.*?>/g,cc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,dc=/(\/|\.|\*|\+|\?|\||\(|\)|\[|\]|\{|\}|\|\$|\^|\-)/g,bb=/[',$%rfk]/gi,P=function(a){return a&&!0!==a&&"-"!==a?!1: 
!0},Sb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Tb=function(a,b){cb[b]||(cb[b]=new RegExp(Ua(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(cb[b],"."):a},db=function(a,b,c){var d="string"===typeof a;if(P(a))return!0;b&&d&&(a=Tb(a,b));c&&d&&(a=a.replace(bb,""));return!isNaN(parseFloat(a))&&isFinite(a)},Ub=function(a,b,c){return P(a)?!0:P(a)||"string"===typeof a?db(a.replace(Ea,""),b,c)?!0:null:null},J=function(a,b,c){var d=[],e=0,h=a.length;if(c!== 
p)for(;e<h;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<h;e++)a[e]&&d.push(a[e][b]);return d},la=function(a,b,c,d){var e=[],h=0,g=b.length;if(d!==p)for(;h<g;h++)a[b[h]][c]&&e.push(a[b[h]][c][d]);else for(;h<g;h++)e.push(a[b[h]][c]);return e},Z=function(a,b){var c=[];if(b===p){b=0;var d=a}else d=b,b=a;for(a=b;a<d;a++)c.push(a);return c},Vb=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);return b},ta=function(a){a:{if(!(2>a.length)){var b=a.slice().sort();for(var c=b[0],d=1, 
e=b.length;d<e;d++){if(b[d]===c){b=!1;break a}c=b[d]}}b=!0}if(b)return a.slice();b=[];e=a.length;var h,g=0;d=0;a:for(;d<e;d++){c=a[d];for(h=0;h<g;h++)if(b[h]===c)continue a;b.push(c);g++}return b};q.util={throttle:function(a,b){var c=b!==p?b:200,d,e;return function(){var b=this,g=+new Date,f=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=p;a.apply(b,f)},c)):(d=g,a.apply(b,f))}},escapeRegex:function(a){return a.replace(dc,"\$1")}};var F=function(a,b,c){a[b]!==p&&(a[c]=a[b])},da=/\[.*?\]$/, 
X=/\(\)$/,Ua=q.util.escapeRegex,ya=f("<div>")[0],$b=ya.textContent!==p,bc=/<.*?>/g,Sa=q.util.throttle,Wb=[],G=Array.prototype,ec=function(a){var b,c=q.settings,d=f.map(c,function(a,b){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase()){var e=f.inArray(a,d);return-1!==e?[c[e]]:null}if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?b=f(a):a instanceof f&&(b=a)}else return[];if(b)return b.map(function(a){e=f.inArray(this, 
d);return-1!==e?c[e]:null}).toArray()};var v=function(a,b){if(!(this instanceof v))return new v(a,b);var c=[],d=function(a){(a=ec(a))&&c.push.apply(c,a)};if(f.isArray(a))for(var e=0,h=a.length;e<h;e++)d(a[e]);else d(a);this.context=ta(c);b&&f.merge(this,b);this.selector={rows:null,cols:null,opts:null};v.extend(this,this,Wb)};q.Api=v;f.extend(v.prototype,{any:function(){return 0!==this.count()},concat:G.concat,context:[],count:function(){return this.flatten().length},each:function(a){for(var b=0,c= 
this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new v(b[a],this[a]):null},filter:function(a){var b=[];if(G.filter)b=G.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new v(this.context,b)},flatten:function(){var a=[];return new v(this.context,a.concat.apply(a,this.toArray()))},join:G.join,indexOf:G.indexOf||function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]=== 
a)return b;return-1},iterator:function(a,b,c,d){var e=[],h,g,f=this.context,l,n=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);var m=0;for(h=f.length;m<h;m++){var q=new v(f[m]);if("table"===b){var u=c.call(q,f[m],m);u!==p&&e.push(u)}else if("columns"===b||"rows"===b)u=c.call(q,f[m],this[m],m),u!==p&&e.push(u);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){var t=this[m];"column-rows"===b&&(l=Fa(f[m],n.opts));var x=0;for(g=t.length;x<g;x++)u=t[x],u="cell"===b?c.call(q,f[m],u.row, 
u.column,m,x):c.call(q,f[m],u,m,x,l),u!==p&&e.push(u)}}return e.length||d?(a=new v(f,a?e.concat.apply([],e):e),b=a.selector,b.rows=n.rows,b.cols=n.cols,b.opts=n.opts,a):this},lastIndexOf:G.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(G.map)b=G.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new v(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})}, 
pop:G.pop,push:G.push,reduce:G.reduce||function(a,b){return mb(this,a,b,0,this.length,1)},reduceRight:G.reduceRight||function(a,b){return mb(this,a,b,this.length-1,-1,-1)},reverse:G.reverse,selector:null,shift:G.shift,slice:function(){return new v(this.context,this)},sort:G.sort,splice:G.splice,toArray:function(){return G.slice.call(this)},to$:function(){return f(this)},toJQuery:function(){return f(this)},unique:function(){return new v(this.context,ta(this))},unshift:G.unshift});v.extend=function(a, 
b,c){if(c.length&&b&&(b instanceof v||b.__dt_wrapper)){var d,e=function(a,b,c){return function(){var d=b.apply(a,arguments);v.extend(d,d,c.methodExt);return d}};var h=0;for(d=c.length;h<d;h++){var g=c[h];b[g.name]="function"===g.type?e(a,g.val,g):"object"===g.type?{}:g.val;b[g.name].__dt_wrapper=!0;v.extend(a,b[g.name],g.propExt)}}};v.register=t=function(a,b){if(f.isArray(a))for(var c=0,d=a.length;c<d;c++)v.register(a[c],b);else{d=a.split(".");var e=Wb,h;a=0;for(c=d.length;a<c;a++){var g=(h=-1!== 
d[a].indexOf("()"))?d[a].replace("()",""):d[a];a:{var k=0;for(var l=e.length;k<l;k++)if(e[k].name===g){k=e[k];break a}k=null}k||(k={name:g,val:{},methodExt:[],propExt:[],type:"object"},e.push(k));a===c-1?(k.val=b,k.type="function"===typeof b?"function":f.isPlainObject(b)?"object":"other"):e=h?k.methodExt:k.propExt}}};v.registerPlural=x=function(a,b,c){v.register(a,c);v.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof v?a.length?f.isArray(a[0])?new v(a.context, 
a[0]):a[0]:p:a})};var fc=function(a,b){if("number"===typeof a)return[b[a]];var c=f.map(b,function(a,b){return a.nTable});return f(c).filter(a).map(function(a){a=f.inArray(this,c);return b[a]}).toArray()};t("tables()",function(a){return a?new v(fc(a,this.context)):this});t("table()",function(a){a=this.tables(a);var b=a.context;return b.length?new v(b[0]):a});x("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});x("tables().body()","table().body()", 
function(){return this.iterator("table",function(a){return a.nTBody},1)});x("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});x("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});x("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});t("draw()",function(a){return this.iterator("table",function(b){"page"=== 
a?S(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),V(b,!1===a))})});t("page()",function(a){return a===p?this.page.info().page:this.iterator("table",function(b){Xa(b,a)})});t("page.info()",function(a){if(0===this.context.length)return p;a=this.context[0];var b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d, 
serverSide:"ssp"===D(a)}});t("page.len()",function(a){return a===p?0!==this.context.length?this.context[0]._iDisplayLength:p:this.iterator("table",function(b){Va(b,a)})});var Xb=function(a,b,c){if(c){var d=new v(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==D(a))V(a,b);else{K(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();va(a,[],function(c){qa(a);c=wa(a,c);for(var d=0,e=c.length;d<e;d++)R(a,c[d]);V(a,b);K(a,!1)})}};t("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json}); 
t("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});t("ajax.reload()",function(a,b){return this.iterator("table",function(c){Xb(c,!1===b,a)})});t("ajax.url()",function(a){var b=this.context;if(a===p){if(0===b.length)return p;b=b[0];return b.ajax?f.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){f.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});t("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Xb(c, 
!1===b,a)})});var eb=function(a,b,c,d,e){var h=[],g,k,l;var n=typeof b;b&&"string"!==n&&"function"!==n&&b.length!==p||(b=[b]);n=0;for(k=b.length;n<k;n++){var m=b[n]&&b[n].split&&!b[n].match(/[\[\(:]/)?b[n].split(","):[b[n]];var q=0;for(l=m.length;q<l;q++)(g=c("string"===typeof m[q]?f.trim(m[q]):m[q]))&&g.length&&(h=h.concat(g))}a=C.selector[a];if(a.length)for(n=0,k=a.length;n<k;n++)h=a[n](d,e,h);return ta(h)},fb=function(a){a||(a={});a.filter&&a.search===p&&(a.search=a.filter);return f.extend({search:"none", 
order:"current",page:"all"},a)},gb=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Fa=function(a,b){var c=[],d=a.aiDisplay;var e=a.aiDisplayMaster;var h=b.search;var g=b.order;b=b.page;if("ssp"==D(a))return"removed"===h?[]:Z(0,e.length);if("current"==b)for(g=a._iDisplayStart,a=a.fnDisplayEnd();g<a;g++)c.push(d[g]);else if("current"==g||"applied"==g)if("none"==h)c=e.slice();else if("applied"==h)c= 
d.slice();else{if("removed"==h){var k={};g=0;for(a=d.length;g<a;g++)k[d[g]]=null;c=f.map(e,function(a){return k.hasOwnProperty(a)?null:a})}}else if("index"==g||"original"==g)for(g=0,a=a.aoData.length;g<a;g++)"none"==h?c.push(g):(e=f.inArray(g,d),(-1===e&&"removed"==h||0<=e&&"applied"==h)&&c.push(g));return c},gc=function(a,b,c){var d;return eb("row",b,function(b){var e=Sb(b),g=a.aoData;if(null!==e&&!c)return[e];d||(d=Fa(a,c));if(null!==e&&-1!==f.inArray(e,d))return[e];if(null===b||b===p||""===b)return d; 
if("function"===typeof b)return f.map(d,function(a){var c=g[a];return b(a,c._aData,c.nTr)?a:null});if(b.nodeName){e=b._DT_RowIndex;var k=b._DT_CellIndex;if(e!==p)return g[e]&&g[e].nTr===b?[e]:[];if(k)return g[k.row]&&g[k.row].nTr===b.parentNode?[k.row]:[];e=f(b).closest("*[data-dt-row]");return e.length?[e.data("dt-row")]:[]}if("string"===typeof b&&"#"===b.charAt(0)&&(e=a.aIds[b.replace(/^#/,"")],e!==p))return[e.idx];e=Vb(la(a.aoData,d,"nTr"));return f(e).filter(b).map(function(){return this._DT_RowIndex}).toArray()}, 
a,c)};t("rows()",function(a,b){a===p?a="":f.isPlainObject(a)&&(b=a,a="");b=fb(b);var c=this.iterator("table",function(c){return gc(c,a,b)},1);c.selector.rows=a;c.selector.opts=b;return c});t("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||p},1)});t("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return la(a.aoData,b,"_aData")},1)});x("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){b=b.aoData[c]; 
return"search"===a?b._aFilterData:b._aSortData},1)});x("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){ea(b,c,a)})});x("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});x("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=0,e=c.length;d<e;d++)for(var h=0,g=this[d].length;h<g;h++){var f=c[d].rowIdFn(c[d].aoData[this[d][h]]._aData);b.push((!0===a?"#":"")+f)}return new v(c,b)});x("rows().remove()", 
"row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,h=e[c],g,f;e.splice(c,1);var l=0;for(g=e.length;l<g;l++){var n=e[l];var m=n.anCells;null!==n.nTr&&(n.nTr._DT_RowIndex=l);if(null!==m)for(n=0,f=m.length;n<f;n++)m[n]._DT_CellIndex.row=l}ra(b.aiDisplayMaster,c);ra(b.aiDisplay,c);ra(a[d],c,!1);0<b._iRecordsDisplay&&b._iRecordsDisplay--;Wa(b);c=b.rowIdFn(h._aData);c!==p&&delete b.aIds[c]});this.iterator("table",function(a){for(var b=0,d=a.aoData.length;b<d;b++)a.aoData[b].idx= 
b});return this});t("rows.add()",function(a){var b=this.iterator("table",function(b){var c,d=[];var g=0;for(c=a.length;g<c;g++){var f=a[g];f.nodeName&&"TR"===f.nodeName.toUpperCase()?d.push(pa(b,f)[0]):d.push(R(b,f))}return d},1),c=this.rows(-1);c.pop();f.merge(c,b);return c});t("row()",function(a,b){return gb(this.rows(a,b))});t("row().data()",function(a){var b=this.context;if(a===p)return b.length&&this.length?b[0].aoData[this[0]]._aData:p;var c=b[0].aoData[this[0]];c._aData=a;f.isArray(a)&&c.nTr.id&& 
Q(b[0].rowId)(a,c.nTr.id);ea(b[0],this[0],"data");return this});t("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});t("row.add()",function(a){a instanceof f&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?pa(b,a)[0]:R(b,a)});return this.row(b[0])});var hc=function(a,b,c,d){var e=[],h=function(b,c){if(f.isArray(b)||b instanceof f)for(var d=0,g=b.length;d<g;d++)h(b[d],c);else b.nodeName&& 
"tr"===b.nodeName.toLowerCase()?e.push(b):(d=f("<tr><td/></tr>").addClass(c),f("td",d).addClass(c).html(b)[0].colSpan=W(a),e.push(d[0]))};h(c,d);b._details&&b._details.detach();b._details=f(e);b._detailsShow&&b._details.insertAfter(b.nTr)},hb=function(a,b){var c=a.context;c.length&&(a=c[0].aoData[b!==p?b:a[0]])&&a._details&&(a._details.remove(),a._detailsShow=p,a._details=p)},Yb=function(a,b){var c=a.context;c.length&&a.length&&(a=c[0].aoData[a[0]],a._details&&((a._detailsShow=b)?a._details.insertAfter(a.nTr): 
a._details.detach(),ic(c[0])))},ic=function(a){var b=new v(a),c=a.aoData;b.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<J(c,"_details").length&&(b.on("draw.dt.DT_details",function(d,e){a===e&&b.rows({page:"current"}).eq(0).each(function(a){a=c[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),b.on("column-visibility.dt.DT_details",function(b,e,f,g){if(a===e)for(e=W(e),f=0,g=c.length;f<g;f++)b=c[f],b._details&&b._details.children("td[colspan]").attr("colspan", 
e)}),b.on("destroy.dt.DT_details",function(d,e){if(a===e)for(d=0,e=c.length;d<e;d++)c[d]._details&&hb(b,d)}))};t("row().child()",function(a,b){var c=this.context;if(a===p)return c.length&&this.length?c[0].aoData[this[0]]._details:p;!0===a?this.child.show():!1===a?hb(this):c.length&&this.length&&hc(c[0],c[0].aoData[this[0]],a,b);return this});t(["row().child.show()","row().child().show()"],function(a){Yb(this,!0);return this});t(["row().child.hide()","row().child().hide()"],function(){Yb(this,!1); 
return this});t(["row().child.remove()","row().child().remove()"],function(){hb(this);return this});t("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var jc=/^([^:]+):(name|visIdx|visible)$/,Zb=function(a,b,c,d,e){c=[];d=0;for(var f=e.length;d<f;d++)c.push(I(a,e[d],b));return c},kc=function(a,b,c){var d=a.aoColumns,e=J(d,"sName"),h=J(d,"nTh");return eb("column",b,function(b){var g=Sb(b);if(""===b)return Z(d.length);if(null!== 
g)return[0<=g?g:d.length+g];if("function"===typeof b){var l=Fa(a,c);return f.map(d,function(c,d){return b(d,Zb(a,d,0,0,l),h[d])?d:null})}var n="string"===typeof b?b.match(jc):"";if(n)switch(n[2]){case "visIdx":case "visible":g=parseInt(n[1],10);if(0>g){var m=f.map(d,function(a,b){return a.bVisible?b:null});return[m[m.length+g]]}return[ba(a,g)];case "name":return f.map(e,function(a,b){return a===n[1]?b:null});default:return[]}if(b.nodeName&&b._DT_CellIndex)return[b._DT_CellIndex.column];g=f(h).filter(b).map(function(){return f.inArray(this, 
h)}).toArray();if(g.length||!b.nodeName)return g;g=f(b).closest("*[data-dt-column]");return g.length?[g.data("dt-column")]:[]},a,c)};t("columns()",function(a,b){a===p?a="":f.isPlainObject(a)&&(b=a,a="");b=fb(b);var c=this.iterator("table",function(c){return kc(c,a,b)},1);c.selector.cols=a;c.selector.opts=b;return c});x("columns().header()","column().header()",function(a,b){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});x("columns().footer()","column().footer()",function(a, 
b){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});x("columns().data()","column().data()",function(){return this.iterator("column-rows",Zb,1)});x("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});x("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return la(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});x("columns().nodes()", 
"column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return la(a.aoData,e,"anCells",b)},1)});x("columns().visible()","column().visible()",function(a,b){var c=this,d=this.iterator("column",function(b,c){if(a===p)return b.aoColumns[c].bVisible;var d=b.aoColumns,e=d[c],h=b.aoData,n;if(a!==p&&e.bVisible!==a){if(a){var m=f.inArray(!0,J(d,"bVisible"),c+1);d=0;for(n=h.length;d<n;d++){var q=h[d].nTr;b=h[d].anCells;q&&q.insertBefore(b[c],b[m]||null)}}else f(J(b.aoData,"anCells", 
c)).detach();e.bVisible=a}});a!==p&&this.iterator("table",function(d){ha(d,d.aoHeader);ha(d,d.aoFooter);d.aiDisplay.length||f(d.nTBody).find("td[colspan]").attr("colspan",W(d));Ba(d);c.iterator("column",function(c,d){A(c,null,"column-visibility",[c,d,a,b])});(b===p||b)&&c.columns.adjust()});return d});x("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?ca(b,c):c},1)});t("columns.adjust()",function(){return this.iterator("table",function(a){aa(a)}, 
1)});t("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return ba(c,b);if("fromData"===a||"toVisible"===a)return ca(c,b)}});t("column()",function(a,b){return gb(this.columns(a,b))});var lc=function(a,b,c){var d=a.aoData,e=Fa(a,c),h=Vb(la(d,e,"anCells")),g=f([].concat.apply([],h)),k,l=a.aoColumns.length,n,m,q,u,t,v;return eb("cell",b,function(b){var c="function"===typeof b;if(null===b||b===p||c){n=[];m=0;for(q=e.length;m<q;m++)for(k= 
e[m],u=0;u<l;u++)t={row:k,column:u},c?(v=d[k],b(t,I(a,k,u),v.anCells?v.anCells[u]:null)&&n.push(t)):n.push(t);return n}if(f.isPlainObject(b))return b.column!==p&&b.row!==p&&-1!==f.inArray(b.row,e)?[b]:[];c=g.filter(b).map(function(a,b){return{row:b._DT_CellIndex.row,column:b._DT_CellIndex.column}}).toArray();if(c.length||!b.nodeName)return c;v=f(b).closest("*[data-dt-row]");return v.length?[{row:v.data("dt-row"),column:v.data("dt-column")}]:[]},a,c)};t("cells()",function(a,b,c){f.isPlainObject(a)&& 
(a.row===p?(c=a,a=null):(c=b,b=null));f.isPlainObject(b)&&(c=b,b=null);if(null===b||b===p)return this.iterator("table",function(b){return lc(b,a,fb(c))});var d=c?{page:c.page,order:c.order,search:c.search}:{},e=this.columns(b,d),h=this.rows(a,d),g,k,l,n;d=this.iterator("table",function(a,b){a=[];g=0;for(k=h[b].length;g<k;g++)for(l=0,n=e[b].length;l<n;l++)a.push({row:h[b][g],column:e[b][l]});return a},1);d=c&&c.selected?this.cells(d,c):d;f.extend(d.selector,{cols:b,rows:a,opts:c});return d});x("cells().nodes()", 
"cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b])&&a.anCells?a.anCells[c]:p},1)});t("cells().data()",function(){return this.iterator("cell",function(a,b,c){return I(a,b,c)},1)});x("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});x("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return I(b,c,d,a)}, 
1)});x("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:ca(a,c)}},1)});x("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){ea(b,c,a,d)})});t("cell()",function(a,b,c){return gb(this.cells(a,b,c))});t("cell().data()",function(a){var b=this.context,c=this[0];if(a===p)return b.length&&c.length?I(b[0],c[0].row,c[0].column):p;ob(b[0],c[0].row,c[0].column,a);ea(b[0],c[0].row, 
"data",c[0].column);return this});t("order()",function(a,b){var c=this.context;if(a===p)return 0!==c.length?c[0].aaSorting:p;"number"===typeof a?a=[[a,b]]:a.length&&!f.isArray(a[0])&&(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});t("order.listener()",function(a,b,c){return this.iterator("table",function(d){Qa(d,a,b,c)})});t("order.fixed()",function(a){if(!a){var b=this.context;b=b.length?b[0].aaSortingFixed:p;return f.isArray(b)?{pre:b}: 
b}return this.iterator("table",function(b){b.aaSortingFixed=f.extend(!0,{},a)})});t(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];f.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});t("search()",function(a,b,c,d){var e=this.context;return a===p?0!==e.length?e[0].oPreviousSearch.sSearch:p:this.iterator("table",function(e){e.oFeatures.bFilter&&ia(e,f.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null=== 
c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});x("columns().search()","column().search()",function(a,b,c,d){return this.iterator("column",function(e,h){var g=e.aoPreSearchCols;if(a===p)return g[h].sSearch;e.oFeatures.bFilter&&(f.extend(g[h],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),ia(e,e.oPreviousSearch,1))})});t("state()",function(){return this.context.length?this.context[0].oSavedState:null});t("state.clear()",function(){return this.iterator("table", 
function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});t("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});t("state.save()",function(){return this.iterator("table",function(a){Ba(a)})});q.versionCheck=q.fnVersionCheck=function(a){var b=q.version.split(".");a=a.split(".");for(var c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};q.isDataTable=q.fnIsDataTable=function(a){var b=f(a).get(0),c=!1;if(a instanceof 
q.Api)return!0;f.each(q.settings,function(a,e){a=e.nScrollHead?f("table",e.nScrollHead)[0]:null;var d=e.nScrollFoot?f("table",e.nScrollFoot)[0]:null;if(e.nTable===b||a===b||d===b)c=!0});return c};q.tables=q.fnTables=function(a){var b=!1;f.isPlainObject(a)&&(b=a.api,a=a.visible);var c=f.map(q.settings,function(b){if(!a||a&&f(b.nTable).is(":visible"))return b.nTable});return b?new v(c):c};q.camelToHungarian=L;t("$()",function(a,b){b=this.rows(b).nodes();b=f(b);return f([].concat(b.filter(a).toArray(), 
b.find(a).toArray()))});f.each(["on","one","off"],function(a,b){t(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0]=f.map(a[0].split(/\s/),function(a){return a.match(/\.dt/)?a:a+".dt"}).join(" ");var d=f(this.tables().nodes());d[b].apply(d,a);return this})});t("clear()",function(){return this.iterator("table",function(a){qa(a)})});t("settings()",function(){return new v(this.context,this.context)});t("init()",function(){var a=this.context;return a.length?a[0].oInit:null});t("data()", 
function(){return this.iterator("table",function(a){return J(a.aoData,"_aData")}).flatten()});t("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,h=b.nTBody,g=b.nTHead,k=b.nTFoot,l=f(e);h=f(h);var n=f(b.nTableWrapper),m=f.map(b.aoData,function(a){return a.nTr}),p;b.bDestroying=!0;A(b,"aoDestroyCallback","destroy",[b]);a||(new v(b)).columns().visible(!0);n.off(".DT").find(":not(tbody *)").off(".DT");f(z).off(".DT-"+b.sInstance); 
e!=g.parentNode&&(l.children("thead").detach(),l.append(g));k&&e!=k.parentNode&&(l.children("tfoot").detach(),l.append(k));b.aaSorting=[];b.aaSortingFixed=[];Aa(b);f(m).removeClass(b.asStripeClasses.join(" "));f("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);h.children().detach();h.append(m);g=a?"remove":"detach";l[g]();n[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),l.css("width",b.sDestroyWidth).removeClass(d.sTable),(p=b.asDestroyStripes.length)&& 
h.children().each(function(a){f(this).addClass(b.asDestroyStripes[a%p])}));c=f.inArray(b,q.settings);-1!==c&&q.settings.splice(c,1)})});f.each(["column","row","cell"],function(a,b){t(b+"s().every()",function(a){var c=this.selector.opts,e=this;return this.iterator(b,function(d,f,k,l,n){a.call(e[b](f,"cell"===b?k:c,"cell"===b?c:p),f,k,l,n)})})});t("i18n()",function(a,b,c){var d=this.context[0];a=U(a)(d.oLanguage);a===p&&(a=b);c!==p&&f.isPlainObject(a)&&(a=a[c]!==p?a[c]:a._);return a.replace("%d",c)}); 
q.version="1.10.20";q.settings=[];q.models={};q.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};q.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};q.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null, 
sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};q.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1, 
bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}}, 
fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last", 
sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:f.extend({},q.models.oSearch),sAjaxDataProp:"data", 
sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};H(q.defaults);q.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};H(q.defaults.column);q.models.oSettings= 
{oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{}, 
aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0, 
aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:p,oAjaxData:p,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==D(this)?1*this._iRecordsTotal: 
this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==D(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};q.ext=C={buttons:{}, 
classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:q.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:q.version};f.extend(C,{afnFiltering:C.search,aTypes:C.type.detect,ofnSearch:C.type.search,oSort:C.type.order,afnSortData:C.order,aoFeatures:C.feature,oApi:C.internal,oStdClasses:C.classes,oPagination:C.pager}); 
f.extend(q.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled", 
sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"", 
sJUIHeader:"",sJUIFooter:""});var Pb=q.ext.pager;f.extend(Pb,{simple:function(a,b){return["previous","next"]},full:function(a,b){return["first","previous","next","last"]},numbers:function(a,b){return[ka(a,b)]},simple_numbers:function(a,b){return["previous",ka(a,b),"next"]},full_numbers:function(a,b){return["first","previous",ka(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ka(a,b),"last"]},_numbers:ka,numbers_length:7});f.extend(!0,q.ext.renderer,{pageButton:{_:function(a,b, 
c,d,e,h){var g=a.oClasses,k=a.oLanguage.oPaginate,l=a.oLanguage.oAria.paginate||{},n,m,q=0,t=function(b,d){var p,r=g.sPageButtonDisabled,u=function(b){Xa(a,b.data.action,!0)};var w=0;for(p=d.length;w<p;w++){var v=d[w];if(f.isArray(v)){var x=f("<"+(v.DT_el||"div")+"/>").appendTo(b);t(x,v)}else{n=null;m=v;x=a.iTabIndex;switch(v){case "ellipsis":b.append('<span class="ellipsis">&#x2026;</span>');break;case "first":n=k.sFirst;0===e&&(x=-1,m+=" "+r);break;case "previous":n=k.sPrevious;0===e&&(x=-1,m+= 
" "+r);break;case "next":n=k.sNext;e===h-1&&(x=-1,m+=" "+r);break;case "last":n=k.sLast;e===h-1&&(x=-1,m+=" "+r);break;default:n=v+1,m=e===v?g.sPageButtonActive:""}null!==n&&(x=f("<a>",{"class":g.sPageButton+" "+m,"aria-controls":a.sTableId,"aria-label":l[v],"data-dt-idx":q,tabindex:x,id:0===c&&"string"===typeof v?a.sTableId+"_"+v:null}).html(n).appendTo(b),$a(x,{action:v},u),q++)}}};try{var v=f(b).find(y.activeElement).data("dt-idx")}catch(mc){}t(f(b).empty(),d);v!==p&&f(b).find("[data-dt-idx="+ 
v+"]").focus()}}});f.extend(q.ext.type.detect,[function(a,b){b=b.oLanguage.sDecimal;return db(a,b)?"num"+b:null},function(a,b){if(a&&!(a instanceof Date)&&!cc.test(a))return null;b=Date.parse(a);return null!==b&&!isNaN(b)||P(a)?"date":null},function(a,b){b=b.oLanguage.sDecimal;return db(a,b,!0)?"num-fmt"+b:null},function(a,b){b=b.oLanguage.sDecimal;return Ub(a,b)?"html-num"+b:null},function(a,b){b=b.oLanguage.sDecimal;return Ub(a,b,!0)?"html-num-fmt"+b:null},function(a,b){return P(a)||"string"=== 
typeof a&&-1!==a.indexOf("<")?"html":null}]);f.extend(q.ext.type.search,{html:function(a){return P(a)?a:"string"===typeof a?a.replace(Rb," ").replace(Ea,""):""},string:function(a){return P(a)?a:"string"===typeof a?a.replace(Rb," "):a}});var Da=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Tb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};f.extend(C.type.order,{"date-pre":function(a){a=Date.parse(a);return isNaN(a)?-Infinity:a},"html-pre":function(a){return P(a)? 
"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return P(a)?"":"string"===typeof a?a.toLowerCase():a.toString?a.toString():""},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});Ha("");f.extend(!0,q.ext.renderer,{header:{_:function(a,b,c,d){f(a.nTable).on("order.dt.DT",function(e,f,g,k){a===f&&(e=c.idx,b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass("asc"==k[e]?d.sSortAsc:"desc"==k[e]?d.sSortDesc: 
c.sSortingClass))})},jqueryui:function(a,b,c,d){f("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(f("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);f(a.nTable).on("order.dt.DT",function(e,f,g,k){a===f&&(e=c.idx,b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"==k[e]?d.sSortAsc:"desc"==k[e]?d.sSortDesc:c.sSortingClass),b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass("asc"== 
k[e]?d.sSortJUIAsc:"desc"==k[e]?d.sSortJUIDesc:c.sSortingClassJUI))})}}});var ib=function(a){return"string"===typeof a?a.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):a};q.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return ib(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g, 
a)+f+(e||"")}}},text:function(){return{display:ib,filter:ib}}};f.extend(q.ext.internal,{_fnExternApiFunc:Qb,_fnBuildAjax:va,_fnAjaxUpdate:qb,_fnAjaxParameters:zb,_fnAjaxUpdateDraw:Ab,_fnAjaxDataSrc:wa,_fnAddColumn:Ia,_fnColumnOptions:ma,_fnAdjustColumnSizing:aa,_fnVisibleToColumnIndex:ba,_fnColumnIndexToVisible:ca,_fnVisbleColumns:W,_fnGetColumns:oa,_fnColumnTypes:Ka,_fnApplyColumnDefs:nb,_fnHungarianMap:H,_fnCamelToHungarian:L,_fnLanguageCompat:Ga,_fnBrowserDetect:lb,_fnAddData:R,_fnAddTr:pa,_fnNodeToDataIndex:function(a, 
b){return b._DT_RowIndex!==p?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return f.inArray(c,a.aoData[b].anCells)},_fnGetCellData:I,_fnSetCellData:ob,_fnSplitObjNotation:Na,_fnGetObjectDataFn:U,_fnSetObjectDataFn:Q,_fnGetDataMaster:Oa,_fnClearTable:qa,_fnDeleteIndex:ra,_fnInvalidate:ea,_fnGetRowElements:Ma,_fnCreateTr:La,_fnBuildHead:pb,_fnDrawHead:ha,_fnDraw:S,_fnReDraw:V,_fnAddOptionsHtml:sb,_fnDetectHeader:fa,_fnGetUniqueThs:ua,_fnFeatureHtmlFilter:ub,_fnFilterComplete:ia,_fnFilterCustom:Db, 
_fnFilterColumn:Cb,_fnFilter:Bb,_fnFilterCreateSearch:Ta,_fnEscapeRegex:Ua,_fnFilterData:Eb,_fnFeatureHtmlInfo:xb,_fnUpdateInfo:Hb,_fnInfoMacros:Ib,_fnInitialise:ja,_fnInitComplete:xa,_fnLengthChange:Va,_fnFeatureHtmlLength:tb,_fnFeatureHtmlPaginate:yb,_fnPageChange:Xa,_fnFeatureHtmlProcessing:vb,_fnProcessingDisplay:K,_fnFeatureHtmlTable:wb,_fnScrollDraw:na,_fnApplyToChildren:N,_fnCalculateColumnWidths:Ja,_fnThrottle:Sa,_fnConvertToWidth:Jb,_fnGetWidestNode:Kb,_fnGetMaxLenString:Lb,_fnStringToCss:B, 
_fnSortFlatten:Y,_fnSort:rb,_fnSortAria:Nb,_fnSortListener:Za,_fnSortAttachListener:Qa,_fnSortingClasses:Aa,_fnSortData:Mb,_fnSaveState:Ba,_fnLoadState:Ob,_fnSettingsFromNode:Ca,_fnLog:O,_fnMap:M,_fnBindAction:$a,_fnCallbackReg:E,_fnCallbackFire:A,_fnLengthOverflow:Wa,_fnRenderer:Ra,_fnDataSource:D,_fnRowAttributes:Pa,_fnExtend:ab,_fnCalculateEnd:function(){}});f.fn.dataTable=q;q.$=f;f.fn.dataTableSettings=q.settings;f.fn.dataTableExt=q.ext;f.fn.DataTable=function(a){return f(this).dataTable(a).api()}; 
f.each(q,function(a,b){f.fn.DataTable[a]=b});return f.fn.dataTable}); 
 
/*! 
 DataTables Bootstrap 4 integration 
 2011-2017 SpryMedia Ltd - datatables.net/license 
*/ 
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var e=a.length,d=0;d<e;d++){var k=a[d];if(b.call(c,k,d,a))return{i:d,v:k}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1; 
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this); 
$jscomp.polyfill=function(a,b,c,e){if(b){c=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var d=a[e];d in c||(c[d]={});c=c[d]}a=a[a.length-1];e=c[a];b=b(e);b!=e&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).v}},"es6","es3"); 
(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);c&&c.fn.dataTable||(c=require("datatables.net")(b,c).$);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a,b,c,e){var d=a.fn.dataTable;a.extend(!0,d.defaults,{dom:"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>", 
renderer:"bootstrap"});a.extend(d.ext.classes,{sWrapper:"dataTables_wrapper dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"custom-select custom-select-sm form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});d.ext.renderer.pageButton.bootstrap=function(b,l,v,w,m,r){var k=new d.Api(b),x=b.oClasses,n=b.oLanguage.oPaginate,y=b.oLanguage.oAria.paginate||{},g,h,t=0,u=function(c,d){var e,l=function(b){b.preventDefault(); 
a(b.currentTarget).hasClass("disabled")||k.page()==b.data.action||k.page(b.data.action).draw("page")};var q=0;for(e=d.length;q<e;q++){var f=d[q];if(a.isArray(f))u(c,f);else{h=g="";switch(f){case "ellipsis":g="&#x2026;";h="disabled";break;case "first":g=n.sFirst;h=f+(0<m?"":" disabled");break;case "previous":g=n.sPrevious;h=f+(0<m?"":" disabled");break;case "next":g=n.sNext;h=f+(m<r-1?"":" disabled");break;case "last":g=n.sLast;h=f+(m<r-1?"":" disabled");break;default:g=f+1,h=m===f?"active":""}if(g){var p= 
a("<li>",{"class":x.sPageButton+" "+h,id:0===v&&"string"===typeof f?b.sTableId+"_"+f:null}).append(a("<a>",{href:"#","aria-controls":b.sTableId,"aria-label":y[f],"data-dt-idx":t,tabindex:b.iTabIndex,"class":"page-link"}).html(g)).appendTo(c);b.oApi._fnBindAction(p,{action:f},l);t++}}}};try{var p=a(l).find(c.activeElement).data("dt-idx")}catch(z){}u(a(l).empty().html('<ul class="pagination"/>').children("ul"),w);p!==e&&a(l).find("[data-dt-idx="+p+"]").focus()};return d}); 
 
 
/* 
 * Examples and docs at: http://tablesorter.com 
 */ 
(function($){$.extend({tablesorter:new 
function(){var parsers=[],widgets=[];this.defaults={cssHeader:"header",cssAsc:"headerSortUp",cssDesc:"headerSortDown",cssChildRow:"expand-child",sortInitialOrder:"asc",sortMultiSortKey:"shiftKey",sortForce:null,sortAppend:null,sortLocaleCompare:true,textExtraction:"simple",parsers:{},widgets:[],widgetZebra:{css:["even","odd"]},headers:{},widthFixed:false,cancelSelection:true,sortList:[],headerList:[],dateFormat:"us",decimal:'/\.|\,/g',onRenderHeader:null,selectorHeaders:'thead th',debug:false};function benchmark(s,d){log(s+","+(new Date().getTime()-d.getTime())+"ms");}this.benchmark=benchmark;function log(s){if(typeof console!="undefined"&&typeof console.debug!="undefined"){console.log(s);}else{alert(s);}}function buildParserCache(table,$headers){if(table.config.debug){var parsersDebug="";}if(table.tBodies.length==0)return;var rows=table.tBodies[0].rows;if(rows[0]){var list=[],cells=rows[0].cells,l=cells.length;for(var i=0;i<l;i++){var p=false;if($.metadata&&($($headers[i]).metadata()&&$($headers[i]).metadata().sorter)){p=getParserById($($headers[i]).metadata().sorter);}else if((table.config.headers[i]&&table.config.headers[i].sorter)){p=getParserById(table.config.headers[i].sorter);}if(!p){p=detectParserForColumn(table,rows,-1,i);}if(table.config.debug){parsersDebug+="column:"+i+" parser:"+p.id+"
";}list.push(p);}}if(table.config.debug){log(parsersDebug);}return list;};function detectParserForColumn(table,rows,rowIndex,cellIndex){var l=parsers.length,node=false,nodeValue=false,keepLooking=true;while(nodeValue==''&&keepLooking){rowIndex++;if(rows[rowIndex]){node=getNodeFromRowAndCellIndex(rows,rowIndex,cellIndex);nodeValue=trimAndGetNodeText(table.config,node);if(table.config.debug){log('Checking if value was empty on row:'+rowIndex);}}else{keepLooking=false;}}for(var i=1;i<l;i++){if(parsers[i].is(nodeValue,table,node)){return parsers[i];}}return parsers[0];}function getNodeFromRowAndCellIndex(rows,rowIndex,cellIndex){return rows[rowIndex].cells[cellIndex];}function trimAndGetNodeText(config,node){return $.trim(getElementText(config,node));}function getParserById(name){var l=parsers.length;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==name.toLowerCase()){return parsers[i];}}return false;}function buildCache(table){if(table.config.debug){var cacheTime=new Date();}var totalRows=(table.tBodies[0]&&table.tBodies[0].rows.length)||0,totalCells=(table.tBodies[0].rows[0]&&table.tBodies[0].rows[0].cells.length)||0,parsers=table.config.parsers,cache={row:[],normalized:[]};for(var i=0;i<totalRows;++i){var c=$(table.tBodies[0].rows[i]),cols=[];if(c.hasClass(table.config.cssChildRow)){cache.row[cache.row.length-1]=cache.row[cache.row.length-1].add(c);continue;}cache.row.push(c);for(var j=0;j<totalCells;++j){cols.push(parsers[j].format(getElementText(table.config,c[0].cells[j]),table,c[0].cells[j]));}cols.push(cache.normalized.length);cache.normalized.push(cols);cols=null;};if(table.config.debug){benchmark("Building cache for "+totalRows+" rows:",cacheTime);}return cache;};function getElementText(config,node){var text="";if(!node)return"";if(!config.supportsTextContent)config.supportsTextContent=node.textContent||false;if(config.textExtraction=="simple"){if(config.supportsTextContent){text=node.textContent;}else{if(node.childNodes[0]&&node.childNodes[0].hasChildNodes()){text=node.childNodes[0].innerHTML;}else{text=node.innerHTML;}}}else{if(typeof(config.textExtraction)=="function"){text=config.textExtraction(node);}else{text=$(node).text();}}return text;}function appendToTable(table,cache){if(table.config.debug){var appendTime=new Date()}var c=cache,r=c.row,n=c.normalized,totalRows=n.length,checkCell=(n[0].length-1),tableBody=$(table.tBodies[0]),rows=[];for(var i=0;i<totalRows;i++){var pos=n[i][checkCell];rows.push(r[pos]);if(!table.config.appender){var l=r[pos].length;for(var j=0;j<l;j++){tableBody[0].appendChild(r[pos][j]);}}}if(table.config.appender){table.config.appender(table,rows);}rows=null;if(table.config.debug){benchmark("Rebuilt table:",appendTime);}applyWidget(table);setTimeout(function(){$(table).trigger("sortEnd");},0);};function buildHeaders(table){if(table.config.debug){var time=new Date();}var meta=($.metadata)?true:false;var header_index=computeTableHeaderCellIndexes(table);$tableHeaders=$(table.config.selectorHeaders,table).each(function(index){this.column=header_index[this.parentNode.rowIndex+"-"+this.cellIndex];this.order=formatSortingOrder(table.config.sortInitialOrder);this.count=this.order;if(checkHeaderMetadata(this)||checkHeaderOptions(table,index))this.sortDisabled=true;if(checkHeaderOptionsSortingLocked(table,index))this.order=this.lockedOrder=checkHeaderOptionsSortingLocked(table,index);if(!this.sortDisabled){var $th=$(this).addClass(table.config.cssHeader);if(table.config.onRenderHeader)table.config.onRenderHeader.apply($th);}table.config.headerList[index]=this;});if(table.config.debug){benchmark("Built headers:",time);log($tableHeaders);}return $tableHeaders;};function computeTableHeaderCellIndexes(t){var matrix=[];var lookup={};var thead=t.getElementsByTagName('THEAD')[0];var trs=thead.getElementsByTagName('TR');for(var i=0;i<trs.length;i++){var cells=trs[i].cells;for(var j=0;j<cells.length;j++){var c=cells[j];var rowIndex=c.parentNode.rowIndex;var cellId=rowIndex+"-"+c.cellIndex;var rowSpan=c.rowSpan||1;var colSpan=c.colSpan||1 
var firstAvailCol;if(typeof(matrix[rowIndex])=="undefined"){matrix[rowIndex]=[];}for(var k=0;k<matrix[rowIndex].length+1;k++){if(typeof(matrix[rowIndex][k])=="undefined"){firstAvailCol=k;break;}}lookup[cellId]=firstAvailCol;for(var k=rowIndex;k<rowIndex+rowSpan;k++){if(typeof(matrix[k])=="undefined"){matrix[k]=[];}var matrixrow=matrix[k];for(var l=firstAvailCol;l<firstAvailCol+colSpan;l++){matrixrow[l]="x";}}}}return lookup;}function checkCellColSpan(table,rows,row){var arr=[],r=table.tHead.rows,c=r[row].cells;for(var i=0;i<c.length;i++){var cell=c[i];if(cell.colSpan>1){arr=arr.concat(checkCellColSpan(table,headerArr,row++));}else{if(table.tHead.length==1||(cell.rowSpan>1||!r[row+1])){arr.push(cell);}}}return arr;};function checkHeaderMetadata(cell){if(($.metadata)&&($(cell).metadata().sorter===false)){return true;};return false;}function checkHeaderOptions(table,i){if((table.config.headers[i])&&(table.config.headers[i].sorter===false)){return true;};return false;}function checkHeaderOptionsSortingLocked(table,i){if((table.config.headers[i])&&(table.config.headers[i].lockedOrder))return table.config.headers[i].lockedOrder;return false;}function applyWidget(table){var c=table.config.widgets;var l=c.length;for(var i=0;i<l;i++){getWidgetById(c[i]).format(table);}}function getWidgetById(name){var l=widgets.length;for(var i=0;i<l;i++){if(widgets[i].id.toLowerCase()==name.toLowerCase()){return widgets[i];}}};function formatSortingOrder(v){if(typeof(v)!="Number"){return(v.toLowerCase()=="desc")?1:0;}else{return(v==1)?1:0;}}function isValueInArray(v,a){var l=a.length;for(var i=0;i<l;i++){if(a[i][0]==v){return true;}}return false;}function setHeadersCss(table,$headers,list,css){$headers.removeClass(css[0]).removeClass(css[1]);var h=[];$headers.each(function(offset){if(!this.sortDisabled){h[this.column]=$(this);}});var l=list.length;for(var i=0;i<l;i++){h[list[i][0]].addClass(css[list[i][1]]);}}function fixColumnWidth(table,$headers){var c=table.config;if(c.widthFixed){var colgroup=$('<colgroup>');$("tr:first td",table.tBodies[0]).each(function(){colgroup.append($('<col>').css('width',$(this).width()));});$(table).prepend(colgroup);};}function updateHeaderSortCount(table,sortList){var c=table.config,l=sortList.length;for(var i=0;i<l;i++){var s=sortList[i],o=c.headerList[s[0]];o.count=s[1];o.count++;}}function multisort(table,sortList,cache){if(table.config.debug){var sortTime=new Date();}var dynamicExp="var sortWrapper = function(a,b) {",l=sortList.length;for(var i=0;i<l;i++){var c=sortList[i][0];var order=sortList[i][1];var s=(table.config.parsers[c].type=="text")?((order==0)?makeSortFunction("text","asc",c):makeSortFunction("text","desc",c)):((order==0)?makeSortFunction("numeric","asc",c):makeSortFunction("numeric","desc",c));var e="e"+i;dynamicExp+="var "+e+" = "+s;dynamicExp+="if("+e+") { return "+e+"; } ";dynamicExp+="else { ";}var orgOrderCol=cache.normalized[0].length-1;dynamicExp+="return a["+orgOrderCol+"]-b["+orgOrderCol+"];";for(var i=0;i<l;i++){dynamicExp+="}; ";}dynamicExp+="return 0; ";dynamicExp+="}; ";if(table.config.debug){benchmark("Evaling expression:"+dynamicExp,new Date());}eval(dynamicExp);cache.normalized.sort(sortWrapper);if(table.config.debug){benchmark("Sorting on "+sortList.toString()+" and dir "+order+" time:",sortTime);}return cache;};function makeSortFunction(type,direction,index){var a="a["+index+"]",b="b["+index+"]";if(type=='text'&&direction=='asc'){return"("+a+" == "+b+" ? 0 : ("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : ("+a+" < "+b+") ? -1 : 1 )));";}else if(type=='text'&&direction=='desc'){return"("+a+" == "+b+" ? 0 : ("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : ("+b+" < "+a+") ? -1 : 1 )));";}else if(type=='numeric'&&direction=='asc'){return"("+a+" === null && "+b+" === null) ? 0 :("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : "+a+" - "+b+"));";}else if(type=='numeric'&&direction=='desc'){return"("+a+" === null && "+b+" === null) ? 0 :("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : "+b+" - "+a+"));";}};function makeSortText(i){return"((a["+i+"] < b["+i+"]) ? -1 : ((a["+i+"] > b["+i+"]) ? 1 : 0));";};function makeSortTextDesc(i){return"((b["+i+"] < a["+i+"]) ? -1 : ((b["+i+"] > a["+i+"]) ? 1 : 0));";};function makeSortNumeric(i){return"a["+i+"]-b["+i+"];";};function makeSortNumericDesc(i){return"b["+i+"]-a["+i+"];";};function sortText(a,b){if(table.config.sortLocaleCompare)return a.localeCompare(b);return((a<b)?-1:((a>b)?1:0));};function sortTextDesc(a,b){if(table.config.sortLocaleCompare)return b.localeCompare(a);return((b<a)?-1:((b>a)?1:0));};function sortNumeric(a,b){return a-b;};function sortNumericDesc(a,b){return b-a;};function getCachedSortType(parsers,i){return parsers[i].type;};this.construct=function(settings){return this.each(function(){if(!this.tHead||!this.tBodies)return;var $this,$document,$headers,cache,config,shiftDown=0,sortOrder;this.config={};config=$.extend(this.config,$.tablesorter.defaults,settings);$this=$(this);$.data(this,"tablesorter",config);$headers=buildHeaders(this);this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);var sortCSS=[config.cssDesc,config.cssAsc];fixColumnWidth(this);$headers.click(function(e){var totalRows=($this[0].tBodies[0]&&$this[0].tBodies[0].rows.length)||0;if(!this.sortDisabled&&totalRows>0){$this.trigger("sortStart");var $cell=$(this);var i=this.column;this.order=this.count++%2;if(this.lockedOrder)this.order=this.lockedOrder;if(!e[config.sortMultiSortKey]){config.sortList=[];if(config.sortForce!=null){var a=config.sortForce;for(var j=0;j<a.length;j++){if(a[j][0]!=i){config.sortList.push(a[j]);}}}config.sortList.push([i,this.order]);}else{if(isValueInArray(i,config.sortList)){for(var j=0;j<config.sortList.length;j++){var s=config.sortList[j],o=config.headerList[s[0]];if(s[0]==i){o.count=s[1];o.count++;s[1]=o.count%2;}}}else{config.sortList.push([i,this.order]);}};setTimeout(function(){setHeadersCss($this[0],$headers,config.sortList,sortCSS);appendToTable($this[0],multisort($this[0],config.sortList,cache));},1);return false;}}).mousedown(function(){if(config.cancelSelection){this.onselectstart=function(){return false};return false;}});$this.bind("update",function(){var me=this;setTimeout(function(){me.config.parsers=buildParserCache(me,$headers);cache=buildCache(me);},1);}).bind("updateCell",function(e,cell){var config=this.config;var pos=[(cell.parentNode.rowIndex-1),cell.cellIndex];cache.normalized[pos[0]][pos[1]]=config.parsers[pos[1]].format(getElementText(config,cell),cell);}).bind("sorton",function(e,list){$(this).trigger("sortStart");config.sortList=list;var sortList=config.sortList;updateHeaderSortCount(this,sortList);setHeadersCss(this,$headers,sortList,sortCSS);appendToTable(this,multisort(this,sortList,cache));}).bind("appendCache",function(){appendToTable(this,cache);}).bind("applyWidgetId",function(e,id){getWidgetById(id).format(this);}).bind("applyWidgets",function(){applyWidget(this);});if($.metadata&&($(this).metadata()&&$(this).metadata().sortlist)){config.sortList=$(this).metadata().sortlist;}if(config.sortList.length>0){$this.trigger("sorton",[config.sortList]);}applyWidget(this);});};this.addParser=function(parser){var l=parsers.length,a=true;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==parser.id.toLowerCase()){a=false;}}if(a){parsers.push(parser);};};this.addWidget=function(widget){widgets.push(widget);};this.formatFloat=function(s){var i=parseFloat(s);return(isNaN(i))?0:i;};this.formatInt=function(s){var i=parseInt(s);return(isNaN(i))?0:i;};this.isDigit=function(s,config){return/^[-+]?\d*$/.test($.trim(s.replace(/[,.']/g,'')));};this.clearTableBody=function(table){if($.browser.msie){function empty(){while(this.firstChild)this.removeChild(this.firstChild);}empty.apply(table.tBodies[0]);}else{table.tBodies[0].innerHTML="";}};}});$.fn.extend({tablesorter:$.tablesorter.construct});var ts=$.tablesorter;ts.addParser({id:"text",is:function(s){return true;},format:function(s){return $.trim(s.toLocaleLowerCase());},type:"text"});ts.addParser({id:"digit",is:function(s,table){var c=table.config;return $.tablesorter.isDigit(s,c);},format:function(s){return $.tablesorter.formatFloat(s);},type:"numeric"});ts.addParser({id:"currency",is:function(s){return/^[$?.]/.test(s);},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/[$]/g),""));},type:"numeric"});ts.addParser({id:"ipAddress",is:function(s){return/^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);},format:function(s){var a=s.split("."),r="",l=a.length;for(var i=0;i<l;i++){var item=a[i];if(item.length==2){r+="0"+item;}else{r+=item;}}return $.tablesorter.formatFloat(r);},type:"numeric"});ts.addParser({id:"url",is:function(s){return/^(https?|ftp|file):\/\/$/.test(s);},format:function(s){return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//),''));},type:"text"});ts.addParser({id:"isoDate",is:function(s){return/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);},format:function(s){return $.tablesorter.formatFloat((s!="")?new Date(s.replace(new RegExp(/-/g),"/")).getTime():"0");},type:"numeric"});ts.addParser({id:"percent",is:function(s){return/\%$/.test($.trim(s));},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/%/g),""));},type:"numeric"});ts.addParser({id:"usLongDate",is:function(s){return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));},format:function(s){return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"shortDate",is:function(s){return/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);},format:function(s,table){var c=table.config;s=s.replace(/\-/g,"/");if(c.dateFormat=="us"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$1/$2");}else if(c.dateFormat=="uk"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$2/$1");}else if(c.dateFormat=="dd/mm/yy"||c.dateFormat=="dd-mm-yy"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/,"$1/$2/$3");}return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"time",is:function(s){return/^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/.test(s);},format:function(s){return $.tablesorter.formatFloat(new Date("2000/01/01 "+s).getTime());},type:"numeric"});ts.addParser({id:"metadata",is:function(s){return false;},format:function(s,table,cell){var c=table.config,p=(!c.parserMetadataName)?'sortValue':c.parserMetadataName;return $(cell).metadata()[p];},type:"numeric"});ts.addWidget({id:"zebra",format:function(table){if(table.config.debug){var time=new Date();}var $tr,row=-1,odd;$("tr:visible",table.tBodies[0]).each(function(i){$tr=$(this);if(!$tr.hasClass(table.config.cssChildRow))row++;odd=(row%2==0);$tr.removeClass(table.config.widgetZebra.css[odd?0:1]).addClass(table.config.widgetZebra.css[odd?1:0])});if(table.config.debug){$.tablesorter.benchmark("Applying Zebra widget",time);}}});})(jQuery); 
 
/* Javascript plotting library for jQuery, version 0.8.1. 
 
Copyright (c) 2007-2013 IOLA and Ole Laursen. 
Licensed under the MIT license. 
 
*/// first an inline dependency, jquery.colorhelpers.js, we inline it here 
// for convenience 
/* Plugin for jQuery for working with colors. 
 * 
 * Version 1.1. 
 * 
 * Inspiration from jQuery color animation plugin by John Resig. 
 * 
 * Released under the MIT license by Ole Laursen, October 2009. 
 * 
 * Examples: 
 * 
 *   $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() 
 *   var c = $.color.extract($("#mydiv"), 'background-color'); 
 *   console.log(c.r, c.g, c.b, c.a); 
 *   $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" 
 * 
 * Note that .scale() and .add() return the same modified object 
 * instead of making a new one. 
 * 
 * V. 1.1: Fix error handling so e.g. parsing an empty string does 
 * produce a color rather than just crashing. 
 */(function(e){e.color={},e.color.make=function(t,n,r,i){var s={};return s.r=t||0,s.g=n||0,s.b=r||0,s.a=i!=null?i:1,s.add=function(e,t){for(var n=0;n<e.length;++n)s[e.charAt(n)]+=t;return s.normalize()},s.scale=function(e,t){for(var n=0;n<e.length;++n)s[e.charAt(n)]*=t;return s.normalize()},s.toString=function(){return s.a>=1?"rgb("+[s.r,s.g,s.b].join(",")+")":"rgba("+[s.r,s.g,s.b,s.a].join(",")+")"},s.normalize=function(){function e(e,t,n){return t<e?e:t>n?n:t}return s.r=e(0,parseInt(s.r),255),s.g=e(0,parseInt(s.g),255),s.b=e(0,parseInt(s.b),255),s.a=e(0,s.a,1),s},s.clone=function(){return e.color.make(s.r,s.b,s.g,s.a)},s.normalize()},e.color.extract=function(t,n){var r;do{r=t.css(n).toLowerCase();if(r!=""&&r!="transparent")break;t=t.parent()}while(!e.nodeName(t.get(0),"body"));return r=="rgba(0, 0, 0, 0)"&&(r="transparent"),e.color.parse(r)},e.color.parse=function(n){var r,i=e.color.make;if(r=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(n))return i(parseInt(r[1],10),parseInt(r[2],10),parseInt(r[3],10));if(r=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(n))return i(parseInt(r[1],10),parseInt(r[2],10),parseInt(r[3],10),parseFloat(r[4]));if(r=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(n))return i(parseFloat(r[1])*2.55,parseFloat(r[2])*2.55,parseFloat(r[3])*2.55);if(r=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(n))return i(parseFloat(r[1])*2.55,parseFloat(r[2])*2.55,parseFloat(r[3])*2.55,parseFloat(r[4]));if(r=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(n))return i(parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16));if(r=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(n))return i(parseInt(r[1]+r[1],16),parseInt(r[2]+r[2],16),parseInt(r[3]+r[3],16));var s=e.trim(n).toLowerCase();return s=="transparent"?i(255,255,255,0):(r=t[s]||[0,0,0],i(r[0],r[1],r[2]))};var t={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery),function(e){function n(t,n){var r=n.children("."+t)[0];if(r==null){r=document.createElement("canvas"),r.className=t,e(r).css({direction:"ltr",position:"absolute",left:0,top:0}).appendTo(n);if(!r.getContext){if(!window.G_vmlCanvasManager)throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.");r=window.G_vmlCanvasManager.initElement(r)}}this.element=r;var i=this.context=r.getContext("2d"),s=window.devicePixelRatio||1,o=i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1;this.pixelRatio=s/o,this.resize(n.width(),n.height()),this.textContainer=null,this.text={},this._textCache={}}function r(t,r,s,o){function E(e,t){t=[w].concat(t);for(var n=0;n<e.length;++n)e[n].apply(this,t)}function S(){var t={Canvas:n};for(var r=0;r<o.length;++r){var i=o[r];i.init(w,t),i.options&&e.extend(!0,a,i.options)}}function x(n){e.extend(!0,a,n),n&&n.colors&&(a.colors=n.colors),a.xaxis.color==null&&(a.xaxis.color=e.color.parse(a.grid.color).scale("a",.22).toString()),a.yaxis.color==null&&(a.yaxis.color=e.color.parse(a.grid.color).scale("a",.22).toString()),a.xaxis.tickColor==null&&(a.xaxis.tickColor=a.grid.tickColor||a.xaxis.color),a.yaxis.tickColor==null&&(a.yaxis.tickColor=a.grid.tickColor||a.yaxis.color),a.grid.borderColor==null&&(a.grid.borderColor=a.grid.color),a.grid.tickColor==null&&(a.grid.tickColor=e.color.parse(a.grid.color).scale("a",.22).toString());var r,i,s,o={style:t.css("font-style"),size:Math.round(.8*(+t.css("font-size").replace("px","")||13)),variant:t.css("font-variant"),weight:t.css("font-weight"),family:t.css("font-family")};o.lineHeight=o.size*1.15,s=a.xaxes.length||1;for(r=0;r<s;++r)i=a.xaxes[r],i&&!i.tickColor&&(i.tickColor=i.color),i=e.extend(!0,{},a.xaxis,i),a.xaxes[r]=i,i.font&&(i.font=e.extend({},o,i.font),i.font.color||(i.font.color=i.color));s=a.yaxes.length||1;for(r=0;r<s;++r)i=a.yaxes[r],i&&!i.tickColor&&(i.tickColor=i.color),i=e.extend(!0,{},a.yaxis,i),a.yaxes[r]=i,i.font&&(i.font=e.extend({},o,i.font),i.font.color||(i.font.color=i.color));a.xaxis.noTicks&&a.xaxis.ticks==null&&(a.xaxis.ticks=a.xaxis.noTicks),a.yaxis.noTicks&&a.yaxis.ticks==null&&(a.yaxis.ticks=a.yaxis.noTicks),a.x2axis&&(a.xaxes[1]=e.extend(!0,{},a.xaxis,a.x2axis),a.xaxes[1].position="top"),a.y2axis&&(a.yaxes[1]=e.extend(!0,{},a.yaxis,a.y2axis),a.yaxes[1].position="right"),a.grid.coloredAreas&&(a.grid.markings=a.grid.coloredAreas),a.grid.coloredAreasColor&&(a.grid.markingsColor=a.grid.coloredAreasColor),a.lines&&e.extend(!0,a.series.lines,a.lines),a.points&&e.extend(!0,a.series.points,a.points),a.bars&&e.extend(!0,a.series.bars,a.bars),a.shadowSize!=null&&(a.series.shadowSize=a.shadowSize),a.highlightColor!=null&&(a.series.highlightColor=a.highlightColor);for(r=0;r<a.xaxes.length;++r)O(d,r+1).options=a.xaxes[r];for(r=0;r<a.yaxes.length;++r)O(v,r+1).options=a.yaxes[r];for(var u in b)a.hooks[u]&&a.hooks[u].length&&(b[u]=b[u].concat(a.hooks[u]));E(b.processOptions,[a])}function T(e){u=N(e),M(),_()}function N(t){var n=[];for(var r=0;r<t.length;++r){var i=e.extend(!0,{},a.series);t[r].data!=null?(i.data=t[r].data,delete t[r].data,e.extend(!0,i,t[r]),t[r].data=i.data):i.data=t[r],n.push(i)}return n}function C(e,t){var n=e[t+"axis"];return typeof n=="object"&&(n=n.n),typeof n!="number"&&(n=1),n}function k(){return e.grep(d.concat(v),function(e){return e})}function L(e){var t={},n,r;for(n=0;n<d.length;++n)r=d[n],r&&r.used&&(t["x"+r.n]=r.c2p(e.left));for(n=0;n<v.length;++n)r=v[n],r&&r.used&&(t["y"+r.n]=r.c2p(e.top));return t.x1!==undefined&&(t.x=t.x1),t.y1!==undefined&&(t.y=t.y1),t}function A(e){var t={},n,r,i;for(n=0;n<d.length;++n){r=d[n];if(r&&r.used){i="x"+r.n,e[i]==null&&r.n==1&&(i="x");if(e[i]!=null){t.left=r.p2c(e[i]);break}}}for(n=0;n<v.length;++n){r=v[n];if(r&&r.used){i="y"+r.n,e[i]==null&&r.n==1&&(i="y");if(e[i]!=null){t.top=r.p2c(e[i]);break}}}return t}function O(t,n){return t[n-1]||(t[n-1]={n:n,direction:t==d?"x":"y",options:e.extend(!0,{},t==d?a.xaxis:a.yaxis)}),t[n-1]}function M(){var t=u.length,n=-1,r;for(r=0;r<u.length;++r){var i=u[r].color;i!=null&&(t--,typeof i=="number"&&i>n&&(n=i))}t<=n&&(t=n+1);var s,o=[],f=a.colors,l=f.length,c=0;for(r=0;r<t;r++)s=e.color.parse(f[r%l]||"#666"),r%l==0&&r&&(c>=0?c<.5?c=-c-.2:c=0:c=-c),o[r]=s.scale("rgb",1+c);var h=0,p;for(r=0;r<u.length;++r){p=u[r],p.color==null?(p.color=o[h].toString(),++h):typeof p.color=="number"&&(p.color=o[p.color].toString());if(p.lines.show==null){var m,g=!0;for(m in p)if(p[m]&&p[m].show){g=!1;break}g&&(p.lines.show=!0)}p.lines.zero==null&&(p.lines.zero=!!p.lines.fill),p.xaxis=O(d,C(p,"x")),p.yaxis=O(v,C(p,"y"))}}function _(){function x(e,t,n){t<e.datamin&&t!=-r&&(e.datamin=t),n>e.datamax&&n!=r&&(e.datamax=n)}var t=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY,r=Number.MAX_VALUE,i,s,o,a,f,l,c,h,p,d,v,m,g,y,w,S;e.each(k(),function(e,r){r.datamin=t,r.datamax=n,r.used=!1});for(i=0;i<u.length;++i)l=u[i],l.datapoints={points:[]},E(b.processRawData,[l,l.data,l.datapoints]);for(i=0;i<u.length;++i){l=u[i],w=l.data,S=l.datapoints.format;if(!S){S=[],S.push({x:!0,number:!0,required:!0}),S.push({y:!0,number:!0,required:!0});if(l.bars.show||l.lines.show&&l.lines.fill){var T=!!(l.bars.show&&l.bars.zero||l.lines.show&&l.lines.zero);S.push({y:!0,number:!0,required:!1,defaultValue:0,autoscale:T}),l.bars.horizontal&&(delete S[S.length-1].y,S[S.length-1].x=!0)}l.datapoints.format=S}if(l.datapoints.pointsize!=null)continue;l.datapoints.pointsize=S.length,h=l.datapoints.pointsize,c=l.datapoints.points;var N=l.lines.show&&l.lines.steps;l.xaxis.used=l.yaxis.used=!0;for(s=o=0;s<w.length;++s,o+=h){y=w[s];var C=y==null;if(!C)for(a=0;a<h;++a)m=y[a],g=S[a],g&&(g.number&&m!=null&&(m=+m,isNaN(m)?m=null:m==Infinity?m=r:m==-Infinity&&(m=-r)),m==null&&(g.required&&(C=!0),g.defaultValue!=null&&(m=g.defaultValue))),c[o+a]=m;if(C)for(a=0;a<h;++a)m=c[o+a],m!=null&&(g=S[a],g.autoscale&&(g.x&&x(l.xaxis,m,m),g.y&&x(l.yaxis,m,m))),c[o+a]=null;else if(N&&o>0&&c[o-h]!=null&&c[o-h]!=c[o]&&c[o-h+1]!=c[o+1]){for(a=0;a<h;++a)c[o+h+a]=c[o+a];c[o+1]=c[o-h+1],o+=h}}}for(i=0;i<u.length;++i)l=u[i],E(b.processDatapoints,[l,l.datapoints]);for(i=0;i<u.length;++i){l=u[i],c=l.datapoints.points,h=l.datapoints.pointsize,S=l.datapoints.format;var L=t,A=t,O=n,M=n;for(s=0;s<c.length;s+=h){if(c[s]==null)continue;for(a=0;a<h;++a){m=c[s+a],g=S[a];if(!g||g.autoscale===!1||m==r||m==-r)continue;g.x&&(m<L&&(L=m),m>O&&(O=m)),g.y&&(m<A&&(A=m),m>M&&(M=m))}}if(l.bars.show){var _;switch(l.bars.align){case"left":_=0;break;case"right":_=-l.bars.barWidth;break;case"center":_=-l.bars.barWidth/2;break;default:throw new Error("Invalid bar alignment: "+l.bars.align)}l.bars.horizontal?(A+=_,M+=_+l.bars.barWidth):(L+=_,O+=_+l.bars.barWidth)}x(l.xaxis,L,O),x(l.yaxis,A,M)}e.each(k(),function(e,r){r.datamin==t&&(r.datamin=null),r.datamax==n&&(r.datamax=null)})}function D(){t.css("padding",0).children(":not(.flot-base,.flot-overlay)").remove(),t.css("position")=="static"&&t.css("position","relative"),f=new n("flot-base",t),l=new n("flot-overlay",t),h=f.context,p=l.context,c=e(l.element).unbind();var r=t.data("plot");r&&(r.shutdown(),l.clear()),t.data("plot",w)}function P(){a.grid.hoverable&&(c.mousemove(at),c.bind("mouseleave",ft)),a.grid.clickable&&c.click(lt),E(b.bindEvents,[c])}function H(){ot&&clearTimeout(ot),c.unbind("mousemove",at),c.unbind("mouseleave",ft),c.unbind("click",lt),E(b.shutdown,[c])}function B(e){function t(e){return e}var n,r,i=e.options.transform||t,s=e.options.inverseTransform;e.direction=="x"?(n=e.scale=g/Math.abs(i(e.max)-i(e.min)),r=Math.min(i(e.max),i(e.min))):(n=e.scale=y/Math.abs(i(e.max)-i(e.min)),n=-n,r=Math.max(i(e.max),i(e.min))),i==t?e.p2c=function(e){return(e-r)*n}:e.p2c=function(e){return(i(e)-r)*n},s?e.c2p=function(e){return s(r+e/n)}:e.c2p=function(e){return r+e/n}}function j(e){var t=e.options,n=e.ticks||[],r=t.labelWidth||0,i=t.labelHeight||0,s=r||e.direction=="x"?Math.floor(f.width/(n.length||1)):null;legacyStyles=e.direction+"Axis "+e.direction+e.n+"Axis",layer="flot-"+e.direction+"-axis flot-"+e.direction+e.n+"-axis "+legacyStyles,font=t.font||"flot-tick-label tickLabel";for(var o=0;o<n.length;++o){var u=n[o];if(!u.label)continue;var a=f.getTextInfo(layer,u.label,font,null,s);r=Math.max(r,a.width),i=Math.max(i,a.height)}e.labelWidth=t.labelWidth||r,e.labelHeight=t.labelHeight||i}function F(t){var n=t.labelWidth,r=t.labelHeight,i=t.options.position,s=t.options.tickLength,o=a.grid.axisMargin,u=a.grid.labelMargin,l=t.direction=="x"?d:v,c,h,p=e.grep(l,function(e){return e&&e.options.position==i&&e.reserveSpace});e.inArray(t,p)==p.length-1&&(o=0);if(s==null){var g=e.grep(l,function(e){return e&&e.reserveSpace});h=e.inArray(t,g)==0,h?s="full":s=5}isNaN(+s)||(u+=+s),t.direction=="x"?(r+=u,i=="bottom"?(m.bottom+=r+o,t.box={top:f.height-m.bottom,height:r}):(t.box={top:m.top+o,height:r},m.top+=r+o)):(n+=u,i=="left"?(t.box={left:m.left+o,width:n},m.left+=n+o):(m.right+=n+o,t.box={left:f.width-m.right,width:n})),t.position=i,t.tickLength=s,t.box.padding=u,t.innermost=h}function I(e){e.direction=="x"?(e.box.left=m.left-e.labelWidth/2,e.box.width=f.width-m.left-m.right+e.labelWidth):(e.box.top=m.top-e.labelHeight/2,e.box.height=f.height-m.bottom-m.top+e.labelHeight)}function q(){var t=a.grid.minBorderMargin,n={x:0,y:0},r,i;if(t==null){t=0;for(r=0;r<u.length;++r)t=Math.max(t,2*(u[r].points.radius+u[r].points.lineWidth/2))}n.x=n.y=Math.ceil(t),e.each(k(),function(e,t){var r=t.direction;t.reserveSpace&&(n[r]=Math.ceil(Math.max(n[r],(r=="x"?t.labelWidth:t.labelHeight)/2)))}),m.left=Math.max(n.x,m.left),m.right=Math.max(n.x,m.right),m.top=Math.max(n.y,m.top),m.bottom=Math.max(n.y,m.bottom)}function R(){var t,n=k(),r=a.grid.show;for(var i in m){var s=a.grid.margin||0;m[i]=typeof s=="number"?s:s[i]||0}E(b.processOffset,[m]);for(var i in m)typeof a.grid.borderWidth=="object"?m[i]+=r?a.grid.borderWidth[i]:0:m[i]+=r?a.grid.borderWidth:0;e.each(n,function(e,t){t.show=t.options.show,t.show==null&&(t.show=t.used),t.reserveSpace=t.show||t.options.reserveSpace,U(t)});if(r){var o=e.grep(n,function(e){return e.reserveSpace});e.each(o,function(e,t){z(t),W(t),X(t,t.ticks),j(t)});for(t=o.length-1;t>=0;--t)F(o[t]);q(),e.each(o,function(e,t){I(t)})}g=f.width-m.left-m.right,y=f.height-m.bottom-m.top,e.each(n,function(e,t){B(t)}),r&&G(),it()}function U(e){var t=e.options,n=+(t.min!=null?t.min:e.datamin),r=+(t.max!=null?t.max:e.datamax),i=r-n;if(i==0){var s=r==0?1:.01;t.min==null&&(n-=s);if(t.max==null||t.min!=null)r+=s}else{var o=t.autoscaleMargin;o!=null&&(t.min==null&&(n-=i*o,n<0&&e.datamin!=null&&e.datamin>=0&&(n=0)),t.max==null&&(r+=i*o,r>0&&e.datamax!=null&&e.datamax<=0&&(r=0)))}e.min=n,e.max=r}function z(t){var n=t.options,r;typeof n.ticks=="number"&&n.ticks>0?r=n.ticks:r=.3*Math.sqrt(t.direction=="x"?f.width:f.height);var s=(t.max-t.min)/r,o=-Math.floor(Math.log(s)/Math.LN10),u=n.tickDecimals;u!=null&&o>u&&(o=u);var a=Math.pow(10,-o),l=s/a,c;l<1.5?c=1:l<3?(c=2,l>2.25&&(u==null||o+1<=u)&&(c=2.5,++o)):l<7.5?c=5:c=10,c*=a,n.minTickSize!=null&&c<n.minTickSize&&(c=n.minTickSize),t.delta=s,t.tickDecimals=Math.max(0,u!=null?u:o),t.tickSize=n.tickSize||c;if(n.mode=="time"&&!t.tickGenerator)throw new Error("Time mode requires the flot.time plugin.");t.tickGenerator||(t.tickGenerator=function(e){var t=[],n=i(e.min,e.tickSize),r=0,s=Number.NaN,o;do o=s,s=n+r*e.tickSize,t.push(s),++r;while(s<e.max&&s!=o);return t},t.tickFormatter=function(e,t){var n=t.tickDecimals?Math.pow(10,t.tickDecimals):1,r=""+Math.round(e*n)/n;if(t.tickDecimals!=null){var i=r.indexOf("."),s=i==-1?0:r.length-i-1;if(s<t.tickDecimals)return(s?r:r+".")+(""+n).substr(1,t.tickDecimals-s)}return r}),e.isFunction(n.tickFormatter)&&(t.tickFormatter=function(e,t){return""+n.tickFormatter(e,t)});if(n.alignTicksWithAxis!=null){var h=(t.direction=="x"?d:v)[n.alignTicksWithAxis-1];if(h&&h.used&&h!=t){var p=t.tickGenerator(t);p.length>0&&(n.min==null&&(t.min=Math.min(t.min,p[0])),n.max==null&&p.length>1&&(t.max=Math.max(t.max,p[p.length-1]))),t.tickGenerator=function(e){var t=[],n,r;for(r=0;r<h.ticks.length;++r)n=(h.ticks[r].v-h.min)/(h.max-h.min),n=e.min+n*(e.max-e.min),t.push(n);return t};if(!t.mode&&n.tickDecimals==null){var m=Math.max(0,-Math.floor(Math.log(t.delta)/Math.LN10)+1),g=t.tickGenerator(t);g.length>1&&/\..*0$/.test((g[1]-g[0]).toFixed(m))||(t.tickDecimals=m)}}}}function W(t){var n=t.options.ticks,r=[];n==null||typeof n=="number"&&n>0?r=t.tickGenerator(t):n&&(e.isFunction(n)?r=n(t):r=n);var i,s;t.ticks=[];for(i=0;i<r.length;++i){var o=null,u=r[i];typeof u=="object"?(s=+u[0],u.length>1&&(o=u[1])):s=+u,o==null&&(o=t.tickFormatter(s,t)),isNaN(s)||t.ticks.push({v:s,label:o})}}function X(e,t){e.options.autoscaleMargin&&t.length>0&&(e.options.min==null&&(e.min=Math.min(e.min,t[0].v)),e.options.max==null&&t.length>1&&(e.max=Math.max(e.max,t[t.length-1].v)))}function V(){f.clear(),E(b.drawBackground,[h]);var e=a.grid;e.show&&e.backgroundColor&&K(),e.show&&!e.aboveData&&Q();for(var t=0;t<u.length;++t)E(b.drawSeries,[h,u[t]]),Y(u[t]);E(b.draw,[h]),e.show&&e.aboveData&&Q(),f.render(),ht()}function J(e,t){var n,r,i,s,o=k();for(var u=0;u<o.length;++u){n=o[u];if(n.direction==t){s=t+n.n+"axis",!e[s]&&n.n==1&&(s=t+"axis");if(e[s]){r=e[s].from,i=e[s].to;break}}}e[s]||(n=t=="x"?d[0]:v[0],r=e[t+"1"],i=e[t+"2"]);if(r!=null&&i!=null&&r>i){var a=r;r=i,i=a}return{from:r,to:i,axis:n}}function K(){h.save(),h.translate(m.left,m.top),h.fillStyle=bt(a.grid.backgroundColor,y,0,"rgba(255, 255, 255, 0)"),h.fillRect(0,0,g,y),h.restore()}function Q(){var t,n,r,i;h.save(),h.translate(m.left,m.top);var s=a.grid.markings;if(s){e.isFunction(s)&&(n=w.getAxes(),n.xmin=n.xaxis.min,n.xmax=n.xaxis.max,n.ymin=n.yaxis.min,n.ymax=n.yaxis.max,s=s(n));for(t=0;t<s.length;++t){var o=s[t],u=J(o,"x"),f=J(o,"y");u.from==null&&(u.from=u.axis.min),u.to==null&&(u.to=u.axis.max),f.from==null&&(f.from=f.axis.min),f.to==null&&(f.to=f.axis.max);if(u.to<u.axis.min||u.from>u.axis.max||f.to<f.axis.min||f.from>f.axis.max)continue;u.from=Math.max(u.from,u.axis.min),u.to=Math.min(u.to,u.axis.max),f.from=Math.max(f.from,f.axis.min),f.to=Math.min(f.to,f.axis.max);if(u.from==u.to&&f.from==f.to)continue;u.from=u.axis.p2c(u.from),u.to=u.axis.p2c(u.to),f.from=f.axis.p2c(f.from),f.to=f.axis.p2c(f.to),u.from==u.to||f.from==f.to?(h.beginPath(),h.strokeStyle=o.color||a.grid.markingsColor,h.lineWidth=o.lineWidth||a.grid.markingsLineWidth,h.moveTo(u.from,f.from),h.lineTo(u.to,f.to),h.stroke()):(h.fillStyle=o.color||a.grid.markingsColor,h.fillRect(u.from,f.to,u.to-u.from,f.from-f.to))}}n=k(),r=a.grid.borderWidth;for(var l=0;l<n.length;++l){var c=n[l],p=c.box,d=c.tickLength,v,b,E,S;if(!c.show||c.ticks.length==0)continue;h.lineWidth=1,c.direction=="x"?(v=0,d=="full"?b=c.position=="top"?0:y:b=p.top-m.top+(c.position=="top"?p.height:0)):(b=0,d=="full"?v=c.position=="left"?0:g:v=p.left-m.left+(c.position=="left"?p.width:0)),c.innermost||(h.strokeStyle=c.options.color,h.beginPath(),E=S=0,c.direction=="x"?E=g+1:S=y+1,h.lineWidth==1&&(c.direction=="x"?b=Math.floor(b)+.5:v=Math.floor(v)+.5),h.moveTo(v,b),h.lineTo(v+E,b+S),h.stroke()),h.strokeStyle=c.options.tickColor,h.beginPath();for(t=0;t<c.ticks.length;++t){var x=c.ticks[t].v;E=S=0;if(isNaN(x)||x<c.min||x>c.max||d=="full"&&(typeof r=="object"&&r[c.position]>0||r>0)&&(x==c.min||x==c.max))continue;c.direction=="x"?(v=c.p2c(x),S=d=="full"?-y:d,c.position=="top"&&(S=-S)):(b=c.p2c(x),E=d=="full"?-g:d,c.position=="left"&&(E=-E)),h.lineWidth==1&&(c.direction=="x"?v=Math.floor(v)+.5:b=Math.floor(b)+.5),h.moveTo(v,b),h.lineTo(v+E,b+S)}h.stroke()}r&&(i=a.grid.borderColor,typeof r=="object"||typeof i=="object"?(typeof r!="object"&&(r={top:r,right:r,bottom:r,left:r}),typeof i!="object"&&(i={top:i,right:i,bottom:i,left:i}),r.top>0&&(h.strokeStyle=i.top,h.lineWidth=r.top,h.beginPath(),h.moveTo(0-r.left,0-r.top/2),h.lineTo(g,0-r.top/2),h.stroke()),r.right>0&&(h.strokeStyle=i.right,h.lineWidth=r.right,h.beginPath(),h.moveTo(g+r.right/2,0-r.top),h.lineTo(g+r.right/2,y),h.stroke()),r.bottom>0&&(h.strokeStyle=i.bottom,h.lineWidth=r.bottom,h.beginPath(),h.moveTo(g+r.right,y+r.bottom/2),h.lineTo(0,y+r.bottom/2),h.stroke()),r.left>0&&(h.strokeStyle=i.left,h.lineWidth=r.left,h.beginPath(),h.moveTo(0-r.left/2,y+r.bottom),h.lineTo(0-r.left/2,0),h.stroke())):(h.lineWidth=r,h.strokeStyle=a.grid.borderColor,h.strokeRect(-r/2,-r/2,g+r,y+r))),h.restore()}function G(){e.each(k(),function(e,t){if(!t.show||t.ticks.length==0)return;var n=t.box,r=t.direction+"Axis "+t.direction+t.n+"Axis",i="flot-"+t.direction+"-axis flot-"+t.direction+t.n+"-axis "+r,s=t.options.font||"flot-tick-label tickLabel",o,u,a,l,c;f.removeText(i);for(var h=0;h<t.ticks.length;++h){o=t.ticks[h];if(!o.label||o.v<t.min||o.v>t.max)continue;t.direction=="x"?(l="center",u=m.left+t.p2c(o.v),t.position=="bottom"?a=n.top+n.padding:(a=n.top+n.height-n.padding,c="bottom")):(c="middle",a=m.top+t.p2c(o.v),t.position=="left"?(u=n.left+n.width-n.padding,l="right"):u=n.left+n.padding),f.addText(i,u,a,o.label,s,null,null,l,c)}})}function Y(e){e.lines.show&&Z(e),e.bars.show&&nt(e),e.points.show&&et(e)}function Z(e){function t(e,t,n,r,i){var s=e.points,o=e.pointsize,u=null,a=null;h.beginPath();for(var f=o;f<s.length;f+=o){var l=s[f-o],c=s[f-o+1],p=s[f],d=s[f+1];if(l==null||p==null)continue;if(c<=d&&c<i.min){if(d<i.min)continue;l=(i.min-c)/(d-c)*(p-l)+l,c=i.min}else if(d<=c&&d<i.min){if(c<i.min)continue;p=(i.min-c)/(d-c)*(p-l)+l,d=i.min}if(c>=d&&c>i.max){if(d>i.max)continue;l=(i.max-c)/(d-c)*(p-l)+l,c=i.max}else if(d>=c&&d>i.max){if(c>i.max)continue;p=(i.max-c)/(d-c)*(p-l)+l,d=i.max}if(l<=p&&l<r.min){if(p<r.min)continue;c=(r.min-l)/(p-l)*(d-c)+c,l=r.min}else if(p<=l&&p<r.min){if(l<r.min)continue;d=(r.min-l)/(p-l)*(d-c)+c,p=r.min}if(l>=p&&l>r.max){if(p>r.max)continue;c=(r.max-l)/(p-l)*(d-c)+c,l=r.max}else if(p>=l&&p>r.max){if(l>r.max)continue;d=(r.max-l)/(p-l)*(d-c)+c,p=r.max}(l!=u||c!=a)&&h.moveTo(r.p2c(l)+t,i.p2c(c)+n),u=p,a=d,h.lineTo(r.p2c(p)+t,i.p2c(d)+n)}h.stroke()}function n(e,t,n){var r=e.points,i=e.pointsize,s=Math.min(Math.max(0,n.min),n.max),o=0,u,a=!1,f=1,l=0,c=0;for(;;){if(i>0&&o>r.length+i)break;o+=i;var p=r[o-i],d=r[o-i+f],v=r[o],m=r[o+f];if(a){if(i>0&&p!=null&&v==null){c=o,i=-i,f=2;continue}if(i<0&&o==l+i){h.fill(),a=!1,i=-i,f=1,o=l=c+i;continue}}if(p==null||v==null)continue;if(p<=v&&p<t.min){if(v<t.min)continue;d=(t.min-p)/(v-p)*(m-d)+d,p=t.min}else if(v<=p&&v<t.min){if(p<t.min)continue;m=(t.min-p)/(v-p)*(m-d)+d,v=t.min}if(p>=v&&p>t.max){if(v>t.max)continue;d=(t.max-p)/(v-p)*(m-d)+d,p=t.max}else if(v>=p&&v>t.max){if(p>t.max)continue;m=(t.max-p)/(v-p)*(m-d)+d,v=t.max}a||(h.beginPath(),h.moveTo(t.p2c(p),n.p2c(s)),a=!0);if(d>=n.max&&m>=n.max){h.lineTo(t.p2c(p),n.p2c(n.max)),h.lineTo(t.p2c(v),n.p2c(n.max));continue}if(d<=n.min&&m<=n.min){h.lineTo(t.p2c(p),n.p2c(n.min)),h.lineTo(t.p2c(v),n.p2c(n.min));continue}var g=p,y=v;d<=m&&d<n.min&&m>=n.min?(p=(n.min-d)/(m-d)*(v-p)+p,d=n.min):m<=d&&m<n.min&&d>=n.min&&(v=(n.min-d)/(m-d)*(v-p)+p,m=n.min),d>=m&&d>n.max&&m<=n.max?(p=(n.max-d)/(m-d)*(v-p)+p,d=n.max):m>=d&&m>n.max&&d<=n.max&&(v=(n.max-d)/(m-d)*(v-p)+p,m=n.max),p!=g&&h.lineTo(t.p2c(g),n.p2c(d)),h.lineTo(t.p2c(p),n.p2c(d)),h.lineTo(t.p2c(v),n.p2c(m)),v!=y&&(h.lineTo(t.p2c(v),n.p2c(m)),h.lineTo(t.p2c(y),n.p2c(m)))}}h.save(),h.translate(m.left,m.top),h.lineJoin="round";var r=e.lines.lineWidth,i=e.shadowSize;if(r>0&&i>0){h.lineWidth=i,h.strokeStyle="rgba(0,0,0,0.1)";var s=Math.PI/18;t(e.datapoints,Math.sin(s)*(r/2+i/2),Math.cos(s)*(r/2+i/2),e.xaxis,e.yaxis),h.lineWidth=i/2,t(e.datapoints,Math.sin(s)*(r/2+i/4),Math.cos(s)*(r/2+i/4),e.xaxis,e.yaxis)}h.lineWidth=r,h.strokeStyle=e.color;var o=rt(e.lines,e.color,0,y);o&&(h.fillStyle=o,n(e.datapoints,e.xaxis,e.yaxis)),r>0&&t(e.datapoints,0,0,e.xaxis,e.yaxis),h.restore()}function et(e){function t(e,t,n,r,i,s,o,u){var a=e.points,f=e.pointsize;for(var l=0;l<a.length;l+=f){var c=a[l],p=a[l+1];if(c==null||c<s.min||c>s.max||p<o.min||p>o.max)continue;h.beginPath(),c=s.p2c(c),p=o.p2c(p)+r,u=="circle"?h.arc(c,p,t,0,i?Math.PI:Math.PI*2,!1):u(h,c,p,t,i),h.closePath(),n&&(h.fillStyle=n,h.fill()),h.stroke()}}h.save(),h.translate(m.left,m.top);var n=e.points.lineWidth,r=e.shadowSize,i=e.points.radius,s=e.points.symbol;n==0&&(n=1e-4);if(n>0&&r>0){var o=r/2;h.lineWidth=o,h.strokeStyle="rgba(0,0,0,0.1)",t(e.datapoints,i,null,o+o/2,!0,e.xaxis,e.yaxis,s),h.strokeStyle="rgba(0,0,0,0.2)",t(e.datapoints,i,null,o/2,!0,e.xaxis,e.yaxis,s)}h.lineWidth=n,h.strokeStyle=e.color,t(e.datapoints,i,rt(e.points,e.color),0,!1,e.xaxis,e.yaxis,s),h.restore()}function tt(e,t,n,r,i,s,o,u,a,f,l,c){var h,p,d,v,m,g,y,b,w;l?(b=g=y=!0,m=!1,h=n,p=e,v=t+r,d=t+i,p<h&&(w=p,p=h,h=w,m=!0,g=!1)):(m=g=y=!0,b=!1,h=e+r,p=e+i,d=n,v=t,v<d&&(w=v,v=d,d=w,b=!0,y=!1));if(p<u.min||h>u.max||v<a.min||d>a.max)return;h<u.min&&(h=u.min,m=!1),p>u.max&&(p=u.max,g=!1),d<a.min&&(d=a.min,b=!1),v>a.max&&(v=a.max,y=!1),h=u.p2c(h),d=a.p2c(d),p=u.p2c(p),v=a.p2c(v),o&&(f.beginPath(),f.moveTo(h,d),f.lineTo(h,v),f.lineTo(p,v),f.lineTo(p,d),f.fillStyle=o(d,v),f.fill()),c>0&&(m||g||y||b)&&(f.beginPath(),f.moveTo(h,d+s),m?f.lineTo(h,v+s):f.moveTo(h,v+s),y?f.lineTo(p,v+s):f.moveTo(p,v+s),g?f.lineTo(p,d+s):f.moveTo(p,d+s),b?f.lineTo(h,d+s):f.moveTo(h,d+s),f.stroke())}function nt(e){function t(t,n,r,i,s,o,u){var a=t.points,f=t.pointsize;for(var l=0;l<a.length;l+=f){if(a[l]==null)continue;tt(a[l],a[l+1],a[l+2],n,r,i,s,o,u,h,e.bars.horizontal,e.bars.lineWidth)}}h.save(),h.translate(m.left,m.top),h.lineWidth=e.bars.lineWidth,h.strokeStyle=e.color;var n;switch(e.bars.align){case"left":n=0;break;case"right":n=-e.bars.barWidth;break;case"center":n=-e.bars.barWidth/2;break;default:throw new Error("Invalid bar alignment: "+e.bars.align)}var r=e.bars.fill?function(t,n){return rt(e.bars,e.color,t,n)}:null;t(e.datapoints,n,n+e.bars.barWidth,0,r,e.xaxis,e.yaxis),h.restore()}function rt(t,n,r,i){var s=t.fill;if(!s)return null;if(t.fillColor)return bt(t.fillColor,r,i,n);var o=e.color.parse(n);return o.a=typeof s=="number"?s:.4,o.normalize(),o.toString()}function it(){t.find(".legend").remove();if(!a.legend.show)return;var n=[],r=[],i=!1,s=a.legend.labelFormatter,o,f;for(var l=0;l<u.length;++l)o=u[l],o.label&&(f=s?s(o.label,o):o.label,f&&r.push({label:f,color:o.color}));if(a.legend.sorted)if(e.isFunction(a.legend.sorted))r.sort(a.legend.sorted);else if(a.legend.sorted=="reverse")r.reverse();else{var c=a.legend.sorted!="descending";r.sort(function(e,t){return e.label==t.label?0:e.label<t.label!=c?1:-1})}for(var l=0;l<r.length;++l){var h=r[l];l%a.legend.noColumns==0&&(i&&n.push("</tr>"),n.push("<tr>"),i=!0),n.push('<td class="legendColorBox"><div style="border:1px solid '+a.legend.labelBoxBorderColor+';padding:1px"><div style="width:4px;height:0;border:5px solid '+h.color+';overflow:hidden"></div></div></td>'+'<td class="legendLabel">'+h.label+"</td>")}i&&n.push("</tr>");if(n.length==0)return;var p='<table style="font-size:smaller;color:'+a.grid.color+'">'+n.join("")+"</table>";if(a.legend.container!=null)e(a.legend.container).html(p);else{var d="",v=a.legend.position,g=a.legend.margin;g[0]==null&&(g=[g,g]),v.charAt(0)=="n"?d+="top:"+(g[1]+m.top)+"px;":v.charAt(0)=="s"&&(d+="bottom:"+(g[1]+m.bottom)+"px;"),v.charAt(1)=="e"?d+="right:"+(g[0]+m.right)+"px;":v.charAt(1)=="w"&&(d+="left:"+(g[0]+m.left)+"px;");var y=e('<div class="legend">'+p.replace('style="','style="position:absolute;'+d+";")+"</div>").appendTo(t);if(a.legend.backgroundOpacity!=0){var b=a.legend.backgroundColor;b==null&&(b=a.grid.backgroundColor,b&&typeof b=="string"?b=e.color.parse(b):b=e.color.extract(y,"background-color"),b.a=1,b=b.toString());var w=y.children();e('<div style="position:absolute;width:'+w.width()+"px;height:"+w.height()+"px;"+d+"background-color:"+b+';"> </div>').prependTo(y).css("opacity",a.legend.backgroundOpacity)}}}function ut(e,t,n){var r=a.grid.mouseActiveRadius,i=r*r+1,s=null,o=!1,f,l,c;for(f=u.length-1;f>=0;--f){if(!n(u[f]))continue;var h=u[f],p=h.xaxis,d=h.yaxis,v=h.datapoints.points,m=p.c2p(e),g=d.c2p(t),y=r/p.scale,b=r/d.scale;c=h.datapoints.pointsize,p.options.inverseTransform&&(y=Number.MAX_VALUE),d.options.inverseTransform&&(b=Number.MAX_VALUE);if(h.lines.show||h.points.show)for(l=0;l<v.length;l+=c){var w=v[l],E=v[l+1];if(w==null)continue;if(w-m>y||w-m<-y||E-g>b||E-g<-b)continue;var S=Math.abs(p.p2c(w)-e),x=Math.abs(d.p2c(E)-t),T=S*S+x*x;T<i&&(i=T,s=[f,l/c])}if(h.bars.show&&!s){var N=h.bars.align=="left"?0:-h.bars.barWidth/2,C=N+h.bars.barWidth;for(l=0;l<v.length;l+=c){var w=v[l],E=v[l+1],k=v[l+2];if(w==null)continue;if(u[f].bars.horizontal?m<=Math.max(k,w)&&m>=Math.min(k,w)&&g>=E+N&&g<=E+C:m>=w+N&&m<=w+C&&g>=Math.min(k,E)&&g<=Math.max(k,E))s=[f,l/c]}}}return s?(f=s[0],l=s[1],c=u[f].datapoints.pointsize,{datapoint:u[f].datapoints.points.slice(l*c,(l+1)*c),dataIndex:l,series:u[f],seriesIndex:f}):null}function at(e){a.grid.hoverable&&ct("plothover",e,function(e){return e["hoverable"]!=0})}function ft(e){a.grid.hoverable&&ct("plothover",e,function(e){return!1})}function lt(e){ct("plotclick",e,function(e){return e["clickable"]!=0})}function ct(e,n,r){var i=c.offset(),s=n.pageX-i.left-m.left,o=n.pageY-i.top-m.top,u=L({left:s,top:o});u.pageX=n.pageX,u.pageY=n.pageY;var f=ut(s,o,r);f&&(f.pageX=parseInt(f.series.xaxis.p2c(f.datapoint[0])+i.left+m.left,10),f.pageY=parseInt(f.series.yaxis.p2c(f.datapoint[1])+i.top+m.top,10));if(a.grid.autoHighlight){for(var l=0;l<st.length;++l){var h=st[l];h.auto==e&&(!f||h.series!=f.series||h.point[0]!=f.datapoint[0]||h.point[1]!=f.datapoint[1])&&vt(h.series,h.point)}f&&dt(f.series,f.datapoint,e)}t.trigger(e,[u,f])}function ht(){var e=a.interaction.redrawOverlayInterval;if(e==-1){pt();return}ot||(ot=setTimeout(pt,e))}function pt(){ot=null,p.save(),l.clear(),p.translate(m.left,m.top);var e,t;for(e=0;e<st.length;++e)t=st[e],t.series.bars.show?yt(t.series,t.point):gt(t.series,t.point);p.restore(),E(b.drawOverlay,[p])}function dt(e,t,n){typeof e=="number"&&(e=u[e]);if(typeof t=="number"){var r=e.datapoints.pointsize;t=e.datapoints.points.slice(r*t,r*(t+1))}var i=mt(e,t);i==-1?(st.push({series:e,point:t,auto:n}),ht()):n||(st[i].auto=!1)}function vt(e,t){if(e==null&&t==null){st=[],ht();return}typeof e=="number"&&(e=u[e]);if(typeof t=="number"){var n=e.datapoints.pointsize;t=e.datapoints.points.slice(n*t,n*(t+1))}var r=mt(e,t);r!=-1&&(st.splice(r,1),ht())}function mt(e,t){for(var n=0;n<st.length;++n){var r=st[n];if(r.series==e&&r.point[0]==t[0]&&r.point[1]==t[1])return n}return-1}function gt(t,n){var r=n[0],i=n[1],s=t.xaxis,o=t.yaxis,u=typeof t.highlightColor=="string"?t.highlightColor:e.color.parse(t.color).scale("a",.5).toString();if(r<s.min||r>s.max||i<o.min||i>o.max)return;var a=t.points.radius+t.points.lineWidth/2;p.lineWidth=a,p.strokeStyle=u;var f=1.5*a;r=s.p2c(r),i=o.p2c(i),p.beginPath(),t.points.symbol=="circle"?p.arc(r,i,f,0,2*Math.PI,!1):t.points.symbol(p,r,i,f,!1),p.closePath(),p.stroke()}function yt(t,n){var r=typeof t.highlightColor=="string"?t.highlightColor:e.color.parse(t.color).scale("a",.5).toString(),i=r,s=t.bars.align=="left"?0:-t.bars.barWidth/2;p.lineWidth=t.bars.lineWidth,p.strokeStyle=r,tt(n[0],n[1],n[2]||0,s,s+t.bars.barWidth,0,function(){return i},t.xaxis,t.yaxis,p,t.bars.horizontal,t.bars.lineWidth)}function bt(t,n,r,i){if(typeof t=="string")return t;var s=h.createLinearGradient(0,r,0,n);for(var o=0,u=t.colors.length;o<u;++o){var a=t.colors[o];if(typeof a!="string"){var f=e.color.parse(i);a.brightness!=null&&(f=f.scale("rgb",a.brightness)),a.opacity!=null&&(f.a*=a.opacity),a=f.toString()}s.addColorStop(o/(u-1),a)}return s}var u=[],a={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:!0,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:.85,sorted:null},xaxis:{show:null,position:"bottom",mode:null,font:null,color:null,tickColor:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,reserveSpace:null,tickLength:null,alignTicksWithAxis:null,tickDecimals:null,tickSize:null,minTickSize:null},yaxis:{autoscaleMargin:.02,position:"left"},xaxes:[],yaxes:[],series:{points:{show:!1,radius:3,lineWidth:2,fill:!0,fillColor:"#ffffff",symbol:"circle"},lines:{lineWidth:2,fill:!1,fillColor:null,steps:!1},bars:{show:!1,lineWidth:2,barWidth:1,fill:!0,fillColor:null,align:"left",horizontal:!1,zero:!0},shadowSize:3,highlightColor:null},grid:{show:!0,aboveData:!1,color:"#545454",backgroundColor:null,borderColor:null,tickColor:null,margin:0,labelMargin:5,axisMargin:8,borderWidth:2,minBorderMargin:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:!1,hoverable:!1,autoHighlight:!0,mouseActiveRadius:10},interaction:{redrawOverlayInterval:1e3/60},hooks:{}},f=null,l=null,c=null,h=null,p=null,d=[],v=[],m={left:0,right:0,top:0,bottom 
:0},g=0,y=0,b={processOptions:[],processRawData:[],processDatapoints:[],processOffset:[],drawBackground:[],drawSeries:[],draw:[],bindEvents:[],drawOverlay:[],shutdown:[]},w=this;w.setData=T,w.setupGrid=R,w.draw=V,w.getPlaceholder=function(){return t},w.getCanvas=function(){return f.element},w.getPlotOffset=function(){return m},w.width=function(){return g},w.height=function(){return y},w.offset=function(){var e=c.offset();return e.left+=m.left,e.top+=m.top,e},w.getData=function(){return u},w.getAxes=function(){var t={},n;return e.each(d.concat(v),function(e,n){n&&(t[n.direction+(n.n!=1?n.n:"")+"axis"]=n)}),t},w.getXAxes=function(){return d},w.getYAxes=function(){return v},w.c2p=L,w.p2c=A,w.getOptions=function(){return a},w.highlight=dt,w.unhighlight=vt,w.triggerRedrawOverlay=ht,w.pointOffset=function(e){return{left:parseInt(d[C(e,"x")-1].p2c(+e.x)+m.left,10),top:parseInt(v[C(e,"y")-1].p2c(+e.y)+m.top,10)}},w.shutdown=H,w.resize=function(){var e=t.width(),n=t.height();f.resize(e,n),l.resize(e,n)},w.hooks=b,S(w),x(s),D(),T(r),R(),V(),P();var st=[],ot=null}function i(e,t){return t*Math.floor(e/t)}var t=Object.prototype.hasOwnProperty;n.prototype.resize=function(e,t){if(e<=0||t<=0)throw new Error("Invalid dimensions for plot, width = "+e+", height = "+t);var n=this.element,r=this.context,i=this.pixelRatio;this.width!=e&&(n.width=e*i,n.style.width=e+"px",this.width=e),this.height!=t&&(n.height=t*i,n.style.height=t+"px",this.height=t),r.restore(),r.save(),r.scale(i,i)},n.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)},n.prototype.render=function(){var e=this._textCache;for(var n in e)if(t.call(e,n)){var r=this.getTextLayer(n),i=e[n];r.hide();for(var s in i)if(t.call(i,s)){var o=i[s];for(var u in o)if(t.call(o,u)){var a=o[u].positions;for(var f=0,l;l=a[f];f++)l.active?l.rendered||(r.append(l.element),l.rendered=!0):(a.splice(f--,1),l.rendered&&l.element.detach());a.length==0&&delete o[u]}}r.show()}},n.prototype.getTextLayer=function(t){var n=this.text[t];return n==null&&(this.textContainer==null&&(this.textContainer=e("<div class='flot-text'></div>").css({position:"absolute",top:0,left:0,bottom:0,right:0,"font-size":"smaller",color:"#545454"}).insertAfter(this.element)),n=this.text[t]=e("<div></div>").addClass(t).css({position:"absolute",top:0,left:0,bottom:0,right:0}).appendTo(this.textContainer)),n},n.prototype.getTextInfo=function(t,n,r,i,s){var o,u,a,f;n=""+n,typeof r=="object"?o=r.style+" "+r.variant+" "+r.weight+" "+r.size+"px/"+r.lineHeight+"px "+r.family:o=r,u=this._textCache[t],u==null&&(u=this._textCache[t]={}),a=u[o],a==null&&(a=u[o]={}),f=a[n];if(f==null){var l=e("<div></div>").html(n).css({position:"absolute","max-width":s,top:-9999}).appendTo(this.getTextLayer(t));typeof r=="object"?l.css({font:o,color:r.color}):typeof r=="string"&&l.addClass(r),f=a[n]={width:l.outerWidth(!0),height:l.outerHeight(!0),element:l,positions:[]},l.detach()}return f},n.prototype.addText=function(e,t,n,r,i,s,o,u,a){var f=this.getTextInfo(e,r,i,s,o),l=f.positions;u=="center"?t-=f.width/2:u=="right"&&(t-=f.width),a=="middle"?n-=f.height/2:a=="bottom"&&(n-=f.height);for(var c=0,h;h=l[c];c++)if(h.x==t&&h.y==n){h.active=!0;return}h={active:!0,rendered:!1,element:l.length?f.element.clone():f.element,x:t,y:n},l.push(h),h.element.css({top:Math.round(n),left:Math.round(t),"text-align":u})},n.prototype.removeText=function(e,n,r,i,s,o){if(i==null){var u=this._textCache[e];if(u!=null)for(var a in u)if(t.call(u,a)){var f=u[a];for(var l in f)if(t.call(f,l)){var c=f[l].positions;for(var h=0,p;p=c[h];h++)p.active=!1}}}else{var c=this.getTextInfo(e,i,s,o).positions;for(var h=0,p;p=c[h];h++)p.x==n&&p.y==r&&(p.active=!1)}},e.plot=function(t,n,i){var s=new r(e(t),n,i,e.plot.plugins);return s},e.plot.version="0.8.1",e.plot.plugins=[],e.fn.plot=function(t,n){return this.each(function(){e.plot(this,t,n)})}}(jQuery); 
 
/* Javascript plotting library for jQuery, version 0.8.3. 
 
Copyright (c) 2007-2014 IOLA and Ole Laursen. 
Licensed under the MIT license. 
 
*/ 
(function($){function init(plot){var selection={first:{x:-1,y:-1},second:{x:-1,y:-1},show:false,active:false};var savedhandlers={};var mouseUpHandler=null;function onMouseMove(e){if(selection.active){updateSelection(e);plot.getPlaceholder().trigger("plotselecting",[getSelection()])}}function onMouseDown(e){if(e.which!=1)return;document.body.focus();if(document.onselectstart!==undefined&&savedhandlers.onselectstart==null){savedhandlers.onselectstart=document.onselectstart;document.onselectstart=function(){return false}}if(document.ondrag!==undefined&&savedhandlers.ondrag==null){savedhandlers.ondrag=document.ondrag;document.ondrag=function(){return false}}setSelectionPos(selection.first,e);selection.active=true;mouseUpHandler=function(e){onMouseUp(e)};$(document).one("mouseup",mouseUpHandler)}function onMouseUp(e){mouseUpHandler=null;if(document.onselectstart!==undefined)document.onselectstart=savedhandlers.onselectstart;if(document.ondrag!==undefined)document.ondrag=savedhandlers.ondrag;selection.active=false;updateSelection(e);if(selectionIsSane())triggerSelectedEvent();else{plot.getPlaceholder().trigger("plotunselected",[]);plot.getPlaceholder().trigger("plotselecting",[null])}return false}function getSelection(){if(!selectionIsSane())return null;if(!selection.show)return null;var r={},c1=selection.first,c2=selection.second;$.each(plot.getAxes(),function(name,axis){if(axis.used){var p1=axis.c2p(c1[axis.direction]),p2=axis.c2p(c2[axis.direction]);r[name]={from:Math.min(p1,p2),to:Math.max(p1,p2)}}});return r}function triggerSelectedEvent(){var r=getSelection();plot.getPlaceholder().trigger("plotselected",[r]);if(r.xaxis&&r.yaxis)plot.getPlaceholder().trigger("selected",[{x1:r.xaxis.from,y1:r.yaxis.from,x2:r.xaxis.to,y2:r.yaxis.to}])}function clamp(min,value,max){return value<min?min:value>max?max:value}function setSelectionPos(pos,e){var o=plot.getOptions();var offset=plot.getPlaceholder().offset();var plotOffset=plot.getPlotOffset();pos.x=clamp(0,e.pageX-offset.left-plotOffset.left,plot.width());pos.y=clamp(0,e.pageY-offset.top-plotOffset.top,plot.height());if(o.selection.mode=="y")pos.x=pos==selection.first?0:plot.width();if(o.selection.mode=="x")pos.y=pos==selection.first?0:plot.height()}function updateSelection(pos){if(pos.pageX==null)return;setSelectionPos(selection.second,pos);if(selectionIsSane()){selection.show=true;plot.triggerRedrawOverlay()}else clearSelection(true)}function clearSelection(preventEvent){if(selection.show){selection.show=false;plot.triggerRedrawOverlay();if(!preventEvent)plot.getPlaceholder().trigger("plotunselected",[])}}function extractRange(ranges,coord){var axis,from,to,key,axes=plot.getAxes();for(var k in axes){axis=axes[k];if(axis.direction==coord){key=coord+axis.n+"axis";if(!ranges[key]&&axis.n==1)key=coord+"axis";if(ranges[key]){from=ranges[key].from;to=ranges[key].to;break}}}if(!ranges[key]){axis=coord=="x"?plot.getXAxes()[0]:plot.getYAxes()[0];from=ranges[coord+"1"];to=ranges[coord+"2"]}if(from!=null&&to!=null&&from>to){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function setSelection(ranges,preventEvent){var axis,range,o=plot.getOptions();if(o.selection.mode=="y"){selection.first.x=0;selection.second.x=plot.width()}else{range=extractRange(ranges,"x");selection.first.x=range.axis.p2c(range.from);selection.second.x=range.axis.p2c(range.to)}if(o.selection.mode=="x"){selection.first.y=0;selection.second.y=plot.height()}else{range=extractRange(ranges,"y");selection.first.y=range.axis.p2c(range.from);selection.second.y=range.axis.p2c(range.to)}selection.show=true;plot.triggerRedrawOverlay();if(!preventEvent&&selectionIsSane())triggerSelectedEvent()}function selectionIsSane(){var minSize=plot.getOptions().selection.minSize;return Math.abs(selection.second.x-selection.first.x)>=minSize&&Math.abs(selection.second.y-selection.first.y)>=minSize}plot.clearSelection=clearSelection;plot.setSelection=setSelection;plot.getSelection=getSelection;plot.hooks.bindEvents.push(function(plot,eventHolder){var o=plot.getOptions();if(o.selection.mode!=null){eventHolder.mousemove(onMouseMove);eventHolder.mousedown(onMouseDown)}});plot.hooks.drawOverlay.push(function(plot,ctx){if(selection.show&&selectionIsSane()){var plotOffset=plot.getPlotOffset();var o=plot.getOptions();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var c=$.color.parse(o.selection.color);ctx.strokeStyle=c.scale("a",.8).toString();ctx.lineWidth=1;ctx.lineJoin=o.selection.shape;ctx.fillStyle=c.scale("a",.4).toString();var x=Math.min(selection.first.x,selection.second.x)+.5,y=Math.min(selection.first.y,selection.second.y)+.5,w=Math.abs(selection.second.x-selection.first.x)-1,h=Math.abs(selection.second.y-selection.first.y)-1;ctx.fillRect(x,y,w,h);ctx.strokeRect(x,y,w,h);ctx.restore()}});plot.hooks.shutdown.push(function(plot,eventHolder){eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mousedown",onMouseDown);if(mouseUpHandler)$(document).unbind("mouseup",mouseUpHandler)})}$.plot.plugins.push({init:init,options:{selection:{mode:null,color:"#e8cfac",shape:"round",minSize:5}},name:"selection",version:"1.1"})})(jQuery); 
 
/* Flot plugin for rendering pie charts. 
 
Copyright (c) 2007-2013 IOLA and Ole Laursen. 
Licensed under the MIT license. 
 
The plugin assumes that each series has a single data value, and that each 
value is a positive integer or zero.  Negative numbers don't make sense for a 
pie chart, and have unpredictable results.  The values do NOT need to be 
passed in as percentages; the plugin will calculate the total and per-slice 
percentages internally. 
 
* Created by Brian Medendorp 
 
* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars 
 
The plugin supports these options: 
 
	series: { 
		pie: { 
			show: true/false 
			radius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto' 
			innerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect 
			startAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result 
			tilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show) 
			offset: { 
				top: integer value to move the pie up or down 
				left: integer value to move the pie left or right, or 'auto' 
			}, 
			stroke: { 
				color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF') 
				width: integer pixel width of the stroke 
			}, 
			label: { 
				show: true/false, or 'auto' 
				formatter:  a user-defined function that modifies the text/style of the label text 
				radius: 0-1 for percentage of fullsize, or a specified pixel length 
				background: { 
					color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000') 
					opacity: 0-1 
				}, 
				threshold: 0-1 for the percentage value at which to hide labels (if they're too small) 
			}, 
			combine: { 
				threshold: 0-1 for the percentage value at which to combine slices (if they're too small) 
				color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined 
				label: any text value of what the combined slice should be labeled 
			} 
			highlight: { 
				opacity: 0-1 
			} 
		} 
	} 
 
More detail and specific examples can be found in the included HTML file. 
 
*/(function(e){function r(r){function p(t,n,r){l||(l=!0,s=t.getCanvas(),o=e(s).parent(),i=t.getOptions(),t.setData(d(t.getData())))}function d(t){var n=0,r=0,s=0,o=i.series.pie.combine.color,u=[];for(var a=0;a<t.length;++a){var f=t[a].data;e.isArray(f)&&f.length==1&&(f=f[0]),e.isArray(f)?!isNaN(parseFloat(f[1]))&&isFinite(f[1])?f[1]=+f[1]:f[1]=0:!isNaN(parseFloat(f))&&isFinite(f)?f=[1,+f]:f=[1,0],t[a].data=[f]}for(var a=0;a<t.length;++a)n+=t[a].data[0][1];for(var a=0;a<t.length;++a){var f=t[a].data[0][1];f/n<=i.series.pie.combine.threshold&&(r+=f,s++,o||(o=t[a].color))}for(var a=0;a<t.length;++a){var f=t[a].data[0][1];(s<2||f/n>i.series.pie.combine.threshold)&&u.push({data:[[1,f]],color:t[a].color,label:t[a].label,angle:f*Math.PI*2/n,percent:f/(n/100)})}return s>1&&u.push({data:[[1,r]],color:o,label:i.series.pie.combine.label,angle:r*Math.PI*2/n,percent:r/(n/100)}),u}function v(r,s){function y(){c.clearRect(0,0,h,p),o.children().filter(".pieLabel, .pieLabelBackground").remove()}function b(){var e=i.series.pie.shadow.left,t=i.series.pie.shadow.top,n=10,r=i.series.pie.shadow.alpha,s=i.series.pie.radius>1?i.series.pie.radius:u*i.series.pie.radius;if(s>=h/2-e||s*i.series.pie.tilt>=p/2-t||s<=n)return;c.save(),c.translate(e,t),c.globalAlpha=r,c.fillStyle="#000",c.translate(a,f),c.scale(1,i.series.pie.tilt);for(var o=1;o<=n;o++)c.beginPath(),c.arc(0,0,s,0,Math.PI*2,!1),c.fill(),s-=o;c.restore()}function w(){function l(e,t,i){if(e<=0||isNaN(e))return;i?c.fillStyle=t:(c.strokeStyle=t,c.lineJoin="round"),c.beginPath(),Math.abs(e-Math.PI*2)>1e-9&&c.moveTo(0,0),c.arc(0,0,n,r,r+e/2,!1),c.arc(0,0,n,r+e/2,r+e,!1),c.closePath(),r+=e,i?c.fill():c.stroke()}function d(){function l(t,n,s){if(t.data[0][1]==0)return!0;var u=i.legend.labelFormatter,l,c=i.series.pie.label.formatter;u?l=u(t.label,t):l=t.label,c&&(l=c(l,t));var d=(n+t.angle+n)/2,v=a+Math.round(Math.cos(d)*r),m=f+Math.round(Math.sin(d)*r)*i.series.pie.tilt,g="<span class='pieLabel' id='pieLabel"+s+"' style='position:absolute;top:"+m+"px;left:"+v+"px;'>"+l+"</span>";o.append(g);var y=o.children("#pieLabel"+s),b=m-y.height()/2,w=v-y.width()/2;y.css("top",b),y.css("left",w);if(0-b>0||0-w>0||p-(b+y.height())<0||h-(w+y.width())<0)return!1;if(i.series.pie.label.background.opacity!=0){var E=i.series.pie.label.background.color;E==null&&(E=t.color);var S="top:"+b+"px;left:"+w+"px;";e("<div class='pieLabelBackground' style='position:absolute;width:"+y.width()+"px;height:"+y.height()+"px;"+S+"background-color:"+E+";'></div>").css("opacity",i.series.pie.label.background.opacity).insertBefore(y)}return!0}var n=t,r=i.series.pie.label.radius>1?i.series.pie.label.radius:u*i.series.pie.label.radius;for(var s=0;s<v.length;++s){if(v[s].percent>=i.series.pie.label.threshold*100&&!l(v[s],n,s))return!1;n+=v[s].angle}return!0}var t=Math.PI*i.series.pie.startAngle,n=i.series.pie.radius>1?i.series.pie.radius:u*i.series.pie.radius;c.save(),c.translate(a,f),c.scale(1,i.series.pie.tilt),c.save();var r=t;for(var s=0;s<v.length;++s)v[s].startAngle=r,l(v[s].angle,v[s].color,!0);c.restore();if(i.series.pie.stroke.width>0){c.save(),c.lineWidth=i.series.pie.stroke.width,r=t;for(var s=0;s<v.length;++s)l(v[s].angle,i.series.pie.stroke.color,!1);c.restore()}return m(c),c.restore(),i.series.pie.label.show?d():!0}if(!o)return;var h=r.getPlaceholder().width(),p=r.getPlaceholder().height(),d=o.children().filter(".legend").children().width()||0;c=s,l=!1,u=Math.min(h,p/i.series.pie.tilt)/2,f=p/2+i.series.pie.offset.top,a=h/2,i.series.pie.offset.left=="auto"?i.legend.position.match("w")?a+=d/2:a-=d/2:a+=i.series.pie.offset.left,a<u?a=u:a>h-u&&(a=h-u);var v=r.getData(),g=0;do g>0&&(u*=n),g+=1,y(),i.series.pie.tilt<=.8&&b();while(!w()&&g<t);g>=t&&(y(),o.prepend("<div class='error'>Could not draw pie with labels contained inside canvas</div>")),r.setSeries&&r.insertLegend&&(r.setSeries(v),r.insertLegend())}function m(e){if(i.series.pie.innerRadius>0){e.save();var t=i.series.pie.innerRadius>1?i.series.pie.innerRadius:u*i.series.pie.innerRadius;e.globalCompositeOperation="destination-out",e.beginPath(),e.fillStyle=i.series.pie.stroke.color,e.arc(0,0,t,0,Math.PI*2,!1),e.fill(),e.closePath(),e.restore(),e.save(),e.beginPath(),e.strokeStyle=i.series.pie.stroke.color,e.arc(0,0,t,0,Math.PI*2,!1),e.stroke(),e.closePath(),e.restore()}}function g(e,t){for(var n=!1,r=-1,i=e.length,s=i-1;++r<i;s=r)(e[r][1]<=t[1]&&t[1]<e[s][1]||e[s][1]<=t[1]&&t[1]<e[r][1])&&t[0]<(e[s][0]-e[r][0])*(t[1]-e[r][1])/(e[s][1]-e[r][1])+e[r][0]&&(n=!n);return n}function y(e,t){var n=r.getData(),i=r.getOptions(),s=i.series.pie.radius>1?i.series.pie.radius:u*i.series.pie.radius,o,l;for(var h=0;h<n.length;++h){var p=n[h];if(p.pie.show){c.save(),c.beginPath(),c.moveTo(0,0),c.arc(0,0,s,p.startAngle,p.startAngle+p.angle/2,!1),c.arc(0,0,s,p.startAngle+p.angle/2,p.startAngle+p.angle,!1),c.closePath(),o=e-a,l=t-f;if(c.isPointInPath){if(c.isPointInPath(e-a,t-f))return c.restore(),{datapoint:[p.percent,p.data],dataIndex:0,series:p,seriesIndex:h}}else{var d=s*Math.cos(p.startAngle),v=s*Math.sin(p.startAngle),m=s*Math.cos(p.startAngle+p.angle/4),y=s*Math.sin(p.startAngle+p.angle/4),b=s*Math.cos(p.startAngle+p.angle/2),w=s*Math.sin(p.startAngle+p.angle/2),E=s*Math.cos(p.startAngle+p.angle/1.5),S=s*Math.sin(p.startAngle+p.angle/1.5),x=s*Math.cos(p.startAngle+p.angle),T=s*Math.sin(p.startAngle+p.angle),N=[[0,0],[d,v],[m,y],[b,w],[E,S],[x,T]],C=[o,l];if(g(N,C))return c.restore(),{datapoint:[p.percent,p.data],dataIndex:0,series:p,seriesIndex:h}}c.restore()}}return null}function b(e){E("plothover",e)}function w(e){E("plotclick",e)}function E(e,t){var n=r.offset(),s=parseInt(t.pageX-n.left),u=parseInt(t.pageY-n.top),a=y(s,u);if(i.grid.autoHighlight)for(var f=0;f<h.length;++f){var l=h[f];l.auto==e&&(!a||l.series!=a.series)&&x(l.series)}a&&S(a.series,e);var c={pageX:t.pageX,pageY:t.pageY};o.trigger(e,[c,a])}function S(e,t){var n=T(e);n==-1?(h.push({series:e,auto:t}),r.triggerRedrawOverlay()):t||(h[n].auto=!1)}function x(e){e==null&&(h=[],r.triggerRedrawOverlay());var t=T(e);t!=-1&&(h.splice(t,1),r.triggerRedrawOverlay())}function T(e){for(var t=0;t<h.length;++t){var n=h[t];if(n.series==e)return t}return-1}function N(e,t){function s(e){if(e.angle<=0||isNaN(e.angle))return;t.fillStyle="rgba(255, 255, 255, "+n.series.pie.highlight.opacity+")",t.beginPath(),Math.abs(e.angle-Math.PI*2)>1e-9&&t.moveTo(0,0),t.arc(0,0,r,e.startAngle,e.startAngle+e.angle/2,!1),t.arc(0,0,r,e.startAngle+e.angle/2,e.startAngle+e.angle,!1),t.closePath(),t.fill()}var n=e.getOptions(),r=n.series.pie.radius>1?n.series.pie.radius:u*n.series.pie.radius;t.save(),t.translate(a,f),t.scale(1,n.series.pie.tilt);for(var i=0;i<h.length;++i)s(h[i].series);m(t),t.restore()}var s=null,o=null,u=null,a=null,f=null,l=!1,c=null,h=[];r.hooks.processOptions.push(function(e,t){t.series.pie.show&&(t.grid.show=!1,t.series.pie.label.show=="auto"&&(t.legend.show?t.series.pie.label.show=!1:t.series.pie.label.show=!0),t.series.pie.radius=="auto"&&(t.series.pie.label.show?t.series.pie.radius=.75:t.series.pie.radius=1),t.series.pie.tilt>1?t.series.pie.tilt=1:t.series.pie.tilt<0&&(t.series.pie.tilt=0))}),r.hooks.bindEvents.push(function(e,t){var n=e.getOptions();n.series.pie.show&&(n.grid.hoverable&&t.unbind("mousemove").mousemove(b),n.grid.clickable&&t.unbind("click").click(w))}),r.hooks.processDatapoints.push(function(e,t,n,r){var i=e.getOptions();i.series.pie.show&&p(e,t,n,r)}),r.hooks.drawOverlay.push(function(e,t){var n=e.getOptions();n.series.pie.show&&N(e,t)}),r.hooks.draw.push(function(e,t){var n=e.getOptions();n.series.pie.show&&v(e,t)})}var t=10,n=.95,i={series:{pie:{show:!1,radius:"auto",innerRadius:0,startAngle:1.5,tilt:1,shadow:{left:5,top:15,alpha:.02},offset:{top:0,left:"auto"},stroke:{color:"#fff",width:1},label:{show:"auto",formatter:function(e,t){return"<div style='font-size:x-small;text-align:center;padding:2px;color:"+t.color+";'>"+e+"<br/>"+Math.round(t.percent)+"%</div>"},radius:1,background:{color:null,opacity:0},threshold:0},combine:{threshold:-1,color:null,label:"Other"},highlight:{opacity:.5}}}};e.plot.plugins.push({init:r,options:i,name:"pie",version:"1.1"})})(jQuery); 
 
/* Flot plugin for stacking data sets rather than overlyaing them. 
 
Copyright (c) 2007-2013 IOLA and Ole Laursen. 
Licensed under the MIT license. 
 
The plugin assumes the data is sorted on x (or y if stacking horizontally). 
For line charts, it is assumed that if a line has an undefined gap (from a 
null point), then the line above it should have the same gap - insert zeros 
instead of "null" if you want another behaviour. This also holds for the start 
and end of the chart. Note that stacking a mix of positive and negative values 
in most instances doesn't make sense (so it looks weird). 
 
Two or more series are stacked when their "stack" attribute is set to the same 
key (which can be any number or string or just "true"). To specify the default 
stack, you can set the stack option like this: 
 
	series: { 
		stack: null/false, true, or a key (number/string) 
	} 
 
You can also specify it for a single series, like this: 
 
	$.plot( $("#placeholder"), [{ 
		data: [ ... ], 
		stack: true 
	}]) 
 
The stacking order is determined by the order of the data series in the array 
(later series end up on top of the previous). 
 
Internally, the plugin modifies the datapoints in each series, adding an 
offset to the y value. For line series, extra data points are inserted through 
interpolation. If there's a second y value, it's also adjusted (e.g for bar 
charts or filled areas). 
 
*/(function(e){function n(e){function t(e,t){var n=null;for(var r=0;r<t.length;++r){if(e==t[r])break;t[r].stack==e.stack&&(n=t[r])}return n}function n(e,n,r){if(n.stack==null||n.stack===!1)return;var i=t(n,e.getData());if(!i)return;var s=r.pointsize,o=r.points,u=i.datapoints.pointsize,a=i.datapoints.points,f=[],l,c,h,p,d,v,m=n.lines.show,g=n.bars.horizontal,y=s>2&&(g?r.format[2].x:r.format[2].y),b=m&&n.lines.steps,w=!0,E=g?1:0,S=g?0:1,x=0,T=0,N,C;for(;;){if(x>=o.length)break;N=f.length;if(o[x]==null){for(C=0;C<s;++C)f.push(o[x+C]);x+=s}else if(T>=a.length){if(!m)for(C=0;C<s;++C)f.push(o[x+C]);x+=s}else if(a[T]==null){for(C=0;C<s;++C)f.push(null);w=!0,T+=u}else{l=o[x+E],c=o[x+S],p=a[T+E],d=a[T+S],v=0;if(l==p){for(C=0;C<s;++C)f.push(o[x+C]);f[N+S]+=d,v=d,x+=s,T+=u}else if(l>p){if(m&&x>0&&o[x-s]!=null){h=c+(o[x-s+S]-c)*(p-l)/(o[x-s+E]-l),f.push(p),f.push(h+d);for(C=2;C<s;++C)f.push(o[x+C]);v=d}T+=u}else{if(w&&m){x+=s;continue}for(C=0;C<s;++C)f.push(o[x+C]);m&&T>0&&a[T-u]!=null&&(v=d+(a[T-u+S]-d)*(l-p)/(a[T-u+E]-p)),f[N+S]+=v,x+=s}w=!1,N!=f.length&&y&&(f[N+2]+=v)}if(b&&N!=f.length&&N>0&&f[N]!=null&&f[N]!=f[N-s]&&f[N+1]!=f[N-s+1]){for(C=0;C<s;++C)f[N+s+C]=f[N+C];f[N+1]=f[N-s+1]}}r.points=f}e.hooks.processDatapoints.push(n)}var t={series:{stack:null}};e.plot.plugins.push({init:n,options:t,name:"stack",version:"1.2"})})(jQuery); 
 
/* Javascript plotting library for jQuery, version 0.8.3. 
 
Copyright (c) 2007-2014 IOLA and Ole Laursen. 
Licensed under the MIT license. 
 
*/ 
(function($){var options={xaxis:{timezone:null,timeformat:null,twelveHourClock:false,monthNames:null}};function floorInBase(n,base){return base*Math.floor(n/base)}function formatDate(d,fmt,monthNames,dayNames){if(typeof d.strftime=="function"){return d.strftime(fmt)}var leftPad=function(n,pad){n=""+n;pad=""+(pad==null?"0":pad);return n.length==1?pad+n:n};var r=[];var escape=false;var hours=d.getHours();var isAM=hours<12;if(monthNames==null){monthNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}if(dayNames==null){dayNames=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]}var hours12;if(hours>12){hours12=hours-12}else if(hours==0){hours12=12}else{hours12=hours}for(var i=0;i<fmt.length;++i){var c=fmt.charAt(i);if(escape){switch(c){case"a":c=""+dayNames[d.getDay()];break;case"b":c=""+monthNames[d.getMonth()];break;case"d":c=leftPad(d.getDate());break;case"e":c=leftPad(d.getDate()," ");break;case"h":case"H":c=leftPad(hours);break;case"I":c=leftPad(hours12);break;case"l":c=leftPad(hours12," ");break;case"m":c=leftPad(d.getMonth()+1);break;case"M":c=leftPad(d.getMinutes());break;case"q":c=""+(Math.floor(d.getMonth()/3)+1);break;case"S":c=leftPad(d.getSeconds());break;case"y":c=leftPad(d.getFullYear()%100);break;case"Y":c=""+d.getFullYear();break;case"p":c=isAM?""+"am":""+"pm";break;case"P":c=isAM?""+"AM":""+"PM";break;case"w":c=""+d.getDay();break}r.push(c);escape=false}else{if(c=="%"){escape=true}else{r.push(c)}}}return r.join("")}function makeUtcWrapper(d){function addProxyMethod(sourceObj,sourceMethod,targetObj,targetMethod){sourceObj[sourceMethod]=function(){return targetObj[targetMethod].apply(targetObj,arguments)}}var utc={date:d};if(d.strftime!=undefined){addProxyMethod(utc,"strftime",d,"strftime")}addProxyMethod(utc,"getTime",d,"getTime");addProxyMethod(utc,"setTime",d,"setTime");var props=["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds"];for(var p=0;p<props.length;p++){addProxyMethod(utc,"get"+props[p],d,"getUTC"+props[p]);addProxyMethod(utc,"set"+props[p],d,"setUTC"+props[p])}return utc}function dateGenerator(ts,opts){if(opts.timezone=="browser"){return new Date(ts)}else if(!opts.timezone||opts.timezone=="utc"){return makeUtcWrapper(new Date(ts))}else if(typeof timezoneJS!="undefined"&&typeof timezoneJS.Date!="undefined"){var d=new timezoneJS.Date;d.setTimezone(opts.timezone);d.setTime(ts);return d}else{return makeUtcWrapper(new Date(ts))}}var timeUnitSize={second:1e3,minute:60*1e3,hour:60*60*1e3,day:24*60*60*1e3,month:30*24*60*60*1e3,quarter:3*30*24*60*60*1e3,year:365.2425*24*60*60*1e3};var baseSpec=[[1,"second"],[2,"second"],[5,"second"],[10,"second"],[30,"second"],[1,"minute"],[2,"minute"],[5,"minute"],[10,"minute"],[30,"minute"],[1,"hour"],[2,"hour"],[4,"hour"],[8,"hour"],[12,"hour"],[1,"day"],[2,"day"],[3,"day"],[.25,"month"],[.5,"month"],[1,"month"],[2,"month"]];var specMonths=baseSpec.concat([[3,"month"],[6,"month"],[1,"year"]]);var specQuarters=baseSpec.concat([[1,"quarter"],[2,"quarter"],[1,"year"]]);function init(plot){plot.hooks.processOptions.push(function(plot,options){$.each(plot.getAxes(),function(axisName,axis){var opts=axis.options;if(opts.mode=="time"){axis.tickGenerator=function(axis){var ticks=[];var d=dateGenerator(axis.min,opts);var minSize=0;var spec=opts.tickSize&&opts.tickSize[1]==="quarter"||opts.minTickSize&&opts.minTickSize[1]==="quarter"?specQuarters:specMonths;if(opts.minTickSize!=null){if(typeof opts.tickSize=="number"){minSize=opts.tickSize}else{minSize=opts.minTickSize[0]*timeUnitSize[opts.minTickSize[1]]}}for(var i=0;i<spec.length-1;++i){if(axis.delta<(spec[i][0]*timeUnitSize[spec[i][1]]+spec[i+1][0]*timeUnitSize[spec[i+1][1]])/2&&spec[i][0]*timeUnitSize[spec[i][1]]>=minSize){break}}var size=spec[i][0];var unit=spec[i][1];if(unit=="year"){if(opts.minTickSize!=null&&opts.minTickSize[1]=="year"){size=Math.floor(opts.minTickSize[0])}else{var magn=Math.pow(10,Math.floor(Math.log(axis.delta/timeUnitSize.year)/Math.LN10));var norm=axis.delta/timeUnitSize.year/magn;if(norm<1.5){size=1}else if(norm<3){size=2}else if(norm<7.5){size=5}else{size=10}size*=magn}if(size<1){size=1}}axis.tickSize=opts.tickSize||[size,unit];var tickSize=axis.tickSize[0];unit=axis.tickSize[1];var step=tickSize*timeUnitSize[unit];if(unit=="second"){d.setSeconds(floorInBase(d.getSeconds(),tickSize))}else if(unit=="minute"){d.setMinutes(floorInBase(d.getMinutes(),tickSize))}else if(unit=="hour"){d.setHours(floorInBase(d.getHours(),tickSize))}else if(unit=="month"){d.setMonth(floorInBase(d.getMonth(),tickSize))}else if(unit=="quarter"){d.setMonth(3*floorInBase(d.getMonth()/3,tickSize))}else if(unit=="year"){d.setFullYear(floorInBase(d.getFullYear(),tickSize))}d.setMilliseconds(0);if(step>=timeUnitSize.minute){d.setSeconds(0)}if(step>=timeUnitSize.hour){d.setMinutes(0)}if(step>=timeUnitSize.day){d.setHours(0)}if(step>=timeUnitSize.day*4){d.setDate(1)}if(step>=timeUnitSize.month*2){d.setMonth(floorInBase(d.getMonth(),3))}if(step>=timeUnitSize.quarter*2){d.setMonth(floorInBase(d.getMonth(),6))}if(step>=timeUnitSize.year){d.setMonth(0)}var carry=0;var v=Number.NaN;var prev;do{prev=v;v=d.getTime();ticks.push(v);if(unit=="month"||unit=="quarter"){if(tickSize<1){d.setDate(1);var start=d.getTime();d.setMonth(d.getMonth()+(unit=="quarter"?3:1));var end=d.getTime();d.setTime(v+carry*timeUnitSize.hour+(end-start)*tickSize);carry=d.getHours();d.setHours(0)}else{d.setMonth(d.getMonth()+tickSize*(unit=="quarter"?3:1))}}else if(unit=="year"){d.setFullYear(d.getFullYear()+tickSize)}else{d.setTime(v+step)}}while(v<axis.max&&v!=prev);return ticks};axis.tickFormatter=function(v,axis){var d=dateGenerator(v,axis.options);if(opts.timeformat!=null){return formatDate(d,opts.timeformat,opts.monthNames,opts.dayNames)}var useQuarters=axis.options.tickSize&&axis.options.tickSize[1]=="quarter"||axis.options.minTickSize&&axis.options.minTickSize[1]=="quarter";var t=axis.tickSize[0]*timeUnitSize[axis.tickSize[1]];var span=axis.max-axis.min;var suffix=opts.twelveHourClock?" %p":"";var hourCode=opts.twelveHourClock?"%I":"%H";var fmt;if(t<timeUnitSize.minute){fmt=hourCode+":%M:%S"+suffix}else if(t<timeUnitSize.day){if(span<2*timeUnitSize.day){fmt=hourCode+":%M"+suffix}else{fmt="%b %d "+hourCode+":%M"+suffix}}else if(t<timeUnitSize.month){fmt="%b %d"}else if(useQuarters&&t<timeUnitSize.quarter||!useQuarters&&t<timeUnitSize.year){if(span<timeUnitSize.year){fmt="%b"}else{fmt="%b %Y"}}else if(useQuarters&&t<timeUnitSize.year){if(span<timeUnitSize.year){fmt="Q%q"}else{fmt="Q%q %Y"}}else{fmt="%Y"}var rt=formatDate(d,fmt,opts.monthNames,opts.dayNames);return rt}}})})}$.plot.plugins.push({init:init,options:options,name:"time",version:"1.0"});$.plot.formatDate=formatDate;$.plot.dateGenerator=dateGenerator})(jQuery); 
 
/* 
 * jquery.flot.tooltip 
 *  
 * description: easy-to-use tooltips for Flot charts 
 * version: 0.8.5 
 * authors: Krzysztof Urbas @krzysu [myviews.pl],Evan Steinkerchner @Roundaround 
 * website: https://github.com/krzysu/flot.tooltip 
 *  
 * build on 2015-06-12 
 * released under MIT License, 2012 
*/  
!function(a){var b={tooltip:{show:!1,cssClass:"flotTip",content:"%s | X: %x | Y: %y",xDateFormat:null,yDateFormat:null,monthNames:null,dayNames:null,shifts:{x:10,y:20},defaultTheme:!0,snap:!0,lines:!1,onHover:function(a,b){},$compat:!1}};b.tooltipOpts=b.tooltip;var c=function(a){this.tipPosition={x:0,y:0},this.init(a)};c.prototype.init=function(b){function c(a){var c={};c.x=a.pageX,c.y=a.pageY,b.setTooltipPosition(c)}function d(c,d,f){var g=function(a,b,c,d){return Math.sqrt((c-a)*(c-a)+(d-b)*(d-b))},h=function(a,b,c,d,e,f,h){if(!h||(h=function(a,b,c,d,e,f){if("undefined"!=typeof c)return{x:c,y:b};if("undefined"!=typeof d)return{x:a,y:d};var g,h=-1/((f-d)/(e-c));return{x:g=(e*(a*h-b+d)+c*(a*-h+b-f))/(h*(e-c)+d-f),y:h*g-h*a+b}}(a,b,c,d,e,f),h.x>=Math.min(c,e)&&h.x<=Math.max(c,e)&&h.y>=Math.min(d,f)&&h.y<=Math.max(d,f))){var i=d-f,j=e-c,k=c*f-d*e;return Math.abs(i*a+j*b+k)/Math.sqrt(i*i+j*j)}var l=g(a,b,c,d),m=g(a,b,e,f);return l>m?m:l};if(f)b.showTooltip(f,e.tooltipOptions.snap?f:d);else if(e.plotOptions.series.lines.show&&e.tooltipOptions.lines===!0){var i=e.plotOptions.grid.mouseActiveRadius,j={distance:i+1},k=d;a.each(b.getData(),function(a,c){for(var f=0,i=-1,l=1;l<c.data.length;l++)c.data[l-1][0]<=d.x&&c.data[l][0]>=d.x&&(f=l-1,i=l);if(-1===i)return void b.hideTooltip();var m={x:c.data[f][0],y:c.data[f][1]},n={x:c.data[i][0],y:c.data[i][1]},o=h(c.xaxis.p2c(d.x),c.yaxis.p2c(d.y),c.xaxis.p2c(m.x),c.yaxis.p2c(m.y),c.xaxis.p2c(n.x),c.yaxis.p2c(n.y),!1);if(o<j.distance){var p=g(m.x,m.y,d.x,d.y)<g(d.x,d.y,n.x,n.y)?f:i,q=(c.datapoints.pointsize,[d.x,m.y+(n.y-m.y)*((d.x-m.x)/(n.x-m.x))]),r={datapoint:q,dataIndex:p,series:c,seriesIndex:a};j={distance:o,item:r},e.tooltipOptions.snap&&(k={pageX:c.xaxis.p2c(q[0]),pageY:c.yaxis.p2c(q[1])})}}),j.distance<i+1?b.showTooltip(j.item,k):b.hideTooltip()}else b.hideTooltip()}var e=this,f=a.plot.plugins.length;if(this.plotPlugins=[],f)for(var g=0;f>g;g++)this.plotPlugins.push(a.plot.plugins[g].name);b.hooks.bindEvents.push(function(b,f){if(e.plotOptions=b.getOptions(),"boolean"==typeof e.plotOptions.tooltip&&(e.plotOptions.tooltipOpts.show=e.plotOptions.tooltip,e.plotOptions.tooltip=e.plotOptions.tooltipOpts,delete e.plotOptions.tooltipOpts),e.plotOptions.tooltip.show!==!1&&"undefined"!=typeof e.plotOptions.tooltip.show){e.tooltipOptions=e.plotOptions.tooltip,e.tooltipOptions.$compat?(e.wfunc="width",e.hfunc="height"):(e.wfunc="innerWidth",e.hfunc="innerHeight");e.getDomElement();a(b.getPlaceholder()).bind("plothover",d),a(f).bind("mousemove",c)}}),b.hooks.shutdown.push(function(b,e){a(b.getPlaceholder()).unbind("plothover",d),a(e).unbind("mousemove",c)}),b.setTooltipPosition=function(b){var c=e.getDomElement(),d=c.outerWidth()+e.tooltipOptions.shifts.x,f=c.outerHeight()+e.tooltipOptions.shifts.y;b.x-a(window).scrollLeft()>a(window)[e.wfunc]()-d&&(b.x-=d),b.y-a(window).scrollTop()>a(window)[e.hfunc]()-f&&(b.y-=f),isNaN(b.x)?e.tipPosition.x=e.tipPosition.xPrev:(e.tipPosition.x=b.x,e.tipPosition.xPrev=b.x),isNaN(b.y)?e.tipPosition.y=e.tipPosition.yPrev:(e.tipPosition.y=b.y,e.tipPosition.yPrev=b.y)},b.showTooltip=function(a,c,d){var f=e.getDomElement(),g=e.stringFormat(e.tooltipOptions.content,a);""!==g&&(f.html(g),b.setTooltipPosition({x:c.pageX,y:c.pageY}),f.css({left:e.tipPosition.x+e.tooltipOptions.shifts.x,top:e.tipPosition.y+e.tooltipOptions.shifts.y}).show(),"function"==typeof e.tooltipOptions.onHover&&e.tooltipOptions.onHover(a,f))},b.hideTooltip=function(){e.getDomElement().hide().html("")}},c.prototype.getDomElement=function(){var b=a("."+this.tooltipOptions.cssClass);return 0===b.length&&(b=a("<div />").addClass(this.tooltipOptions.cssClass),b.appendTo("body").hide().css({position:"absolute"}),this.tooltipOptions.defaultTheme&&b.css({background:"#fff","z-index":"1040",padding:"0.4em 0.6em","border-radius":"0.5em","font-size":"0.8em",border:"1px solid #111",display:"none","white-space":"nowrap"})),b},c.prototype.stringFormat=function(a,b){var c,d,e,f,g,h=/%p\.{0,1}(\d{0,})/,i=/%s/,j=/%c/,k=/%lx/,l=/%ly/,m=/%x\.{0,1}(\d{0,})/,n=/%y\.{0,1}(\d{0,})/,o="%x",p="%y",q="%ct",r="%n";if("undefined"!=typeof b.series.threshold?(c=b.datapoint[0],d=b.datapoint[1],e=b.datapoint[2]):"undefined"!=typeof b.series.curvedLines?(c=b.datapoint[0],d=b.datapoint[1]):"undefined"!=typeof b.series.lines&&b.series.lines.steps?(c=b.series.datapoints.points[2*b.dataIndex],d=b.series.datapoints.points[2*b.dataIndex+1],e=""):(c=b.series.data[b.dataIndex][0],d=b.series.data[b.dataIndex][1],e=b.series.data[b.dataIndex][2]),null===b.series.label&&b.series.originSeries&&(b.series.label=b.series.originSeries.label),"function"==typeof a&&(a=a(b.series.label,c,d,b)),"boolean"==typeof a&&!a)return"";if(e&&(a=a.replace(q,e)),"undefined"!=typeof b.series.percent?f=b.series.percent:"undefined"!=typeof b.series.percents&&(f=b.series.percents[b.dataIndex]),"number"==typeof f&&(a=this.adjustValPrecision(h,a,f)),b.series.hasOwnProperty("pie")&&(g=b.series.data[0][1]),"number"==typeof g&&(a=a.replace(r,g)),a="undefined"!=typeof b.series.label?a.replace(i,b.series.label):a.replace(i,""),a="undefined"!=typeof b.series.color?a.replace(j,b.series.color):a.replace(j,""),a=this.hasAxisLabel("xaxis",b)?a.replace(k,b.series.xaxis.options.axisLabel):a.replace(k,""),a=this.hasAxisLabel("yaxis",b)?a.replace(l,b.series.yaxis.options.axisLabel):a.replace(l,""),this.isTimeMode("xaxis",b)&&this.isXDateFormat(b)&&(a=a.replace(m,this.timestampToDate(c,this.tooltipOptions.xDateFormat,b.series.xaxis.options))),this.isTimeMode("yaxis",b)&&this.isYDateFormat(b)&&(a=a.replace(n,this.timestampToDate(d,this.tooltipOptions.yDateFormat,b.series.yaxis.options))),"number"==typeof c&&(a=this.adjustValPrecision(m,a,c)),"number"==typeof d&&(a=this.adjustValPrecision(n,a,d)),"undefined"!=typeof b.series.xaxis.ticks){var s;s=this.hasRotatedXAxisTicks(b)?"rotatedTicks":"ticks";var t=b.dataIndex+b.seriesIndex;for(var u in b.series.xaxis[s])if(b.series.xaxis[s].hasOwnProperty(t)&&!this.isTimeMode("xaxis",b)){var v=this.isCategoriesMode("xaxis",b)?b.series.xaxis[s][t].label:b.series.xaxis[s][t].v;v===c&&(a=a.replace(m,b.series.xaxis[s][t].label))}}if("undefined"!=typeof b.series.yaxis.ticks)for(var w in b.series.yaxis.ticks)if(b.series.yaxis.ticks.hasOwnProperty(w)){var x=this.isCategoriesMode("yaxis",b)?b.series.yaxis.ticks[w].label:b.series.yaxis.ticks[w].v;x===d&&(a=a.replace(n,b.series.yaxis.ticks[w].label))}return"undefined"!=typeof b.series.xaxis.tickFormatter&&(a=a.replace(o,b.series.xaxis.tickFormatter(c,b.series.xaxis).replace(/\$/g,"$$"))),"undefined"!=typeof b.series.yaxis.tickFormatter&&(a=a.replace(p,b.series.yaxis.tickFormatter(d,b.series.yaxis).replace(/\$/g,"$$"))),a},c.prototype.isTimeMode=function(a,b){return"undefined"!=typeof b.series[a].options.mode&&"time"===b.series[a].options.mode},c.prototype.isXDateFormat=function(a){return"undefined"!=typeof this.tooltipOptions.xDateFormat&&null!==this.tooltipOptions.xDateFormat},c.prototype.isYDateFormat=function(a){return"undefined"!=typeof this.tooltipOptions.yDateFormat&&null!==this.tooltipOptions.yDateFormat},c.prototype.isCategoriesMode=function(a,b){return"undefined"!=typeof b.series[a].options.mode&&"categories"===b.series[a].options.mode},c.prototype.timestampToDate=function(b,c,d){var e=a.plot.dateGenerator(b,d);return a.plot.formatDate(e,c,this.tooltipOptions.monthNames,this.tooltipOptions.dayNames)},c.prototype.adjustValPrecision=function(a,b,c){var d,e=b.match(a);return null!==e&&""!==RegExp.$1&&(d=RegExp.$1,c=c.toFixed(d),b=b.replace(a,c)),b},c.prototype.hasAxisLabel=function(b,c){return-1!==a.inArray(this.plotPlugins,"axisLabels")&&"undefined"!=typeof c.series[b].options.axisLabel&&c.series[b].options.axisLabel.length>0},c.prototype.hasRotatedXAxisTicks=function(b){return-1!==a.inArray(this.plotPlugins,"tickRotor")&&"undefined"!=typeof b.series.xaxis.rotatedTicks};var d=function(a){new c(a)};a.plot.plugins.push({init:d,options:b,name:"tooltip",version:"0.8.5"})}(jQuery); 
 
/* Javascript plotting library for jQuery, version 0.8.3. 
 
Copyright (c) 2007-2014 IOLA and Ole Laursen. 
Licensed under the MIT license. 
 
*/ 
(function($){function processRawData(plot,series,datapoints){var handlers={square:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.rect(x-size,y-size,size+size,size+size)},diamond:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI/2);ctx.moveTo(x-size,y);ctx.lineTo(x,y-size);ctx.lineTo(x+size,y);ctx.lineTo(x,y+size);ctx.lineTo(x-size,y)},triangle:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(2*Math.PI/Math.sin(Math.PI/3));var height=size*Math.sin(Math.PI/3);ctx.moveTo(x-size/2,y+height/2);ctx.lineTo(x+size/2,y+height/2);if(!shadow){ctx.lineTo(x,y-height/2);ctx.lineTo(x-size/2,y+height/2)}},cross:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.moveTo(x-size,y-size);ctx.lineTo(x+size,y+size);ctx.moveTo(x-size,y+size);ctx.lineTo(x+size,y-size)}};var s=series.points.symbol;if(handlers[s])series.points.symbol=handlers[s]}function init(plot){plot.hooks.processDatapoints.push(processRawData)}$.plot.plugins.push({init:init,name:"symbols",version:"1.0"})})(jQuery); 
 
/* 
Axis Labels Plugin for flot. 
http://github.com/markrcote/flot-axislabels 
 
Original code is Copyright (c) 2010 Xuan Luo. 
Original code was released under the GPLv3 license by Xuan Luo, September 2010. 
Original code was rereleased under the MIT license by Xuan Luo, April 2012. 
 
Improvements by Mark Cote. 
 
Permission is hereby granted, free of charge, to any person obtaining 
a copy of this software and associated documentation files (the 
"Software"), to deal in the Software without restriction, including 
without limitation the rights to use, copy, modify, merge, publish, 
distribute, sublicense, and/or sell copies of the Software, and to 
permit persons to whom the Software is furnished to do so, subject to 
the following conditions: 
 
The above copyright notice and this permission notice shall be 
included in all copies or substantial portions of the Software. 
 
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
 
*/ 
(function ($) { 
    var options = {}; 
 
    function canvasSupported() { 
        return !!document.createElement('canvas').getContext; 
    } 
 
    function canvasTextSupported() { 
        if (!canvasSupported()) { 
            return false; 
        } 
        var dummy_canvas = document.createElement('canvas'); 
        var context = dummy_canvas.getContext('2d'); 
        return typeof context.fillText == 'function'; 
    } 
 
    function css3TransitionSupported() { 
        var div = document.createElement('div'); 
        return typeof div.style.MozTransition != 'undefined'    // Gecko 
            || typeof div.style.OTransition != 'undefined'      // Opera 
            || typeof div.style.webkitTransition != 'undefined' // WebKit 
            || typeof div.style.transition != 'undefined'; 
    } 
 
 
    function AxisLabel(axisName, position, padding, plot, opts) { 
        this.axisName = axisName; 
        this.position = position; 
        this.padding = padding; 
        this.plot = plot; 
        this.opts = opts; 
        this.width = 0; 
        this.height = 0; 
    } 
 
 
    CanvasAxisLabel.prototype = new AxisLabel(); 
    CanvasAxisLabel.prototype.constructor = CanvasAxisLabel; 
    function CanvasAxisLabel(axisName, position, padding, plot, opts) { 
        AxisLabel.prototype.constructor.call(this, axisName, position, padding, 
                                             plot, opts); 
    } 
 
    CanvasAxisLabel.prototype.calculateSize = function () { 
        if (!this.opts.axisLabelFontSizePixels) 
            this.opts.axisLabelFontSizePixels = 14; 
        if (!this.opts.axisLabelFontFamily) 
            this.opts.axisLabelFontFamily = 'sans-serif'; 
 
        var textWidth = this.opts.axisLabelFontSizePixels + this.padding; 
        var textHeight = this.opts.axisLabelFontSizePixels + this.padding; 
        if (this.position == 'left' || this.position == 'right') { 
            this.width = this.opts.axisLabelFontSizePixels + this.padding; 
            this.height = 0; 
        } else { 
            this.width = 0; 
            this.height = this.opts.axisLabelFontSizePixels + this.padding; 
        } 
    }; 
 
    CanvasAxisLabel.prototype.draw = function (box) { 
        var ctx = this.plot.getCanvas().getContext('2d'); 
        ctx.save(); 
        ctx.font = this.opts.axisLabelFontSizePixels + 'px ' + 
            this.opts.axisLabelFontFamily; 
        var width = ctx.measureText(this.opts.axisLabel).width; 
        var height = this.opts.axisLabelFontSizePixels; 
        var x, y, angle = 0; 
        if (this.position == 'top') { 
            x = box.left + box.width / 2 - width / 2; 
            y = box.top + height * 0.72; 
        } else if (this.position == 'bottom') { 
            x = box.left + box.width / 2 - width / 2; 
            y = box.top + box.height - height * 0.72; 
        } else if (this.position == 'left') { 
            x = box.left + height * 0.72; 
            y = box.height / 2 + box.top + width / 2; 
            angle = -Math.PI / 2; 
        } else if (this.position == 'right') { 
            x = box.left + box.width - height * 0.72; 
            y = box.height / 2 + box.top - width / 2; 
            angle = Math.PI / 2; 
        } 
        ctx.translate(x, y); 
        ctx.rotate(angle); 
        ctx.fillText(this.opts.axisLabel, 0, 0); 
        ctx.restore(); 
    }; 
 
 
    HtmlAxisLabel.prototype = new AxisLabel(); 
    HtmlAxisLabel.prototype.constructor = HtmlAxisLabel; 
    function HtmlAxisLabel(axisName, position, padding, plot, opts) { 
        AxisLabel.prototype.constructor.call(this, axisName, position, 
                                             padding, plot, opts); 
    } 
 
    HtmlAxisLabel.prototype.calculateSize = function () { 
        var elem = $('<div class="axisLabels" style="position:absolute;">' + 
                     this.opts.axisLabel + '</div>'); 
        this.plot.getPlaceholder().append(elem); 
        // store height and width of label itself, for use in draw() 
        this.labelWidth = elem.outerWidth(true); 
        this.labelHeight = elem.outerHeight(true); 
        elem.remove(); 
 
        this.width = this.height = 0; 
        if (this.position == 'left' || this.position == 'right') { 
            this.width = this.labelWidth + this.padding; 
        } else { 
            this.height = this.labelHeight + this.padding; 
        } 
    }; 
 
    HtmlAxisLabel.prototype.draw = function (box) { 
        this.plot.getPlaceholder().find('#' + this.axisName + 'Label').remove(); 
        var elem = $('<div id="' + this.axisName + 
                     'Label" " class="axisLabels" style="position:absolute;">' 
                     + this.opts.axisLabel + '</div>'); 
        this.plot.getPlaceholder().append(elem); 
        if (this.position == 'top') { 
            elem.css('left', box.left + box.width / 2 - this.labelWidth / 2 + 'px'); 
            elem.css('top', box.top + 'px'); 
        } else if (this.position == 'bottom') { 
            elem.css('left', box.left + box.width / 2 - this.labelWidth / 2 + 'px'); 
            elem.css('top', box.top + box.height - this.labelHeight + 'px'); 
        } else if (this.position == 'left') { 
            elem.css('top', box.top + box.height / 2 - this.labelHeight / 2 + 'px'); 
            elem.css('left', box.left + 'px'); 
        } else if (this.position == 'right') { 
            elem.css('top', box.top + box.height / 2 - this.labelHeight / 2 + 'px'); 
            elem.css('left', box.left + box.width - this.labelWidth + 'px'); 
        } 
    }; 
 
 
    CssTransformAxisLabel.prototype = new HtmlAxisLabel(); 
    CssTransformAxisLabel.prototype.constructor = CssTransformAxisLabel; 
    function CssTransformAxisLabel(axisName, position, padding, plot, opts) { 
        HtmlAxisLabel.prototype.constructor.call(this, axisName, position, 
                                                 padding, plot, opts); 
    } 
 
    CssTransformAxisLabel.prototype.calculateSize = function () { 
        HtmlAxisLabel.prototype.calculateSize.call(this); 
        this.width = this.height = 0; 
        if (this.position == 'left' || this.position == 'right') { 
            this.width = this.labelHeight + this.padding; 
        } else { 
            this.height = this.labelHeight + this.padding; 
        } 
    }; 
 
    CssTransformAxisLabel.prototype.transforms = function (degrees, x, y) { 
        var stransforms = { 
            '-moz-transform': '', 
            '-webkit-transform': '', 
            '-o-transform': '', 
            '-ms-transform': '' 
        }; 
        if (x != 0 || y != 0) { 
            var stdTranslate = ' translate(' + x + 'px, ' + y + 'px)'; 
            stransforms['-moz-transform'] += stdTranslate; 
            stransforms['-webkit-transform'] += stdTranslate; 
            stransforms['-o-transform'] += stdTranslate; 
            stransforms['-ms-transform'] += stdTranslate; 
        } 
        if (degrees != 0) { 
            var rotation = degrees / 90; 
            var stdRotate = ' rotate(' + degrees + 'deg)'; 
            stransforms['-moz-transform'] += stdRotate; 
            stransforms['-webkit-transform'] += stdRotate; 
            stransforms['-o-transform'] += stdRotate; 
            stransforms['-ms-transform'] += stdRotate; 
        } 
        var s = 'top: 0; left: 0; '; 
        for (var prop in stransforms) { 
            if (stransforms[prop]) { 
                s += prop + ':' + stransforms[prop] + ';'; 
            } 
        } 
        s += ';'; 
        return s; 
    }; 
 
    CssTransformAxisLabel.prototype.calculateOffsets = function (box) { 
        var offsets = { x: 0, y: 0, degrees: 0 }; 
        if (this.position == 'bottom') { 
            offsets.x = box.left + box.width / 2 - this.labelWidth / 2; 
            offsets.y = box.top + box.height - this.labelHeight; 
        } else if (this.position == 'top') { 
            offsets.x = box.left + box.width / 2 - this.labelWidth / 2; 
            offsets.y = box.top; 
        } else if (this.position == 'left') { 
            offsets.degrees = -90; 
            offsets.x = box.left - this.labelWidth / 2 + this.labelHeight / 2; 
            offsets.y = box.height / 2 + box.top; 
        } else if (this.position == 'right') { 
            offsets.degrees = 90; 
            offsets.x = box.left + box.width - this.labelWidth / 2 
                        - this.labelHeight / 2; 
            offsets.y = box.height / 2 + box.top; 
        } 
        return offsets; 
    }; 
 
    CssTransformAxisLabel.prototype.draw = function (box) { 
        this.plot.getPlaceholder().find("." + this.axisName + "Label").remove(); 
        var offsets = this.calculateOffsets(box); 
        var elem = $('<div class="axisLabels ' + this.axisName + 
                     'Label" style="position:absolute; ' + 
                     this.transforms(offsets.degrees, offsets.x, offsets.y) + 
                     '">' + this.opts.axisLabel + '</div>'); 
        this.plot.getPlaceholder().append(elem); 
    }; 
 
 
    IeTransformAxisLabel.prototype = new CssTransformAxisLabel(); 
    IeTransformAxisLabel.prototype.constructor = IeTransformAxisLabel; 
    function IeTransformAxisLabel(axisName, position, padding, plot, opts) { 
        CssTransformAxisLabel.prototype.constructor.call(this, axisName, 
                                                         position, padding, 
                                                         plot, opts); 
        this.requiresResize = false; 
    } 
 
    IeTransformAxisLabel.prototype.transforms = function (degrees, x, y) { 
        // I didn't feel like learning the crazy Matrix stuff, so this uses 
        // a combination of the rotation transform and CSS positioning. 
        var s = ''; 
        if (degrees != 0) { 
            var rotation = degrees / 90; 
            while (rotation < 0) { 
                rotation += 4; 
            } 
            s += ' filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=' + rotation + '); '; 
            // see below 
            this.requiresResize = (this.position == 'right'); 
        } 
        if (x != 0) { 
            s += 'left: ' + x + 'px; '; 
        } 
        if (y != 0) { 
            s += 'top: ' + y + 'px; '; 
        } 
        return s; 
    }; 
 
    IeTransformAxisLabel.prototype.calculateOffsets = function (box) { 
        var offsets = CssTransformAxisLabel.prototype.calculateOffsets.call( 
                          this, box); 
        // adjust some values to take into account differences between 
        // CSS and IE rotations. 
        if (this.position == 'top') { 
            // FIXME: not sure why, but placing this exactly at the top causes  
            // the top axis label to flip to the bottom... 
            offsets.y = box.top + 1; 
        } else if (this.position == 'left') { 
            offsets.x = box.left; 
            offsets.y = box.height / 2 + box.top - this.labelWidth / 2; 
        } else if (this.position == 'right') { 
            offsets.x = box.left + box.width - this.labelHeight; 
            offsets.y = box.height / 2 + box.top - this.labelWidth / 2; 
        } 
        return offsets; 
    }; 
 
    IeTransformAxisLabel.prototype.draw = function (box) { 
        CssTransformAxisLabel.prototype.draw.call(this, box); 
        if (this.requiresResize) { 
            var elem = this.plot.getPlaceholder().find("." + this.axisName + "Label"); 
            // Since we used CSS positioning instead of transforms for 
            // translating the element, and since the positioning is done 
            // before any rotations, we have to reset the width and height 
            // in case the browser wrapped the text (specifically for the 
            // y2axis). 
            elem.css('width', this.labelWidth); 
            elem.css('height', this.labelHeight); 
        } 
    }; 
 
 
    function init(plot) { 
        // This is kind of a hack. There are no hooks in Flot between 
        // the creation and measuring of the ticks (setTicks, measureTickLabels 
        // in setupGrid() ) and the drawing of the ticks and plot box 
        // (insertAxisLabels in setupGrid() ). 
        // 
        // Therefore, we use a trick where we run the draw routine twice: 
        // the first time to get the tick measurements, so that we can change 
        // them, and then have it draw it again. 
        var secondPass = false; 
 
        var axisLabels = {}; 
        var axisOffsetCounts = { left: 0, right: 0, top: 0, bottom: 0 }; 
 
        var defaultPadding = 2;  // padding between axis and tick labels 
        plot.hooks.draw.push(function (plot, ctx) { 
            if (!secondPass) { 
                // MEASURE AND SET OPTIONS 
                $.each(plot.getAxes(), function (axisName, axis) { 
                    var opts = axis.options // Flot 0.7 
                        || plot.getOptions()[axisName]; // Flot 0.6 
                    if (!opts || !opts.axisLabel) 
                        return; 
 
                    var renderer = null; 
 
                    if (!opts.axisLabelUseHtml && 
                        navigator.appName == 'Microsoft Internet Explorer') { 
                        var ua = navigator.userAgent; 
                        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); 
                        if (re.exec(ua) != null) { 
                            rv = parseFloat(RegExp.$1); 
                        } 
                        if (rv >= 9 && !opts.axisLabelUseCanvas && !opts.axisLabelUseHtml) { 
                            renderer = CssTransformAxisLabel; 
                        } else if (!opts.axisLabelUseCanvas && !opts.axisLabelUseHtml) { 
                            renderer = IeTransformAxisLabel; 
                        } else if (opts.axisLabelUseCanvas) { 
                            renderer = CanvasAxisLabel; 
                        } else { 
                            renderer = HtmlAxisLabel; 
                        } 
                    } else { 
                        if (opts.axisLabelUseHtml || (!css3TransitionSupported() && !canvasTextSupported()) && !opts.axisLabelUseCanvas) { 
                            renderer = HtmlAxisLabel; 
                        } else if (opts.axisLabelUseCanvas || !css3TransitionSupported()) { 
                            renderer = CanvasAxisLabel; 
                        } else { 
                            renderer = CssTransformAxisLabel; 
                        } 
                    } 
 
                    var padding = opts.axisLabelPadding === undefined ? 
                                  defaultPadding : opts.axisLabelPadding; 
 
                    axisLabels[axisName] = new renderer(axisName, 
                                                        axis.position, padding, 
                                                        plot, opts); 
 
                    // flot interprets axis.labelHeight and .labelWidth as 
                    // the height and width of the tick labels. We increase 
                    // these values to make room for the axis label and 
                    // padding. 
 
                    axisLabels[axisName].calculateSize(); 
 
                    // AxisLabel.height and .width are the size of the 
                    // axis label and padding. 
                    axis.labelHeight += axisLabels[axisName].height; 
                    axis.labelWidth += axisLabels[axisName].width; 
                    opts.labelHeight = axis.labelHeight; 
                    opts.labelWidth = axis.labelWidth; 
                }); 
                // re-draw with new label widths and heights 
                secondPass = true; 
                plot.setupGrid(); 
                plot.draw(); 
            } else { 
                // DRAW 
                $.each(plot.getAxes(), function (axisName, axis) { 
                    var opts = axis.options // Flot 0.7 
                        || plot.getOptions()[axisName]; // Flot 0.6 
                    if (!opts || !opts.axisLabel) 
                        return; 
 
                    axisLabels[axisName].draw(axis.box); 
                }); 
            } 
        }); 
    } 
 
 
    $.plot.plugins.push({ 
        init: init, 
        options: options, 
        name: 'axisLabels', 
        version: '2.0b0' 
    }); 
})(jQuery); 
 
(function($,t,n){function p(){for(var n=r.length-1;n>=0;n--){var o=$(r[n]);if(o[0]==t||o.is(":visible")){var h=o.width(),d=o.height(),v=o.data(a);!v||h===v.w&&d===v.h?i[f]=i[l]:(i[f]=i[c],o.trigger(u,[v.w=h,v.h=d]))}else v=o.data(a),v.w=0,v.h=0}s!==null&&(s=t.requestAnimationFrame(p))}var r=[],i=$.resize=$.extend($.resize,{}),s,o="setTimeout",u="resize",a=u+"-special-event",f="delay",l="pendingDelay",c="activeDelay",h="throttleWindow";i[l]=250,i[c]=20,i[f]=i[l],i[h]=!0,$.event.special[u]={setup:function(){if(!i[h]&&this[o])return!1;var t=$(this);r.push(this),t.data(a,{w:t.width(),h:t.height()}),r.length===1&&(s=n,p())},teardown:function(){if(!i[h]&&this[o])return!1;var t=$(this);for(var n=r.length-1;n>=0;n--)if(r[n]==this){r.splice(n,1);break}t.removeData(a),r.length||(cancelAnimationFrame(s),s=null)},add:function(t){function s(t,i,s){var o=$(this),u=o.data(a);u.w=i!==n?i:o.width(),u.h=s!==n?s:o.height(),r.apply(this,arguments)}if(!i[h]&&this[o])return!1;var r;if($.isFunction(t))return r=t,s;r=t.handler,t.handler=s}},t.requestAnimationFrame||(t.requestAnimationFrame=function(){return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(e,n){return t.setTimeout(e,i[f])}}()),t.cancelAnimationFrame||(t.cancelAnimationFrame=function(){return t.webkitCancelRequestAnimationFrame||t.mozCancelRequestAnimationFrame||t.oCancelRequestAnimationFrame||t.msCancelRequestAnimationFrame||clearTimeout}())})(jQuery,this);(function($){var options={};function init(plot){function onResize(){var placeholder=plot.getPlaceholder();if(placeholder.width()==0||placeholder.height()==0)return;plot.resize();plot.setupGrid();plot.draw()}function bindEvents(plot,eventHolder){plot.getPlaceholder().resize(onResize)}function shutdown(plot,eventHolder){plot.getPlaceholder().unbind("resize",onResize)}plot.hooks.bindEvents.push(bindEvents);plot.hooks.shutdown.push(shutdown)}$.plot.plugins.push({init:init,options:options,name:"resize",version:"1.0"})})(jQuery); 
 
/** 
 * jQuery CSS Customizable Scrollbar 
 * 
 * Copyright 2015, Yuriy Khabarov 
 * Dual licensed under the MIT or GPL Version 2 licenses. 
 * 
 * If you found bug, please contact me via email <[email protected]> 
 * 
 * Compressed by http://jscompress.com/ 
 * 
 * @author Yuriy Khabarov aka Gromo 
 * @version 0.2.10 
 * @url https://github.com/gromo/jquery.scrollbar/ 
 * 
 */ 
!function(l,e){"function"==typeof define&&define.amd?define(["jquery"],e):e(l.jQuery)}(this,function(l){"use strict";function e(e){if(t.webkit&&!e)return{height:0,width:0};if(!t.data.outer){var o={border:"none","box-sizing":"content-box",height:"200px",margin:"0",padding:"0",width:"200px"};t.data.inner=l("<div>").css(l.extend({},o)),t.data.outer=l("<div>").css(l.extend({left:"-1000px",overflow:"scroll",position:"absolute",top:"-1000px"},o)).append(t.data.inner).appendTo("body")}return t.data.outer.scrollLeft(1e3).scrollTop(1e3),{height:Math.ceil(t.data.outer.offset().top-t.data.inner.offset().top||0),width:Math.ceil(t.data.outer.offset().left-t.data.inner.offset().left||0)}}function o(){var l=e(!0);return!(l.height||l.width)}function s(l){var e=l.originalEvent;return e.axis&&e.axis===e.HORIZONTAL_AXIS?!1:e.wheelDeltaX?!1:!0}var r=!1,t={data:{index:0,name:"scrollbar"},macosx:/mac/i.test(navigator.platform),mobile:/android|webos|iphone|ipad|ipod|blackberry/i.test(navigator.userAgent),overlay:null,scroll:null,scrolls:[],webkit:/webkit/i.test(navigator.userAgent)&&!/edge\/\d+/i.test(navigator.userAgent)};t.scrolls.add=function(l){this.remove(l).push(l)},t.scrolls.remove=function(e){for(;l.inArray(e,this)>=0;)this.splice(l.inArray(e,this),1);return this};var i={autoScrollSize:!0,autoUpdate:!0,debug:!1,disableBodyScroll:!1,duration:200,ignoreMobile:!1,ignoreOverlay:!1,scrollStep:30,showArrows:!1,stepScrolling:!0,scrollx:null,scrolly:null,onDestroy:null,onInit:null,onScroll:null,onUpdate:null},n=function(s){t.scroll||(t.overlay=o(),t.scroll=e(),a(),l(window).resize(function(){var l=!1;if(t.scroll&&(t.scroll.height||t.scroll.width)){var o=e();(o.height!==t.scroll.height||o.width!==t.scroll.width)&&(t.scroll=o,l=!0)}a(l)})),this.container=s,this.namespace=".scrollbar_"+t.data.index++,this.options=l.extend({},i,window.jQueryScrollbarOptions||{}),this.scrollTo=null,this.scrollx={},this.scrolly={},s.data(t.data.name,this),t.scrolls.add(this)};n.prototype={destroy:function(){if(this.wrapper){this.container.removeData(t.data.name),t.scrolls.remove(this);var e=this.container.scrollLeft(),o=this.container.scrollTop();this.container.insertBefore(this.wrapper).css({height:"",margin:"","max-height":""}).removeClass("scroll-content scroll-scrollx_visible scroll-scrolly_visible").off(this.namespace).scrollLeft(e).scrollTop(o),this.scrollx.scroll.removeClass("scroll-scrollx_visible").find("div").andSelf().off(this.namespace),this.scrolly.scroll.removeClass("scroll-scrolly_visible").find("div").andSelf().off(this.namespace),this.wrapper.remove(),l(document).add("body").off(this.namespace),l.isFunction(this.options.onDestroy)&&this.options.onDestroy.apply(this,[this.container])}},init:function(e){var o=this,r=this.container,i=this.containerWrapper||r,n=this.namespace,c=l.extend(this.options,e||{}),a={x:this.scrollx,y:this.scrolly},d=this.wrapper,h={scrollLeft:r.scrollLeft(),scrollTop:r.scrollTop()};if(t.mobile&&c.ignoreMobile||t.overlay&&c.ignoreOverlay||t.macosx&&!t.webkit)return!1;if(d)i.css({height:"auto","margin-bottom":-1*t.scroll.height+"px","margin-right":-1*t.scroll.width+"px","max-height":""});else{if(this.wrapper=d=l("<div>").addClass("scroll-wrapper").addClass(r.attr("class")).css("position","absolute"==r.css("position")?"absolute":"relative").insertBefore(r).append(r),r.is("textarea")&&(this.containerWrapper=i=l("<div>").insertBefore(r).append(r),d.addClass("scroll-textarea")),i.addClass("scroll-content").css({height:"auto","margin-bottom":-1*t.scroll.height+"px","margin-right":-1*t.scroll.width+"px","max-height":""}),r.on("scroll"+n,function(e){l.isFunction(c.onScroll)&&c.onScroll.call(o,{maxScroll:a.y.maxScrollOffset,scroll:r.scrollTop(),size:a.y.size,visible:a.y.visible},{maxScroll:a.x.maxScrollOffset,scroll:r.scrollLeft(),size:a.x.size,visible:a.x.visible}),a.x.isVisible&&a.x.scroll.bar.css("left",r.scrollLeft()*a.x.kx+"px"),a.y.isVisible&&a.y.scroll.bar.css("top",r.scrollTop()*a.y.kx+"px")}),d.on("scroll"+n,function(){d.scrollTop(0).scrollLeft(0)}),c.disableBodyScroll){var p=function(l){s(l)?a.y.isVisible&&a.y.mousewheel(l):a.x.isVisible&&a.x.mousewheel(l)};d.on("MozMousePixelScroll"+n,p),d.on("mousewheel"+n,p),t.mobile&&d.on("touchstart"+n,function(e){var o=e.originalEvent.touches&&e.originalEvent.touches[0]||e,s={pageX:o.pageX,pageY:o.pageY},t={left:r.scrollLeft(),top:r.scrollTop()};l(document).on("touchmove"+n,function(l){var e=l.originalEvent.targetTouches&&l.originalEvent.targetTouches[0]||l;r.scrollLeft(t.left+s.pageX-e.pageX),r.scrollTop(t.top+s.pageY-e.pageY),l.preventDefault()}),l(document).on("touchend"+n,function(){l(document).off(n)})})}l.isFunction(c.onInit)&&c.onInit.apply(this,[r])}l.each(a,function(e,t){var i=null,d=1,h="x"===e?"scrollLeft":"scrollTop",p=c.scrollStep,u=function(){var l=r[h]();r[h](l+p),1==d&&l+p>=f&&(l=r[h]()),-1==d&&f>=l+p&&(l=r[h]()),r[h]()==l&&i&&i()},f=0;t.scroll||(t.scroll=o._getScroll(c["scroll"+e]).addClass("scroll-"+e),c.showArrows&&t.scroll.addClass("scroll-element_arrows_visible"),t.mousewheel=function(l){if(!t.isVisible||"x"===e&&s(l))return!0;if("y"===e&&!s(l))return a.x.mousewheel(l),!0;var i=-1*l.originalEvent.wheelDelta||l.originalEvent.detail,n=t.size-t.visible-t.offset;return(i>0&&n>f||0>i&&f>0)&&(f+=i,0>f&&(f=0),f>n&&(f=n),o.scrollTo=o.scrollTo||{},o.scrollTo[h]=f,setTimeout(function(){o.scrollTo&&(r.stop().animate(o.scrollTo,240,"linear",function(){f=r[h]()}),o.scrollTo=null)},1)),l.preventDefault(),!1},t.scroll.on("MozMousePixelScroll"+n,t.mousewheel).on("mousewheel"+n,t.mousewheel).on("mouseenter"+n,function(){f=r[h]()}),t.scroll.find(".scroll-arrow, .scroll-element_track").on("mousedown"+n,function(s){if(1!=s.which)return!0;d=1;var n={eventOffset:s["x"===e?"pageX":"pageY"],maxScrollValue:t.size-t.visible-t.offset,scrollbarOffset:t.scroll.bar.offset()["x"===e?"left":"top"],scrollbarSize:t.scroll.bar["x"===e?"outerWidth":"outerHeight"]()},a=0,v=0;return l(this).hasClass("scroll-arrow")?(d=l(this).hasClass("scroll-arrow_more")?1:-1,p=c.scrollStep*d,f=d>0?n.maxScrollValue:0):(d=n.eventOffset>n.scrollbarOffset+n.scrollbarSize?1:n.eventOffset<n.scrollbarOffset?-1:0,p=Math.round(.75*t.visible)*d,f=n.eventOffset-n.scrollbarOffset-(c.stepScrolling?1==d?n.scrollbarSize:0:Math.round(n.scrollbarSize/2)),f=r[h]()+f/t.kx),o.scrollTo=o.scrollTo||{},o.scrollTo[h]=c.stepScrolling?r[h]()+p:f,c.stepScrolling&&(i=function(){f=r[h](),clearInterval(v),clearTimeout(a),a=0,v=0},a=setTimeout(function(){v=setInterval(u,40)},c.duration+100)),setTimeout(function(){o.scrollTo&&(r.animate(o.scrollTo,c.duration),o.scrollTo=null)},1),o._handleMouseDown(i,s)}),t.scroll.bar.on("mousedown"+n,function(s){if(1!=s.which)return!0;var i=s["x"===e?"pageX":"pageY"],c=r[h]();return t.scroll.addClass("scroll-draggable"),l(document).on("mousemove"+n,function(l){var o=parseInt((l["x"===e?"pageX":"pageY"]-i)/t.kx,10);r[h](c+o)}),o._handleMouseDown(function(){t.scroll.removeClass("scroll-draggable"),f=r[h]()},s)}))}),l.each(a,function(l,e){var o="scroll-scroll"+l+"_visible",s="x"==l?a.y:a.x;e.scroll.removeClass(o),s.scroll.removeClass(o),i.removeClass(o)}),l.each(a,function(e,o){l.extend(o,"x"==e?{offset:parseInt(r.css("left"),10)||0,size:r.prop("scrollWidth"),visible:d.width()}:{offset:parseInt(r.css("top"),10)||0,size:r.prop("scrollHeight"),visible:d.height()})}),this._updateScroll("x",this.scrollx),this._updateScroll("y",this.scrolly),l.isFunction(c.onUpdate)&&c.onUpdate.apply(this,[r]),l.each(a,function(l,e){var o="x"===l?"left":"top",s="x"===l?"outerWidth":"outerHeight",t="x"===l?"width":"height",i=parseInt(r.css(o),10)||0,n=e.size,a=e.visible+i,d=e.scroll.size[s]()+(parseInt(e.scroll.size.css(o),10)||0);c.autoScrollSize&&(e.scrollbarSize=parseInt(d*a/n,10),e.scroll.bar.css(t,e.scrollbarSize+"px")),e.scrollbarSize=e.scroll.bar[s](),e.kx=(d-e.scrollbarSize)/(n-a)||1,e.maxScrollOffset=n-a}),r.scrollLeft(h.scrollLeft).scrollTop(h.scrollTop).trigger("scroll")},_getScroll:function(e){var o={advanced:['<div class="scroll-element">','<div class="scroll-element_corner"></div>','<div class="scroll-arrow scroll-arrow_less"></div>','<div class="scroll-arrow scroll-arrow_more"></div>','<div class="scroll-element_outer">','<div class="scroll-element_size"></div>','<div class="scroll-element_inner-wrapper">','<div class="scroll-element_inner scroll-element_track">','<div class="scroll-element_inner-bottom"></div>',"</div>","</div>",'<div class="scroll-bar">','<div class="scroll-bar_body">','<div class="scroll-bar_body-inner"></div>',"</div>",'<div class="scroll-bar_bottom"></div>','<div class="scroll-bar_center"></div>',"</div>","</div>","</div>"].join(""),simple:['<div class="scroll-element">','<div class="scroll-element_outer">','<div class="scroll-element_size"></div>','<div class="scroll-element_track"></div>','<div class="scroll-bar"></div>',"</div>","</div>"].join("")};return o[e]&&(e=o[e]),e||(e=o.simple),e="string"==typeof e?l(e).appendTo(this.wrapper):l(e),l.extend(e,{bar:e.find(".scroll-bar"),size:e.find(".scroll-element_size"),track:e.find(".scroll-element_track")}),e},_handleMouseDown:function(e,o){var s=this.namespace;return l(document).on("blur"+s,function(){l(document).add("body").off(s),e&&e()}),l(document).on("dragstart"+s,function(l){return l.preventDefault(),!1}),l(document).on("mouseup"+s,function(){l(document).add("body").off(s),e&&e()}),l("body").on("selectstart"+s,function(l){return l.preventDefault(),!1}),o&&o.preventDefault(),!1},_updateScroll:function(e,o){var s=this.container,r=this.containerWrapper||s,i="scroll-scroll"+e+"_visible",n="x"===e?this.scrolly:this.scrollx,c=parseInt(this.container.css("x"===e?"left":"top"),10)||0,a=this.wrapper,d=o.size,h=o.visible+c;o.isVisible=d-h>1,o.isVisible?(o.scroll.addClass(i),n.scroll.addClass(i),r.addClass(i)):(o.scroll.removeClass(i),n.scroll.removeClass(i),r.removeClass(i)),"y"===e&&(s.is("textarea")||h>d?r.css({height:h+t.scroll.height+"px","max-height":"none"}):r.css({"max-height":h+t.scroll.height+"px"})),(o.size!=s.prop("scrollWidth")||n.size!=s.prop("scrollHeight")||o.visible!=a.width()||n.visible!=a.height()||o.offset!=(parseInt(s.css("left"),10)||0)||n.offset!=(parseInt(s.css("top"),10)||0))&&(l.extend(this.scrollx,{offset:parseInt(s.css("left"),10)||0,size:s.prop("scrollWidth"),visible:a.width()}),l.extend(this.scrolly,{offset:parseInt(s.css("top"),10)||0,size:this.container.prop("scrollHeight"),visible:a.height()}),this._updateScroll("x"===e?"y":"x",n))}};var c=n;l.fn.scrollbar=function(e,o){return"string"!=typeof e&&(o=e,e="init"),"undefined"==typeof o&&(o=[]),l.isArray(o)||(o=[o]),this.not("body, .scroll-wrapper").each(function(){var s=l(this),r=s.data(t.data.name);(r||"init"===e)&&(r||(r=new c(s)),r[e]&&r[e].apply(r,o))}),this},l.fn.scrollbar.options=i;var a=function(){var l=0,e=0;return function(o){var s,i,n,c,d,h,p;for(s=0;s<t.scrolls.length;s++)c=t.scrolls[s],i=c.container,n=c.options,d=c.wrapper,h=c.scrollx,p=c.scrolly,(o||n.autoUpdate&&d&&d.is(":visible")&&(i.prop("scrollWidth")!=h.size||i.prop("scrollHeight")!=p.size||d.width()!=h.visible||d.height()!=p.visible))&&(c.init(),n.debug&&(window.console&&console.log({scrollHeight:i.prop("scrollHeight")+":"+c.scrolly.size,scrollWidth:i.prop("scrollWidth")+":"+c.scrollx.size,visibleHeight:d.height()+":"+c.scrolly.visible,visibleWidth:d.width()+":"+c.scrollx.visible},!0),e++));r&&e>10?(window.console&&console.log("Scroll updates exceed 10"),a=function(){}):(clearTimeout(l),l=setTimeout(a,300))}}();window.angular&&!function(l){l.module("jQueryScrollbar",[]).provider("jQueryScrollbar",function(){var e=i;return{setOptions:function(o){l.extend(e,o)},$get:function(){return{options:l.copy(e)}}}}).directive("jqueryScrollbar",["jQueryScrollbar","$parse",function(l,e){return{restrict:"AC",link:function(o,s,r){var t=e(r.jqueryScrollbar),i=t(o);s.scrollbar(i||l.options).on("$destroy",function(){s.scrollbar("destroy")})}}}])}(window.angular)}); 
 
/* 
 Copyright (C) Federico Zivolo 2020 
 Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). 
 */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=e.ownerDocument.defaultView,n=o.getComputedStyle(e,null);return t?n[t]:n}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll|overlay)/.test(r+s+p)?e:n(o(e))}function i(e){return e&&e.referenceNode?e.referenceNode:e}function r(e){return 11===e?re:10===e?pe:re||pe}function p(e){if(!e)return document.documentElement;for(var o=r(10)?document.body:null,n=e.offsetParent||null;n===o&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TH','TD','TABLE'].indexOf(n.nodeName)&&'static'===t(n,'position')?p(n):n:e?e.ownerDocument.documentElement:document.documentElement}function s(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||p(e.firstElementChild)===e)}function d(e){return null===e.parentNode?e:d(e.parentNode)}function a(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);var l=r.commonAncestorContainer;if(e!==l&&t!==l||n.contains(i))return s(l)?l:p(l);var f=d(e);return f.host?a(f.host,t):a(e,d(t).host)}function l(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:'top',o='top'===t?'scrollTop':'scrollLeft',n=e.nodeName;if('BODY'===n||'HTML'===n){var i=e.ownerDocument.documentElement,r=e.ownerDocument.scrollingElement||i;return r[o]}return e[o]}function f(e,t){var o=2<arguments.length&&void 0!==arguments[2]&&arguments[2],n=l(t,'top'),i=l(t,'left'),r=o?-1:1;return e.top+=n*r,e.bottom+=n*r,e.left+=i*r,e.right+=i*r,e}function m(e,t){var o='x'===t?'Left':'Top',n='Left'==o?'Right':'Bottom';return parseFloat(e['border'+o+'Width'])+parseFloat(e['border'+n+'Width'])}function h(e,t,o,n){return ee(t['offset'+e],t['scroll'+e],o['client'+e],o['offset'+e],o['scroll'+e],r(10)?parseInt(o['offset'+e])+parseInt(n['margin'+('Height'===e?'Top':'Left')])+parseInt(n['margin'+('Height'===e?'Bottom':'Right')]):0)}function c(e){var t=e.body,o=e.documentElement,n=r(10)&&getComputedStyle(o);return{height:h('Height',t,o,n),width:h('Width',t,o,n)}}function g(e){return le({},e,{right:e.left+e.width,bottom:e.top+e.height})}function u(e){var o={};try{if(r(10)){o=e.getBoundingClientRect();var n=l(e,'top'),i=l(e,'left');o.top+=n,o.left+=i,o.bottom+=n,o.right+=i}else o=e.getBoundingClientRect()}catch(t){}var p={left:o.left,top:o.top,width:o.right-o.left,height:o.bottom-o.top},s='HTML'===e.nodeName?c(e.ownerDocument):{},d=s.width||e.clientWidth||p.width,a=s.height||e.clientHeight||p.height,f=e.offsetWidth-d,h=e.offsetHeight-a;if(f||h){var u=t(e);f-=m(u,'x'),h-=m(u,'y'),p.width-=f,p.height-=h}return g(p)}function b(e,o){var i=2<arguments.length&&void 0!==arguments[2]&&arguments[2],p=r(10),s='HTML'===o.nodeName,d=u(e),a=u(o),l=n(e),m=t(o),h=parseFloat(m.borderTopWidth),c=parseFloat(m.borderLeftWidth);i&&s&&(a.top=ee(a.top,0),a.left=ee(a.left,0));var b=g({top:d.top-a.top-h,left:d.left-a.left-c,width:d.width,height:d.height});if(b.marginTop=0,b.marginLeft=0,!p&&s){var w=parseFloat(m.marginTop),y=parseFloat(m.marginLeft);b.top-=h-w,b.bottom-=h-w,b.left-=c-y,b.right-=c-y,b.marginTop=w,b.marginLeft=y}return(p&&!i?o.contains(l):o===l&&'BODY'!==l.nodeName)&&(b=f(b,o)),b}function w(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=e.ownerDocument.documentElement,n=b(e,o),i=ee(o.clientWidth,window.innerWidth||0),r=ee(o.clientHeight,window.innerHeight||0),p=t?0:l(o),s=t?0:l(o,'left'),d={top:p-n.top+n.marginTop,left:s-n.left+n.marginLeft,width:i,height:r};return g(d)}function y(e){var n=e.nodeName;if('BODY'===n||'HTML'===n)return!1;if('fixed'===t(e,'position'))return!0;var i=o(e);return!!i&&y(i)}function E(e){if(!e||!e.parentElement||r())return document.documentElement;for(var o=e.parentElement;o&&'none'===t(o,'transform');)o=o.parentElement;return o||document.documentElement}function v(e,t,r,p){var s=4<arguments.length&&void 0!==arguments[4]&&arguments[4],d={top:0,left:0},l=s?E(e):a(e,i(t));if('viewport'===p)d=w(l,s);else{var f;'scrollParent'===p?(f=n(o(t)),'BODY'===f.nodeName&&(f=e.ownerDocument.documentElement)):'window'===p?f=e.ownerDocument.documentElement:f=p;var m=b(f,l,s);if('HTML'===f.nodeName&&!y(l)){var h=c(e.ownerDocument),g=h.height,u=h.width;d.top+=m.top-m.marginTop,d.bottom=g+m.top,d.left+=m.left-m.marginLeft,d.right=u+m.left}else d=m}r=r||0;var v='number'==typeof r;return d.left+=v?r:r.left||0,d.top+=v?r:r.top||0,d.right-=v?r:r.right||0,d.bottom-=v?r:r.bottom||0,d}function x(e){var t=e.width,o=e.height;return t*o}function O(e,t,o,n,i){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf('auto'))return e;var p=v(o,n,r,i),s={top:{width:p.width,height:t.top-p.top},right:{width:p.right-t.right,height:p.height},bottom:{width:p.width,height:p.bottom-t.bottom},left:{width:t.left-p.left,height:p.height}},d=Object.keys(s).map(function(e){return le({key:e},s[e],{area:x(s[e])})}).sort(function(e,t){return t.area-e.area}),a=d.filter(function(e){var t=e.width,n=e.height;return t>=o.clientWidth&&n>=o.clientHeight}),l=0<a.length?a[0].key:d[0].key,f=e.split('-')[1];return l+(f?'-'+f:'')}function L(e,t,o){var n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null,r=n?E(t):a(t,i(o));return b(o,r,n)}function S(e){var t=e.ownerDocument.defaultView,o=t.getComputedStyle(e),n=parseFloat(o.marginTop||0)+parseFloat(o.marginBottom||0),i=parseFloat(o.marginLeft||0)+parseFloat(o.marginRight||0),r={width:e.offsetWidth+i,height:e.offsetHeight+n};return r}function T(e){var t={left:'right',right:'left',bottom:'top',top:'bottom'};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function C(e,t,o){o=o.split('-')[0];var n=S(e),i={width:n.width,height:n.height},r=-1!==['right','left'].indexOf(o),p=r?'top':'left',s=r?'left':'top',d=r?'height':'width',a=r?'width':'height';return i[p]=t[p]+t[d]/2-n[d]/2,i[s]=o===s?t[s]-n[a]:t[T(s)],i}function D(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function N(e,t,o){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===o});var n=D(e,function(e){return e[t]===o});return e.indexOf(n)}function P(t,o,n){var i=void 0===n?t:t.slice(0,N(t,'name',n));return i.forEach(function(t){t['function']&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');var n=t['function']||t.fn;t.enabled&&e(n)&&(o.offsets.popper=g(o.offsets.popper),o.offsets.reference=g(o.offsets.reference),o=n(o,t))}),o}function k(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=L(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=C(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?'fixed':'absolute',e=P(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function W(e,t){return e.some(function(e){var o=e.name,n=e.enabled;return n&&o===t})}function B(e){for(var t=[!1,'ms','Webkit','Moz','O'],o=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<t.length;n++){var i=t[n],r=i?''+i+o:e;if('undefined'!=typeof document.body.style[r])return r}return null}function H(){return this.state.isDestroyed=!0,W(this.modifiers,'applyStyle')&&(this.popper.removeAttribute('x-placement'),this.popper.style.position='',this.popper.style.top='',this.popper.style.left='',this.popper.style.right='',this.popper.style.bottom='',this.popper.style.willChange='',this.popper.style[B('transform')]=''),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function A(e){var t=e.ownerDocument;return t?t.defaultView:window}function M(e,t,o,i){var r='BODY'===e.nodeName,p=r?e.ownerDocument.defaultView:e;p.addEventListener(t,o,{passive:!0}),r||M(n(p.parentNode),t,o,i),i.push(p)}function F(e,t,o,i){o.updateBound=i,A(e).addEventListener('resize',o.updateBound,{passive:!0});var r=n(e);return M(r,'scroll',o.updateBound,o.scrollParents),o.scrollElement=r,o.eventsEnabled=!0,o}function I(){this.state.eventsEnabled||(this.state=F(this.reference,this.options,this.state,this.scheduleUpdate))}function R(e,t){return A(e).removeEventListener('resize',t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener('scroll',t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function U(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=R(this.reference,this.state))}function Y(e){return''!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function V(e,t){Object.keys(t).forEach(function(o){var n='';-1!==['width','height','top','right','bottom','left'].indexOf(o)&&Y(t[o])&&(n='px'),e.style[o]=t[o]+n})}function j(e,t){Object.keys(t).forEach(function(o){var n=t[o];!1===n?e.removeAttribute(o):e.setAttribute(o,t[o])})}function q(e,t){var o=e.offsets,n=o.popper,i=o.reference,r=$,p=function(e){return e},s=r(i.width),d=r(n.width),a=-1!==['left','right'].indexOf(e.placement),l=-1!==e.placement.indexOf('-'),f=t?a||l||s%2==d%2?r:Z:p,m=t?r:p;return{left:f(1==s%2&&1==d%2&&!l&&t?n.left-1:n.left),top:m(n.top),bottom:m(n.bottom),right:f(n.right)}}function K(e,t,o){var n=D(e,function(e){var o=e.name;return o===t}),i=!!n&&e.some(function(e){return e.name===o&&e.enabled&&e.order<n.order});if(!i){var r='`'+t+'`';console.warn('`'+o+'`'+' modifier is required by '+r+' modifier in order to work, be sure to include it before '+r+'!')}return i}function z(e){return'end'===e?'start':'start'===e?'end':e}function G(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=he.indexOf(e),n=he.slice(o+1).concat(he.slice(0,o));return t?n.reverse():n}function _(e,t,o,n){var i=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+i[1],p=i[2];if(!r)return e;if(0===p.indexOf('%')){var s;switch(p){case'%p':s=o;break;case'%':case'%r':default:s=n;}var d=g(s);return d[t]/100*r}if('vh'===p||'vw'===p){var a;return a='vh'===p?ee(document.documentElement.clientHeight,window.innerHeight||0):ee(document.documentElement.clientWidth,window.innerWidth||0),a/100*r}return r}function X(e,t,o,n){var i=[0,0],r=-1!==['right','left'].indexOf(n),p=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=p.indexOf(D(p,function(e){return-1!==e.search(/,|\s/)}));p[s]&&-1===p[s].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');var d=/\s*,\s*|\s+/,a=-1===s?[p]:[p.slice(0,s).concat([p[s].split(d)[0]]),[p[s].split(d)[1]].concat(p.slice(s+1))];return a=a.map(function(e,n){var i=(1===n?!r:r)?'height':'width',p=!1;return e.reduce(function(e,t){return''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,p=!0,e):p?(e[e.length-1]+=t,p=!1,e):e.concat(t)},[]).map(function(e){return _(e,i,t,o)})}),a.forEach(function(e,t){e.forEach(function(o,n){Y(o)&&(i[t]+=o*('-'===e[n-1]?-1:1))})}),i}function J(e,t){var o,n=t.offset,i=e.placement,r=e.offsets,p=r.popper,s=r.reference,d=i.split('-')[0];return o=Y(+n)?[+n,0]:X(n,p,s,d),'left'===d?(p.top+=o[0],p.left-=o[1]):'right'===d?(p.top+=o[0],p.left+=o[1]):'top'===d?(p.left+=o[0],p.top-=o[1]):'bottom'===d&&(p.left+=o[0],p.top+=o[1]),e.popper=p,e}var Q=Math.min,Z=Math.floor,$=Math.round,ee=Math.max,te='undefined'!=typeof window&&'undefined'!=typeof document&&'undefined'!=typeof navigator,oe=function(){for(var e=['Edge','Trident','Firefox'],t=0;t<e.length;t+=1)if(te&&0<=navigator.userAgent.indexOf(e[t]))return 1;return 0}(),ne=te&&window.Promise,ie=ne?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},oe))}},re=te&&!!(window.MSInputMethodContext&&document.documentMode),pe=te&&/MSIE 10/.test(navigator.userAgent),se=function(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')},de=function(){function e(e,t){for(var o,n=0;n<t.length;n++)o=t[n],o.enumerable=o.enumerable||!1,o.configurable=!0,'value'in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),ae=function(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e},le=Object.assign||function(e){for(var t,o=1;o<arguments.length;o++)for(var n in t=arguments[o],t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},fe=te&&/Firefox/i.test(navigator.userAgent),me=['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'],he=me.slice(3),ce={FLIP:'flip',CLOCKWISE:'clockwise',COUNTERCLOCKWISE:'counterclockwise'},ge=function(){function t(o,n){var i=this,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};se(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=ie(this.update.bind(this)),this.options=le({},t.Defaults,r),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=o&&o.jquery?o[0]:o,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(le({},t.Defaults.modifiers,r.modifiers)).forEach(function(e){i.options.modifiers[e]=le({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return le({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(t){t.enabled&&e(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)}),this.update();var p=this.options.eventsEnabled;p&&this.enableEventListeners(),this.state.eventsEnabled=p}return de(t,[{key:'update',value:function(){return k.call(this)}},{key:'destroy',value:function(){return H.call(this)}},{key:'enableEventListeners',value:function(){return I.call(this)}},{key:'disableEventListeners',value:function(){return U.call(this)}}]),t}();return ge.Utils=('undefined'==typeof window?global:window).PopperUtils,ge.placements=me,ge.Defaults={placement:'bottom',positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,o=t.split('-')[0],n=t.split('-')[1];if(n){var i=e.offsets,r=i.reference,p=i.popper,s=-1!==['bottom','top'].indexOf(o),d=s?'left':'top',a=s?'width':'height',l={start:ae({},d,r[d]),end:ae({},d,r[d]+r[a]-p[a])};e.offsets.popper=le({},p,l[n])}return e}},offset:{order:200,enabled:!0,fn:J,offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var o=t.boundariesElement||p(e.instance.popper);e.instance.reference===o&&(o=p(o));var n=B('transform'),i=e.instance.popper.style,r=i.top,s=i.left,d=i[n];i.top='',i.left='',i[n]='';var a=v(e.instance.popper,e.instance.reference,t.padding,o,e.positionFixed);i.top=r,i.left=s,i[n]=d,t.boundaries=a;var l=t.priority,f=e.offsets.popper,m={primary:function(e){var o=f[e];return f[e]<a[e]&&!t.escapeWithReference&&(o=ee(f[e],a[e])),ae({},e,o)},secondary:function(e){var o='right'===e?'left':'top',n=f[o];return f[e]>a[e]&&!t.escapeWithReference&&(n=Q(f[o],a[e]-('right'===e?f.width:f.height))),ae({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=le({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]<r(n[d])&&(e.offsets.popper[d]=r(n[d])-o[a]),o[d]>r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!K(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-u<s[m]&&(e.offsets.popper[m]-=s[m]-(d[c]-u)),d[m]+u>s[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f]),E=parseFloat(w['border'+f+'Width']),v=b-e.offsets.popper[m]-y-E;return v=ee(Q(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},ae(n,m,$(v)),ae(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case ce.FLIP:p=[n,i];break;case ce.CLOCKWISE:p=G(n);break;case ce.COUNTERCLOCKWISE:p=G(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)<f(l.right)||'top'===n&&f(a.bottom)>f(l.top)||'bottom'===n&&f(a.top)<f(l.bottom),h=f(a.left)<f(o.left),c=f(a.right)>f(o.right),g=f(a.top)<f(o.top),u=f(a.bottom)>f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u),E=!!t.flipVariationsByContent&&(w&&'start'===r&&c||w&&'end'===r&&h||!w&&'start'===r&&u||!w&&'end'===r&&g),v=y||E;(m||b||v)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),v&&(r=z(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=le({},e.offsets.popper,C(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport',flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!K(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=D(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottom<o.top||t.left>o.right||t.top>o.bottom||t.right<o.left){if(!0===e.hide)return e;e.hide=!0,e.attributes['x-out-of-boundaries']=''}else{if(!1===e.hide)return e;e.hide=!1,e.attributes['x-out-of-boundaries']=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var o=t.x,n=t.y,i=e.offsets.popper,r=D(e.instance.modifiers,function(e){return'applyStyle'===e.name}).gpuAcceleration;void 0!==r&&console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');var s,d,a=void 0===r?t.gpuAcceleration:r,l=p(e.instance.popper),f=u(l),m={position:i.position},h=q(e,2>window.devicePixelRatio||!fe),c='bottom'===o?'top':'bottom',g='right'===n?'left':'right',b=B('transform');if(d='bottom'==c?'HTML'===l.nodeName?-l.clientHeight+h.bottom:-f.height+h.bottom:h.top,s='right'==g?'HTML'===l.nodeName?-l.clientWidth+h.right:-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[g]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==g?-1:1;m[c]=d*w,m[g]=s*y,m.willChange=c+', '+g}var E={"x-placement":e.placement};return e.attributes=le({},E,e.attributes),e.styles=le({},m,e.styles),e.arrowStyles=le({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return V(e.instance.popper,e.styles),j(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&V(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,n,i){var r=L(i,t,e,o.positionFixed),p=O(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),V(t,{position:o.positionFixed?'fixed':'absolute'}),o},gpuAcceleration:void 0}}},ge}); 
 
 
/*! 
  * Bootstrap v4.6.2 (https://getbootstrap.com/) 
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 
  */ 
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery,t.Popper)}(this,(function(t,e,n){"use strict";function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var o=i(e),a=i(n);function s(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function l(t,e,n){return e&&s(t.prototype,e),n&&s(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function r(){return r=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},r.apply(this,arguments)}function u(t,e){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},u(t,e)}var f="transitionend";var d={TRANSITION_END:"bsTransitionEnd",getUID:function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=o.default(t).css("transition-duration"),n=o.default(t).css("transition-delay"),i=parseFloat(e),a=parseFloat(n);return i||a?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){o.default(t).trigger(f)},supportsTransitionEnd:function(){return Boolean(f)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],a=e[i],s=a&&d.isElement(a)?"element":null===(l=a)||"undefined"==typeof l?""+l:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var l},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){var e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?d.findShadowRoot(t.parentNode):null},jQueryDetection:function(){if("undefined"==typeof o.default)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=o.default.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||t[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};d.jQueryDetection(),o.default.fn.emulateTransitionEnd=function(t){var e=this,n=!1;return o.default(this).one(d.TRANSITION_END,(function(){n=!0})),setTimeout((function(){n||d.triggerTransitionEnd(e)}),t),this},o.default.event.special[d.TRANSITION_END]={bindType:f,delegateType:f,handle:function(t){if(o.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var c="bs.alert",h=o.default.fn.alert,g=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.default.removeData(this._element,c),this._element=null},e._getRootElement=function(t){var e=d.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=o.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=o.default.Event("close.bs.alert");return o.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(o.default(t).removeClass("show"),o.default(t).hasClass("fade")){var n=d.getTransitionDurationFromElement(t);o.default(t).one(d.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){o.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(c);i||(i=new t(this),n.data(c,i)),"close"===e&&i[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}}]),t}();o.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',g._handleDismiss(new g)),o.default.fn.alert=g._jQueryInterface,o.default.fn.alert.Constructor=g,o.default.fn.alert.noConflict=function(){return o.default.fn.alert=h,g._jQueryInterface};var m="bs.button",p=o.default.fn.button,_="active",v='[data-toggle^="button"]',y='input:not([type="hidden"])',b=".btn",E=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=o.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var i=this._element.querySelector(y);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(_))t=!1;else{var a=n.querySelector(".active");a&&o.default(a).removeClass(_)}t&&("checkbox"!==i.type&&"radio"!==i.type||(i.checked=!this._element.classList.contains(_)),this.shouldAvoidTriggerChange||o.default(i).trigger("change")),i.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(_)),t&&o.default(this._element).toggleClass(_))},e.dispose=function(){o.default.removeData(this._element,m),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this),a=i.data(m);a||(a=new t(this),i.data(m,a)),a.shouldAvoidTriggerChange=n,"toggle"===e&&a[e]()}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}}]),t}();o.default(document).on("click.bs.button.data-api",v,(function(t){var e=t.target,n=e;if(o.default(e).hasClass("btn")||(e=o.default(e).closest(b)[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var i=e.querySelector(y);if(i&&(i.hasAttribute("disabled")||i.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||E._jQueryInterface.call(o.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",v,(function(t){var e=o.default(t.target).closest(b)[0];o.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),o.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e<n;e++){var i=t[e],o=i.querySelector(y);o.checked||o.hasAttribute("checked")?i.classList.add(_):i.classList.remove(_)}for(var a=0,s=(t=[].slice.call(document.querySelectorAll('[data-toggle="button"]'))).length;a<s;a++){var l=t[a];"true"===l.getAttribute("aria-pressed")?l.classList.add(_):l.classList.remove(_)}})),o.default.fn.button=E._jQueryInterface,o.default.fn.button.Constructor=E,o.default.fn.button.noConflict=function(){return o.default.fn.button=p,E._jQueryInterface};var T="carousel",w="bs.carousel",C=o.default.fn[T],S="active",N="next",D="prev",A="slid.bs.carousel",I=".active.carousel-item",k={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},O={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},j={TOUCH:"touch",PEN:"pen"},P=function(){function t(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(".carousel-indicators"),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide(N)},e.nextWhenVisible=function(){var t=o.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide(D)},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(d.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(I);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)o.default(this._element).one(A,(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?N:D;this._slide(i,this._items[t])}},e.dispose=function(){o.default(this._element).off(".bs.carousel"),o.default.removeData(this._element,w),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=r({},k,t),d.typeCheckConfig(T,t,O),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&o.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&o.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&j[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&j[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};o.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(o.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(o.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),o.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n=t===N,i=t===D,o=this._getItemIndex(e),a=this._items.length-1;if((i&&0===o||n&&o===a)&&!this._config.wrap)return e;var s=(o+(t===D?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(I)),a=o.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:n});return o.default(this._element).trigger(a),a},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));o.default(e).removeClass(S);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&o.default(n).addClass(S)}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(I);if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,i,a,s=this,l=this._element.querySelector(I),r=this._getItemIndex(l),u=e||l&&this._getItemByDirection(t,l),f=this._getItemIndex(u),c=Boolean(this._interval);if(t===N?(n="carousel-item-left",i="carousel-item-next",a="left"):(n="carousel-item-right",i="carousel-item-prev",a="right"),u&&o.default(u).hasClass(S))this._isSliding=!1;else if(!this._triggerSlideEvent(u,a).isDefaultPrevented()&&l&&u){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(u),this._activeElement=u;var h=o.default.Event(A,{relatedTarget:u,direction:a,from:r,to:f});if(o.default(this._element).hasClass("slide")){o.default(u).addClass(i),d.reflow(u),o.default(l).addClass(n),o.default(u).addClass(n);var g=d.getTransitionDurationFromElement(l);o.default(l).one(d.TRANSITION_END,(function(){o.default(u).removeClass(n+" "+i).addClass(S),o.default(l).removeClass("active "+i+" "+n),s._isSliding=!1,setTimeout((function(){return o.default(s._element).trigger(h)}),0)})).emulateTransitionEnd(g)}else o.default(l).removeClass(S),o.default(u).addClass(S),this._isSliding=!1,o.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(w),i=r({},k,o.default(this).data());"object"==typeof e&&(i=r({},i,e));var a="string"==typeof e?e:i.slide;if(n||(n=new t(this,i),o.default(this).data(w,n)),"number"==typeof e)n.to(e);else if("string"==typeof a){if("undefined"==typeof n[a])throw new TypeError('No method named "'+a+'"');n[a]()}else i.interval&&i.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=d.getSelectorFromElement(this);if(n){var i=o.default(n)[0];if(i&&o.default(i).hasClass("carousel")){var a=r({},o.default(i).data(),o.default(this).data()),s=this.getAttribute("data-slide-to");s&&(a.interval=!1),t._jQueryInterface.call(o.default(i),a),s&&o.default(i).data(w).to(s),e.preventDefault()}}},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return k}}]),t}();o.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",P._dataApiClickHandler),o.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e<n;e++){var i=o.default(t[e]);P._jQueryInterface.call(i,i.data())}})),o.default.fn[T]=P._jQueryInterface,o.default.fn[T].Constructor=P,o.default.fn[T].noConflict=function(){return o.default.fn[T]=C,P._jQueryInterface};var L="collapse",R="bs.collapse",x=o.default.fn[L],q="show",F="collapse",Q="collapsing",B="collapsed",H="width",U='[data-toggle="collapse"]',M={toggle:!0,parent:""},W={toggle:"boolean",parent:"(string|element)"},V=function(){function t(t,e){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(e),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(U)),i=0,o=n.length;i<o;i++){var a=n[i],s=d.getSelectorFromElement(a),l=[].slice.call(document.querySelectorAll(s)).filter((function(e){return e===t}));null!==s&&l.length>0&&(this._selector=s,this._triggerArray.push(a))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){o.default(this._element).hasClass(q)?this.hide():this.show()},e.show=function(){var e,n,i=this;if(!(this._isTransitioning||o.default(this._element).hasClass(q)||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof i._config.parent?t.getAttribute("data-parent")===i._config.parent:t.classList.contains(F)}))).length&&(e=null),e&&(n=o.default(e).not(this._selector).data(R))&&n._isTransitioning))){var a=o.default.Event("show.bs.collapse");if(o.default(this._element).trigger(a),!a.isDefaultPrevented()){e&&(t._jQueryInterface.call(o.default(e).not(this._selector),"hide"),n||o.default(e).data(R,null));var s=this._getDimension();o.default(this._element).removeClass(F).addClass(Q),this._element.style[s]=0,this._triggerArray.length&&o.default(this._triggerArray).removeClass(B).attr("aria-expanded",!0),this.setTransitioning(!0);var l="scroll"+(s[0].toUpperCase()+s.slice(1)),r=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){o.default(i._element).removeClass(Q).addClass("collapse show"),i._element.style[s]="",i.setTransitioning(!1),o.default(i._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(r),this._element.style[s]=this._element[l]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&o.default(this._element).hasClass(q)){var e=o.default.Event("hide.bs.collapse");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",d.reflow(this._element),o.default(this._element).addClass(Q).removeClass("collapse show");var i=this._triggerArray.length;if(i>0)for(var a=0;a<i;a++){var s=this._triggerArray[a],l=d.getSelectorFromElement(s);null!==l&&(o.default([].slice.call(document.querySelectorAll(l))).hasClass(q)||o.default(s).addClass(B).attr("aria-expanded",!1))}this.setTransitioning(!0),this._element.style[n]="";var r=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){t.setTransitioning(!1),o.default(t._element).removeClass(Q).addClass(F).trigger("hidden.bs.collapse")})).emulateTransitionEnd(r)}}},e.setTransitioning=function(t){this._isTransitioning=t},e.dispose=function(){o.default.removeData(this._element,R),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},e._getConfig=function(t){return(t=r({},M,t)).toggle=Boolean(t.toggle),d.typeCheckConfig(L,t,W),t},e._getDimension=function(){return o.default(this._element).hasClass(H)?H:"height"},e._getParent=function(){var e,n=this;d.isElement(this._config.parent)?(e=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(e=this._config.parent[0])):e=document.querySelector(this._config.parent);var i='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',a=[].slice.call(e.querySelectorAll(i));return o.default(a).each((function(e,i){n._addAriaAndCollapsedClass(t._getTargetFromElement(i),[i])})),e},e._addAriaAndCollapsedClass=function(t,e){var n=o.default(t).hasClass(q);e.length&&o.default(e).toggleClass(B,!n).attr("aria-expanded",n)},t._getTargetFromElement=function(t){var e=d.getSelectorFromElement(t);return e?document.querySelector(e):null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(R),a=r({},M,n.data(),"object"==typeof e&&e?e:{});if(!i&&a.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(a.toggle=!1),i||(i=new t(this,a),n.data(R,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return M}}]),t}();o.default(document).on("click.bs.collapse.data-api",U,(function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var e=o.default(this),n=d.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(n));o.default(i).each((function(){var t=o.default(this),n=t.data(R)?"toggle":e.data();V._jQueryInterface.call(t,n)}))})),o.default.fn[L]=V._jQueryInterface,o.default.fn[L].Constructor=V,o.default.fn[L].noConflict=function(){return o.default.fn[L]=x,V._jQueryInterface};var z="dropdown",K="bs.dropdown",X=o.default.fn[z],Y=new RegExp("38|40|27"),$="disabled",J="show",G="dropdown-menu-right",Z="hide.bs.dropdown",tt="hidden.bs.dropdown",et="click.bs.dropdown.data-api",nt="keydown.bs.dropdown.data-api",it='[data-toggle="dropdown"]',ot=".dropdown-menu",at={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},st={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},lt=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!o.default(this._element).hasClass($)){var e=o.default(this._menu).hasClass(J);t._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||o.default(this._element).hasClass($)||o.default(this._menu).hasClass(J))){var n={relatedTarget:this._element},i=o.default.Event("show.bs.dropdown",n),s=t._getParentFromElement(this._element);if(o.default(s).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar&&e){if("undefined"==typeof a.default)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");var l=this._element;"parent"===this._config.reference?l=s:d.isElement(this._config.reference)&&(l=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(l=this._config.reference[0])),"scrollParent"!==this._config.boundary&&o.default(s).addClass("position-static"),this._popper=new a.default(l,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===o.default(s).closest(".navbar-nav").length&&o.default(document.body).children().on("mouseover",null,o.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),o.default(this._menu).toggleClass(J),o.default(s).toggleClass(J).trigger(o.default.Event("shown.bs.dropdown",n))}}},e.hide=function(){if(!this._element.disabled&&!o.default(this._element).hasClass($)&&o.default(this._menu).hasClass(J)){var e={relatedTarget:this._element},n=o.default.Event(Z,e),i=t._getParentFromElement(this._element);o.default(i).trigger(n),n.isDefaultPrevented()||(this._popper&&this._popper.destroy(),o.default(this._menu).toggleClass(J),o.default(i).toggleClass(J).trigger(o.default.Event(tt,e)))}},e.dispose=function(){o.default.removeData(this._element,K),o.default(this._element).off(".bs.dropdown"),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;o.default(this._element).on("click.bs.dropdown",(function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}))},e._getConfig=function(t){return t=r({},this.constructor.Default,o.default(this._element).data(),t),d.typeCheckConfig(z,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=e.querySelector(ot))}return this._menu},e._getPlacement=function(){var t=o.default(this._element.parentNode),e="bottom-start";return t.hasClass("dropup")?e=o.default(this._menu).hasClass(G)?"top-end":"top-start":t.hasClass("dropright")?e="right-start":t.hasClass("dropleft")?e="left-start":o.default(this._menu).hasClass(G)&&(e="bottom-end"),e},e._detectNavbar=function(){return o.default(this._element).closest(".navbar").length>0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),r({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(K);if(n||(n=new t(this,"object"==typeof e?e:null),o.default(this).data(K,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll(it)),i=0,a=n.length;i<a;i++){var s=t._getParentFromElement(n[i]),l=o.default(n[i]).data(K),r={relatedTarget:n[i]};if(e&&"click"===e.type&&(r.clickEvent=e),l){var u=l._menu;if(o.default(s).hasClass(J)&&!(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&o.default.contains(s,e.target))){var f=o.default.Event(Z,r);o.default(s).trigger(f),f.isDefaultPrevented()||("ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),n[i].setAttribute("aria-expanded","false"),l._popper&&l._popper.destroy(),o.default(u).removeClass(J),o.default(s).removeClass(J).trigger(o.default.Event(tt,r)))}}}},t._getParentFromElement=function(t){var e,n=d.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},t._dataApiKeydownHandler=function(e){if(!(/input|textarea/i.test(e.target.tagName)?32===e.which||27!==e.which&&(40!==e.which&&38!==e.which||o.default(e.target).closest(ot).length):!Y.test(e.which))&&!this.disabled&&!o.default(this).hasClass($)){var n=t._getParentFromElement(this),i=o.default(n).hasClass(J);if(i||27!==e.which){if(e.preventDefault(),e.stopPropagation(),!i||27===e.which||32===e.which)return 27===e.which&&o.default(n.querySelector(it)).trigger("focus"),void o.default(this).trigger("click");var a=[].slice.call(n.querySelectorAll(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)")).filter((function(t){return o.default(t).is(":visible")}));if(0!==a.length){var s=a.indexOf(e.target);38===e.which&&s>0&&s--,40===e.which&&s<a.length-1&&s++,s<0&&(s=0),a[s].focus()}}}},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return at}},{key:"DefaultType",get:function(){return st}}]),t}();o.default(document).on(nt,it,lt._dataApiKeydownHandler).on(nt,ot,lt._dataApiKeydownHandler).on(et+" keyup.bs.dropdown.data-api",lt._clearMenus).on(et,it,(function(t){t.preventDefault(),t.stopPropagation(),lt._jQueryInterface.call(o.default(this),"toggle")})).on(et,".dropdown form",(function(t){t.stopPropagation()})),o.default.fn[z]=lt._jQueryInterface,o.default.fn[z].Constructor=lt,o.default.fn[z].noConflict=function(){return o.default.fn[z]=X,lt._jQueryInterface};var rt="bs.modal",ut=o.default.fn.modal,ft="modal-open",dt="fade",ct="show",ht="modal-static",gt="hidden.bs.modal",mt="show.bs.modal",pt="focusin.bs.modal",_t="resize.bs.modal",vt="click.dismiss.bs.modal",yt="keydown.dismiss.bs.modal",bt="mousedown.dismiss.bs.modal",Et=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Tt={backdrop:!0,keyboard:!0,focus:!0,show:!0},wt={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},Ct=function(){function t(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(".modal-dialog"),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var e=t.prototype;return e.toggle=function(t){return this._isShown?this.hide():this.show(t)},e.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){var n=o.default.Event(mt,{relatedTarget:t});o.default(this._element).trigger(n),n.isDefaultPrevented()||(this._isShown=!0,o.default(this._element).hasClass(dt)&&(this._isTransitioning=!0),this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),o.default(this._element).on(vt,'[data-dismiss="modal"]',(function(t){return e.hide(t)})),o.default(this._dialog).on(bt,(function(){o.default(e._element).one("mouseup.dismiss.bs.modal",(function(t){o.default(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)}))})),this._showBackdrop((function(){return e._showElement(t)})))}},e.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=o.default.Event("hide.bs.modal");if(o.default(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=o.default(this._element).hasClass(dt);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),o.default(document).off(pt),o.default(this._element).removeClass(ct),o.default(this._element).off(vt),o.default(this._dialog).off(bt),i){var a=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(t){return e._hideModal(t)})).emulateTransitionEnd(a)}else this._hideModal()}}},e.dispose=function(){[window,this._element,this._dialog].forEach((function(t){return o.default(t).off(".bs.modal")})),o.default(document).off(pt),o.default.removeData(this._element,rt),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},e.handleUpdate=function(){this._adjustDialog()},e._getConfig=function(t){return t=r({},Tt,t),d.typeCheckConfig("modal",t,wt),t},e._triggerBackdropTransition=function(){var t=this,e=o.default.Event("hidePrevented.bs.modal");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._element.scrollHeight>document.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add(ht);var i=d.getTransitionDurationFromElement(this._dialog);o.default(this._element).off(d.TRANSITION_END),o.default(this._element).one(d.TRANSITION_END,(function(){t._element.classList.remove(ht),n||o.default(t._element).one(d.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,i)})).emulateTransitionEnd(i),this._element.focus()}},e._showElement=function(t){var e=this,n=o.default(this._element).hasClass(dt),i=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),o.default(this._dialog).hasClass("modal-dialog-scrollable")&&i?i.scrollTop=0:this._element.scrollTop=0,n&&d.reflow(this._element),o.default(this._element).addClass(ct),this._config.focus&&this._enforceFocus();var a=o.default.Event("shown.bs.modal",{relatedTarget:t}),s=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,o.default(e._element).trigger(a)};if(n){var l=d.getTransitionDurationFromElement(this._dialog);o.default(this._dialog).one(d.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._enforceFocus=function(){var t=this;o.default(document).off(pt).on(pt,(function(e){document!==e.target&&t._element!==e.target&&0===o.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?o.default(this._element).on(yt,(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||o.default(this._element).off(yt)},e._setResizeEvent=function(){var t=this;this._isShown?o.default(window).on(_t,(function(e){return t.handleUpdate(e)})):o.default(window).off(_t)},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){o.default(document.body).removeClass(ft),t._resetAdjustments(),t._resetScrollbar(),o.default(t._element).trigger(gt)}))},e._removeBackdrop=function(){this._backdrop&&(o.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=o.default(this._element).hasClass(dt)?dt:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),o.default(this._backdrop).appendTo(document.body),o.default(this._element).on(vt,(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&d.reflow(this._backdrop),o.default(this._backdrop).addClass(ct),!t)return;if(!n)return void t();var i=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){o.default(this._backdrop).removeClass(ct);var a=function(){e._removeBackdrop(),t&&t()};if(o.default(this._element).hasClass(dt)){var s=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},e._setScrollbar=function(){var t=this;if(this._isBodyOverflowing){var e=[].slice.call(document.querySelectorAll(Et)),n=[].slice.call(document.querySelectorAll(".sticky-top"));o.default(e).each((function(e,n){var i=n.style.paddingRight,a=o.default(n).css("padding-right");o.default(n).data("padding-right",i).css("padding-right",parseFloat(a)+t._scrollbarWidth+"px")})),o.default(n).each((function(e,n){var i=n.style.marginRight,a=o.default(n).css("margin-right");o.default(n).data("margin-right",i).css("margin-right",parseFloat(a)-t._scrollbarWidth+"px")}));var i=document.body.style.paddingRight,a=o.default(document.body).css("padding-right");o.default(document.body).data("padding-right",i).css("padding-right",parseFloat(a)+this._scrollbarWidth+"px")}o.default(document.body).addClass(ft)},e._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(Et));o.default(t).each((function(t,e){var n=o.default(e).data("padding-right");o.default(e).removeData("padding-right"),e.style.paddingRight=n||""}));var e=[].slice.call(document.querySelectorAll(".sticky-top"));o.default(e).each((function(t,e){var n=o.default(e).data("margin-right");"undefined"!=typeof n&&o.default(e).css("margin-right",n).removeData("margin-right")}));var n=o.default(document.body).data("padding-right");o.default(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},e._getScrollbarWidth=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this).data(rt),a=r({},Tt,o.default(this).data(),"object"==typeof e&&e?e:{});if(i||(i=new t(this,a),o.default(this).data(rt,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e](n)}else a.show&&i.show(n)}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return Tt}}]),t}();o.default(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',(function(t){var e,n=this,i=d.getSelectorFromElement(this);i&&(e=document.querySelector(i));var a=o.default(e).data(rt)?"toggle":r({},o.default(e).data(),o.default(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var s=o.default(e).one(mt,(function(t){t.isDefaultPrevented()||s.one(gt,(function(){o.default(n).is(":visible")&&n.focus()}))}));Ct._jQueryInterface.call(o.default(e),a,this)})),o.default.fn.modal=Ct._jQueryInterface,o.default.fn.modal.Constructor=Ct,o.default.fn.modal.noConflict=function(){return o.default.fn.modal=ut,Ct._jQueryInterface};var St=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],Nt=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Dt=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;function At(t,e,n){if(0===t.length)return t;if(n&&"function"==typeof n)return n(t);for(var i=(new window.DOMParser).parseFromString(t,"text/html"),o=Object.keys(e),a=[].slice.call(i.body.querySelectorAll("*")),s=function(t,n){var i=a[t],s=i.nodeName.toLowerCase();if(-1===o.indexOf(i.nodeName.toLowerCase()))return i.parentNode.removeChild(i),"continue";var l=[].slice.call(i.attributes),r=[].concat(e["*"]||[],e[s]||[]);l.forEach((function(t){(function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===St.indexOf(n)||Boolean(Nt.test(t.nodeValue)||Dt.test(t.nodeValue));for(var i=e.filter((function(t){return t instanceof RegExp})),o=0,a=i.length;o<a;o++)if(i[o].test(n))return!0;return!1})(t,r)||i.removeAttribute(t.nodeName)}))},l=0,r=a.length;l<r;l++)s(l);return i.body.innerHTML}var It="tooltip",kt="bs.tooltip",Ot=o.default.fn.tooltip,jt=new RegExp("(^|\s)bs-tooltip\S+","g"),Pt=["sanitize","whiteList","sanitizeFn"],Lt="fade",Rt="show",xt="show",qt="out",Ft="hover",Qt="focus",Bt={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Ht={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ut={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},Mt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Wt=function(){function t(t,e){if("undefined"==typeof a.default)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=o.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(o.default(this.getTipElement()).hasClass(Rt))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),o.default.removeData(this.element,this.constructor.DATA_KEY),o.default(this.element).off(this.constructor.EVENT_KEY),o.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&o.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===o.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=o.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){o.default(this.element).trigger(e);var n=d.findShadowRoot(this.element),i=o.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var s=this.getTipElement(),l=d.getUID(this.constructor.NAME);s.setAttribute("id",l),this.element.setAttribute("aria-describedby",l),this.setContent(),this.config.animation&&o.default(s).addClass(Lt);var r="function"==typeof this.config.placement?this.config.placement.call(this,s,this.element):this.config.placement,u=this._getAttachment(r);this.addAttachmentClass(u);var f=this._getContainer();o.default(s).data(this.constructor.DATA_KEY,this),o.default.contains(this.element.ownerDocument.documentElement,this.tip)||o.default(s).appendTo(f),o.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new a.default(this.element,s,this._getPopperConfig(u)),o.default(s).addClass(Rt),o.default(s).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&o.default(document.body).children().on("mouseover",null,o.default.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,o.default(t.element).trigger(t.constructor.Event.SHOWN),e===qt&&t._leave(null,t)};if(o.default(this.tip).hasClass(Lt)){var h=d.getTransitionDurationFromElement(this.tip);o.default(this.tip).one(d.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=function(t){var e=this,n=this.getTipElement(),i=o.default.Event(this.constructor.Event.HIDE),a=function(){e._hoverState!==xt&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),o.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(o.default(this.element).trigger(i),!i.isDefaultPrevented()){if(o.default(n).removeClass(Rt),"ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,o.default(this.tip).hasClass(Lt)){var s=d.getTransitionDurationFromElement(n);o.default(n).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(o.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),o.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=At(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?o.default(e).parent().is(t)||t.empty().append(e):t.text(o.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return r({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:d.isElement(this.config.container)?o.default(this.config.container):o.default(document).find(this.config.container)},e._getAttachment=function(t){return Bt[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)o.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n=e===Ft?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i=e===Ft?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;o.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},o.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Qt:Ft]=!0),o.default(e.getTipElement()).hasClass(Rt)||e._hoverState===xt?e._hoverState=xt:(clearTimeout(e._timeout),e._hoverState=xt,e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){e._hoverState===xt&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Qt:Ft]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=qt,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){e._hoverState===qt&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=o.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Pt.indexOf(t)&&delete e[t]})),"number"==typeof(t=r({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d.typeCheckConfig(It,t,this.constructor.DefaultType),t.sanitize&&(t.template=At(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(jt);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(o.default(t).removeClass(Lt),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(kt),a="object"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new t(this,a),n.data(kt,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return Ht}},{key:"NAME",get:function(){return It}},{key:"DATA_KEY",get:function(){return kt}},{key:"Event",get:function(){return Mt}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Ut}}]),t}();o.default.fn.tooltip=Wt._jQueryInterface,o.default.fn.tooltip.Constructor=Wt,o.default.fn.tooltip.noConflict=function(){return o.default.fn.tooltip=Ot,Wt._jQueryInterface};var Vt="bs.popover",zt=o.default.fn.popover,Kt=new RegExp("(^|\s)bs-popover\S+","g"),Xt=r({},Wt.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),Yt=r({},Wt.DefaultType,{content:"(string|element|function)"}),$t={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Jt=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,u(e,n);var a=i.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},a.setContent=function(){var t=o.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(Kt);null!==e&&e.length>0&&t.removeClass(e.join(""))},i._jQueryInterface=function(t){return this.each((function(){var e=o.default(this).data(Vt),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n),o.default(this).data(Vt,e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},l(i,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return Xt}},{key:"NAME",get:function(){return"popover"}},{key:"DATA_KEY",get:function(){return Vt}},{key:"Event",get:function(){return $t}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Yt}}]),i}(Wt);o.default.fn.popover=Jt._jQueryInterface,o.default.fn.popover.Constructor=Jt,o.default.fn.popover.noConflict=function(){return o.default.fn.popover=zt,Jt._jQueryInterface};var Gt="scrollspy",Zt="bs.scrollspy",te=o.default.fn[Gt],ee="active",ne="position",ie=".nav, .list-group",oe={offset:10,method:"auto",target:""},ae={offset:"number",method:"string",target:"(string|element)"},se=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,o.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":ne,n="auto"===this._config.method?e:this._config.method,i=n===ne?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,a=d.getSelectorFromElement(t);if(a&&(e=document.querySelector(a)),e){var s=e.getBoundingClientRect();if(s.width||s.height)return[o.default(e)[n]().top+i,a]}return null})).filter(Boolean).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){o.default.removeData(this._element,Zt),o.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=r({},oe,"object"==typeof t&&t?t:{})).target&&d.isElement(t.target)){var e=o.default(t.target).attr("id");e||(e=d.getUID(Gt),o.default(t.target).attr("id",e)),t.target="#"+e}return d.typeCheckConfig(Gt,t,ae),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}},e._activate=function(t){this._activeTarget=t,this._clear();var e=this._selector.split(",").map((function(e){return e+'[data-target="'+t+'"],'+e+'[href="'+t+'"]'})),n=o.default([].slice.call(document.querySelectorAll(e.join(","))));n.hasClass("dropdown-item")?(n.closest(".dropdown").find(".dropdown-toggle").addClass(ee),n.addClass(ee)):(n.addClass(ee),n.parents(ie).prev(".nav-link, .list-group-item").addClass(ee),n.parents(ie).prev(".nav-item").children(".nav-link").addClass(ee)),o.default(this._scrollElement).trigger("activate.bs.scrollspy",{relatedTarget:t})},e._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter((function(t){return t.classList.contains(ee)})).forEach((function(t){return t.classList.remove(ee)}))},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(Zt);if(n||(n=new t(this,"object"==typeof e&&e),o.default(this).data(Zt,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return oe}}]),t}();o.default(window).on("load.bs.scrollspy.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-spy="scroll"]')),e=t.length;e--;){var n=o.default(t[e]);se._jQueryInterface.call(n,n.data())}})),o.default.fn[Gt]=se._jQueryInterface,o.default.fn[Gt].Constructor=se,o.default.fn[Gt].noConflict=function(){return o.default.fn[Gt]=te,se._jQueryInterface};var le="bs.tab",re=o.default.fn.tab,ue="active",fe="fade",de="show",ce=".active",he="> li > .active",ge=function(){function t(t){this._element=t}var e=t.prototype;return e.show=function(){var t=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&o.default(this._element).hasClass(ue)||o.default(this._element).hasClass("disabled")||this._element.hasAttribute("disabled"))){var e,n,i=o.default(this._element).closest(".nav, .list-group")[0],a=d.getSelectorFromElement(this._element);if(i){var s="UL"===i.nodeName||"OL"===i.nodeName?he:ce;n=(n=o.default.makeArray(o.default(i).find(s)))[n.length-1]}var l=o.default.Event("hide.bs.tab",{relatedTarget:this._element}),r=o.default.Event("show.bs.tab",{relatedTarget:n});if(n&&o.default(n).trigger(l),o.default(this._element).trigger(r),!r.isDefaultPrevented()&&!l.isDefaultPrevented()){a&&(e=document.querySelector(a)),this._activate(this._element,i);var u=function(){var e=o.default.Event("hidden.bs.tab",{relatedTarget:t._element}),i=o.default.Event("shown.bs.tab",{relatedTarget:n});o.default(n).trigger(e),o.default(t._element).trigger(i)};e?this._activate(e,e.parentNode,u):u()}}},e.dispose=function(){o.default.removeData(this._element,le),this._element=null},e._activate=function(t,e,n){var i=this,a=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?o.default(e).children(ce):o.default(e).find(he))[0],s=n&&a&&o.default(a).hasClass(fe),l=function(){return i._transitionComplete(t,a,n)};if(a&&s){var r=d.getTransitionDurationFromElement(a);o.default(a).removeClass(de).one(d.TRANSITION_END,l).emulateTransitionEnd(r)}else l()},e._transitionComplete=function(t,e,n){if(e){o.default(e).removeClass(ue);var i=o.default(e.parentNode).find("> .dropdown-menu .active")[0];i&&o.default(i).removeClass(ue),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}o.default(t).addClass(ue),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),d.reflow(t),t.classList.contains(fe)&&t.classList.add(de);var a=t.parentNode;if(a&&"LI"===a.nodeName&&(a=a.parentNode),a&&o.default(a).hasClass("dropdown-menu")){var s=o.default(t).closest(".dropdown")[0];if(s){var l=[].slice.call(s.querySelectorAll(".dropdown-toggle"));o.default(l).addClass(ue)}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(le);if(i||(i=new t(this),n.data(le,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}}]),t}();o.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),ge._jQueryInterface.call(o.default(this),"show")})),o.default.fn.tab=ge._jQueryInterface,o.default.fn.tab.Constructor=ge,o.default.fn.tab.noConflict=function(){return o.default.fn.tab=re,ge._jQueryInterface};var me="bs.toast",pe=o.default.fn.toast,_e="hide",ve="show",ye="showing",be="click.dismiss.bs.toast",Ee={animation:!0,autohide:!0,delay:500},Te={animation:"boolean",autohide:"boolean",delay:"number"},we=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=o.default.Event("show.bs.toast");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove(ye),t._element.classList.add(ve),o.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove(_e),d.reflow(this._element),this._element.classList.add(ye),this._config.animation){var i=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains(ve)){var t=o.default.Event("hide.bs.toast");o.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains(ve)&&this._element.classList.remove(ve),o.default(this._element).off(be),o.default.removeData(this._element,me),this._element=null,this._config=null},e._getConfig=function(t){return t=r({},Ee,o.default(this._element).data(),"object"==typeof t&&t?t:{}),d.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;o.default(this._element).on(be,'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add(_e),o.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove(ve),this._config.animation){var n=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(me);if(i||(i=new t(this,"object"==typeof e&&e),n.data(me,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e](this)}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"DefaultType",get:function(){return Te}},{key:"Default",get:function(){return Ee}}]),t}();o.default.fn.toast=we._jQueryInterface,o.default.fn.toast.Constructor=we,o.default.fn.toast.noConflict=function(){return o.default.fn.toast=pe,we._jQueryInterface},t.Alert=g,t.Button=E,t.Carousel=P,t.Collapse=V,t.Dropdown=lt,t.Modal=Ct,t.Popover=Jt,t.Scrollspy=se,t.Tab=ge,t.Toast=we,t.Tooltip=Wt,t.Util=d,Object.defineProperty(t,"__esModule",{value:!0})})); 
 
 
(function( $ ) { 
             
    function storeTabs($tabs, $destination) { 
        // measure width 
        $tabs.each(function() { 
            var width = $(this).outerWidth(true); 
            $(this).find('a').data('width', width);           
        }); 
        $tabs.prependTo($destination); 
		 
		$tabs.find('a').unwrap().removeClass('nav-link').addClass('dropdown-item'); 
		 
    } 
             
    function makeTabsResponsive($element) { 
 
        var $tabs = $element.find('li'); 
        var $firstTab = $tabs.first(); 
 
        var individualTabHeight = $firstTab.outerHeight(); 
        var tabsHeight = $element.outerHeight(); 
 
        if(tabsHeight > individualTabHeight) { 
                     
            // get y pos of first tab 
            var firstTabPos = $firstTab.offset(); 
 
            var thisTabPos; 
            $tabs.each(function() { 
 
                var $thisTab = $(this); 
 
                thisTabPos = $thisTab.offset(); 
 
                if(thisTabPos.top > firstTabPos.top) { 
 
                    var $dropdown = $element.find('.responsivetabs-more'); 
                             
                    if(!$dropdown.length) { 
                        var dropdownMarkup = '<li class="dropdown show responsivetabs-more">' 
                        + '<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fas fa-caret-square-down fa-1x mt-2"></i></a>' 
                        + '<div class="dropdown-menu dropdown-menu-right">' 
                        + '</div></li>'; 
                        $dropdown = $(dropdownMarkup); 
                        $element.append($dropdown); 
                                 
                    } 
                             
                    var $previousTab = $thisTab.prev(); 
                    var $followingTabs = $thisTab.nextAll().not('.dropdown'); 
 
                    var $destination = $('.dropdown-menu', $dropdown); 
                             
                    if(!$thisTab.hasClass('dropdown')) { 
                        storeTabs($followingTabs, $destination); 
                        storeTabs($thisTab, $destination); 
                    } 
                    storeTabs($previousTab, $destination); 
                             
                    return; 
 
                } 
 
            }); 
 
        } else { 
                 
 
                 
            // check if enough space to move a menu item back out of "..." 
 
 
            // get parent width 
            var parentWidth = $element.parent().width(); 
            var tabSetWidth = 0; 
            var xPxAvailable; 
 
            // calculate total width of tab set (can't just use width of ul because it is 100% by default) 
            $element.children('li').each(function() { 
                tabSetWidth += $(this).outerWidth(true); 
            }); 
 
            // calculate available horizontal space 
            xPxAvailable = parentWidth - tabSetWidth; 
 
            $element.find('.dropdown-menu a').each(function() { 
                if($(this).data('width') <= xPxAvailable) { 
					 
					// fix for bootstrap 4 
					$(this).removeClass('dropdown-item').addClass('nav-link'); 
					 
					 
                    $(this).insertBefore($element.find('.responsivetabs-more')).wrap('<li class="nav-item"></li>');  
                    xPxAvailable -= $(this).data('width'); 
                } else { 
                    return false; 
                }  
            }); 
 
            // if no menu items left, remove "..." 
            if(!$element.find('.dropdown-menu a').length) { 
                $element.find('.responsivetabs-more').remove(); 
            } 
        } 
 
    
    } 
   
             
    $.fn.responsiveTabs = function() { 
                 
        this.each(function() { 
            var tabs = $(this); 
            makeTabsResponsive(tabs);  
            $(window).resize(function() { 
                makeTabsResponsive(tabs);  
            });                     
        }); 
                 
        return this; 
                 
    }; 
             
})( jQuery ); 
 
 
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">&times;</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"A","":"AA","":"AE","":"AE","":"AE","":"AO","":"AU","":"AV","":"AV","":"AY","":"B","":"B","":"B","":"B","":"B","":"B","":"B","":"B","":"C","":"C","":"C","":"C","":"C","":"C","":"C","":"C","":"C","":"C","":"C","":"D","":"D","":"D","":"D","":"D","":"D","":"D","":"D","":"D","":"D","":"D","":"D","":"D","":"DZ","":"DZ","":"Dz","":"Dz","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"E","":"F","":"F","":"F","":"F","":"F","":"G","":"G","":"G","":"G","":"G","":"G","":"G","":"G","":"G","":"G","":"G","":"G","":"G","":"G","":"H","":"H","":"H","":"H","":"H","":"H","":"H","":"H","":"H","":"H","":"H","":"H","":"H","":"I","":"I","":"I","":"I","":"I","":"I","":"I","":"I","":"I","":"I","":"I","":"I","":"I","":"I","":"I","":"I","":"I","":"I","":"I","":"J","":"J","":"J","":"J","":"K","":"K","":"K","":"K","":"K","":"K","":"K","":"K","":"K","":"K","":"K","":"K","":"K","":"L","":"L","":"L","":"L","":"L","":"L","":"L","":"L","":"L","":"L","":"L","":"L","":"L","":"L","":"L","":"L","":"L","":"LJ","":"Lj","":"M","":"M","":"M","":"M","":"M","":"M","":"M","":"N","":"N","":"N","":"N","":"N","":"N","":"N","":"N","":"N","":"N","":"N","":"N","":"N","":"N","":"N","":"NJ","":"Nj","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"O","":"OI","":"OO","":"OU","":"P","":"P","":"P","":"P","":"P","":"P","":"P","":"P","":"P","":"Q","":"Q","":"Q","":"Q","":"Q","":"R","":"R","":"R","":"R","":"R","":"R","":"R","":"R","":"R","":"R","":"R","":"R","":"R","":"R","":"R","":"R","":"S","":"S","":"S","":"S","":"S","":"S","":"S","":"S","":"S","":"S","":"S","":"S","":"S","":"S","":"S","":"S","":"T","":"T","":"T","":"T","":"T","":"T","":"T","":"T","":"T","":"T","":"T","":"T","":"T","":"T","":"TZ","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"U","":"V","":"V","":"V","":"V","":"V","":"V","":"V","":"VY","":"W","":"W","":"W","":"W","":"W","":"W","":"W","":"W","":"W","":"X","":"X","":"X","":"X","":"Y","":"Y","":"Y","":"Y","":"Y","":"Y","":"Y","":"Y","":"Y","":"Y","":"Y","":"Y","":"Y","":"Y","":"Z","":"Z","":"Z","":"Z","":"Z","":"Z","":"Z","":"Z","":"Z","":"Z","":"Z","":"Z","":"Z","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"a","":"aa","":"ae","":"ae","":"ae","":"ao","":"au","":"av","":"av","":"ay","":"b","":"b","":"b","":"b","":"b","":"b","":"b","":"b","":"c","":"c","":"c","":"c","":"c","":"c","":"c","":"c","":"c","":"c","":"c","":"c","":"d","":"d","":"d","":"d","":"d","":"d","":"d","":"d","":"d","":"d","":"d","":"d","":"d","":"dz","":"dz","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"e","":"f","":"f","":"f","":"f","":"f","":"g","":"g","":"g","":"g","":"g","":"g","":"g","":"g","":"g","":"g","":"g","":"g","":"g","":"g","":"h","":"h","":"h","":"h","":"h","":"h","":"h","":"h","":"h","":"h","":"h","":"h","":"h","":"h","":"hv","":"i","":"i","":"i","":"i","":"i","":"i","":"i","":"i","":"i","":"i","":"i","":"i","":"i","":"i","":"i","":"i","":"i","":"i","":"i","":"j","":"j","":"j","":"j","":"j","":"k","":"k","":"k","":"k","":"k","":"k","":"k","":"k","":"k","":"k","":"k","":"k","":"k","":"l","":"l","":"l","":"l","":"l","":"l","":"l","":"l","":"l","":"l","":"l","":"l","":"l","":"l","":"l","":"l","":"l","":"l","":"lj","":"m","":"m","":"m","":"m","":"m","":"m","":"m","":"n","":"n","":"n","":"n","":"n","":"n","":"n","":"n","":"n","":"n","":"n","":"n","":"n","":"n","":"n","":"n","":"nj","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"o","":"oi","":"ou","":"oo","":"p","":"p","":"p","":"p","":"p","":"p","":"p","":"p","":"p","":"q","":"q","":"q","":"q","":"q","":"r","":"r","":"r","":"r","":"r","":"r","":"r","":"r","":"r","":"r","":"r","":"r","":"r","":"r","":"r","":"r","":"s","":"s","":"s","":"s","":"s","":"s","":"s","":"s","":"s","":"s","":"s","":"s","":"s","":"s","":"s","":"s","":"s","":"t","":"t","":"t","":"t","":"t","":"t","":"t","":"t","":"t","":"t","":"t","":"t","":"t","":"t","":"t","":"tz","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"u","":"v","":"v","":"v","":"v","":"v","":"v","":"v","":"vy","":"w","":"w","":"w","":"w","":"w","":"w","":"w","":"w","":"w","":"w","":"x","":"x","":"x","":"x","":"y","":"y","":"y","":"y","":"y","":"y","":"y","":"y","":"y","":"y","":"y","":"y","":"y","":"y","":"y","":"z","":"z","":"z","":"z","":"z","":"z","":"z","":"z","":"z","":"z","":"z","":"z","":"z","":"","":"","":"","":"","":"","":"","":"","":"","":"","":"","":"","":"","":"","":"","":"","":"","":"","":"","":"","":"","":""};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change"); 
if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b),d=g.$element.find("option").filter(function(){return a(this).val()===c.id});if(!d.length){var e=g.option(c);e.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([e])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^-~]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null; 
},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c}); 
 
 
var country_arr = new Array("Afghanistan", "Albania", "Algeria", "American Samoa", "Angola", "Anguilla", "Antartica", "Antigua and Barbuda", "Argentina", "Armenia", "Aruba", "Ashmore and Cartier Island", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "Bosnia and Herzegovina", "Botswana", "Brazil", "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burma", "Burundi", "Cambodia", "Cameroon", "Canada", "Cape Verde", "Cayman Islands", "Central African Republic", "Chad", "Chile", "China", "Christmas Island", "Clipperton Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo, Democratic Republic of the", "Congo, Republic of the", "Cook Islands", "Costa Rica", "Cote d'Ivoire", "Croatia", "Cuba", "Cyprus", "Czeck Republic", "Denmark", "Djibouti", "Dominica", "Dominican Republic", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia", "Europa Island", "Falkland Islands (Islas Malvinas)", "Faroe Islands", "Fiji", "Finland", "France", "French Guiana", "French Polynesia", "French Southern and Antarctic Lands", "Gabon", "Gambia, The", "Gaza Strip", "Georgia", "Germany", "Ghana", "Gibraltar", "Glorioso Islands", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guernsey", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Heard Island and McDonald Islands", "Holy See (Vatican City)", "Honduras", "Hong Kong", "Howland Island", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Ireland, Northern", "Israel", "Italy", "Jamaica", "Jan Mayen", "Japan", "Jarvis Island", "Jersey", "Johnston Atoll", "Jordan", "Juan de Nova Island", "Kazakhstan", "Kenya", "Kiribati", "Korea, North", "Korea, South", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Macau", "Macedonia, Former Yugoslav Republic of", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Man, Isle of", "Marshall Islands", "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia, Federated States of", "Midway Islands", "Moldova", "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Namibia", "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand", "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "Northern Mariana Islands", "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Pitcaim Islands", "Poland", "Portugal", "Puerto Rico", "Qatar", "Reunion", "Romainia", "Russia", "Rwanda", "Saint Helena", "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon", "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Sao Tome and Principe", "Saudi Arabia", "Scotland", "Senegal", "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Georgia and South Sandwich Islands", "Spain", "Spratly Islands", "Sri Lanka", "Sudan", "Suriname", "Svalbard", "Swaziland", "Sweden", "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "Tobago", "Toga", "Tokelau", "Tonga", "Trinidad", "Tunisia", "Turkey", "Turkmenistan", "Tuvalu", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "Uruguay", "USA", "Uzbekistan", "Vanuatu", "Venezuela", "Vietnam", "Virgin Islands", "Wales", "Wallis and Futuna", "West Bank", "Western Sahara", "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"); 
 
// States 
var s_a = new Array(); 
s_a[0]=""; 
s_a[1]="Badakhshan|Badghis|Baghlan|Balkh|Bamian|Farah|Faryab|Ghazni|Ghowr|Helmand|Herat|Jowzjan|Kabol|Kandahar|Kapisa|Konar|Kondoz|Laghman|Lowgar|Nangarhar|Nimruz|Oruzgan|Paktia|Paktika|Parvan|Samangan|Sar-e Pol|Takhar|Vardak|Zabol"; 
s_a[2]="Berat|Bulqize|Delvine|Devoll (Bilisht)|Diber (Peshkopi)|Durres|Elbasan|Fier|Gjirokaster|Gramsh|Has (Krume)|Kavaje|Kolonje (Erseke)|Korce|Kruje|Kucove|Kukes|Kurbin|Lezhe|Librazhd|Lushnje|Malesi e Madhe (Koplik)|Mallakaster (Ballsh)|Mat (Burrel)|Mirdite (Rreshen)|Peqin|Permet|Pogradec|Puke|Sarande|Shkoder|Skrapar (Corovode)|Tepelene|Tirane (Tirana)|Tirane (Tirana)|Tropoje (Bajram Curri)|Vlore"; 
s_a[3]="Adrar|Ain Defla|Ain Temouchent|Alger|Annaba|Batna|Bechar|Bejaia|Biskra|Blida|Bordj Bou Arreridj|Bouira|Boumerdes|Chlef|Constantine|Djelfa|El Bayadh|El Oued|El Tarf|Ghardaia|Guelma|Illizi|Jijel|Khenchela|Laghouat|M'Sila|Mascara|Medea|Mila|Mostaganem|Naama|Oran|Ouargla|Oum el Bouaghi|Relizane|Saida|Setif|Sidi Bel Abbes|Skikda|Souk Ahras|Tamanghasset|Tebessa|Tiaret|Tindouf|Tipaza|Tissemsilt|Tizi Ouzou|Tlemcen"; 
s_a[4]="Eastern|Manu'a|Rose Island|Swains Island|Western"; 
s_a[5]="Andorra la Vella|Bengo|Benguela|Bie|Cabinda|Canillo|Cuando Cubango|Cuanza Norte|Cuanza Sul|Cunene|Encamp|Escaldes-Engordany|Huambo|Huila|La Massana|Luanda|Lunda Norte|Lunda Sul|Malanje|Moxico|Namibe|Ordino|Sant Julia de Loria|Uige|Zaire"; 
s_a[6]="Anguilla"; 
s_a[7]="Antartica"; 
s_a[8]="Barbuda|Redonda|Saint George|Saint John|Saint Mary|Saint Paul|Saint Peter|Saint Philip"; 
s_a[9]="Antartica e Islas del Atlantico Sur|Buenos Aires|Buenos Aires Capital Federal|Catamarca|Chaco|Chubut|Cordoba|Corrientes|Entre Rios|Formosa|Jujuy|La Pampa|La Rioja|Mendoza|Misiones|Neuquen|Rio Negro|Salta|San Juan|San Luis|Santa Cruz|Santa Fe|Santiago del Estero|Tierra del Fuego|Tucuman"; 
s_a[10]="Aragatsotn|Ararat|Armavir|Geghark'unik'|Kotayk'|Lorri|Shirak|Syunik'|Tavush|Vayots' Dzor|Yerevan"; 
s_a[11]="Aruba"; 
s_a[12]="Ashmore and Cartier Island"; 
s_a[13]="Australian Capital Territory|New South Wales|Northern Territory|Queensland|South Australia|Tasmania|Victoria|Western Australia"; 
s_a[14]="Burgenland|Kaernten|Niederoesterreich|Oberoesterreich|Salzburg|Steiermark|Tirol|Vorarlberg|Wien"; 
s_a[15]="Abseron Rayonu|Agcabadi Rayonu|Agdam Rayonu|Agdas Rayonu|Agstafa Rayonu|Agsu Rayonu|Ali Bayramli Sahari|Astara Rayonu|Baki Sahari|Balakan Rayonu|Barda Rayonu|Beylaqan Rayonu|Bilasuvar Rayonu|Cabrayil Rayonu|Calilabad Rayonu|Daskasan Rayonu|Davaci Rayonu|Fuzuli Rayonu|Gadabay Rayonu|Ganca Sahari|Goranboy Rayonu|Goycay Rayonu|Haciqabul Rayonu|Imisli Rayonu|Ismayilli Rayonu|Kalbacar Rayonu|Kurdamir Rayonu|Lacin Rayonu|Lankaran Rayonu|Lankaran Sahari|Lerik Rayonu|Masalli Rayonu|Mingacevir Sahari|Naftalan Sahari|Naxcivan Muxtar Respublikasi|Neftcala Rayonu|Oguz Rayonu|Qabala Rayonu|Qax Rayonu|Qazax Rayonu|Qobustan Rayonu|Quba Rayonu|Qubadli Rayonu|Qusar Rayonu|Saatli Rayonu|Sabirabad Rayonu|Saki Rayonu|Saki Sahari|Salyan Rayonu|Samaxi Rayonu|Samkir Rayonu|Samux Rayonu|Siyazan Rayonu|Sumqayit Sahari|Susa Rayonu|Susa Sahari|Tartar Rayonu|Tovuz Rayonu|Ucar Rayonu|Xacmaz Rayonu|Xankandi Sahari|Xanlar Rayonu|Xizi Rayonu|Xocali Rayonu|Xocavand Rayonu|Yardimli Rayonu|Yevlax Rayonu|Yevlax Sahari|Zangilan Rayonu|Zaqatala Rayonu|Zardab Rayonu"; 
s_a[16]="Acklins and Crooked Islands|Bimini|Cat Island|Exuma|Freeport|Fresh Creek|Governor's Harbour|Green Turtle Cay|Harbour Island|High Rock|Inagua|Kemps Bay|Long Island|Marsh Harbour|Mayaguana|New Providence|Nicholls Town and Berry Islands|Ragged Island|Rock Sound|San Salvador and Rum Cay|Sandy Point"; 
s_a[17]="Al Hadd|Al Manamah|Al Mintaqah al Gharbiyah|Al Mintaqah al Wusta|Al Mintaqah ash Shamaliyah|Al Muharraq|Ar Rifa' wa al Mintaqah al Janubiyah|Jidd Hafs|Juzur Hawar|Madinat 'Isa|Madinat Hamad|Sitrah"; 
s_a[18]="Barguna|Barisal|Bhola|Jhalokati|Patuakhali|Pirojpur|Bandarban|Brahmanbaria|Chandpur|Chittagong|Comilla|Cox's Bazar|Feni|Khagrachari|Lakshmipur|Noakhali|Rangamati|Dhaka|Faridpur|Gazipur|Gopalganj|Jamalpur|Kishoreganj|Madaripur|Manikganj|Munshiganj|Mymensingh|Narayanganj|Narsingdi|Netrokona|Rajbari|Shariatpur|Sherpur|Tangail|Bagerhat|Chuadanga|Jessore|Jhenaidah|Khulna|Kushtia|Magura|Meherpur|Narail|Satkhira|Bogra|Dinajpur|Gaibandha|Jaipurhat|Kurigram|Lalmonirhat|Naogaon|Natore|Nawabganj|Nilphamari|Pabna|Panchagarh|Rajshahi|Rangpur|Sirajganj|Thakurgaon|Habiganj|Maulvi bazar|Sunamganj|Sylhet"; 
s_a[19]="Bridgetown|Christ Church|Saint Andrew|Saint George|Saint James|Saint John|Saint Joseph|Saint Lucy|Saint Michael|Saint Peter|Saint Philip|Saint Thomas"; 
s_a[20]="Brestskaya (Brest)|Homyel'skaya (Homyel')|Horad Minsk|Hrodzyenskaya (Hrodna)|Mahilyowskaya (Mahilyow)|Minskaya|Vitsyebskaya (Vitsyebsk)"; 
s_a[21]="Antwerpen|Brabant Wallon|Brussels Capitol Region|Hainaut|Liege|Limburg|Luxembourg|Namur|Oost-Vlaanderen|Vlaams Brabant|West-Vlaanderen"; 
s_a[22]="Belize|Cayo|Corozal|Orange Walk|Stann Creek|Toledo"; 
s_a[23]="Alibori|Atakora|Atlantique|Borgou|Collines|Couffo|Donga|Littoral|Mono|Oueme|Plateau|Zou"; 
s_a[24]="Devonshire|Hamilton|Hamilton|Paget|Pembroke|Saint George|Saint Georges|Sandys|Smiths|Southampton|Warwick"; 
s_a[25]="Bumthang|Chhukha|Chirang|Daga|Geylegphug|Ha|Lhuntshi|Mongar|Paro|Pemagatsel|Punakha|Samchi|Samdrup Jongkhar|Shemgang|Tashigang|Thimphu|Tongsa|Wangdi Phodrang"; 
s_a[26]="Beni|Chuquisaca|Cochabamba|La Paz|Oruro|Pando|Potosi|Santa Cruz|Tarija"; 
s_a[27]="Federation of Bosnia and Herzegovina|Republika Srpska"; 
s_a[28]="Central|Chobe|Francistown|Gaborone|Ghanzi|Kgalagadi|Kgatleng|Kweneng|Lobatse|Ngamiland|North-East|Selebi-Pikwe|South-East|Southern"; 
s_a[29]="Acre|Alagoas|Amapa|Amazonas|Bahia|Ceara|Distrito Federal|Espirito Santo|Goias|Maranhao|Mato Grosso|Mato Grosso do Sul|Minas Gerais|Para|Paraiba|Parana|Pernambuco|Piaui|Rio de Janeiro|Rio Grande do Norte|Rio Grande do Sul|Rondonia|Roraima|Santa Catarina|Sao Paulo|Sergipe|Tocantins"; 
s_a[30]="Anegada|Jost Van Dyke|Tortola|Virgin Gorda"; 
s_a[31]="Belait|Brunei and Muara|Temburong|Tutong"; 
s_a[32]="Blagoevgrad|Burgas|Dobrich|Gabrovo|Khaskovo|Kurdzhali|Kyustendil|Lovech|Montana|Pazardzhik|Pernik|Pleven|Plovdiv|Razgrad|Ruse|Shumen|Silistra|Sliven|Smolyan|Sofiya|Sofiya-Grad|Stara Zagora|Turgovishte|Varna|Veliko Turnovo|Vidin|Vratsa|Yambol"; 
s_a[33]="Bale|Bam|Banwa|Bazega|Bougouriba|Boulgou|Boulkiemde|Comoe|Ganzourgou|Gnagna|Gourma|Houet|Ioba|Kadiogo|Kenedougou|Komandjari|Kompienga|Kossi|Koupelogo|Kouritenga|Kourweogo|Leraba|Loroum|Mouhoun|Nahouri|Namentenga|Naumbiel|Nayala|Oubritenga|Oudalan|Passore|Poni|Samentenga|Sanguie|Seno|Sissili|Soum|Sourou|Tapoa|Tuy|Yagha|Yatenga|Ziro|Zondomo|Zoundweogo"; 
s_a[34]="Ayeyarwady|Bago|Chin State|Kachin State|Kayah State|Kayin State|Magway|Mandalay|Mon State|Rakhine State|Sagaing|Shan State|Tanintharyi|Yangon"; 
s_a[35]="Bubanza|Bujumbura|Bururi|Cankuzo|Cibitoke|Gitega|Karuzi|Kayanza|Kirundo|Makamba|Muramvya|Muyinga|Mwaro|Ngozi|Rutana|Ruyigi"; 
s_a[36]="Banteay Mean Cheay|Batdambang|Kampong Cham|Kampong Chhnang|Kampong Spoe|Kampong Thum|Kampot|Kandal|Kaoh Kong|Keb|Kracheh|Mondol Kiri|Otdar Mean Cheay|Pailin|Phnum Penh|Pouthisat|Preah Seihanu (Sihanoukville)|Preah Vihear|Prey Veng|Rotanah Kiri|Siem Reab|Stoeng Treng|Svay Rieng|Takev"; 
s_a[37]="Adamaoua|Centre|Est|Extreme-Nord|Littoral|Nord|Nord-Ouest|Ouest|Sud|Sud-Ouest"; 
s_a[38]="Alberta|British Columbia|Manitoba|New Brunswick|Newfoundland|Northwest Territories|Nova Scotia|Nunavut|Ontario|Prince Edward Island|Quebec|Saskatchewan|Yukon Territory"; 
s_a[39]="Boa Vista|Brava|Maio|Mosteiros|Paul|Porto Novo|Praia|Ribeira Grande|Sal|Santa Catarina|Santa Cruz|Sao Domingos|Sao Filipe|Sao Nicolau|Sao Vicente|Tarrafal"; 
s_a[40]="Creek|Eastern|Midland|South Town|Spot Bay|Stake Bay|West End|Western"; 
s_a[41]="Bamingui-Bangoran|Bangui|Basse-Kotto|Gribingui|Haut-Mbomou|Haute-Kotto|Haute-Sangha|Kemo-Gribingui|Lobaye|Mbomou|Nana-Mambere|Ombella-Mpoko|Ouaka|Ouham|Ouham-Pende|Sangha|Vakaga"; 
s_a[42]="Batha|Biltine|Borkou-Ennedi-Tibesti|Chari-Baguirmi|Guera|Kanem|Lac|Logone Occidental|Logone Oriental|Mayo-Kebbi|Moyen-Chari|Ouaddai|Salamat|Tandjile"; 
s_a[43]="Aisen del General Carlos Ibanez del Campo|Antofagasta|Araucania|Atacama|Bio-Bio|Coquimbo|Libertador General Bernardo O'Higgins|Los Lagos|Magallanes y de la Antartica Chilena|Maule|Region Metropolitana (Santiago)|Tarapaca|Valparaiso"; 
s_a[44]="Anhui|Beijing|Chongqing|Fujian|Gansu|Guangdong|Guangxi|Guizhou|Hainan|Hebei|Heilongjiang|Henan|Hubei|Hunan|Jiangsu|Jiangxi|Jilin|Liaoning|Nei Mongol|Ningxia|Qinghai|Shaanxi|Shandong|Shanghai|Shanxi|Sichuan|Tianjin|Xinjiang|Xizang (Tibet)|Yunnan|Zhejiang"; 
s_a[45]="Christmas Island"; 
s_a[46]="Clipperton Island"; 
s_a[47]="Direction Island|Home Island|Horsburgh Island|North Keeling Island|South Island|West Island"; 
s_a[48]="Amazonas|Antioquia|Arauca|Atlantico|Bolivar|Boyaca|Caldas|Caqueta|Casanare|Cauca|Cesar|Choco|Cordoba|Cundinamarca|Distrito Capital de Santa Fe de Bogota|Guainia|Guaviare|Huila|La Guajira|Magdalena|Meta|Narino|Norte de Santander|Putumayo|Quindio|Risaralda|San Andres y Providencia|Santander|Sucre|Tolima|Valle del Cauca|Vaupes|Vichada"; 
// <!-- --> 
s_a[49]="Anjouan (Nzwani)|Domoni|Fomboni|Grande Comore (Njazidja)|Moheli (Mwali)|Moroni|Moutsamoudou"; 
s_a[50]="Bandundu|Bas-Congo|Equateur|Kasai-Occidental|Kasai-Oriental|Katanga|Kinshasa|Maniema|Nord-Kivu|Orientale|Sud-Kivu"; 
s_a[51]="Bouenza|Brazzaville|Cuvette|Kouilou|Lekoumou|Likouala|Niari|Plateaux|Pool|Sangha"; 
s_a[52]="Aitutaki|Atiu|Avarua|Mangaia|Manihiki|Manuae|Mauke|Mitiaro|Nassau Island|Palmerston|Penrhyn|Pukapuka|Rakahanga|Rarotonga|Suwarrow|Takutea"; 
s_a[53]="Alajuela|Cartago|Guanacaste|Heredia|Limon|Puntarenas|San Jose"; 
s_a[54]="Abengourou|Abidjan|Aboisso|Adiake'|Adzope|Agboville|Agnibilekrou|Ale'pe'|Bangolo|Beoumi|Biankouma|Bocanda|Bondoukou|Bongouanou|Bouafle|Bouake|Bouna|Boundiali|Dabakala|Dabon|Daloa|Danane|Daoukro|Dimbokro|Divo|Duekoue|Ferkessedougou|Gagnoa|Grand Bassam|Grand-Lahou|Guiglo|Issia|Jacqueville|Katiola|Korhogo|Lakota|Man|Mankono|Mbahiakro|Odienne|Oume|Sakassou|San-Pedro|Sassandra|Seguela|Sinfra|Soubre|Tabou|Tanda|Tiassale|Tiebissou|Tingrela|Touba|Toulepleu|Toumodi|Vavoua|Yamoussoukro|Zuenoula"; 
s_a[55]="Bjelovarsko-Bilogorska Zupanija|Brodsko-Posavska Zupanija|Dubrovacko-Neretvanska Zupanija|Istarska Zupanija|Karlovacka Zupanija|Koprivnicko-Krizevacka Zupanija|Krapinsko-Zagorska Zupanija|Licko-Senjska Zupanija|Medimurska Zupanija|Osjecko-Baranjska Zupanija|Pozesko-Slavonska Zupanija|Primorsko-Goranska Zupanija|Sibensko-Kninska Zupanija|Sisacko-Moslavacka Zupanija|Splitsko-Dalmatinska Zupanija|Varazdinska Zupanija|Viroviticko-Podravska Zupanija|Vukovarsko-Srijemska Zupanija|Zadarska Zupanija|Zagreb|Zagrebacka Zupanija"; 
s_a[56]="Camaguey|Ciego de Avila|Cienfuegos|Ciudad de La Habana|Granma|Guantanamo|Holguin|Isla de la Juventud|La Habana|Las Tunas|Matanzas|Pinar del Rio|Sancti Spiritus|Santiago de Cuba|Villa Clara"; 
s_a[57]="Famagusta|Kyrenia|Larnaca|Limassol|Nicosia|Paphos"; 
s_a[58]="Brnensky|Budejovicky|Jihlavsky|Karlovarsky|Kralovehradecky|Liberecky|Olomoucky|Ostravsky|Pardubicky|Plzensky|Praha|Stredocesky|Ustecky|Zlinsky"; 
s_a[59]="Arhus|Bornholm|Fredericksberg|Frederiksborg|Fyn|Kobenhavn|Kobenhavns|Nordjylland|Ribe|Ringkobing|Roskilde|Sonderjylland|Storstrom|Vejle|Vestsjalland|Viborg"; 
s_a[60]="'Ali Sabih|Dikhil|Djibouti|Obock|Tadjoura"; 
s_a[61]="Saint Andrew|Saint David|Saint George|Saint John|Saint Joseph|Saint Luke|Saint Mark|Saint Patrick|Saint Paul|Saint Peter"; 
s_a[62]="Azua|Baoruco|Barahona|Dajabon|Distrito Nacional|Duarte|El Seibo|Elias Pina|Espaillat|Hato Mayor|Independencia|La Altagracia|La Romana|La Vega|Maria Trinidad Sanchez|Monsenor Nouel|Monte Cristi|Monte Plata|Pedernales|Peravia|Puerto Plata|Salcedo|Samana|San Cristobal|San Juan|San Pedro de Macoris|Sanchez Ramirez|Santiago|Santiago Rodriguez|Valverde"; 
// <!-- --> 
s_a[63]="Azuay|Bolivar|Canar|Carchi|Chimborazo|Cotopaxi|El Oro|Esmeraldas|Galapagos|Guayas|Imbabura|Loja|Los Rios|Manabi|Morona-Santiago|Napo|Orellana|Pastaza|Pichincha|Sucumbios|Tungurahua|Zamora-Chinchipe"; 
s_a[64]="Ad Daqahliyah|Al Bahr al Ahmar|Al Buhayrah|Al Fayyum|Al Gharbiyah|Al Iskandariyah|Al Isma'iliyah|Al Jizah|Al Minufiyah|Al Minya|Al Qahirah|Al Qalyubiyah|Al Wadi al Jadid|As Suways|Ash Sharqiyah|Aswan|Asyut|Bani Suwayf|Bur Sa'id|Dumyat|Janub Sina'|Kafr ash Shaykh|Matruh|Qina|Shamal Sina'|Suhaj"; 
s_a[65]="Ahuachapan|Cabanas|Chalatenango|Cuscatlan|La Libertad|La Paz|La Union|Morazan|San Miguel|San Salvador|San Vicente|Santa Ana|Sonsonate|Usulutan"; 
s_a[66]="Annobon|Bioko Norte|Bioko Sur|Centro Sur|Kie-Ntem|Litoral|Wele-Nzas"; 
s_a[67]="Akale Guzay|Barka|Denkel|Hamasen|Sahil|Semhar|Senhit|Seraye"; 
s_a[68]="Harjumaa (Tallinn)|Hiiumaa (Kardla)|Ida-Virumaa (Johvi)|Jarvamaa (Paide)|Jogevamaa (Jogeva)|Laane-Virumaa (Rakvere)|Laanemaa (Haapsalu)|Parnumaa (Parnu)|Polvamaa (Polva)|Raplamaa (Rapla)|Saaremaa (Kuessaare)|Tartumaa (Tartu)|Valgamaa (Valga)|Viljandimaa (Viljandi)|Vorumaa (Voru)" 
s_a[69]="Adis Abeba (Addis Ababa)|Afar|Amara|Dire Dawa|Gambela Hizboch|Hareri Hizb|Oromiya|Sumale|Tigray|YeDebub Biheroch Bihereseboch na Hizboch"; 
s_a[70]="Europa Island"; 
s_a[71]="Falkland Islands (Islas Malvinas)" 
s_a[72]="Bordoy|Eysturoy|Mykines|Sandoy|Skuvoy|Streymoy|Suduroy|Tvoroyri|Vagar"; 
s_a[73]="Central|Eastern|Northern|Rotuma|Western"; 
s_a[74]="Aland|Etela-Suomen Laani|Ita-Suomen Laani|Lansi-Suomen Laani|Lappi|Oulun Laani"; 
s_a[75]="Alsace|Aquitaine|Auvergne|Basse-Normandie|Bourgogne|Bretagne|Centre|Champagne-Ardenne|Corse|Franche-Comte|Haute-Normandie|Ile-de-France|Languedoc-Roussillon|Limousin|Lorraine|Midi-Pyrenees|Nord-Pas-de-Calais|Pays de la Loire|Picardie|Poitou-Charentes|Provence-Alpes-Cote d'Azur|Rhone-Alpes"; 
s_a[76]="French Guiana"; 
s_a[77]="Archipel des Marquises|Archipel des Tuamotu|Archipel des Tubuai|Iles du Vent|Iles Sous-le-Vent"; 
s_a[78]="Adelie Land|Ile Crozet|Iles Kerguelen|Iles Saint-Paul et Amsterdam"; 
s_a[79]="Estuaire|Haut-Ogooue|Moyen-Ogooue|Ngounie|Nyanga|Ogooue-Ivindo|Ogooue-Lolo|Ogooue-Maritime|Woleu-Ntem"; 
s_a[80]="Banjul|Central River|Lower River|North Bank|Upper River|Western"; 
s_a[81]="Gaza Strip"; 
s_a[82]="Abashis|Abkhazia or Ap'khazet'is Avtonomiuri Respublika (Sokhumi)|Adigenis|Ajaria or Acharis Avtonomiuri Respublika (Bat'umi)|Akhalgoris|Akhalk'alak'is|Akhalts'ikhis|Akhmetis|Ambrolauris|Aspindzis|Baghdat'is|Bolnisis|Borjomis|Ch'khorotsqus|Ch'okhatauris|Chiat'ura|Dedop'listsqaros|Dmanisis|Dushet'is|Gardabanis|Gori|Goris|Gurjaanis|Javis|K'arelis|K'ut'aisi|Kaspis|Kharagaulis|Khashuris|Khobis|Khonis|Lagodekhis|Lanch'khut'is|Lentekhis|Marneulis|Martvilis|Mestiis|Mts'khet'is|Ninotsmindis|Onis|Ozurget'is|P'ot'i|Qazbegis|Qvarlis|Rust'avi|Sach'kheris|Sagarejos|Samtrediis|Senakis|Sighnaghis|T'bilisi|T'elavis|T'erjolis|T'et'ritsqaros|T'ianet'is|Tqibuli|Ts'ageris|Tsalenjikhis|Tsalkis|Tsqaltubo|Vanis|Zestap'onis|Zugdidi|Zugdidis"; 
s_a[83]="Baden-Wuerttemberg|Bayern|Berlin|Brandenburg|Bremen|Hamburg|Hessen|Mecklenburg-Vorpommern|Niedersachsen|Nordrhein-Westfalen|Rheinland-Pfalz|Saarland|Sachsen|Sachsen-Anhalt|Schleswig-Holstein|Thueringen"; 
s_a[84]="Ashanti|Brong-Ahafo|Central|Eastern|Greater Accra|Northern|Upper East|Upper West|Volta|Western"; 
s_a[85]="Gibraltar"; 
s_a[86]="Ile du Lys|Ile Glorieuse"; 
s_a[87]="Aitolia kai Akarnania|Akhaia|Argolis|Arkadhia|Arta|Attiki|Ayion Oros (Mt. Athos)|Dhodhekanisos|Drama|Evritania|Evros|Evvoia|Florina|Fokis|Fthiotis|Grevena|Ilia|Imathia|Ioannina|Irakleion|Kardhitsa|Kastoria|Kavala|Kefallinia|Kerkyra|Khalkidhiki|Khania|Khios|Kikladhes|Kilkis|Korinthia|Kozani|Lakonia|Larisa|Lasithi|Lesvos|Levkas|Magnisia|Messinia|Pella|Pieria|Preveza|Rethimni|Rodhopi|Samos|Serrai|Thesprotia|Thessaloniki|Trikala|Voiotia|Xanthi|Zakinthos"; 
s_a[88]="Avannaa (Nordgronland)|Kitaa (Vestgronland)|Tunu (Ostgronland)" 
s_a[89]="Carriacou and Petit Martinique|Saint Andrew|Saint David|Saint George|Saint John|Saint Mark|Saint Patrick"; 
s_a[90]="Basse-Terre|Grande-Terre|Iles de la Petite Terre|Iles des Saintes|Marie-Galante"; 
s_a[91]="Guam"; 
s_a[92]="Alta Verapaz|Baja Verapaz|Chimaltenango|Chiquimula|El Progreso|Escuintla|Guatemala|Huehuetenango|Izabal|Jalapa|Jutiapa|Peten|Quetzaltenango|Quiche|Retalhuleu|Sacatepequez|San Marcos|Santa Rosa|Solola|Suchitepequez|Totonicapan|Zacapa"; 
s_a[93]="Castel|Forest|St. Andrew|St. Martin|St. Peter Port|St. Pierre du Bois|St. Sampson|St. Saviour|Torteval|Vale"; 
s_a[94]="Beyla|Boffa|Boke|Conakry|Coyah|Dabola|Dalaba|Dinguiraye|Dubreka|Faranah|Forecariah|Fria|Gaoual|Gueckedou|Kankan|Kerouane|Kindia|Kissidougou|Koubia|Koundara|Kouroussa|Labe|Lelouma|Lola|Macenta|Mali|Mamou|Mandiana|Nzerekore|Pita|Siguiri|Telimele|Tougue|Yomou"; 
s_a[95]="Bafata|Biombo|Bissau|Bolama-Bijagos|Cacheu|Gabu|Oio|Quinara|Tombali"; 
s_a[96]="Barima-Waini|Cuyuni-Mazaruni|Demerara-Mahaica|East Berbice-Corentyne|Essequibo Islands-West Demerara|Mahaica-Berbice|Pomeroon-Supenaam|Potaro-Siparuni|Upper Demerara-Berbice|Upper Takutu-Upper Essequibo"; 
s_a[97]="Artibonite|Centre|Grand'Anse|Nord|Nord-Est|Nord-Ouest|Ouest|Sud|Sud-Est"; 
s_a[98]="Heard Island and McDonald Islands"; 
s_a[99]="Holy See (Vatican City)" 
s_a[100]="Atlantida|Choluteca|Colon|Comayagua|Copan|Cortes|El Paraiso|Francisco Morazan|Gracias a Dios|Intibuca|Islas de la Bahia|La Paz|Lempira|Ocotepeque|Olancho|Santa Barbara|Valle|Yoro"; 
s_a[101]="Hong Kong"; 
s_a[102]="Howland Island"; 
s_a[103]="Bacs-Kiskun|Baranya|Bekes|Bekescsaba|Borsod-Abauj-Zemplen|Budapest|Csongrad|Debrecen|Dunaujvaros|Eger|Fejer|Gyor|Gyor-Moson-Sopron|Hajdu-Bihar|Heves|Hodmezovasarhely|Jasz-Nagykun-Szolnok|Kaposvar|Kecskemet|Komarom-Esztergom|Miskolc|Nagykanizsa|Nograd|Nyiregyhaza|Pecs|Pest|Somogy|Sopron|Szabolcs-Szatmar-Bereg|Szeged|Szekesfehervar|Szolnok|Szombathely|Tatabanya|Tolna|Vas|Veszprem|Veszprem|Zala|Zalaegerszeg"; 
s_a[104]="Akranes|Akureyri|Arnessysla|Austur-Bardhastrandarsysla|Austur-Hunavatnssysla|Austur-Skaftafellssysla|Borgarfjardharsysla|Dalasysla|Eyjafjardharsysla|Gullbringusysla|Hafnarfjordhur|Husavik|Isafjordhur|Keflavik|Kjosarsysla|Kopavogur|Myrasysla|Neskaupstadhur|Nordhur-Isafjardharsysla|Nordhur-Mulasys-la|Nordhur-Thingeyjarsysla|Olafsfjordhur|Rangarvallasysla|Reykjavik|Saudharkrokur|Seydhisfjordhur|Siglufjordhur|Skagafjardharsysla|Snaefellsnes-og Hnappadalssysla|Strandasysla|Sudhur-Mulasysla|Sudhur-Thingeyjarsysla|Vesttmannaeyjar|Vestur-Bardhastrandarsysla|Vestur-Hunavatnssysla|Vestur-Isafjardharsysla|Vestur-Skaftafellssysla"; 
s_a[105]="Andaman and Nicobar Islands|Andhra Pradesh|Arunachal Pradesh|Assam|Bihar|Chandigarh|Chhattisgarh|Dadra and Nagar Haveli|Daman and Diu|Delhi|Goa|Gujarat|Haryana|Himachal Pradesh|Jammu and Kashmir|Jharkhand|Karnataka|Kerala|Lakshadweep|Madhya Pradesh|Maharashtra|Manipur|Meghalaya|Mizoram|Nagaland|Orissa|Pondicherry|Punjab|Rajasthan|Sikkim|Tamil Nadu|Tripura|Uttar Pradesh|Uttaranchal|West Bengal"; 
s_a[106]="Aceh|Bali|Banten|Bengkulu|East Timor|Gorontalo|Irian Jaya|Jakarta Raya|Jambi|Jawa Barat|Jawa Tengah|Jawa Timur|Kalimantan Barat|Kalimantan Selatan|Kalimantan Tengah|Kalimantan Timur|Kepulauan Bangka Belitung|Lampung|Maluku|Maluku Utara|Nusa Tenggara Barat|Nusa Tenggara Timur|Riau|Sulawesi Selatan|Sulawesi Tengah|Sulawesi Tenggara|Sulawesi Utara|Sumatera Barat|Sumatera Selatan|Sumatera Utara|Yogyakarta"; 
s_a[107]="Ardabil|Azarbayjan-e Gharbi|Azarbayjan-e Sharqi|Bushehr|Chahar Mahall va Bakhtiari|Esfahan|Fars|Gilan|Golestan|Hamadan|Hormozgan|Ilam|Kerman|Kermanshah|Khorasan|Khuzestan|Kohgiluyeh va Buyer Ahmad|Kordestan|Lorestan|Markazi|Mazandaran|Qazvin|Qom|Semnan|Sistan va Baluchestan|Tehran|Yazd|Zanjan"; 
s_a[108]="Al Anbar|Al Basrah|Al Muthanna|Al Qadisiyah|An Najaf|Arbil|As Sulaymaniyah|At Ta'mim|Babil|Baghdad|Dahuk|Dhi Qar|Diyala|Karbala'|Maysan|Ninawa|Salah ad Din|Wasit"; 
s_a[109]="Carlow|Cavan|Clare|Cork|Donegal|Dublin|Galway|Kerry|Kildare|Kilkenny|Laois|Leitrim|Limerick|Longford|Louth|Mayo|Meath|Monaghan|Offaly|Roscommon|Sligo|Tipperary|Waterford|Westmeath|Wexford|Wicklow"; 
s_a[110]="Antrim|Ards|Armagh|Ballymena|Ballymoney|Banbridge|Belfast|Carrickfergus|Castlereagh|Coleraine|Cookstown|Craigavon|Derry|Down|Dungannon|Fermanagh|Larne|Limavady|Lisburn|Magherafelt|Moyle|Newry and Mourne|Newtownabbey|North Down|Omagh|Strabane"; 
s_a[111]="Central|Haifa|Jerusalem|Northern|Southern|Tel Aviv"; 
s_a[112]="Abruzzo|Basilicata|Calabria|Campania|Emilia-Romagna|Friuli-Venezia Giulia|Lazio|Liguria|Lombardia|Marche|Molise|Piemonte|Puglia|Sardegna|Sicilia|Toscana|Trentino-Alto Adige|Umbria|Valle d'Aosta|Veneto"; 
s_a[113]="Clarendon|Hanover|Kingston|Manchester|Portland|Saint Andrew|Saint Ann|Saint Catherine|Saint Elizabeth|Saint James|Saint Mary|Saint Thomas|Trelawny|Westmoreland"; 
s_a[114]="Jan Mayen"; 
s_a[115]="Aichi|Akita|Aomori|Chiba|Ehime|Fukui|Fukuoka|Fukushima|Gifu|Gumma|Hiroshima|Hokkaido|Hyogo|Ibaraki|Ishikawa|Iwate|Kagawa|Kagoshima|Kanagawa|Kochi|Kumamoto|Kyoto|Mie|Miyagi|Miyazaki|Nagano|Nagasaki|Nara|Niigata|Oita|Okayama|Okinawa|Osaka|Saga|Saitama|Shiga|Shimane|Shizuoka|Tochigi|Tokushima|Tokyo|Tottori|Toyama|Wakayama|Yamagata|Yamaguchi|Yamanashi"; 
s_a[116]="Jarvis Island"; 
s_a[117]="Jersey"; 
s_a[118]="Johnston Atoll"; 
s_a[119]="'Amman|Ajlun|Al 'Aqabah|Al Balqa'|Al Karak|Al Mafraq|At Tafilah|Az Zarqa'|Irbid|Jarash|Ma'an|Madaba"; 
s_a[120]="Juan de Nova Island"; 
s_a[121]="Almaty|Aqmola|Aqtobe|Astana|Atyrau|Batys Qazaqstan|Bayqongyr|Mangghystau|Ongtustik Qazaqstan|Pavlodar|Qaraghandy|Qostanay|Qyzylorda|Shyghys Qazaqstan|Soltustik Qazaqstan|Zhambyl"; 
s_a[122]="Central|Coast|Eastern|Nairobi Area|North Eastern|Nyanza|Rift Valley|Western"; 
s_a[123]="Abaiang|Abemama|Aranuka|Arorae|Banaba|Banaba|Beru|Butaritari|Central Gilberts|Gilbert Islands|Kanton|Kiritimati|Kuria|Line Islands|Line Islands|Maiana|Makin|Marakei|Nikunau|Nonouti|Northern Gilberts|Onotoa|Phoenix Islands|Southern Gilberts|Tabiteuea|Tabuaeran|Tamana|Tarawa|Tarawa|Teraina"; 
s_a[124]="Chagang-do (Chagang Province)|Hamgyong-bukto (North Hamgyong Province)|Hamgyong-namdo (South Hamgyong Province)|Hwanghae-bukto (North Hwanghae Province)|Hwanghae-namdo (South Hwanghae Province)|Kaesong-si (Kaesong City)|Kangwon-do (Kangwon Province)|Namp'o-si (Namp'o City)|P'yongan-bukto (North P'yongan Province)|P'yongan-namdo (South P'yongan Province)|P'yongyang-si (P'yongyang City)|Yanggang-do (Yanggang Province)" 
s_a[125]="Ch'ungch'ong-bukto|Ch'ungch'ong-namdo|Cheju-do|Cholla-bukto|Cholla-namdo|Inch'on-gwangyoksi|Kangwon-do|Kwangju-gwangyoksi|Kyonggi-do|Kyongsang-bukto|Kyongsang-namdo|Pusan-gwangyoksi|Soul-t'ukpyolsi|Taegu-gwangyoksi|Taejon-gwangyoksi|Ulsan-gwangyoksi"; 
s_a[126]="Al 'Asimah|Al Ahmadi|Al Farwaniyah|Al Jahra'|Hawalli"; 
s_a[127]="Batken Oblasty|Bishkek Shaary|Chuy Oblasty (Bishkek)|Jalal-Abad Oblasty|Naryn Oblasty|Osh Oblasty|Talas Oblasty|Ysyk-Kol Oblasty (Karakol)" 
s_a[128]="Attapu|Bokeo|Bolikhamxai|Champasak|Houaphan|Khammouan|Louangnamtha|Louangphabang|Oudomxai|Phongsali|Salavan|Savannakhet|Viangchan|Viangchan|Xaignabouli|Xaisomboun|Xekong|Xiangkhoang"; 
s_a[129]="Aizkraukles Rajons|Aluksnes Rajons|Balvu Rajons|Bauskas Rajons|Cesu Rajons|Daugavpils|Daugavpils Rajons|Dobeles Rajons|Gulbenes Rajons|Jekabpils Rajons|Jelgava|Jelgavas Rajons|Jurmala|Kraslavas Rajons|Kuldigas Rajons|Leipaja|Liepajas Rajons|Limbazu Rajons|Ludzas Rajons|Madonas Rajons|Ogres Rajons|Preilu Rajons|Rezekne|Rezeknes Rajons|Riga|Rigas Rajons|Saldus Rajons|Talsu Rajons|Tukuma Rajons|Valkas Rajons|Valmieras Rajons|Ventspils|Ventspils Rajons"; 
s_a[130]="Beyrouth|Ech Chimal|Ej Jnoub|El Bekaa|Jabal Loubnane"; 
s_a[131]="Berea|Butha-Buthe|Leribe|Mafeteng|Maseru|Mohales Hoek|Mokhotlong|Qacha's Nek|Quthing|Thaba-Tseka"; 
s_a[132]="Bomi|Bong|Grand Bassa|Grand Cape Mount|Grand Gedeh|Grand Kru|Lofa|Margibi|Maryland|Montserrado|Nimba|River Cess|Sinoe"; 
s_a[133]="Ajdabiya|Al 'Aziziyah|Al Fatih|Al Jabal al Akhdar|Al Jufrah|Al Khums|Al Kufrah|An Nuqat al Khams|Ash Shati'|Awbari|Az Zawiyah|Banghazi|Darnah|Ghadamis|Gharyan|Misratah|Murzuq|Sabha|Sawfajjin|Surt|Tarabulus|Tarhunah|Tubruq|Yafran|Zlitan"; 
s_a[134]="Balzers|Eschen|Gamprin|Mauren|Planken|Ruggell|Schaan|Schellenberg|Triesen|Triesenberg|Vaduz"; 
s_a[135]="Akmenes Rajonas|Alytaus Rajonas|Alytus|Anyksciu Rajonas|Birstonas|Birzu Rajonas|Druskininkai|Ignalinos Rajonas|Jonavos Rajonas|Joniskio Rajonas|Jurbarko Rajonas|Kaisiadoriu Rajonas|Kaunas|Kauno Rajonas|Kedainiu Rajonas|Kelmes Rajonas|Klaipeda|Klaipedos Rajonas|Kretingos Rajonas|Kupiskio Rajonas|Lazdiju Rajonas|Marijampole|Marijampoles Rajonas|Mazeikiu Rajonas|Moletu Rajonas|Neringa Pakruojo Rajonas|Palanga|Panevezio Rajonas|Panevezys|Pasvalio Rajonas|Plunges Rajonas|Prienu Rajonas|Radviliskio Rajonas|Raseiniu Rajonas|Rokiskio Rajonas|Sakiu Rajonas|Salcininku Rajonas|Siauliai|Siauliu Rajonas|Silales Rajonas|Silutes Rajonas|Sirvintu Rajonas|Skuodo Rajonas|Svencioniu Rajonas|Taurages Rajonas|Telsiu Rajonas|Traku Rajonas|Ukmerges Rajonas|Utenos Rajonas|Varenos Rajonas|Vilkaviskio Rajonas|Vilniaus Rajonas|Vilnius|Zarasu Rajonas"; 
s_a[136]="Diekirch|Grevenmacher|Luxembourg"; 
s_a[137]="Macau"; 
s_a[138]="Aracinovo|Bac|Belcista|Berovo|Bistrica|Bitola|Blatec|Bogdanci|Bogomila|Bogovinje|Bosilovo|Brvenica|Cair (Skopje)|Capari|Caska|Cegrane|Centar (Skopje)|Centar Zupa|Cesinovo|Cucer-Sandevo|Debar|Delcevo|Delogozdi|Demir Hisar|Demir Kapija|Dobrusevo|Dolna Banjica|Dolneni|Dorce Petrov (Skopje)|Drugovo|Dzepciste|Gazi Baba (Skopje)|Gevgelija|Gostivar|Gradsko|Ilinden|Izvor|Jegunovce|Kamenjane|Karbinci|Karpos (Skopje)|Kavadarci|Kicevo|Kisela Voda (Skopje)|Klecevce|Kocani|Konce|Kondovo|Konopiste|Kosel|Kratovo|Kriva Palanka|Krivogastani|Krusevo|Kuklis|Kukurecani|Kumanovo|Labunista|Lipkovo|Lozovo|Lukovo|Makedonska Kamenica|Makedonski Brod|Mavrovi Anovi|Meseista|Miravci|Mogila|Murtino|Negotino|Negotino-Poloska|Novaci|Novo Selo|Oblesevo|Ohrid|Orasac|Orizari|Oslomej|Pehcevo|Petrovec|Plasnia|Podares|Prilep|Probistip|Radovis|Rankovce|Resen|Rosoman|Rostusa|Samokov|Saraj|Sipkovica|Sopiste|Sopotnika|Srbinovo|Star Dojran|Staravina|Staro Nagoricane|Stip|Struga|Strumica|Studenicani|Suto Orizari (Skopje)|Sveti Nikole|Tearce|Tetovo|Topolcani|Valandovo|Vasilevo|Veles|Velesta|Vevcani|Vinica|Vitoliste|Vranestica|Vrapciste|Vratnica|Vrutok|Zajas|Zelenikovo|Zileno|Zitose|Zletovo|Zrnovci"; 
s_a[139]="Antananarivo|Antsiranana|Fianarantsoa|Mahajanga|Toamasina|Toliara"; 
s_a[140]="Balaka|Blantyre|Chikwawa|Chiradzulu|Chitipa|Dedza|Dowa|Karonga|Kasungu|Likoma|Lilongwe|Machinga (Kasupe)|Mangochi|Mchinji|Mulanje|Mwanza|Mzimba|Nkhata Bay|Nkhotakota|Nsanje|Ntcheu|Ntchisi|Phalombe|Rumphi|Salima|Thyolo|Zomba"; 
s_a[141]="Johor|Kedah|Kelantan|Labuan|Melaka|Negeri Sembilan|Pahang|Perak|Perlis|Pulau Pinang|Sabah|Sarawak|Selangor|Terengganu|Wilayah Persekutuan"; 
s_a[142]="Alifu|Baa|Dhaalu|Faafu|Gaafu Alifu|Gaafu Dhaalu|Gnaviyani|Haa Alifu|Haa Dhaalu|Kaafu|Laamu|Lhaviyani|Maale|Meemu|Noonu|Raa|Seenu|Shaviyani|Thaa|Vaavu"; 
s_a[143]="Gao|Kayes|Kidal|Koulikoro|Mopti|Segou|Sikasso|Tombouctou"; 
s_a[144]="Valletta"; 
s_a[145]="Man, Isle of"; 
s_a[146]="Ailinginae|Ailinglaplap|Ailuk|Arno|Aur|Bikar|Bikini|Bokak|Ebon|Enewetak|Erikub|Jabat|Jaluit|Jemo|Kili|Kwajalein|Lae|Lib|Likiep|Majuro|Maloelap|Mejit|Mili|Namorik|Namu|Rongelap|Rongrik|Toke|Ujae|Ujelang|Utirik|Wotho|Wotje"; 
s_a[147]="Martinique"; 
s_a[148]="Adrar|Assaba|Brakna|Dakhlet Nouadhibou|Gorgol|Guidimaka|Hodh Ech Chargui|Hodh El Gharbi|Inchiri|Nouakchott|Tagant|Tiris Zemmour|Trarza"; 
s_a[149]="Agalega Islands|Black River|Cargados Carajos Shoals|Flacq|Grand Port|Moka|Pamplemousses|Plaines Wilhems|Port Louis|Riviere du Rempart|Rodrigues|Savanne"; 
s_a[150]="Mayotte"; 
s_a[151]="Aguascalientes|Baja California|Baja California Sur|Campeche|Chiapas|Chihuahua|Coahuila de Zaragoza|Colima|Distrito Federal|Durango|Guanajuato|Guerrero|Hidalgo|Jalisco|Mexico|Michoacan de Ocampo|Morelos|Nayarit|Nuevo Leon|Oaxaca|Puebla|Queretaro de Arteaga|Quintana Roo|San Luis Potosi|Sinaloa|Sonora|Tabasco|Tamaulipas|Tlaxcala|Veracruz-Llave|Yucatan|Zacatecas"; 
s_a[152]="Chuuk (Truk)|Kosrae|Pohnpei|Yap"; 
s_a[153]="Midway Islands"; 
s_a[154]="Balti|Cahul|Chisinau|Chisinau|Dubasari|Edinet|Gagauzia|Lapusna|Orhei|Soroca|Tighina|Ungheni"; 
s_a[155]="Fontvieille|La Condamine|Monaco-Ville|Monte-Carlo"; 
s_a[156]="Arhangay|Bayan-Olgiy|Bayanhongor|Bulgan|Darhan|Dornod|Dornogovi|Dundgovi|Dzavhan|Erdenet|Govi-Altay|Hentiy|Hovd|Hovsgol|Omnogovi|Ovorhangay|Selenge|Suhbaatar|Tov|Ulaanbaatar|Uvs"; 
s_a[157]="Saint Anthony|Saint Georges|Saint Peter's"; 
s_a[158]="Agadir|Al Hoceima|Azilal|Ben Slimane|Beni Mellal|Boulemane|Casablanca|Chaouen|El Jadida|El Kelaa des Srarhna|Er Rachidia|Essaouira|Fes|Figuig|Guelmim|Ifrane|Kenitra|Khemisset|Khenifra|Khouribga|Laayoune|Larache|Marrakech|Meknes|Nador|Ouarzazate|Oujda|Rabat-Sale|Safi|Settat|Sidi Kacem|Tan-Tan|Tanger|Taounate|Taroudannt|Tata|Taza|Tetouan|Tiznit"; 
s_a[159]="Cabo Delgado|Gaza|Inhambane|Manica|Maputo|Nampula|Niassa|Sofala|Tete|Zambezia"; 
s_a[160]="Caprivi|Erongo|Hardap|Karas|Khomas|Kunene|Ohangwena|Okavango|Omaheke|Omusati|Oshana|Oshikoto|Otjozondjupa"; 
s_a[161]="Aiwo|Anabar|Anetan|Anibare|Baiti|Boe|Buada|Denigomodu|Ewa|Ijuw|Meneng|Nibok|Uaboe|Yaren"; 
s_a[162]="Bagmati|Bheri|Dhawalagiri|Gandaki|Janakpur|Karnali|Kosi|Lumbini|Mahakali|Mechi|Narayani|Rapti|Sagarmatha|Seti"; 
s_a[163]="Drenthe|Flevoland|Friesland|Gelderland|Groningen|Limburg|Noord-Brabant|Noord-Holland|Overijssel|Utrecht|Zeeland|Zuid-Holland"; 
s_a[164]="Netherlands Antilles"; 
s_a[165]="Iles Loyaute|Nord|Sud"; 
s_a[166]="Akaroa|Amuri|Ashburton|Bay of Islands|Bruce|Buller|Chatham Islands|Cheviot|Clifton|Clutha|Cook|Dannevirke|Egmont|Eketahuna|Ellesmere|Eltham|Eyre|Featherston|Franklin|Golden Bay|Great Barrier Island|Grey|Hauraki Plains|Hawera|Hawke's Bay|Heathcote|Hikurangi|Hobson|Hokianga|Horowhenua|Hurunui|Hutt|Inangahua|Inglewood|Kaikoura|Kairanga|Kiwitea|Lake|Mackenzie|Malvern|Manaia|Manawatu|Mangonui|Maniototo|Marlborough|Masterton|Matamata|Mount Herbert|Ohinemuri|Opotiki|Oroua|Otamatea|Otorohanga|Oxford|Pahiatua|Paparua|Patea|Piako|Pohangina|Raglan|Rangiora|Rangitikei|Rodney|Rotorua|Runanga|Saint Kilda|Silverpeaks|Southland|Stewart Island|Stratford|Strathallan|Taranaki|Taumarunui|Taupo|Tauranga|Thames-Coromandel|Tuapeka|Vincent|Waiapu|Waiheke|Waihemo|Waikato|Waikohu|Waimairi|Waimarino|Waimate|Waimate West|Waimea|Waipa|Waipawa|Waipukurau|Wairarapa South|Wairewa|Wairoa|Waitaki|Waitomo|Waitotara|Wallace|Wanganui|Waverley|Westland|Whakatane|Whangarei|Whangaroa|Woodville"; 
s_a[167]="Atlantico Norte|Atlantico Sur|Boaco|Carazo|Chinandega|Chontales|Esteli|Granada|Jinotega|Leon|Madriz|Managua|Masaya|Matagalpa|Nueva Segovia|Rio San Juan|Rivas"; 
s_a[168]="Agadez|Diffa|Dosso|Maradi|Niamey|Tahoua|Tillaberi|Zinder"; 
s_a[169]="Abia|Abuja Federal Capital Territory|Adamawa|Akwa Ibom|Anambra|Bauchi|Bayelsa|Benue|Borno|Cross River|Delta|Ebonyi|Edo|Ekiti|Enugu|Gombe|Imo|Jigawa|Kaduna|Kano|Katsina|Kebbi|Kogi|Kwara|Lagos|Nassarawa|Niger|Ogun|Ondo|Osun|Oyo|Plateau|Rivers|Sokoto|Taraba|Yobe|Zamfara"; 
s_a[170]="Niue"; 
s_a[171]="Norfolk Island"; 
s_a[172]="Northern Islands|Rota|Saipan|Tinian"; 
s_a[173]="Akershus|Aust-Agder|Buskerud|Finnmark|Hedmark|Hordaland|More og Romsdal|Nord-Trondelag|Nordland|Oppland|Oslo|Ostfold|Rogaland|Sogn og Fjordane|Sor-Trondelag|Telemark|Troms|Vest-Agder|Vestfold"; 
s_a[174]="Ad Dakhiliyah|Al Batinah|Al Wusta|Ash Sharqiyah|Az Zahirah|Masqat|Musandam|Zufar"; 
s_a[175]="Balochistan|Federally Administered Tribal Areas|Islamabad Capital Territory|North-West Frontier Province|Punjab|Sindh"; 
s_a[176]="Aimeliik|Airai|Angaur|Hatobohei|Kayangel|Koror|Melekeok|Ngaraard|Ngarchelong|Ngardmau|Ngatpang|Ngchesar|Ngeremlengui|Ngiwal|Palau Island|Peleliu|Sonsoral|Tobi"; 
s_a[177]="Bocas del Toro|Chiriqui|Cocle|Colon|Darien|Herrera|Los Santos|Panama|San Blas|Veraguas"; 
s_a[178]="Bougainville|Central|Chimbu|East New Britain|East Sepik|Eastern Highlands|Enga|Gulf|Madang|Manus|Milne Bay|Morobe|National Capital|New Ireland|Northern|Sandaun|Southern Highlands|West New Britain|Western|Western Highlands"; 
s_a[179]="Alto Paraguay|Alto Parana|Amambay|Asuncion (city)|Boqueron|Caaguazu|Caazapa|Canindeyu|Central|Concepcion|Cordillera|Guaira|Itapua|Misiones|Neembucu|Paraguari|Presidente Hayes|San Pedro"; 
s_a[180]="Amazonas|Ancash|Apurimac|Arequipa|Ayacucho|Cajamarca|Callao|Cusco|Huancavelica|Huanuco|Ica|Junin|La Libertad|Lambayeque|Lima|Loreto|Madre de Dios|Moquegua|Pasco|Piura|Puno|San Martin|Tacna|Tumbes|Ucayali"; 
s_a[181]="Abra|Agusan del Norte|Agusan del Sur|Aklan|Albay|Angeles|Antique|Aurora|Bacolod|Bago|Baguio|Bais|Basilan|Basilan City|Bataan|Batanes|Batangas|Batangas City|Benguet|Bohol|Bukidnon|Bulacan|Butuan|Cabanatuan|Cadiz|Cagayan|Cagayan de Oro|Calbayog|Caloocan|Camarines Norte|Camarines Sur|Camiguin|Canlaon|Capiz|Catanduanes|Cavite|Cavite City|Cebu|Cebu City|Cotabato|Dagupan|Danao|Dapitan|Davao City Davao|Davao del Sur|Davao Oriental|Dipolog|Dumaguete|Eastern Samar|General Santos|Gingoog|Ifugao|Iligan|Ilocos Norte|Ilocos Sur|Iloilo|Iloilo City|Iriga|Isabela|Kalinga-Apayao|La Carlota|La Union|Laguna|Lanao del Norte|Lanao del Sur|Laoag|Lapu-Lapu|Legaspi|Leyte|Lipa|Lucena|Maguindanao|Mandaue|Manila|Marawi|Marinduque|Masbate|Mindoro Occidental|Mindoro Oriental|Misamis Occidental|Misamis Oriental|Mountain|Naga|Negros Occidental|Negros Oriental|North Cotabato|Northern Samar|Nueva Ecija|Nueva Vizcaya|Olongapo|Ormoc|Oroquieta|Ozamis|Pagadian|Palawan|Palayan|Pampanga|Pangasinan|Pasay|Puerto Princesa|Quezon|Quezon City|Quirino|Rizal|Romblon|Roxas|Samar|San Carlos (in Negros Occidental)|San Carlos (in Pangasinan)|San Jose|San Pablo|Silay|Siquijor|Sorsogon|South Cotabato|Southern Leyte|Sultan Kudarat|Sulu|Surigao|Surigao del Norte|Surigao del Sur|Tacloban|Tagaytay|Tagbilaran|Tangub|Tarlac|Tawitawi|Toledo|Trece Martires|Zambales|Zamboanga|Zamboanga del Norte|Zamboanga del Sur"; 
s_a[182]="Pitcaim Islands"; 
s_a[183]="Dolnoslaskie|Kujawsko-Pomorskie|Lodzkie|Lubelskie|Lubuskie|Malopolskie|Mazowieckie|Opolskie|Podkarpackie|Podlaskie|Pomorskie|Slaskie|Swietokrzyskie|Warminsko-Mazurskie|Wielkopolskie|Zachodniopomorskie"; 
s_a[184]="Acores (Azores)|Aveiro|Beja|Braga|Braganca|Castelo Branco|Coimbra|Evora|Faro|Guarda|Leiria|Lisboa|Madeira|Portalegre|Porto|Santarem|Setubal|Viana do Castelo|Vila Real|Viseu"; 
s_a[185]="Adjuntas|Aguada|Aguadilla|Aguas Buenas|Aibonito|Anasco|Arecibo|Arroyo|Barceloneta|Barranquitas|Bayamon|Cabo Rojo|Caguas|Camuy|Canovanas|Carolina|Catano|Cayey|Ceiba|Ciales|Cidra|Coamo|Comerio|Corozal|Culebra|Dorado|Fajardo|Florida|Guanica|Guayama|Guayanilla|Guaynabo|Gurabo|Hatillo|Hormigueros|Humacao|Isabela|Jayuya|Juana Diaz|Juncos|Lajas|Lares|Las Marias|Las Piedras|Loiza|Luquillo|Manati|Maricao|Maunabo|Mayaguez|Moca|Morovis|Naguabo|Naranjito|Orocovis|Patillas|Penuelas|Ponce|Quebradillas|Rincon|Rio Grande|Sabana Grande|Salinas|San German|San Juan|San Lorenzo|San Sebastian|Santa Isabel|Toa Alta|Toa Baja|Trujillo Alto|Utuado|Vega Alta|Vega Baja|Vieques|Villalba|Yabucoa|Yauco"; 
s_a[186]="Ad Dawhah|Al Ghuwayriyah|Al Jumayliyah|Al Khawr|Al Wakrah|Ar Rayyan|Jarayan al Batinah|Madinat ash Shamal|Umm Salal"; 
s_a[187]="Reunion"; 
s_a[188]="Alba|Arad|Arges|Bacau|Bihor|Bistrita-Nasaud|Botosani|Braila|Brasov|Bucuresti|Buzau|Calarasi|Caras-Severin|Cluj|Constanta|Covasna|Dimbovita|Dolj|Galati|Giurgiu|Gorj|Harghita|Hunedoara|Ialomita|Iasi|Maramures|Mehedinti|Mures|Neamt|Olt|Prahova|Salaj|Satu Mare|Sibiu|Suceava|Teleorman|Timis|Tulcea|Vaslui|Vilcea|Vrancea"; 
s_a[189]="Adygeya (Maykop)|Aginskiy Buryatskiy (Aginskoye)|Altay (Gorno-Altaysk)|Altayskiy (Barnaul)|Amurskaya (Blagoveshchensk)|Arkhangel'skaya|Astrakhanskaya|Bashkortostan (Ufa)|Belgorodskaya|Bryanskaya|Buryatiya (Ulan-Ude)|Chechnya (Groznyy)|Chelyabinskaya|Chitinskaya|Chukotskiy (Anadyr')|Chuvashiya (Cheboksary)|Dagestan (Makhachkala)|Evenkiyskiy (Tura)|Ingushetiya (Nazran')|Irkutskaya|Ivanovskaya|Kabardino-Balkariya (Nal'chik)|Kaliningradskaya|Kalmykiya (Elista)|Kaluzhskaya|Kamchatskaya (Petropavlovsk-Kamchatskiy)|Karachayevo-Cherkesiya (Cherkessk)|Kareliya (Petrozavodsk)|Kemerovskaya|Khabarovskiy|Khakasiya (Abakan)|Khanty-Mansiyskiy (Khanty-Mansiysk)|Kirovskaya|Komi (Syktyvkar)|Komi-Permyatskiy (Kudymkar)|Koryakskiy (Palana)|Kostromskaya|Krasnodarskiy|Krasnoyarskiy|Kurganskaya|Kurskaya|Leningradskaya|Lipetskaya|Magadanskaya|Mariy-El (Yoshkar-Ola)|Mordoviya (Saransk)|Moskovskaya|Moskva (Moscow)|Murmanskaya|Nenetskiy (Nar'yan-Mar)|Nizhegorodskaya|Novgorodskaya|Novosibirskaya|Omskaya|Orenburgskaya|Orlovskaya (Orel)|Penzenskaya|Permskaya|Primorskiy (Vladivostok)|Pskovskaya|Rostovskaya|Ryazanskaya|Sakha (Yakutsk)|Sakhalinskaya (Yuzhno-Sakhalinsk)|Samarskaya|Sankt-Peterburg (Saint Petersburg)|Saratovskaya|Severnaya Osetiya-Alaniya [North Ossetia] (Vladikavkaz)|Smolenskaya|Stavropol'skiy|Sverdlovskaya (Yekaterinburg)|Tambovskaya|Tatarstan (Kazan')|Taymyrskiy (Dudinka)|Tomskaya|Tul'skaya|Tverskaya|Tyumenskaya|Tyva (Kyzyl)|Udmurtiya (Izhevsk)|Ul'yanovskaya|Ust'-Ordynskiy Buryatskiy (Ust'-Ordynskiy)|Vladimirskaya|Volgogradskaya|Vologodskaya|Voronezhskaya|Yamalo-Nenetskiy (Salekhard)|Yaroslavskaya|Yevreyskaya"; 
s_a[190]="Butare|Byumba|Cyangugu|Gikongoro|Gisenyi|Gitarama|Kibungo|Kibuye|Kigali Rurale|Kigali-ville|Ruhengeri|Umutara"; 
s_a[191]="Ascension|Saint Helena|Tristan da Cunha"; 
s_a[192]="Christ Church Nichola Town|Saint Anne Sandy Point|Saint George Basseterre|Saint George Gingerland|Saint James Windward|Saint John Capisterre|Saint John Figtree|Saint Mary Cayon|Saint Paul Capisterre|Saint Paul Charlestown|Saint Peter Basseterre|Saint Thomas Lowland|Saint Thomas Middle Island|Trinity Palmetto Point"; 
s_a[193]="Anse-la-Raye|Castries|Choiseul|Dauphin|Dennery|Gros Islet|Laborie|Micoud|Praslin|Soufriere|Vieux Fort"; 
s_a[194]="Miquelon|Saint Pierre"; 
s_a[195]="Charlotte|Grenadines|Saint Andrew|Saint David|Saint George|Saint Patrick"; 
s_a[196]="A'ana|Aiga-i-le-Tai|Atua|Fa'asaleleaga|Gaga'emauga|Gagaifomauga|Palauli|Satupa'itea|Tuamasaga|Va'a-o-Fonoti|Vaisigano"; 
s_a[197]="Acquaviva|Borgo Maggiore|Chiesanuova|Domagnano|Faetano|Fiorentino|Monte Giardino|San Marino|Serravalle"; 
s_a[198]="Principe|Sao Tome"; 
s_a[199]="'Asir|Al Bahah|Al Hudud ash Shamaliyah|Al Jawf|Al Madinah|Al Qasim|Ar Riyad|Ash Sharqiyah (Eastern Province)|Ha'il|Jizan|Makkah|Najran|Tabuk"; 
s_a[200]="Aberdeen City|Aberdeenshire|Angus|Argyll and Bute|City of Edinburgh|Clackmannanshire|Dumfries and Galloway|Dundee City|East Ayrshire|East Dunbartonshire|East Lothian|East Renfrewshire|Eilean Siar (Western Isles)|Falkirk|Fife|Glasgow City|Highland|Inverclyde|Midlothian|Moray|North Ayrshire|North Lanarkshire|Orkney Islands|Perth and Kinross|Renfrewshire|Shetland Islands|South Ayrshire|South Lanarkshire|Stirling|The Scottish Borders|West Dunbartonshire|West Lothian"; 
s_a[201]="Dakar|Diourbel|Fatick|Kaolack|Kolda|Louga|Saint-Louis|Tambacounda|Thies|Ziguinchor"; 
s_a[202]="Anse aux Pins|Anse Boileau|Anse Etoile|Anse Louis|Anse Royale|Baie Lazare|Baie Sainte Anne|Beau Vallon|Bel Air|Bel Ombre|Cascade|Glacis|Grand' Anse (on Mahe)|Grand' Anse (on Praslin)|La Digue|La Riviere Anglaise|Mont Buxton|Mont Fleuri|Plaisance|Pointe La Rue|Port Glaud|Saint Louis|Takamaka"; 
s_a[203]="Eastern|Northern|Southern|Western"; 
s_a[204]="Singapore"; 
s_a[205]="Banskobystricky|Bratislavsky|Kosicky|Nitriansky|Presovsky|Trenciansky|Trnavsky|Zilinsky"; 
s_a[206]="Ajdovscina|Beltinci|Bled|Bohinj|Borovnica|Bovec|Brda|Brezice|Brezovica|Cankova-Tisina|Celje|Cerklje na Gorenjskem|Cerknica|Cerkno|Crensovci|Crna na Koroskem|Crnomelj|Destrnik-Trnovska Vas|Divaca|Dobrepolje|Dobrova-Horjul-Polhov Gradec|Dol pri Ljubljani|Domzale|Dornava|Dravograd|Duplek|Gorenja Vas-Poljane|Gorisnica|Gornja Radgona|Gornji Grad|Gornji Petrovci|Grosuplje|Hodos Salovci|Hrastnik|Hrpelje-Kozina|Idrija|Ig|Ilirska Bistrica|Ivancna Gorica|Izola|Jesenice|Jursinci|Kamnik|Kanal|Kidricevo|Kobarid|Kobilje|Kocevje|Komen|Koper|Kozje|Kranj|Kranjska Gora|Krsko|Kungota|Kuzma|Lasko|Lenart|Lendava|Litija|Ljubljana|Ljubno|Ljutomer|Logatec|Loska Dolina|Loski Potok|Luce|Lukovica|Majsperk|Maribor|Medvode|Menges|Metlika|Mezica|Miren-Kostanjevica|Mislinja|Moravce|Moravske Toplice|Mozirje|Murska Sobota|Muta|Naklo|Nazarje|Nova Gorica|Novo Mesto|Odranci|Ormoz|Osilnica|Pesnica|Piran|Pivka|Podcetrtek|Podvelka-Ribnica|Postojna|Preddvor|Ptuj|Puconci|Race-Fram|Radece|Radenci|Radlje ob Dravi|Radovljica|Ravne-Prevalje|Ribnica|Rogasevci|Rogaska Slatina|Rogatec|Ruse|Semic|Sencur|Sentilj|Sentjernej|Sentjur pri Celju|Sevnica|Sezana|Skocjan|Skofja Loka|Skofljica|Slovenj Gradec|Slovenska Bistrica|Slovenske Konjice|Smarje pri Jelsah|Smartno ob Paki|Sostanj|Starse|Store|Sveti Jurij|Tolmin|Trbovlje|Trebnje|Trzic|Turnisce|Velenje|Velike Lasce|Videm|Vipava|Vitanje|Vodice|Vojnik|Vrhnika|Vuzenica|Zagorje ob Savi|Zalec|Zavrc|Zelezniki|Ziri|Zrece"; 
s_a[207]="Bellona|Central|Choiseul (Lauru)|Guadalcanal|Honiara|Isabel|Makira|Malaita|Rennell|Temotu|Western"; 
s_a[208]="Awdal|Bakool|Banaadir|Bari|Bay|Galguduud|Gedo|Hiiraan|Jubbada Dhexe|Jubbada Hoose|Mudug|Nugaal|Sanaag|Shabeellaha Dhexe|Shabeellaha Hoose|Sool|Togdheer|Woqooyi Galbeed"; 
s_a[209]="Eastern Cape|Free State|Gauteng|KwaZulu-Natal|Mpumalanga|North-West|Northern Cape|Northern Province|Western Cape"; 
s_a[210]="Bird Island|Bristol Island|Clerke Rocks|Montagu Island|Saunders Island|South Georgia|Southern Thule|Traversay Islands"; 
s_a[211]="Andalucia|Aragon|Asturias|Baleares (Balearic Islands)|Canarias (Canary Islands)|Cantabria|Castilla y Leon|Castilla-La Mancha|Cataluna|Ceuta|Communidad Valencian|Extremadura|Galicia|Islas Chafarinas|La Rioja|Madrid|Melilla|Murcia|Navarra|Pais Vasco (Basque Country)|Penon de Alhucemas|Penon de Velez de la Gomera"; 
s_a[212]="Spratly Islands"; 
s_a[213]="Central|Eastern|North Central|North Eastern|North Western|Northern|Sabaragamuwa|Southern|Uva|Western"; 
s_a[214]="A'ali an Nil|Al Bahr al Ahmar|Al Buhayrat|Al Jazirah|Al Khartum|Al Qadarif|Al Wahdah|An Nil al Abyad|An Nil al Azraq|Ash Shamaliyah|Bahr al Jabal|Gharb al Istiwa'iyah|Gharb Bahr al Ghazal|Gharb Darfur|Gharb Kurdufan|Janub Darfur|Janub Kurdufan|Junqali|Kassala|Nahr an Nil|Shamal Bahr al Ghazal|Shamal Darfur|Shamal Kurdufan|Sharq al Istiwa'iyah|Sinnar|Warab"; 
s_a[215]="Brokopondo|Commewijne|Coronie|Marowijne|Nickerie|Para|Paramaribo|Saramacca|Sipaliwini|Wanica"; 
s_a[216]="Barentsoya|Bjornoya|Edgeoya|Hopen|Kvitoya|Nordaustandet|Prins Karls Forland|Spitsbergen"; 
s_a[217]="Hhohho|Lubombo|Manzini|Shiselweni"; 
s_a[218]="Blekinge|Dalarnas|Gavleborgs|Gotlands|Hallands|Jamtlands|Jonkopings|Kalmar|Kronobergs|Norrbottens|Orebro|Ostergotlands|Skane|Sodermanlands|Stockholms|Uppsala|Varmlands|Vasterbottens|Vasternorrlands|Vastmanlands|Vastra Gotalands"; 
s_a[219]="Aargau|Ausser-Rhoden|Basel-Landschaft|Basel-Stadt|Bern|Fribourg|Geneve|Glarus|Graubunden|Inner-Rhoden|Jura|Luzern|Neuchatel|Nidwalden|Obwalden|Sankt Gallen|Schaffhausen|Schwyz|Solothurn|Thurgau|Ticino|Uri|Valais|Vaud|Zug|Zurich"; 
s_a[220]="Al Hasakah|Al Ladhiqiyah|Al Qunaytirah|Ar Raqqah|As Suwayda'|Dar'a|Dayr az Zawr|Dimashq|Halab|Hamah|Hims|Idlib|Rif Dimashq|Tartus"; 
s_a[221]="Chang-hua|Chi-lung|Chia-i|Chia-i|Chung-hsing-hsin-ts'un|Hsin-chu|Hsin-chu|Hua-lien|I-lan|Kao-hsiung|Kao-hsiung|Miao-li|Nan-t'ou|P'eng-hu|P'ing-tung|T'ai-chung|T'ai-chung|T'ai-nan|T'ai-nan|T'ai-pei|T'ai-pei|T'ai-tung|T'ao-yuan|Yun-lin"; 
s_a[222]="Viloyati Khatlon|Viloyati Leninobod|Viloyati Mukhtori Kuhistoni Badakhshon"; 
s_a[223]="Arusha|Dar es Salaam|Dodoma|Iringa|Kagera|Kigoma|Kilimanjaro|Lindi|Mara|Mbeya|Morogoro|Mtwara|Mwanza|Pemba North|Pemba South|Pwani|Rukwa|Ruvuma|Shinyanga|Singida|Tabora|Tanga|Zanzibar Central/South|Zanzibar North|Zanzibar Urban/West"; 
s_a[224]="Amnat Charoen|Ang Thong|Buriram|Chachoengsao|Chai Nat|Chaiyaphum|Chanthaburi|Chiang Mai|Chiang Rai|Chon Buri|Chumphon|Kalasin|Kamphaeng Phet|Kanchanaburi|Khon Kaen|Krabi|Krung Thep Mahanakhon (Bangkok)|Lampang|Lamphun|Loei|Lop Buri|Mae Hong Son|Maha Sarakham|Mukdahan|Nakhon Nayok|Nakhon Pathom|Nakhon Phanom|Nakhon Ratchasima|Nakhon Sawan|Nakhon Si Thammarat|Nan|Narathiwat|Nong Bua Lamphu|Nong Khai|Nonthaburi|Pathum Thani|Pattani|Phangnga|Phatthalung|Phayao|Phetchabun|Phetchaburi|Phichit|Phitsanulok|Phra Nakhon Si Ayutthaya|Phrae|Phuket|Prachin Buri|Prachuap Khiri Khan|Ranong|Ratchaburi|Rayong|Roi Et|Sa Kaeo|Sakon Nakhon|Samut Prakan|Samut Sakhon|Samut Songkhram|Sara Buri|Satun|Sing Buri|Sisaket|Songkhla|Sukhothai|Suphan Buri|Surat Thani|Surin|Tak|Trang|Trat|Ubon Ratchathani|Udon Thani|Uthai Thani|Uttaradit|Yala|Yasothon"; 
s_a[225]="Tobago"; 
s_a[226]="De La Kara|Des Plateaux|Des Savanes|Du Centre|Maritime"; 
s_a[227]="Atafu|Fakaofo|Nukunonu"; 
s_a[228]="Ha'apai|Tongatapu|Vava'u"; 
s_a[229]="Arima|Caroni|Mayaro|Nariva|Port-of-Spain|Saint Andrew|Saint David|Saint George|Saint Patrick|San Fernando|Victoria"; 
s_a[230]="Ariana|Beja|Ben Arous|Bizerte|El Kef|Gabes|Gafsa|Jendouba|Kairouan|Kasserine|Kebili|Mahdia|Medenine|Monastir|Nabeul|Sfax|Sidi Bou Zid|Siliana|Sousse|Tataouine|Tozeur|Tunis|Zaghouan"; 
s_a[231]="Adana|Adiyaman|Afyon|Agri|Aksaray|Amasya|Ankara|Antalya|Ardahan|Artvin|Aydin|Balikesir|Bartin|Batman|Bayburt|Bilecik|Bingol|Bitlis|Bolu|Burdur|Bursa|Canakkale|Cankiri|Corum|Denizli|Diyarbakir|Duzce|Edirne|Elazig|Erzincan|Erzurum|Eskisehir|Gaziantep|Giresun|Gumushane|Hakkari|Hatay|Icel|Igdir|Isparta|Istanbul|Izmir|Kahramanmaras|Karabuk|Karaman|Kars|Kastamonu|Kayseri|Kilis|Kirikkale|Kirklareli|Kirsehir|Kocaeli|Konya|Kutahya|Malatya|Manisa|Mardin|Mugla|Mus|Nevsehir|Nigde|Ordu|Osmaniye|Rize|Sakarya|Samsun|Sanliurfa|Siirt|Sinop|Sirnak|Sivas|Tekirdag|Tokat|Trabzon|Tunceli|Usak|Van|Yalova|Yozgat|Zonguldak"; 
s_a[232]="Ahal Welayaty|Balkan Welayaty|Dashhowuz Welayaty|Lebap Welayaty|Mary Welayaty"; 
s_a[233]="Tuvalu"; 
s_a[234]="Adjumani|Apac|Arua|Bugiri|Bundibugyo|Bushenyi|Busia|Gulu|Hoima|Iganga|Jinja|Kabale|Kabarole|Kalangala|Kampala|Kamuli|Kapchorwa|Kasese|Katakwi|Kibale|Kiboga|Kisoro|Kitgum|Kotido|Kumi|Lira|Luwero|Masaka|Masindi|Mbale|Mbarara|Moroto|Moyo|Mpigi|Mubende|Mukono|Nakasongola|Nebbi|Ntungamo|Pallisa|Rakai|Rukungiri|Sembabule|Soroti|Tororo"; 
s_a[235]="Avtonomna Respublika Krym (Simferopol')|Cherkas'ka (Cherkasy)|Chernihivs'ka (Chernihiv)|Chernivets'ka (Chernivtsi)|Dnipropetrovs'ka (Dnipropetrovs'k)|Donets'ka (Donets'k)|Ivano-Frankivs'ka (Ivano-Frankivs'k)|Kharkivs'ka (Kharkiv)|Khersons'ka (Kherson)|Khmel'nyts'ka (Khmel'nyts'kyy)|Kirovohrads'ka (Kirovohrad)|Kyyiv|Kyyivs'ka (Kiev)|L'vivs'ka (L'viv)|Luhans'ka (Luhans'k)|Mykolayivs'ka (Mykolayiv)|Odes'ka (Odesa)|Poltavs'ka (Poltava)|Rivnens'ka (Rivne)|Sevastopol'|Sums'ka (Sumy)|Ternopil's'ka (Ternopil')|Vinnyts'ka (Vinnytsya)|Volyns'ka (Luts'k)|Zakarpats'ka (Uzhhorod)|Zaporiz'ka (Zaporizhzhya)|Zhytomyrs'ka (Zhytomyr)" 
s_a[236]="'Ajman|Abu Zaby (Abu Dhabi)|Al Fujayrah|Ash Shariqah (Sharjah)|Dubayy (Dubai)|Ra's al Khaymah|Umm al Qaywayn"; 
s_a[237]="Barking and Dagenham|Barnet|Barnsley|Bath and North East Somerset|Bedfordshire|Bexley|Birmingham|Blackburn with Darwen|Blackpool|Bolton|Bournemouth|Bracknell Forest|Bradford|Brent|Brighton and Hove|Bromley|Buckinghamshire|Bury|Calderdale|Cambridgeshire|Camden|Cheshire|City of Bristol|City of Kingston upon Hull|City of London|Cornwall|Coventry|Croydon|Cumbria|Darlington|Derby|Derbyshire|Devon|Doncaster|Dorset|Dudley|Durham|Ealing|East Riding of Yorkshire|East Sussex|Enfield|Essex|Gateshead|Gloucestershire|Greenwich|Hackney|Halton|Hammersmith and Fulham|Hampshire|Haringey|Harrow|Hartlepool|Havering|Herefordshire|Hertfordshire|Hillingdon|Hounslow|Isle of Wight|Islington|Kensington and Chelsea|Kent|Kingston upon Thames|Kirklees|Knowsley|Lambeth|Lancashire|Leeds|Leicester|Leicestershire|Lewisham|Lincolnshire|Liverpool|Luton|Manchester|Medway|Merton|Middlesbrough|Milton Keynes|Newcastle upon Tyne|Newham|Norfolk|North East Lincolnshire|North Lincolnshire|North Somerset|North Tyneside|North Yorkshire|Northamptonshire|Northumberland|Nottingham|Nottinghamshire|Oldham|Oxfordshire|Peterborough|Plymouth|Poole|Portsmouth|Reading|Redbridge|Redcar and Cleveland|Richmond upon Thames|Rochdale|Rotherham|Rutland|Salford|Sandwell|Sefton|Sheffield|Shropshire|Slough|Solihull|Somerset|South Gloucestershire|South Tyneside|Southampton|Southend-on-Sea|Southwark|St. Helens|Staffordshire|Stockport|Stockton-on-Tees|Stoke-on-Trent|Suffolk|Sunderland|Surrey|Sutton|Swindon|Tameside|Telford and Wrekin|Thurrock|Torbay|Tower Hamlets|Trafford|Wakefield|Walsall|Waltham Forest|Wandsworth|Warrington|Warwickshire|West Berkshire|West Sussex|Westminster|Wigan|Wiltshire|Windsor and Maidenhead|Wirral|Wokingham|Wolverhampton|Worcestershire|York"; 
s_a[238]="Artigas|Canelones|Cerro Largo|Colonia|Durazno|Flores|Florida|Lavalleja|Maldonado|Montevideo|Paysandu|Rio Negro|Rivera|Rocha|Salto|San Jose|Soriano|Tacuarembo|Treinta y Tres"; 
s_a[239]="Alabama|Alaska|Arizona|Arkansas|California|Colorado|Connecticut|Delaware|District of Columbia|Florida|Georgia|Hawaii|Idaho|Illinois|Indiana|Iowa|Kansas|Kentucky|Louisiana|Maine|Maryland|Massachusetts|Michigan|Minnesota|Mississippi|Missouri|Montana|Nebraska|Nevada|New Hampshire|New Jersey|New Mexico|New York|North Carolina|North Dakota|Ohio|Oklahoma|Oregon|Pennsylvania|Rhode Island|South Carolina|South Dakota|Tennessee|Texas|Utah|Vermont|Virginia|Washington|West Virginia|Wisconsin|Wyoming"; 
s_a[240]="Andijon Wiloyati|Bukhoro Wiloyati|Farghona Wiloyati|Jizzakh Wiloyati|Khorazm Wiloyati (Urganch)|Namangan Wiloyati|Nawoiy Wiloyati|Qashqadaryo Wiloyati (Qarshi)|Qoraqalpoghiston (Nukus)|Samarqand Wiloyati|Sirdaryo Wiloyati (Guliston)|Surkhondaryo Wiloyati (Termiz)|Toshkent Shahri|Toshkent Wiloyati"; 
s_a[241]="Malampa|Penama|Sanma|Shefa|Tafea|Torba"; 
s_a[242]="Amazonas|Anzoategui|Apure|Aragua|Barinas|Bolivar|Carabobo|Cojedes|Delta Amacuro|Dependencias Federales|Distrito Federal|Falcon|Guarico|Lara|Merida|Miranda|Monagas|Nueva Esparta|Portuguesa|Sucre|Tachira|Trujillo|Vargas|Yaracuy|Zulia"; 
s_a[243]="An Giang|Ba Ria-Vung Tau|Bac Giang|Bac Kan|Bac Lieu|Bac Ninh|Ben Tre|Binh Dinh|Binh Duong|Binh Phuoc|Binh Thuan|Ca Mau|Can Tho|Cao Bang|Da Nang|Dac Lak|Dong Nai|Dong Thap|Gia Lai|Ha Giang|Ha Nam|Ha Noi|Ha Tay|Ha Tinh|Hai Duong|Hai Phong|Ho Chi Minh|Hoa Binh|Hung Yen|Khanh Hoa|Kien Giang|Kon Tum|Lai Chau|Lam Dong|Lang Son|Lao Cai|Long An|Nam Dinh|Nghe An|Ninh Binh|Ninh Thuan|Phu Tho|Phu Yen|Quang Binh|Quang Nam|Quang Ngai|Quang Ninh|Quang Tri|Soc Trang|Son La|Tay Ninh|Thai Binh|Thai Nguyen|Thanh Hoa|Thua Thien-Hue|Tien Giang|Tra Vinh|Tuyen Quang|Vinh Long|Vinh Phuc|Yen Bai"; 
s_a[244]="Saint Croix|Saint John|Saint Thomas"; 
s_a[245]="Blaenau Gwent|Bridgend|Caerphilly|Cardiff|Carmarthenshire|Ceredigion|Conwy|Denbighshire|Flintshire|Gwynedd|Isle of Anglesey|Merthyr Tydfil|Monmouthshire|Neath Port Talbot|Newport|Pembrokeshire|Powys|Rhondda Cynon Taff|Swansea|The Vale of Glamorgan|Torfaen|Wrexham"; 
s_a[246]="Alo|Sigave|Wallis"; 
s_a[247]="West Bank"; 
s_a[248]="Western Sahara"; 
s_a[249]="'Adan|'Ataq|Abyan|Al Bayda'|Al Hudaydah|Al Jawf|Al Mahrah|Al Mahwit|Dhamar|Hadhramawt|Hajjah|Ibb|Lahij|Ma'rib|Sa'dah|San'a'|Ta'izz"; 
s_a[250]="Kosovo|Montenegro|Serbia|Vojvodina"; 
s_a[251]="Central|Copperbelt|Eastern|Luapula|Lusaka|North-Western|Northern|Southern|Western"; 
s_a[252]="Bulawayo|Harare|ManicalandMashonaland Central|Mashonaland East|Mashonaland West|Masvingo|Matabeleland North|Matabeleland South|Midlands"; 
 
 
function populateStates( countryElementId, stateElementId ){ 
	 
	var selectedCountryIndex = document.getElementById( countryElementId ).selectedIndex; 
 
	var stateElement = document.getElementById( stateElementId ); 
	 
	stateElement.length=0;	// Fixed by Julian Woods 
	stateElement.options[0] = new Option('All','-1'); 
	stateElement.selectedIndex = 0; 
 
	if(empty(s_a[selectedCountryIndex])){ 
		return true; 
	} 
 
	var state_arr = s_a[selectedCountryIndex].split("|"); 
	 
	for (var i=0; i<state_arr.length; i++) { 
		stateElement.options[stateElement.length] = new Option(state_arr[i],state_arr[i]); 
	} 
} 
 
function populateCountries(countryElementId, stateElementId){ 
	// given the id of the <select> tag as function argument, it inserts <option> tags 
	var countryElement = document.getElementById(countryElementId); 
	countryElement.length=0; 
	countryElement.options[0] = new Option('All','-1'); 
	countryElement.selectedIndex = 0; 
	for (var i=0; i<country_arr.length; i++) { 
		countryElement.options[countryElement.length] = new Option(country_arr[i],country_arr[i]); 
	} 
 
	// Assigned all countries. Now assign event listener for the states. 
 
	if( stateElementId ){ 
		countryElement.onchange = function(){ 
			populateStates( countryElementId, stateElementId ); 
		}; 
	} 
} 
 
 /*! Virtualizor (c) (Softaculous Ltd.) virtualizor.com/license */ 
 
////////////////// 
// CORE FUNCTIONS 
////////////////// 
 
// Element referencer - We use $ because we love PHP 
function $_(id){ 
	//DOM 
	if(document.getElementById){ 
		return document.getElementById(id); 
	//IE 
	}else if(document.all){ 
		return document.all[id]; 
	//NS4 
	}else if(document.layers){ 
		return document.layers[id]; 
	} 
}; 
 
String.prototype.pad = function(l, s, t){ 
	return s || (s = " "), (l -= this.length) > 0 ? (s = new Array(Math.ceil(l / s.length) 
		+ 1).join(s)).substr(0, t = !t ? l : t == 1 ? 0 : Math.ceil(l / 2)) 
		+ this + s.substr(0, l - t) : this; 
}; 
 
// PHP equivalent empty() 
function empty(mixed_var) { 
 
	var undef, key, i, len; 
	var emptyValues = [undef, null, false, 0, '', '0']; 
 
	for (i = 0, len = emptyValues.length; i < len; i++) { 
	if (mixed_var === emptyValues[i]) { 
		return true; 
	} 
	} 
 
	if (typeof mixed_var === 'object') { 
	for (key in mixed_var) { 
		// TODO: should we check for own properties only? 
		//if (mixed_var.hasOwnProperty(key)) { 
		return false; 
		//} 
	} 
	return true; 
	} 
 
	return false; 
} 
 
// Format the date 
function nDate(timestamp, format){ 
 
	format = format || ''; 
	if(empty(timestamp)){ 
		return '<i>Never</i>'; 
	} 
	var d = new Date(timestamp * 1000); 
 
	if(format == ''){ 
		var ret = d.toUTCString(); 
		return ret.replace(" GMT", ""); 
	} 
 
	var ret = format; 
	ret = ret.replace("Y", d.getUTCFullYear()); 
	ret = ret.replace("m", (d.getUTCMonth()+1).toString().pad(2, "0")); 
	ret = ret.replace("d", d.getUTCDate().toString().pad(2, "0")); 
	ret = ret.replace("H", d.getUTCHours().toString().pad(2, "0")); 
	ret = ret.replace("i", d.getUTCMinutes().toString().pad(2, "0")); 
	ret = ret.replace("s", d.getUTCSeconds().toString().pad(2, "0")); 
	return ret; 
}; 
 
// Make the first character of every word to upper case 
function ucwords(str){ 
	return (str + '').replace(/^([a-z-])|\s+([a-z-])/g, function ($1) { 
		return $1.toUpperCase(); 
	}); 
}; 
 
// Generates a random string of "n" characters 
function randstr(n, special){ 
	var text = ''; 
	var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; 
 
	special = special || 0; 
	if(special){ 
		possible = possible + '&#$%@'; 
	} 
 
	for(var i=0; i < n; i++){ 
		text += possible.charAt(Math.floor(Math.random() * possible.length)); 
	} 
 
	return text; 
}; 
 
// Return the dirname of the path 
function dirname(path) { 
	return path.replace(/\/g, '/').replace(/\/[^\/]*\/?$/, ''); 
} 
 
 
///////////////////////// 
// APPLICATION FUNCTIONS 
///////////////////////// 
 
var act = ''; 
var prevact = ''; 
var N; 
var isLoading = 0; // Page is loading 
var Disconnected = 0; // Error Loading and hence disconnected 
var currentPath = ''; // The current path where you are 
var reloadData = 1; // Reload the data i.e. the dashboard data 
var task_timeout = ''; // This is just a blank timer 
// virt_lang will have the API language as in variable like acts and all 
  
var vlang = Array(); 
vlang['act_new_api'] = 'Create new API pair'; 
vlang['act_edit_api'] = 'Edit API performed'; 
vlang['act_delete_api'] = 'Deleted API pair'; 
vlang['act_cat_vs'] = 'Virtual Server'; 
vlang['act_cat_ippools'] = 'IP Pools'; 
vlang['act_cat_servers'] = 'Servers and Server Groups'; 
vlang['act_cat_storage'] = 'Storages'; 
vlang['act_cat_backups'] = 'Server and VPS Backups'; 
vlang['act_cat_plans'] = 'Plans'; 
vlang['act_cat_users'] = 'Users'; 
vlang['act_cat_media'] = 'Media and Media Groups'; 
vlang['act_cat_config'] = 'Configuration'; 
vlang['act_cat_pdns'] = 'PowerDNS'; 
vlang['act_cat_procs'] = 'Process and Services'; 
vlang['act_cat_logs'] = 'Logs'; 
vlang['act_cat_haproxy'] = 'Domain Forwarding'; 
vlang['act_cluster_statistics'] = 'View Cluster Statistics'; 
vlang['act_server_statistics'] = 'View Server Statistics'; 
vlang['act_vs'] = 'List Virtual Server'; 
vlang['act_vsresources'] = 'View VPS Resources'; 
vlang['act_addvs'] = 'Add Virtual Server'; 
vlang['act_rebuildvs'] = 'Rebuild Virtual Server'; 
vlang['act_editvs'] = 'Edit Virtual Server'; 
vlang['act_deletevs'] = 'Delete Virtual Server'; 
vlang['act_startvs'] = 'Start Virtual Server'; 
vlang['act_stopvs'] = 'Stop Virtual Server'; 
vlang['act_restartvs'] = 'Restart Virtual Server'; 
vlang['act_poweroffvs'] = 'Poweroff Virtual Server'; 
vlang['act_suspendvs'] = 'Suspend Virtual Server'; 
vlang['act_unsuspendvs'] = 'Unsuspend Virtual Server'; 
vlang['act_vnc'] = 'Vnc access'; 
vlang['act_migrate'] = 'Migrate Virtual Server'; 
vlang['act_ippool'] = 'View IP Pools'; 
vlang['act_addippool'] = 'Add IP Pool'; 
vlang['act_editippool'] = 'Edit IP Pool'; 
vlang['act_deleteippool'] = 'Delete IP Pool'; 
vlang['act_ips'] = 'List IPs'; 
vlang['act_addips'] = 'Add IPs'; 
vlang['act_editips'] = 'Edit IPs'; 
vlang['act_deleteips'] = 'Delete IPs'; 
vlang['act_servers'] = 'View Servers'; 
vlang['act_addserver'] = 'Add Server'; 
vlang['act_editserver'] = 'Edit Server'; 
vlang['act_deleteserver'] = 'Delete Server'; 
vlang['act_sg'] = 'View Server Groups'; 
vlang['act_addsg'] = 'Add Server Group'; 
vlang['act_editsg'] = 'Edit Server Group'; 
vlang['act_deletesg'] = 'Delete Server Group'; 
vlang['act_rebootserver'] = 'Reboot Server'; 
vlang['act_manageserver'] = 'Manage Server'; 
vlang['act_terminal'] = 'Terminal'; 
vlang['act_storage'] = 'View Storages'; 
vlang['act_addstorage'] = 'Add Storage'; 
vlang['act_editstorage'] = 'Edit Storage'; 
vlang['act_deletestorage'] = 'Delete Storage'; 
vlang['act_databackup'] = 'View DB Backups'; 
vlang['act_performdatabackup'] = 'Perform DB Backups'; 
vlang['act_dldatabackup'] = 'Download DB Backups'; 
vlang['act_deletedatabackup'] = 'Delete DB Backups'; 
vlang['act_vpsbackupsettings'] = 'Edit VPS Backup Settings'; 
vlang['act_vpsbackups'] = 'View VPS Backups'; 
vlang['act_restorevpsbackup'] = 'Restore VPS Backups'; 
vlang['act_deletevpsbackup'] = 'Delete VPS Backups'; 
vlang['act_backupservers'] = 'Backup Server'; 
vlang['act_addbackupserver'] = 'Add Backup server'; 
vlang['act_editbackupservsers'] = 'Edit Backup Server'; 
vlang['act_deletebackupserver'] = 'Delete Backup Server'; 
vlang['act_plans'] = 'View Plans'; 
vlang['act_addplan'] = 'Add Plan'; 
vlang['act_editplan'] = 'Edit Plan'; 
vlang['act_deleteplan'] = 'Delete Plan'; 
vlang['act_dnsplans'] = 'View DNS Plans'; 
vlang['act_adddnsplan'] = 'Add DNS Plan'; 
vlang['act_editdnsplan'] = 'Edit DNS Plan'; 
vlang['act_deletednsplan'] = 'Delete DNS Plan'; 
vlang['act_add_dnsrecord'] = 'Add DNS Record'; 
vlang['act_users'] = 'List users'; 
vlang['act_adduser'] = 'Add user'; 
vlang['act_edituser'] = 'Edit users'; 
vlang['act_deleteuser'] = 'Delete User'; 
vlang['act_suspend_user'] = 'Suspend User'; 
vlang['act_unsuspend_user'] = 'Unsuspend User'; 
vlang['act_list_api'] = 'List API Credential'; 
vlang['act_create_api'] = 'Create API Credential'; 
vlang['act_api_credential_edit'] = 'Edit API Credential'; 
vlang['act_show_api_log'] = 'API Logs'; 
vlang['act_ostemplates'] = 'View Templates'; 
vlang['act_os'] = 'View Template Browser'; 
vlang['act_addtemplate'] = 'Add Templates'; 
vlang['act_edittemplate'] = 'Edit templates'; 
vlang['act_deletetemplate'] = 'Delete Templates'; 
vlang['act_createtemplate'] = 'Create Templates'; 
vlang['act_iso'] = 'View ISO List'; 
vlang['act_addiso'] = 'Add ISO'; 
vlang['act_editiso'] = 'Edit ISOs'; 
vlang['act_deleteiso'] = 'Delete ISOs'; 
vlang['act_mg'] = 'View Media Groups'; 
vlang['act_mediagroups'] = 'View Media Groups'; 
vlang['act_admin_acl'] = 'View Administrator ACL'; 
vlang['act_addmg'] = 'Add Media Groups'; 
vlang['act_editmg'] = 'Edit Media Groups'; 
vlang['act_deletemg'] = 'Delete Media Groups'; 
vlang['act_list_distros'] = 'View Distro List'; 
vlang['act_add_distro'] = 'Add Distros'; 
vlang['act_synciso'] = 'Sync ISO'; 
vlang['act_config'] = 'Edit General Settings'; 
vlang['act_emailsettings'] = 'Edit Email Settings'; 
vlang['act_adminacl'] = 'View Admin ACLs'; 
vlang['act_add_admin_acl'] = 'Add Admin ACL'; 
vlang['act_edit_admin_acl'] = 'Edit Admin ACL'; 
vlang['act_delete_admin_acl'] = 'Delete Admin ACL'; 
vlang['act_serverinfo'] = 'View Server Info'; 
vlang['act_licenseinfo'] = 'View License Info'; 
vlang['act_hostname'] = 'Change Hostname'; 
vlang['act_changehostname'] = 'Edit Hostname'; 
vlang['act_maintenance'] = 'Maintenance Mode'; 
vlang['act_kernconfig'] = 'Edit Kernel Config'; 
vlang['act_defaultvsconf'] = 'Default VPS Config'; 
vlang['act_twofactauth'] = 'Two factor Authentication'; 
vlang['act_updates'] = 'Perform Updates'; 
vlang['act_emailtemps'] = 'View email templates'; 
vlang['act_editemailtemps'] = 'Edit email templates'; 
vlang['act_ssl'] = 'View SSL files'; 
vlang['act_editssl'] = 'Edit SSL fIles'; 
vlang['act_createssl'] = 'Create SSL Certificate'; 
vlang['act_firewall'] = 'Manage firewall'; 
vlang['act_importvs'] = 'Import VS'; 
vlang['act_phpmyadmin'] = ' Access PhpMyAdmin'; 
vlang['act_ssh'] = 'SSH List'; 
vlang['act_pdns'] = 'PDNS'; 
vlang['act_managepdns'] = 'Manage DNS Servers'; 
vlang['act_addpdns'] = 'Add DNS Servers'; 
vlang['act_editpdns'] = 'Edit DNS Server'; 
vlang['act_deletepdns'] = 'Delete DNS Servers'; 
vlang['act_rdns'] = 'RDNS'; 
vlang['act_procs'] = 'Manage processes'; 
vlang['act_services'] = 'Services'; 
vlang['act_webserver'] = 'Restart webserver'; 
vlang['act_network'] = 'Restart network service'; 
vlang['act_sendmail'] = 'Restart mail server'; 
vlang['act_mysqld'] = 'Restart MySQL'; 
vlang['act_iptables'] = 'Restart IPTables'; 
vlang['act_logs'] = 'Logs'; 
vlang['act_deletelogs'] = 'Delete logs'; 
vlang['act_userlogs'] = 'View User logs'; 
vlang['act_deleteuserlogs'] = 'Delete User logs'; 
vlang['act_loginlogs'] = 'View Login logs'; 
vlang['act_deleteloginlogs'] = 'Delete login logs'; 
vlang['act_iplogs'] = 'View IP Logs'; 
vlang['act_deliplogs'] = 'Delete IP Logs'; 
vlang['act_checkall'] = 'Check all'; 
vlang['act_save'] = 'Save'; 
vlang['act_recipes'] = 'View Recipes'; 
vlang['act_addrecipe'] = 'Add Recipe'; 
vlang['act_editrecipe'] = 'Edit Recipe'; 
vlang['act_backup_plans'] = 'List Backup Plans'; 
vlang['act_addbackup_plan'] = 'Add Backup Plan'; 
vlang['act_editbackup_plan'] = 'Edit Backup Plan'; 
vlang['act_deletebackup_plan'] = 'Delete Backup Plans'; 
vlang['act_haproxy'] = 'Domain Forwarding'; 
vlang['act_euiso'] = 'Enduser ISO'; 
vlang['act_orphaneddisk'] = 'List Orphaned Disks'; 
vlang['act_deleteorphaneddisk'] = 'Delete Orphaned Disks'; 
vlang['act_ha'] = 'High Availability'; 
vlang['act_load_balancer'] = 'Load Balancer'; 
vlang['act_manage_load_balancer'] = 'Manage Load Balancer'; 
vlang['act_multivirt'] = 'Multi Virtualization'; 
vlang['act_webuzo'] = 'webuzo'; 
vlang['act_billing'] = 'Billing'; 
vlang['act_resource_pricing'] = 'Resource Billing'; 
vlang['act_invoices'] = 'List invoices'; 
vlang['act_transactions'] = 'Transactions'; 
vlang['act_addinvoice'] = 'Add Invoice'; 
vlang['act_addtransaction'] = 'Add Transaction'; 
vlang['act_performance'] = 'Peformance'; 
vlang['act_vpsmanage'] = 'Dashboard'; 
vlang['act_editapi'] = 'Edit API'; 
vlang['act_sso'] = 'Single Sign On'; 
vlang['act_apps'] = 'Applcations'; 
vlang['act_editsshkey'] = 'Edit SSH keys'; 
vlang['act_addsshkey'] = 'Add SSH keys'; 
vlang['act_sshkeys'] = 'SSH keys'; 
vlang['act_editbackupserver'] = 'Edit backup server'; 
vlang['act_managevdf'] = 'Manage VDF'; 
vlang['act_tasks'] = 'List tasks'; 
vlang['act_ctasks'] = 'List tasks'; 
vlang['act_self_shutdown'] = 'Self Shutdown'; 
vlang['act_managesubnets'] = 'Manage IPv6 Subnets'; 
vlang['act_managezone'] = 'Manage DNS zone'; 
vlang['act_payment'] = 'Make payment'; 
vlang['act_listrecipes'] = 'List recipes'; 
vlang['act_crecipes'] = 'Configure recipes'; 
vlang['act_cloudres'] = 'Cloud resources'; 
vlang['act_create'] = 'Create VPS'; 
vlang['act_hvmsettings'] = 'HVM settings for VPS'; 
vlang['act_apikey'] = 'List API keys'; 
vlang['act_vncpass'] = 'Vnc password'; 
vlang['act_listvs'] = 'List VPS'; 
vlang['act_usersettings'] = 'User settings'; 
vlang['act_addrdns'] = 'Add RDNS'; 
vlang['act_userpassword'] = 'User password'; 
vlang['act_profile'] = 'Profile'; 
vlang['act_userpanel'] = 'User\'s dashboard'; 
vlang['act_controlpanel'] = 'Control panel'; 
vlang['act_changepassword'] = 'Change password'; 
vlang['act_bandwidth'] = 'Bandwidth'; 
vlang['act_system_alerts'] = 'System alerts'; 
vlang['act_statuslogs'] = 'Status Logs'; 
vlang['act_console'] = 'Console Access'; 
vlang['act_add_ssh'] = 'Configure SSH'; 
vlang['act_ram'] = 'RAM'; 
vlang['act_cpu'] = 'CPU'; 
vlang['act_monitor'] = 'Monitor'; 
vlang['act_ostemplate'] = 'Os templates'; 
vlang['act_rescue'] = 'Rescue mode'; 
vlang['act_poweroff'] = 'Power OFF'; 
vlang['act_start'] = 'Start'; 
vlang['act_restart'] = 'Restart'; 
vlang['act_stop'] = 'Stop'; 
vlang['act_suspend_net'] = 'Suspend Network'; 
vlang['act_unsuspend_net'] = 'Unsuspend Network'; 
vlang['act_unsuspend'] = 'Unsuspend VPS'; 
vlang['act_suspend'] = 'Suspend VPS'; 
vlang['act_delvs'] = 'Delete VPS'; 
vlang['act_register'] = 'Register'; 
vlang['act_login'] = 'Login'; 
vlang['act_editvm'] = 'Edit VPS'; 
vlang['act_backup2'] = 'Backup/Restore'; 
vlang['act_dashboard'] = 'Dashboard'; 
vlang['act_return_session'] = 'Return Session'; 
vlang['act_domains'] = 'DNS Zones'; 
vlang['act_dnsrecords'] = 'DNS Records'; 
vlang['act_edit_dnsrecord'] = 'Edit DNS Record'; 
vlang['act_managevps'] = 'Manage Virtual Server'; 
vlang['act_ipranges'] = 'IPv6 Subnets'; 
vlang['act_addiprange'] = 'Add IPv6 Subnet'; 
vlang['act_editiprange'] = 'Edit IP'; 
vlang['act_servergroups'] = 'Server Groups / Regions'; 
vlang['act_user_plans'] = 'User Plans'; 
vlang['act_adduser_plans'] = 'Add User Plan'; 
vlang['act_edituser_plans'] = 'Edit User Plans'; 
vlang['act_editinvoice'] = 'Edit Invoice'; 
vlang['act_edittransaction'] = 'Edit Transaction'; 
 
$(document).ready(function(){ 
	var q = windowHASH(); 
	loadpage(q); // Load the Dashboard by default 
	cdrom_bootorder();  
}); 
 
// Shows the loading text 
function Loading(show){ 
 
	Disconnected = 0; // By default we assume we are connected 
 
	// Error loading 
	if(show < 0){ 
 
		isLoading = 0; 
		Disconnected = 1; 
 
		// Show we are disconnected 
		$("#loading").html('Not connected. Please try again.'); 
		$_('loading').style.left = ((document.body.clientWidth - $("#loading").width()) / 2).toString() + "px"; 
		$("#loading").show(); 
 
		return; 
 
	} 
 
	// Set the loading text 
	$("#loading").html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> Loading...'); 
 
	// Put it in the center 
	$_('loading').style.left = ((document.body.clientWidth - $("#loading").width()) / 2).toString() + "px"; 
 
	// Are we already showing this ? 
	if(show > 0 && isLoading > 0){ 
 
		return; 
 
	// We need to show the bar 
	} else if (show > 0 && isLoading < 1){ 
 
		isLoading = 1; 
		$("#loading").show(); 
		return; 
 
	// We need to hide the bar 
	} else if (show < 1 && isLoading > 0){ 
 
		isLoading = 0; 
		$("#loading").hide(); 
		return; 
	} 
 
}; 
 
// Our special ajax function which also shows the loading text 
function AJAX(url, success, failure){ 
 
	Loading(1); // Show the loading text 
 
	$.getJSON(url, function(data, textStatus, jqXHR) { 
 
		Loading(0); // Hide the loading text 
 
		// Is there a success function ? 
		if(typeof success === 'function'){ 
			success(data, textStatus, jqXHR); 
		} 
 
	}).fail(function (data, textStatus, jqXHR){ 
 
		Loading(-1); // Hide the loading text 
		//alert(data +' -- '+ textStatus + ' -- '+jqXHR) 
 
		// Is there a failure function ? 
		if(typeof failure === 'function'){ 
			failure(); 
		} 
 
	}); 
 
}; 
 
// Submits a FORM 
function POST(obj, submitresponse){ 
	 
	submitresponse = submitresponse || 'DOESNT_EXIST'; 
	 
	Loading(1); // Show the loading text 
	 
	obj['type'] = "POST"; 
	obj['dataType'] = "json"; 
	obj['success'] = function(data, textStatus, jqXHR) { 
	 
		Loading(0); // Hide the loading text 
				 
		// Is there an submitresponse function 
		var fn = (typeof submitresponse != 'function' ? window[submitresponse]: submitresponse); 
		 
		// If its there, then call it 
		if(typeof fn === 'function'){ 
			if(fn(data) == -1){ 
				return; 
			} 
		} 
		 
		// Handles the responses 
		handleResponseData(data, obj['extradata']); 
		 
	}; 
	 
	obj['xhrFields'] = { 
		withCredentials: true 
	}; 
		 
	obj['crossDomain'] = true; 
	 
	$.ajax(obj); 
	 
	return true; 
	 
}; 
 
// Parse the variables 
function parseVars(id, obj){ 
 
	$("#"+id+" [var]").each(function(){ 
		if($(this).attr('var') != "undefined"){ 
 
			// Remove the $ 
			var varname = $(this).attr('var'); 
			varname = varname.substring(1); 
 
			// A tag (this is not in the if else !) 
			if($(this).is("a") && $(this).attr("nhref") != "undefined"){ 
 
				$(this).attr("href", replaceVars($(this).attr("nhref"), obj)); 
 
			} 
 
			// Input Text type 
			if($(this).is("input") && ($(this).attr("type") == "text" || $(this).attr("type") == "number" || $(this).attr("type") == "password" || $(this).attr("type") == "hidden")){ 
 
				$(this).val(obj[varname]); 
 
			// Input Text Checkbox 
			}else if($(this).is("input") && $(this).attr("type") == "checkbox"){ 
 
				if(obj[varname]){ 
					if(obj[varname] != "" && obj[varname] != "0"){ 
						$(this).prop("checked", true); 
					} 
				}else{ 
					$(this).prop("checked", false); 
				} 
 
			// Select 
			}else if($(this).is("select")){ 
 
				$(this).find('option').each(function() { 
					if($(this).val() == obj[varname]){ 
						$(this).prop("selected", true); 
					}else{ 
						$(this).prop("selected", false); 
					} 
				}); 
 
			// Direct tags 
			}else{ 
				$(this).html(obj[varname]); 
			} 
		} 
	}); 
 
}; 
 
// Replace the variables 
function replaceVars(txt, obj){ 
 
	// Do we have an element instead of text 
	var isObject = (typeof txt == "object"); 
	var text = (isObject ? txt.html() : txt); 
 
	for(x in obj){ 
 
		if(typeof obj[x] != "string" && typeof obj[x] != "number"){ 
			continue; 
		} 
 
		text = text.replace("$"+x, obj[x]); 
	} 
 
	// If it was an object we simply put in the html and return 
	if(isObject){ 
		txt.html(text); 
		return; 
	} 
 
	// Return the text 
	return text; 
 
}; 
 
// Call a URL and display results 
function call(url){ 
 
	// Make the request to restore 
	AJAX('index.php?api=json&'+url, function(data) { 
		 
		// Handle the data 
		handleResponseData(data) 
	}); 
 
}; 
 
// Custom Modal Function. 
var modalConfirm = function(callback,msg){ 
	 
	$("#confirm-modal .modal-body").html(msg); 
	$("#confirm-modal").modal('show'); 
 
	$("#ok").off().on("click", function(){ 
		callback(true); 
		$("#confirm-modal").modal('hide'); 
	}); 
	 
	$("#cancel").off().on("click", function(){ 
		callback(false); 
		$("#confirm-modal").modal('hide'); 
	}); 
 
}; 
 
function handleResponseData(data){	 
 
	// Are there any errors ? 
	if(typeof(data["error"]) != 'undefined'){ 
		error(data["error"]); 
	} 
	// Are we to show a success message ? 
	if(typeof(data["done"]) != 'undefined'){ 
		done(data["done"]); 
	} 
 
	// Are we to get redirected ? 
	if(typeof(data["redirect"]) != 'undefined'){ 
		redirect(data["redirect"]); 
	} 
 
	// Are we to get redirected ? 
	if(typeof(data["goto"]) != 'undefined'){ 
		loadpage(data["goto"]); 
	} 
	 
	if(typeof(data["euisoconfirm"]) != 'undefined'){ 
		delisokey(data["euisoconfirm"],1); 
	} 
	 
}; 
 
// Gets the HASH of the browser 
function windowHASH(){ 
	var hash = window.location.hash; 
 
	// Is there a HASH ? 
	if(hash.substring(0,1) == '#'){ 
		hash = hash.substring(1); 
		if(hash.substring(0,1) == '!'){ 
			hash = hash.substring(1); 
		} 
	} 
 
	return hash; 
}; 
 
// Add a function for hash change 
$(window).on('hashchange', function() { 
	var currentHash = windowHASH(); 
	if(act != findACT(currentHash)){ 
		loadpage(currentHash); 
	} 
}); 
 
// Finds the act 
function findACT(query){ 
	var ACT = ''; 
	var patt = /act\=(\w*)(&*)(.*)/g; 
	var result = patt.exec(query); 
	if(result != null){ 
		ACT = result[1]; 
	} 
	return ACT; 
}; 
 
// The page jumper box 
function pagejump(ele, len, urlto, call_func){ 
 
	var offset = $(ele).offset(); 
	offset.left -= 5; 
	offset.top += ele.offsetHeight + 2; 
	//alert(offset.top+" - "+offset.left); 
	call_func = call_func || 'loadpage'; 
 
	// Is there an ONSHOW function 
	var isit_fn = window[call_func]; 
 
	var pageJumpTimer; 
 
	$(ele).mouseout(function() { 
		pageJumpTimer = setTimeout("$('#pagejump').hide();", 100); 
	}); 
 
	$("#pagejump :text").val(''); 
	$("#pagejump form").submit(function() { 
		val = $("#pagejump :text").val(); 
		val = parseInt(val); 
		if(val > 0 && val <= len){ 
 
			if(typeof isit_fn === 'function'){ 
				isit_fn(urlto+(val)); 
			}else{ 
				loadpage(urlto+(val)); 
			} 
 
			$('#pagejump').hide(); 
		} 
		return false; 
	}); 
	 
 
	$("#pagejump").mouseout(function() { 
		pageJumpTimer = setTimeout("$('#pagejump').hide();", 100); 
	}); 
 
	$("#pagejump").mouseover(function() { 
		clearTimeout(pageJumpTimer); 
	}); 
 
	// Set the offset 
	$_('pagejump').style.left=Math.ceil(offset.left + 5)+"px"; 
	$_('pagejump').style.top=Math.ceil(offset.top)+"px"; 
 
	$("#pagejump").show(); 
 
}; 
 
// Builds the page links 
function pageLinks(id, urlto, pages, call_func, pageParam){ 
 
	$("#"+id+" .pagination-top").hide(); 
	$("#"+id+" .pagination-bottom").hide(); 
 
	pageInfo = pages || (typeof(N["page"]) == "undefined" ? false : N["page"]); 
	call_func = call_func || 'loadpage'; 
	pageParam = pageParam || 'page'; 
 
	// Is there a pagination ? 
	if(!pageInfo){ 
		return; 
	} 
 
	// Make the URL 
	var urlto = (urlto || windowHASH()).toString(); 
	var final = urlto.replace(/(&?)start\=(\d{1,4})/gi,"")+"&"+pageParam+"="; 
 
	// Number of Pages 
	var $pages = Math.ceil(pageInfo["maxNum"] / pageInfo["len"]); 
 
	// Current Page 
	var $pg = (pageInfo["start"]/pageInfo["len"]) + 1; 
 
	var $_pages = new Object(); 
 
	if($pages > 1){ 
 
		// Show th Back Links if required 
		if($pg != 1){ 
			$_pages['&lt;&lt;'] = 1; 
			$_pages['&lt;'] = ($pg - 1); 
		} 
 
		for($i = ($pg - 4); $i < $pg; $i++){ 
			if($i >= 1){ 
				$_pages["i"+$i] = $i; 
			} 
		} 
 
		$_pages["i"+$pg] = $pg; 
 
		for($i = ($pg + 1); $i <= ($pg + 4); $i++){ 
			if($i <= $pages){ 
				$_pages["i"+$i] = $i; 
			} 
		} 
 
		if($pg != $pages){ 
			$_pages['&gt;'] = ($pg + 1); 
			$_pages['&gt;&gt;'] = $pages; 
		} 
 
	} 
 
	// Make the table 
	var str = '<nav>'+ 
'<ul class="pagination pagination-sm justify-content-start m-0">'+ 
'<li class="page-item"><a href="javascript:'+call_func+'(\''+final+1+'\')" onmouseover="pagejump(this, '+$pages+', \''+final+'\', \''+call_func+'\')" class="page-link" title="Type the page to jump to" >Page '+$pg+' of '+$pages+'</a></li>'; 
 
	for(x in $_pages){ 
		var i = x.substring(0, 1) == "i" ? x.substring(1) : x; 
		str += '<li class="' + (i == $pg ? 'page-item active' : 'page-item' ) + '"><a href="javascript:'+call_func+'(\''+final+$_pages[x]+'\')" class="page-link">'+i+'</a></li>'; 
	}; 
 
	str += '</ul>'+ 
'</nav>'; 
 
	$("#"+id+" .pagination-top").html(str); 
	$("#"+id+" .pagination-top").show(); 
 
	$("#"+id+" .pagination-bottom").html(str); 
	$("#"+id+" .pagination-bottom").show(); 
 
}; 
 
// Redirect completely 
function redirect(to){ 
	window.location = to; 
}; 
 
// Refresh 
function refresh_page(){ 
	var q = windowHASH(); 
	loadpage(q); 
}; 
 
// Gets the JSON Data from the server for the given page 
function loadpage(query){ 
 
	// Store the old act 
	prevact = act; 
 
	// Find out the act 
	act = findACT(query); 
	 
	// Left menu remove selection 
	$('.left-sidebar-menu li').removeClass('active-menu'); 
	 
	// As per act show selected  
	$('#lm'+act).addClass('active-menu').siblings('.active-menu').removeClass('active-menu'); 
 
	if(act == ''){ 
		var svs = getParameterByName('svs', 1); 
		if(svs != ''){ 
			act = 'vpsmanage'; 
			query = 'act=vpsmanage&'+query; 
		}else{ 
			act = 'listvs'; 
			query = 'act=listvs&'+query; 
		} 
	} 
 
	if(act != 'logout'){ 
		window.location.hash = query; 
	} 
 
	// Is there an ONLEAVE function ? 
	var leavefn = window[prevact+'_onleave']; 
	if(typeof leavefn === 'function'){ 
		leavefn(); 
	} 
 
	// Are we to reload the data ? 
	if(reloadData < 1){ 
		handleData(); 
		return; 
	} 
 
	// Is there an PRELOAD function ? 
	var prefn = window[act+'_preload']; 
	if(typeof prefn === 'function'){ 
		if(prefn() == -1){ 
			return; 
		} 
	} 
 
	// Get the data 
	AJAX('index.php?api=json&'+query+'&random='+Math.random(), function(data) { 
 
		// Set the loaded data 
		N = data; 
 
		let profile_warning = document.getElementById('profile-warning'); 
 
		var preference_keys = Object.keys(N['preferences']); 
		let is_all_values = check_all_values(preference_keys); 
 
		if(is_all_values[0] > 0 && !empty(N['force_preference']) && N['act'] !== 'register'){ 
      N["act"] = 'profile'; 
      $("#profile-warning").show(); 
		 }else{ 
      $("#profile-warning").hide(); 
		}	 
 
		// If its not a valid act then its DashBoard 
		if(typeof(N["act"]) != 'undefined'){ 
			if(act != N["act"]){ 
				act = N["act"]; 
			} 
		} 
 
		// Set that we dont need to load data 
		//reloadData = 0; 
 
		// Handle the data 
		handleData(); 
 
	}); 
 
	if(typeof(task_timeout) != 'undefined'){ 
		clearTimeout(task_timeout); 
	} 
 
	var tab = getParameterByName('tab', 1); 
 
	// if url has tab then redirect to correct tab 
	if(!empty(tab)){ 
		$('a[href="#'+tab+'"]').tab('show'); 
	} 
	 
	virt_pop(); 
 
}; 
 
// Check that all values are includes or not and return length and which fields are not filled 
function check_all_values(array){ 
	let tmp_profile_fields = []; 
	let profile_fields = ['fname','lname','company','address','country','state','city','zip','phone','sys_admin_email']; 
 
	for(let i=0; i<profile_fields.length;i++){ 
		if(!array.includes(profile_fields[i])){ 
			tmp_profile_fields.push(profile_fields[i]); 
		} 
	} 
 
	return [tmp_profile_fields.length, tmp_profile_fields]; 
} 
 
// Handles the N data 
function handleData(){ 
 
	// Are you logged in ? 
	if(N["uid"] < 0){ 
		if(act != 'register'){ 
			act = 'login'; 
		} 
		$("#welcome").hide(); 
	}else{ 
		$("#welcome").show(); 
		$("#luser").html(N["username"]); 
	} 
	 
	// Set the time 
	if(typeof(N["timezone"]) != 'undefined'){ 
		if(N["timezone"] != 0){ 
			$("#timezone").html(N["timezone"]); 
		} 
		$("#timenow").html(N["timenow"]); 
	} 
	 
	$('#suspend_div').html(""); 
 
	// Are we to get redirected ? 
	if(typeof(N["redirect"]) != 'undefined'){ 
		redirect(N["redirect"]); 
	} 
	 
	if(!empty(N["suspended"])){ 
		$("#suspended").show(); 
		$("#mainwindow").hide(); 
		$("#suspended").html(N["suspended"]["reason"]); 
		 
		if(!empty(N["disable_login_logo"])){ 
			$('.disable_loginlogo').show(); 
		}else{ 
			$('.main-logo').show(); 
		} 
	} 
 
	// Is there an ONLOAD function 
	var fn = window[act+'_onload']; 
 
	// If its there, then call it 
	if(typeof fn === 'function'){ 
		if(fn() == -1){ 
			return; 
		} 
	} 
	// to update count of the resources in the left menu. 
	counts(); 
 
	// Show the window 
	showwindow(act); 
 
	// Is there an ONSHOW function 
	var fnshow = window[act+'_onshow']; 
 
	// If its there, then call it 
	if(typeof fnshow === 'function'){ 
		fnshow(); 
	} 
 
	// Is there anything we have to hide (e.g left menu items, ...) 
	Hidedata(); 
 
	header_fix(); 
 
} 
 
// Shows the div which has the class "windows" and hides the remaining divs 
function showwindow(name){ 
 
	var orig = name; 
	var className = 'khidki'; 
	var el_class = $("#"+name).attr('class'); 
 
	if(typeof el_class == "undefined"){ 
		return false; 
	} 
 
	if(el_class.match(/tabwindow/g)){ 
		name = $("#"+orig).closest(".khidki").attr('id'); 
	} 
 
	// Is it of type "windows" 
	if(el_class.match(/windows/g)){ 
		className = 'windows'; 
 
	// If its a "KHIDKI" then you will have to enable the "mainwindow" 
	}else{ 
		$(".windows").each(function(){ 
			if($(this).attr('id') != 'mainwindow'){ 
				$(this).hide(); 
			}else{ 
				$(this).show(); 
			} 
		}); 
	} 
 
	$("."+className).each(function(){ 
		if($(this).attr('id') != name){ 
			$(this).hide(); 
		}else{ 
			$(this).show(); 
		} 
	}); 
 
	$("#"+name+" img,#"+name+" input[type=image]").each(function(){ 
		//alert($(this).attr('nsrc')+" - "+$(this).attr('src')); 
		if($(this).attr('nsrc') != "undefined"){ 
			$(this).attr('src', $(this).attr('nsrc')); 
		} 
	}); 
 
	// Is there a navigation ? 
	var navlist = $("#"+name+" .navlist"); 
	var nav = $("#"+name+" .nav"); 
	if(typeof(nav.html()) != 'undefined' && typeof(navlist.html()) != 'undefined'){ 
		var curnav = new Array(); 
		var i = 0; 
		curnav[i] = '<a href="javascript:loadpage(\'\')">{{navindex}}</a>'; 
 
		// Parse the navlist 
		var _navlist = $.parseJSON(navlist.html()); 
 
		for(x in _navlist){ 
			i++; 
			curnav[i] = '<a href="javascript:loadpage(\'act='+x+'\')">'+_navlist[x]+'</a>'; 
		} 
 
		nav.html(curnav.join(' &nbsp;>&nbsp; ')); 
		nav.show(); 
	} 
 
	// Tab Window reversal 
	if(orig != name){ 
 
		// Hide the other tabwindows 
		$("#"+name+" .tabwindow").each(function(){ 
			if($(this).attr('id') != orig){ 
				$(this).hide(); 
			}else{ 
				$(this).show(); 
			} 
		}); 
 
		// Set the current active tab 
		$("#"+name+" .ui-tabs-nav a").each(function(){ 
			if($(this).attr('id') != orig+'_tab'){ 
				$(this).parent().attr('class', 'ui-state-default ui-corner-top'); 
			}else{ 
				$(this).parent().attr('class', 'ui-state-default ui-corner-top ui-tabs-active ui-state-active'); 
			} 
		}); 
 
		name = orig; 
 
	} 
 
	// Are there any errors ? 
	if(typeof(N["error"]) != 'undefined'){ 
		error(N["error"]); 
	} 
 
	return true; 
}; 
 
 
// Shows a success message 
function done(success){ 
 
	var count = 0; 
	var goto = ""; 
	for (k in success) count++; 
 
	// If count is 0 then no success message was there 
	if(count < 1) return; 
 
	if(typeof(success["msg"]) != 'undefined'){ 
		success_alert(success["msg"]); 
	} 
 
	// Are we to get redirected ? 
	if(typeof(success["goto"]) != 'undefined'){ 
 
		// This acts has the tabs. 
		var acts = ['users', 'euiso', 'sshkeys']; 
 
		acts.forEach(function(i){ 
			 
			if(success["goto"].search(i) > 0){ 
				// we will redirect to the list tab 
				$('a[href="#'+i+'-list"]').tab('show');	 
			} 
		}); 
 
		loadpage(success["goto"]); 
	} 
 
	/*// Show the Success Message 
	for (k in success) { 
		if(k == "goto"){ 
			goto = success[k]; 
			continue; 
		} 
		alert(success[k]); 
	}*/ 
 
}; 
 
// Shows the error 
function error(er){ 
	 
	var count = 0; 
	for (k in er) count++; 
 
	// If count is 0 then no error was there 
	if(count < 1) return; 
	 
	var err_str = ""; 
	// Show the errors 
	var count = 1; 
	for (k in er) { 
		err_str += count++ +") " + er[k] + "<br>"; 
	} 
 
	error_alert(err_str); 
}; 
 
// Is there an error ? 
function isError(key){ 
 
	key = key || ""; 
 
	var c = 0; 
 
	// Is the key there ? If not, then check the length of the error object 
	if(key.length < 1){ 
 
		if(typeof(N["error"]) != "undefined"){ 
 
			// Is there any error ? 
			for(x in N["error"]){ 
				c++; 
			} 
 
			// If count is greater than 0 
			if(c > 0){ 
				return true; // Found an error 
			} 
		} 
 
	} 
 
	// Is error there ? 
	if(typeof(N["error"]) == "undefined"){ 
		return false; 
 
	// Is the length there ? 
	}else{ 
 
		// Is there any error ? 
		for(x in N["error"]){ 
			c++; 
		} 
 
		if(c < 1){ 
			return false; // Found an error 
		} 
 
	} 
 
	if(typeof(N["error"][key]) != "undefined"){ 
		return true; 
	} 
}; 
 
// Fatal Error 
function fatal_error(newpage, key){ 
	error(N["error"]); // Show the errors 
	loadpage(newpage); // Load the new page 
	return -1; // Return -1 to stop further processing 
}; 
 
// Submits a FORM 
function submitit(el, submitresponse){ 
 
	var id; 
	 
	// Get the ID of the data 
	if(typeof(el) == "string"){ 
		id = '#'+el; 
	}else{ 
		id = '#'+el.id; 
	} 
 
	// NOTE : $(id).serialize() doesnt take the submit values. Hence use hidden fields to add the values 
 
	var obj = { 
		url: 'index.php?api=json&'+$(id).attr('action'), 
		data: $(id).serialize() 
	}; 
	 
	// Post the data 
	POST(obj, submitresponse); 
	 
	// We return false to avoid an ACTUAL SUBMIT 
	return false; 
 
}; 
 
// Creates the TABLE 
function table(props, cols, data){ 
 
	var elid = props['id']; 
 
	// Final Properties 
	var fp = {"width" : '100%', 
			"class" : 'table table-hover tablesorter border w-100', //shadow altrowstable gridtable 
			"border" : '0', 
			"cellspacing" : '1', 
			"cellpadding" : '8', 
			"align" : 'center', 
			"tid" : '' 
		}; 
 
	for (x in props){ 
		fp[x] = props[x]; 
	} 
 
	// Create the TABLE 
	var table = '<table id="'+fp["tid"]+'" border="'+fp["border"]+'" cellspacing="'+fp["cellspacing"]+'" cellpadding="'+fp["cellpadding"]+'" class="'+fp["class"]+'" align="'+fp["align"]+'" width="'+fp["width"]+'"><thead><tr>'; 
 
	// Add the headers 
	for(x in cols){ 
		table += '<th '+(cols[x]["width"] ? 'width="'+cols[x]["width"]+'"' : '')+' '+(cols[x]["class"] ? 'class="'+cols[x]["class"]+'"' : '')+'>'+cols[x]["l"]+'</th>'; 
	} 
 
	table += '</tr></thead>'; 
 
	var $i = 0; // For color 
 
	for(d in data){ 
		$i++; 
		table += '<tr>'; 
 
		for(x in cols){ 
			table += '<td '+(cols[x]["centered"] ? 'align="center"' : '')+' '+(cols[x]["align"] ? 'align="'+cols[x]["align"]+'"' : '')+'>'+data[d][x]+'</td>'; 
		} 
 
		table += '</tr>'; 
	} 
 
	table += '</table>'; 
 
	$('#'+elid).html(table); 
 
 
}; 
 
 
////////////////////// 
// GRAPHING FUNCTIONS 
////////////////////// 
 
// Draw a Resource Graph 
function resource_graph(id, data){ 
 
	$.plot($("#"+id), data, 
	{ 
		series: { 
			pie: { 
				innerRadius: 0.7, 
				radius: 0.8, 
				show: true, 
				label: { 
					show: true, 
					radius: 0, 
					formatter: function(label, series){ 
						if(label != "Used") return ""; 
						return '<div class="gray-txt" style="font-size:18px;text-align:center;padding:2px;">'+series.percent.toFixed(2)+'%</div><div style="font-size:10px;">'+label+'</div>'; 
					} 
				} 
			} 
		}, 
		legend: { 
			show: false, 
			position: 'nw' 
		} 
	}); 
} 
 
// Draw Live status graphs 
function live_resource_graph(id, data, options, show_in, show_time){ 
 
	var plot = $.plot($("#"+id), data, options); 
 
 
	if(!('tooltip' in options)){ 
		var previousPoint = null; 
		$("#"+id).bind("plothover", function (event, pos, item) { 
			$("#x").text(pos.x.toFixed(2)); 
			$("#y").text(pos.y.toFixed(2)); 
 
			if(item){ 
 
				if (previousPoint != item.dataIndex) { 
					previousPoint = item.dataIndex; 
					$("#tooltip").remove(); 
					var x = item.datapoint[0].toFixed(2); 
					var y = item.datapoint[1].toFixed(2); 
					var time = ''; 
 
					if(show_time){ 
						time = nDate(x, 'm/d H:i:s'); 
					} 
 
					if(id == "ntw_plot" || id == "io_read_plot" || id == "io_write_plot"){ 
					 
						var yval = parseInt(y); 
						var show_ntw_in; 
						 
						if(yval <= 1024){ 
							show_ntw_in = 'B/s'; 
						}else if(yval > 1024 && yval <= (1024*1024)){ 
							yval = (yval/1024).toFixed(2); 
							show_ntw_in = 'KB/s'; 
						}else if(yval > (1024*1024) && yval <= (1024*1024*1024)){ 
							yval = (yval/1024/1024).toFixed(2); 
							show_ntw_in = 'MB/s'; 
						}else if(yval > (1024*1024*1024)){ 
							yval = (yval/1024/1024/1024).toFixed(2); 
							show_ntw_in = 'GB/s'; 
						} 
						 
						showTooltip(item.pageX, item.pageY, item.series.label + " " + yval + " "+ show_ntw_in + "&nbsp; at &nbsp;" + time); 
					}else{ 
						showTooltip(item.pageX, item.pageY, parseFloat(y) + " "+ show_in + time); 
					} 
 
				} 
			}else{ 
				$("#tooltip").remove(); 
				previousPoint = null; 
			} 
		}); 
	} 
}; 
 
function gd(year, month, day) { 
	return new Date(year, month - 1, day).getTime(); 
}; 
 
///////////////////////// 
// ALL ONLOAD FUNCTIONS 
///////////////////////// 
 
var vnc_vm = new Array(); 
 
function listvs_onload(){ 
 
	if(isError()){ 
		error(N["error"]); 
		return -1; 
	} 
 
	var is_cloud = false; 
	var vs_no_res_cloud = ''; 
 
	if('user_type' in N){ 
 
		if(N['user_type'] == 2){ 
			is_cloud = true; 
			vs_no_res_cloud = ' ! <a href="#act=create"><u>Create a new VPS now</u></a>.' 
		} 
	} 
 
	if(N["vs"] == ''){ 
		$('#vslist').html(`<div class="notice">No VPS were found${vs_no_res_cloud}</div>`); 
		$('#pagelinks_vslist .pagination-top, #vslist-bottom-go-options, #pagelinks_vslist .pagination-bottom').hide(); 
		return; 
	} 
	$('#vslist').html(''); 
	$('#suspend_div').html(""); 
 
	pageNum = getParameterByName('page', 1); 
 
	if('servergroups' in N){ 
 
		var server_groups = N['servergroups']; 
 
		server_groups_html = ''; 
 
		for(i=0;i<server_groups.length;i++){ 
		 
			server_groups_html += "<option value='"+server_groups[i]['sgid']+"'>"+server_groups[i]['sg_name']+"</option>";  
		} 
 
		$('#group-option').html(server_groups_html); 
	} 
 
	$('.userc').hide(); 
 
	if(is_cloud){ 
		$('.userc').show(); 
	} 
 
	var cols = new Object(); 
	cols["state"] = {"l" : '<i id="refresh_status" class="fas fa-sync-alt" aria-hidden="true" onclick="loadpage(\'act=listvs\');"></i>', "width": '3%'}; 
	cols["vpsid"] = {"l" : 'ID', "width" : '5%'}; 
	//cols["vps_name"] = {"l" : 'Name', "width" : '60'}; 
	//Is hide virt is setting is enabled? 
	if(empty(N['disable_virttype'])){ 
    cols["vtype"] = {"l" : 'Type', "width" : '10%'}; 
	} 
	cols["osimg"] = {"l" : 'OS', "width" : '5%'}; 
	cols["hostname"] = {"l" : 'Hostname', "width" : '150'}; 
	cols["user"] = {"l" : 'User', "width" : '150'}; 
 
	if(!empty(N['info']['flags']['show_server'])){ 
		cols["server"] = {"l" : 'Server', "width" : "150"}; 
	} 
 
	if(!empty(N['inhouse_billing'])){		 
		$(".inhouse-billing").show(); 
	} 
 
	if(N['user_type'] == 2){ 
		cols['vps_action'] = {"l" : 'Action', "width" : '10%'}; 
	} 
	 
	cols["select_all"] = {"l" : '<div class="custom-control custom-checkbox"><input type="checkbox" name="select_all" id="vps_select_all" class="select_all custom-control-input" onchange="checkbox_select_all(this);"><label class="custom-control-label" for="vps_select_all"></label></div>', "width" : '1%', "class" : 'select-all-checkbox'}; 
	cols["manage_vm"] = {"l" : '', "width" : '1%'}; 
	 
	// Prepare the list 
	for(x in N["vs"]){ 
		 
		if(!empty(N["vs"][x]["vnc"])){ 
			vnc_vm.push(x); 
		} 
		 
		$v = N["vs"][x]; 
		N["vs"][x]["state"] = '<span id="stat_'+ x +'" style="position:relative;" class="vpsswitches" onmouseenter="showvpsmenu('+$v['vpsid']+');" onmouseleave="hidemenu();" ><i class="vpslist fa fa-circle '+ ($v['status'] == 2 ? ' suspend" title="Suspended VPS"' : ($v['status'] == 1 ? 'start" title="Online"' : 'stop" title="Offline"'))+ '/></span>'; 
 
		//Is hide virt is setting is enabled? 
		if(empty(N['disable_virttype'])){ 
			N["vs"][x]["vtype"] = show_virt_name($v['virt'] +($v['hvm'] < 1 ? '' : 'hvm')); 
		} 
 
		var os_distro = $v['distro']; 
		N["vs"][x]["osimg"] = '<img src="'+( os_distro.match(/^http/g) ? $v['distro'] : 'themes/default/images/'+ $v['distro'] )+'" />'; 
 
		if(!empty(N['info']['flags']['show_server'])){ 
			N["vs"][x]["server"] = `<span class="vs-data-1">${N["vs"][x]["server_name"]}</span><span class="d-block font-weight-light">${N["vs"][x]["region"]}</span>`; 
		} 
 
		var ip_count = 0; 
		var ips = ''; 
 
		if('ips' in N["vs"][x]){ 
			$.each(N["vs"][x]["ips"], function(index, value){ 
				if(ip_count != 0){ 
					ips += '<div>'+value+'</div>'; 
				} 
				ip_count++; 
			}); 
		} 
 
		var display_class = ''; 
		var charges = ''; 
 
		if(ip_count <= 1){ 
			display_class = 'd-none'; 
		}else{ 
			display_class = 'd-inline-block'; 
		} 
 
		for (var k in N["vs"][x]["ips"]){ 
			ips = N["vs"][x]["ips"][k]+'<span class="ip_count pop ml-3 '+display_class+'" data-content="'+ips+'" data-toggle="popover" data-aniamtion="true">+'+(ip_count - 1)+'</span>'; 
			break; 
		} 
 
		N["vs"][x]['hostname'] = '<span class="hostname-span vs-data-1" id="tr_hostname'+$v['vpsid']+'">'+$v['hostname']+'</span>'+ (!empty($v['nw_suspended']) ? '<img style="float:right;margin:15px 5px;" title="Network Suspended" width="15" id="ntw_suspended'+id+'" src="themes/default/images/admin/disconnect.png" >': '')+ (!empty($v['rescue']) ? '<img src=themes/default/images/rescue.png style="width:15px;float:right;margin:15px 5px" title="Rescue Mode is currently enabled.">' : '') + (!empty($v['locked']) ? '<i class="fas fa-lock" style="float:right;margin:15px 5px;" '+(!empty($v['locked']['reason']) ? 'tooltip="'+$v['locked']['reason'] : '')+'"></i>' : '') + '<span class="d-block font-weight-light">'+ips+'</span>'; 
		 
		if(!empty(N['inhouse_billing'])){ 
			charges = N['billing_symbol']+(N["vs"][x]['charges'] || 0); 
		} 
 
		N["vs"][x]['user'] = `<span class="vs-data-1">${N["vs"][x]['email']}</span><span class="d-block font-weight-light">${charges}</span>`; 
		 
		if(N['user_type'] == 2){ 
			 
			var vpsmanageactbuts = ''; 
			var vpsmanageactbuttons = ''; 
			 
			vpsmanageactbuts += '<span id="sus_'+ x +'">'; 
			if($v["status"] != 0){ 
				 
				if($v['suspended'] == 1){ 
					vpsmanageactbuts += '&nbsp;<a title="Unsuspend VPS" onclick="show_confirm(\'unsuspend\', '+ x +');"><i class="fa fa-play unsuspend" aria-hidden="true"></i></a>&nbsp;'; 
				}else{ 
					vpsmanageactbuts += '&nbsp;<a title="Suspend VPS" onclick="show_confirm(\'suspend\', '+ x +');"><i class="fa fa-pause suspend" aria-hidden="true"></i></a>&nbsp;'; 
				} 
			}else{ 
				vpsmanageactbuts += '&nbsp;<a href="#"><img src="themes/default/images/blank_page.gif" /></a>&nbsp;'; 
			} 
			 
			vpsmanageactbuts += '</span><span id="net_sus_'+ x +'">'; 
			if($v["status"] != 0 && $v["suspended"] != 1){ 
				 
				if(!empty($v["nw_suspended"])){ 
					vpsmanageactbuts += '&nbsp;<a title="Unsuspend VPS network" onclick="show_confirm(\'unsuspend_net\', '+ x +');"><img src="themes/default/images/admin/connect.png" /></a>&nbsp;'; 
				}else{ 
					vpsmanageactbuts += '&nbsp;<a title="Suspend VPS network" onclick="show_confirm(\'suspend_net\', '+ x +');"><img src="themes/default/images/admin/disconnect.png" /></a>&nbsp;'; 
				} 
				 
			}else{ 
				vpsmanageactbuts += '&nbsp;<a href="#"><img src="themes/default/images/blank_page.gif" /></a>&nbsp;'; 
			} 
			 
			vpsmanageactbuts += '</span>'; 
			 
			vpsmanageactbuts += '&nbsp;<a title="Delete VPS" id="'+ x +'" onclick="show_confirm(\'delvs\','+ x +');"><i class="far fa-trash-alt delete"></i></a>&nbsp;'; 
			 
			vpsmanageactbuttons = '<div class="vpsmanagemenu" id="vpsmanagemenu_'+x+'" onmouseenter="clearTimeout(managemenuhider);" onmouseleave="hidemanagevpsmenu()" style="display:none"><div class="vpsmanagemenubg">'+ vpsmanageactbuts +'</div></div>'; 
			 
			vpsmanageactbut = '<span id="action_'+x+'" style="cursor:pointer;position:relative;" onmouseenter="showmanagevpsmenu('+ $v['vpsid'] +')" onmouseleave="hidemanagevpsmenu()">'+ vpsmanageactbuttons +'<i class="fa fa-cogs settings fa-1x" title="Manage VPS" aria-hidden="true"></i></span>'; 
			N["vs"][x]["vps_action"] = vpsmanageactbut + '&nbsp;&nbsp;<a title="Edit VPS" class="eu_nav" onclick="loadpage(\'vid='+ x +'&act=editvm\');"><i class="far fa-edit edit fa-1x"></i></a>'; 
		} 
		 
		N["vs"][x]["select_all"] = '<div class="custom-control custom-checkbox"><input type="checkbox" class="ios custom-control-input" name="vps_list[]" id="vps-checkbox'+N["vs"][x]['vpsid']+'" value="'+N["vs"][x]['vpsid']+'"><label class="custom-control-label" for="vps-checkbox'+N["vs"][x]['vpsid']+'"></label></div>'; 
		N["vs"][x]["manage_vm"] = '<a class="manage-arrow" href="javascript:loadpage(\'act=vpsmanage&svs='+x+'\');" title="Manage"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i></a>'; 
 
	} 
 
	pageLinks("pagelinks_vslist", 'act=listvs', N['page']); 
 
	// Form the TABLE 
	table({'id' : 'vslist', 'tid' : 'vslist_list_table'}, cols, N["vs"]); 
	 
	showtooltip(); 
	 
	virt_pop(); 
	 
	var multselarr = { 
		"0":"With Selected:", 
		"start" : "Start", 
		"stop" : "Stop", 
		"restart" : "Restart", 
		"poweroff" : "Power Off", 
		"suspend" : {"user" : "2", "string" : "Suspend"}, 
		"unsuspend" : {"user" : "2", "string" : "Unsuspend"}, 
		"suspend_net" : {"user" : "2", "string" : "Suspend Network"}, 
		"unsuspend_net" : {"user" : "2", "string" : "Unsuspend Network"}, 
		"delvs" : {"user" : "2", "string" : "Delete"} 
	}; 
	 
	var sel_opts = ""; 
	 
	for(var i in multselarr){ 
		 
		if(typeof multselarr[i] === "object"){ 
			 
			// Options avilable for cloud only 
			if(N['user_type'] == multselarr[i]['user']){ 
				if(/suspend/i.test(i)){ 
					sel_opts += '<option value='+i+'>'+multselarr[i]['string']+'</option>'; 
					continue; 
				} 
				sel_opts += '<option value='+i+'>'+multselarr[i]['string']+'</option>'; 
				continue; 
			} 
			 
		}else{ 
			sel_opts += '<option value='+i+'>'+multselarr[i]+'</option>'; 
		} 
	} 
 
	var bottom_menu = `<div class="bottom-go-options"><div class="input-group"> 
		<select class="custom-select" name="multi_options" id="multi_options" > 
			${sel_opts} 
		</select> 
		<span class="input-group-append go-option"> 
			<a class="btn justify-content-end align-items-center d-flex" type="button"><input type="button" value="GO" onclick="show_confirm()" class="go_btn" /></a> 
		</span> 
	</div></div><div class="clearfix"></div>`; 
 
	$("#vslist-bottom-go-options").html(bottom_menu); 
	 
	// Table Sorting 
	col_count = 0; 
	for(x in cols){ 
		col_count = col_count + 1; 
	} 
	 
	$headers = {0: {sorter: false}, 2: {sorter: false}, 3: {sorter: false}}; 
	 
	no_sorting_cols = 2; 
	if(N['user_type'] == 2){ 
		no_sorting_cols = 3; 
	} 
	var sort_list = [[1,srt],[4,0]]; 
	if(!empty(N['disable_virttype'])){ 
		$headers = {0: {sorter: false}, 2: {sorter: false}}; 
	} 
 
	if(!empty(N['info']['flags']['show_server'])){ 
		var sort_list = [[1,srt],[4,0],[5,0]]; 
	} 
 
	for(var i = (col_count - no_sorting_cols); i < col_count; i++){ 
		$headers[i] = {sorter: false}; 
	} 
	 
	var srt = 0; 
	if(!empty(N['info']['flags']['enable_idsort'])){ 
		srt = 1; 
	} 
	 
	$("#vslist_list_table").tablesorter({ 
		sortList: sort_list, 
		headers: $headers 
	}); 
 
	// Server Group Filter Multiple Select 
	$("#group-option").on("change", function() { 
		var sgroupValues = []; 
		sgroupValues.push($("#group-option").val()); 
		$("#vsgid").val(sgroupValues.toString()); 
		if($("#vsgid").val() == ""){ 
			$("#vsgid").val(-1); 
		} 
	}); 
}; 
 
function search_listvs(){ 
 
	var str = $("#listvs_search").serialize(); 
 
 
	pageNum = getParameterByName('page', 1); 
 
	loadpage('index.php?api=json&act=listvs&svs='+N['vpsid']+'&'+str+'&page='+pageNum); 
}; 
 
function show_virt_name(virt){ 
 
	let full_name = ""; 
	let full_name_tt = ""; 
	switch (virt) { 
		case 'kvm': 
			full_name = "KVM"; 
			full_name_tt = "KVM"; 
			break; 
		case 'proxk': 
			full_name = "KVM-PX"; 
			full_name_tt = "Proxmox KVM"; 
			break; 
		case 'openvz': 
			full_name = "OPENVZ"; 
			full_name_tt = "Openvz"; 
			break; 
		case 'proxl': 
			full_name = "LXC-PX"; 
			full_name_tt = "Proxmox LXC"; 
			break; 
		case 'vzk': 
			full_name = "KVM-VZ"; 
			full_name_tt = "Virtuozzo KVM"; 
			break; 
		case 'vzo': 
			full_name = "OPENVZ-7"; 
			full_name_tt = "Virtuozzo Openvz"; 
			break; 
		case 'xcp': 
			full_name = "XCP"; 
			full_name_tt = "XCP"; 
			break; 
		case 'xcphvm': 
			full_name = "XCP-HVM"; 
			full_name_tt = "Xcp Hvm"; 
			break; 
		case 'xen': 
			full_name = "XEN"; 
			full_name_tt = "XEN"; 
			break; 
		case 'xenhvm': 
			full_name = "XEN-HVM"; 
			full_name_tt = "XEN-HVM"; 
			break; 
		case	'lxc': 
			full_name = "LXC"; 
			full_name_tt = "lxc"; 
		} 
		let ret = '<span class="blue_btn" tooltip="'+full_name_tt+'" >'+full_name+'</span>'; 
		return ret; 
} 
 
function hidemsg(){ 
	$("#infobar").hide(); 
	$("#info_content").html(""); 
	clearTimeout(hide_msg); 
} 
 
var hide_msg; 
 
function show_msg(msg, msgtype){ 
	 
	// Are we on the listvs page? 
	// The custom alert message box to be displayed on ListVS page only 
	if(act != 'listvs'){ 
		alert(msg); 
		return; 
	} 
	 
	if(!empty(hide_msg)){ 
		clearTimeout(hide_msg); 
	} 
	 
	msg = msg.replace(/
/g, "<br/>"); 
	msg = msg.replace(/	/g, "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"); 
	 
	if(msgtype == "error"){ 
		$("#info_content").removeClass("alert-success"); 
		$("#info_content").addClass("error alert-danger"); 
	}else if(msgtype == "success"){ 
		$("#info_content").removeClass("alert-danger"); 
		$("#info_content").addClass("success alert-success"); 
	}else{ 
		alert(msg); 
		return; 
	} 
	 
	$("#info_content").append(msg + '<br />'); 
	$("#info_content").show(); 
	hide_msg = setTimeout('hidemsg();', 5000); 
} 
 
function vpsaction(todo, vpsid){ 
	 
	var vpsids = new Array(); 
	 
	// Do we have an Array of VPS IDs ? 
	if(vpsid.constructor === Array){ 
		vpsids = vpsid; 
	}else{ 
		vpsids[vpsid] = vpsid; 
	} 
	 
	for(x in vpsids){ 
		 
		var og_content = $('#stat_'+vpsids[x]).html(); 
		$('#stat_'+vpsids[x]).html(""); 
		$('#stat_'+vpsids[x]).html('<div class="loader"></div>'); 
		 
		AJAX('index.php?api=json&act=listvs&'+todo+'='+ vpsids[x] +'&api=json', function(data) { 
			$('#stat_'+vpsids[x]).html(og_content); 
 
			if(todo in data){ 
				 
				if(typeof(data[todo]["error"]) != 'undefined'){ 
					error(data[todo]["error"], data[todo]["vpsid"]); 
					$('#stat_'+data[todo]["vpsid"]).html(og_content); 
				} 
				// Are we to show a success message ? 
				if(typeof(data["done"]) != 'undefined'){ 
					done(data["done"]); 
				} 
			} 
		}); 
	} 
} 
 
function show_confirm(todo, vpsid){ 
	 
	var vpsids = new Array(); 
	 
	vpsid = vpsid || 0; 
	todo = todo || ''; 
	 
	var conf = {suspend :{0:'Are you sure you want to suspend the VPS ?' , 1:'Are you sure you want to suspend the selected VPS(s) ?'}, unsuspend:{0:'Are you sure you want to unsuspend the VPS ?' , 1:'Are you sure you want to unsuspend the selected VPS(s) ?'}, suspend_net :{0:'Are you sure you want to suspend the VPS network ?' , 1:'Are you sure you want to suspend the selected VPS(s) network ?'}, unsuspend_net :{0:'Are you sure you want to unsuspend the VPS network ?' , 1:'Are you sure you want to unsuspend the selected VPS(s) network ?'}, delvs:{0:'Are you sure you want to delete this VPS ?' , 1:'Are you sure you want to delete the selected VPS(s) ?'}, start:{1:'Are you sure you want to start the selected VPS(s) ?'}, stop:{1:'Are you sure you want to stop the selected VPS(s) ?'}, poweroff:{1:'Are you sure you want to poweroff the selected VPS(s) ?'}, restart:{1:'Are you sure you want to restart the selected VPS(s) ?'}}; 
	 
	// Is there any VPSID and action specified ? 
	if(!empty(vpsid) && !empty(todo)){ 
 
		modalConfirm(function(confirm){ 
			if(!confirm){ 
				return false; 
			}else{ 
 
				vpsids[0] = vpsid; 
 
				actionSwitch(todo, vpsids); 
				 
			} 
		}, conf[todo][0]); 
	 
	// Are we in multiselect mode ? 
	}else{ 
		 
		todo = $("#multi_options").val(); 
		 
		for(var x = 0; x < $(":checked.ios").length; x++){ 
			vpsids[x] = parseInt($(":checked.ios")[x].value); 
		} 
		 
		if(empty(todo)){ 
			error({error:"No operation selected"}); 
			return false; 
		} 
	 
		if(vpsids.length < 1){ 
			error({error:"No VPS(s) were selected"}); 
			return false; 
		} 
 
		modalConfirm(function(confirm){ 
			if(!confirm){ 
				return false; 
			}else{ 
				actionSwitch(todo,vpsids); 
			} 
		},conf[todo][1]); 
		 
	} 
 
} 
 
function actionSwitch(todo, vpsids) { 
 
	switch(todo){ 
		 
		case "start" : 
		case "stop" : 
		case "restart" : 
		case "poweroff" : 
			for(x in vpsids){ 
				jqueryvpsboot(todo, "stat_"+vpsids[x], vpsids[x]); 
			} 
			break; 
		case "suspend" : 
		case "unsuspend" : 
		case "suspend_net" : 
		case "unsuspend_net" : 
		case "delvs" : 
			vpsaction(todo, vpsids) 
			break; 
		default: 
			error({error:"No operation selected"}); 
			break; 
	} 
	return; 
} 
 
// Dashboard onload 
function dashboard_onload(){ 
 
	if(isError()){ 
		error(N["error"]); 
		return -1; 
	} 
 
	var cols = new Object(); 
	cols["state"] = {"l" : 'Status', "width": '30px', "centered" : true}; 
	cols["vpsid"] = {"l" : '{{lst_lv_id}}'}; 
	cols["vps_name"] = {"l" : '{{lst_lv_cid}}'}; 
	cols["vtype"] = {"l" : 'Type', "centered" : true}; 
	cols["osimg"] = {"l" : 'OS', "centered" : true}; 
	cols["hostname"] = {"l" : 'Hostname'}; 
	cols["def_ip"] = {"l" : '{{lst_lv_ip}}'}; 
	cols["manage"] = {"l" : '{{lst_lv_manage}}', "centered" : true}; 
 
	// Prepare the list 
	for(x in N["vs"]){ 
		$v = N["vs"][x]; 
		N["vs"][x]["state"] = '<i class="fa fa-circle '+($v['status'] == 2 ? 'suspend" ' : ($v['status'] == 1 ? 'start"' : ' stop"')+'></i>'); 
		N["vs"][x]["vtype"] = $v['virt'] + $v['hvm'] < 1 ? '' : 'hvm'; 
		N["vs"][x]["osimg"] = '<img src="themes/default/images/'+ $v['distro'] +'_40.gif" />'; 
 
		for (var k in N["vs"][x]["ips"]) { 
			N["vs"][x]["def_ip"] = N["vs"][x]["ips"][k]; 
			break; 
		} 
 
		N["vs"][x]["manage"] = '<a href="loadpage(\'act=vpsmanage&svs='+x+'\')"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i></a>'; 
 
	} 
 
	// Form the TABLE 
	table({'id' : 'vslist', 'tid' : 'vslist_list_table', "width" : '100%'}, cols, N["vs"]); 
 
}; 
 
function register_onload(){ 
 
 
	var country_codes = {"91":"IN","1":"US","44":"GB","86":"CN","61":"CC","61":"AU","355":"AL","213":"DZ","1684":"AS","376":"AD","244":"AO","1264":"AI","1268":"AG","54":"AR","374":"AM","297":"AW","43":"AT","1242":"BS","973":"BH","880":"BD","1246":"BB","375":"BY","32":"BE","501":"BZ","229":"BJ","1441":"BM","975":"BT","591":"BO","387":"BA","267":"BW","55":"BR","246":"IO","1284":"VG","673":"BN","359":"BG","226":"BF","257":"BI","855":"KH","237":"CM","238":"CV","599":"CW","1345":"KY","236":"CF","235":"TD","56":"CL","57":"CO","269":"KM","243":"CD","242":"CG","682":"CK","506":"CR","225":"CI","385":"HR","53":"CU","357":"CY","420":"CZ","45":"DK","253":"DJ","1767":"DM","593":"EC","20":"EG","503":"SV","240":"GQ","291":"ER","372":"EE","251":"ET","500":"FK","298":"FO","679":"FJ","358":"AX","33":"FR","594":"GF","689":"PF","241":"GA","220":"GM","995":"GE","49":"DE","233":"GH","350":"GI","30":"GR","299":"GL","1473":"GD","590":"MF","1671":"GU","502":"GT","224":"GN","245":"GW","592":"GY","509":"HT","504":"HN","852":"HK","36":"HU","354":"IS","62":"ID","98":"IR","964":"IQ","353":"IE","972":"IL","39":"VA","1876":"JM","81":"JP","962":"JO","7":"RU","254":"KE","686":"KI","383":"XK","965":"KW","996":"KG","856":"LA","371":"LV","961":"LB","266":"LS","231":"LR","218":"LY","423":"LI","370":"LT","352":"LU","853":"MO","389":"MK","261":"MG","265":"MW","60":"MY","960":"MV","223":"ML","356":"MT","692":"MH","596":"MQ","222":"MR","230":"MU","262":"RE","52":"MX","691":"FM","373":"MD","377":"MC","976":"MN","382":"ME","1664":"MS","258":"MZ","95":"MM","264":"NA","674":"NR","977":"NP","31":"NL","687":"NC","64":"NZ","505":"NI","227":"NE","234":"NG","683":"NU","672":"NF","850":"KP","47":"SJ","968":"OM","92":"PK","680":"PW","970":"PS","507":"PA","675":"PG","595":"PY","51":"PE","63":"PH","48":"PL","351":"PT","974":"QA","40":"RO","250":"RW","290":"SH","1869":"KN","1758":"LC","508":"PM","1784":"VC","685":"WS","378":"SM","239":"ST","966":"SA","221":"SN","381":"RS","248":"SC","232":"SL","65":"SG","1721":"SX","421":"SK","386":"SI","677":"SB","252":"SO","27":"ZA","82":"KR","211":"SS","34":"ES","94":"LK","249":"SD","597":"SR","268":"SZ","46":"SE","41":"CH","963":"SY","886":"TW","992":"TJ","255":"TZ","66":"TH","670":"TL","228":"TG","690":"TK","676":"TO","1868":"TT","216":"TN","90":"TR","993":"TM","1649":"TC","688":"TV","1340":"VI","256":"UG","380":"UA","971":"AE","598":"UY","998":"UZ","678":"VU","58":"VE","84":"VN","681":"WF","967":"YE","260":"ZM","263":"ZW"}; 
 
	var options = ''; 
 
	$('#contact').val(''); 
 
	for (var key in country_codes) { 
		if (country_codes.hasOwnProperty(key)) { 
			var val = country_codes[key]; 
 
			options += '<option value="'+key+'" '+(!empty(N['default_country_code']) && N['default_country_code'] == val ? "selected=selected" : "")+'>'+val+' +'+key+'</otion>'; 
 
			$('#country_code').html(options); 
		} 
	} 
 
	$('#registerform').show(); 
	$('#otp_form').hide(); 
	$('#contact_form').hide(); 
	$("body").css("overflow", "hidden"); 
	if(!empty(N['sms_api_field'])){ 
		$("#contact_div").show(); 
	} 
	 
	if(!empty(N['captcha_sitekey'])){ 
		$('.g-recaptcha').attr('data-sitekey', N['captcha_sitekey']); 
		jQuery.getScript('https://www.google.com/recaptcha/api.js'); 
		$('#gcaptcha').show(); 
	} 
	 
	if(!empty(N['terms_conditions'])){ 
		$("#terms_condition_link").attr("href", N['terms_conditions']); 
		$("#terms_conditions_div").show(); 
	} 
	 
	$("#login-div").show(); 
 
	// Try to get the "sa" in HASH. 
	var sa = getParameterByName('sa', 1); 
	 
	// If we did not get in HASH, try to search in URL. (If user comes from direct link i.e. incase reset password) 
	if(empty(sa)){ 
		sa = getParameterByName('sa'); 
	} 
	 
	// Is it a call for resend activation code 
	if(sa == 'resendact'){ 
		 
		$_("resendactform").reset(); 
		showwindow('resendact'); 
		 
		return -1; 
	} 
	 
	// Is it a call for validate 
	if(sa == 'validate'){ 
		 
		// Are we done ? 
		if('done' in N){ 
			parseVars("reg_val_done", N["done"]); 
			$("#reg_val_done").show(); 
		}else{ 
			$("#reg_val_done").hide(); 
		} 
	 
		showwindow('validate'); 
		return -1; 
	} 
 
	if(sa == 'contact'){ 
		$('#registerform').hide(); 
		$('#otp_form').hide(); 
		$('#contact_form').show(); 
	} 
 
	if(sa == 'otp'){ 
		$('#registerform').hide(); 
		$('#contact_form').hide(); 
		$('#otp_form').show(); 
	} 
 
	$('#submit_contact').unbind().click(function(){ 
		 
		var submit_contact = 1; 
		var contact = $("#contact").val(); 
		var u = getParameterByName('u', 1); 
		var country_code = $('#country_code').val(); 
 
		var key = {"submit_contact":submit_contact, "contact" : contact, "country_code" : country_code, "u" : u}; 
		Loading(1); 
		$.ajax({ 
			url: "index.php?api=json&act=register", 
			method : 'post', 
			data : key, 
			dataType : 'json', 
			success: function(result){ 
				Loading(0); 
				if('error' in result){					 
					error(result['error']); 
					return false; 
				} 
				 
				done(result['done']); 
 
			} 
		}); 
	}); 
 
 
	 
	$('#submit_sms_otp').unbind().click(function(){ 
		 
		var submit_sms_otp = 1; 
		var sms_otp = $("#sms_otp").val(); 
		var key_url = getParameterByName('key_url', 1); 
 
		var key = {"submit_sms_otp" : submit_sms_otp, "sms_otp" : sms_otp, "key_url" : key_url}; 
		Loading(1); 
		$.ajax({ 
			url: "index.php?api=json&act=register", 
			method : 'post', 
			data : key, 
			dataType : 'json', 
			success: function(result){ 
				Loading(0); 
				if('error' in result){					 
					error(result['error']); 
					return false; 
				} 
				 
				done(result['done']); 
 
			} 
		}); 
	}); 
	 
	$('#reg_resend_link').unbind().click(function(){ 
		var key_url = getParameterByName('key_url', 1); 
		Loading(1); 
		$.ajax({ 
			url: "index.php?api=json&act=register&resendsms=1&key_url="+key_url, 
			method : 'post', 
			dataType : 'json', 
			success: function(res_result){ 
				Loading(0); 
				if('error' in res_result){ 
					error(res_result['error']); 
					return false; 
				} 
 
				done(res_result['done']); 
			} 
		}); 
	}); 
	 
	// Its the register act 
	$_("registerform").reset(); 
 
	$("#country_code").select2({width:"auto"}); 
 
} 
 
function register_onshow(){ 
 
	if(!empty(N['captcha_sitekey'])){ 
		grecaptcha.reset(); 
	} 
	 
} 
	 
function login_onload(){ 
 
	$("#login-div").show(); 
 
	$("body").css("overflow", "hidden"); 
	// Try to get the "sa" in HASH. 
	var sa = getParameterByName('sa', 1); 
 
	// If we did not get in HASH, try to search in URL. (If user comes from direct link i.e. incase reset password) 
	if(empty(sa)){ 
		var sa = getParameterByName('sa'); 
	} 
 
	// Is it a call for forgot password 
	if(sa == 'fpass'){ 
		showwindow('fpass'); 
		return -1; 
	} 
	 
	// Is it a call for one time password 
	if(sa == 'twofact'){ 
	 
		var key = getParameterByName('ltoken', 1); 
 
		// If we did not get in HASH, try to search in URL. (If user comes from direct link i.e. incase reset password) 
		if(empty(key)){ 
			var key = getParameterByName('ltoken'); 
		} 
 
		$('#twofact_key').val(key); 
		 
		if(!empty(N["disable_login_logo"])){ 
			$('.disable_loginlogo').show(); 
		}else{ 
			$('.main-logo').show(); 
		} 
		 
		showwindow('twofact'); 
		return -1; 
	} 
 
	// Is it a call for forgot password 
	if(sa == 'resetpass'){ 
 
		var key = getParameterByName('key', 1); 
 
		// If we did not get in HASH, try to search in URL. (If user comes from direct link i.e. incase reset password) 
		if(empty(key)){ 
			var key = getParameterByName('key'); 
		} 
 
		$('#resetpass_key').val(key); 
		showwindow('resetpass'); 
		return -1; 
	} 
 
	// Do we have to show API credentials ? 
	if(!empty(N["disable_login_logo"])){ 
		$('.disable_loginlogo').show(); 
	}else{ 
		$('.main-logo').show(); 
	} 
 
	var seperator = 0; 
	// Do we have to show API credentials ? 
	if(empty(N["enable_registration"])){ 
		$('#login_register').hide(); 
	}else{ 
		$('#login_register').show(); 
		seperator++; 
	} 
 
	if(!empty(N['hide_forgot_password'])){ 
		$('#forgot_password').hide(); 
	}else{ 
		$('#forgot_password').show(); 
		seperator++; 
	} 
 
	if(seperator == 2){ 
		$('#login_seperator').show(); 
	}else{ 
		$('#login_seperator').hide(); 
	} 
	 
}; 
 
// Some variables for global management 
var timer_server_loads; 
 
function update_power_opts(vps_status){ 
 
	if(vps_status == 2 ){ 
 
		var startstopcaption_lang = 'Suspended!'; 
		var startstopcell_data = '<i id="startimg" class="fa fa-play power-on fa-1x" aria-hidden="true"></i><span class="manage-label">Start/Stop the VPS</span>'; 
 
	}else if(vps_status == 1 ){ 
 
		var startstopcaption_lang = 'Stop'; 
		var startstopcell_data = '<a onclick="return jqueryvpsboot(\'stop\', this.id);" id="startstop" href="#"><i class="fa fa-stop suspend fa-1x" aria-hidden="true"></i><span class="manage-label">Start/Stop the VPS</span></a>'; 
 
	}else{ 
 
		var startstopcaption_lang = '{{vps_start}}'; 
		var startstopcell_data = '<a onclick="return jqueryvpsboot(\'start\', this.id);" id="startstop" href="#"><i id="startimg" class="fa fa-play fa-1x" aria-hidden="true"></i><span class="manage-label">Start/Stop the VPS</span></a>'; 
 
	} 
 
	$('#startstopcell').html(startstopcell_data); 
 
	if(vps_status == 2){ 
 
		$('#restartcell').html('<i id="restartimg" class="fas fa-sync-alt refresh fa-1x" aria-hidden="true"><span class="manage-label">Restart the VPS</span></i>'); 
		$('#poweroffcell').html('<i id="poweroffimg" class="fa fa-power-off power-off fa-1x" aria-hidden="true"><span class="manage-label">Poweroff the VPS</span></i>'); 
 
	}else{ 
 
		$('#restartcell').html('<a onclick="return jqueryvpsboot(\'restart\', this.id);" id="restart" href="#"><i id="restartimg" class="fas fa-sync-alt refresh fa-1x" aria-hidden="true"></i><span class="manage-label">Restart the VPS</span></a>'); 
		$('#poweroffcell').html('<a onclick="return jqueryvpsboot(\'poweroff\', this.id);" href="#" id="poweroffbut"><i id="poweroffimg" class="fa fa-power-off power-off fa-1x" aria-hidden="true"></i><span class="manage-label">Poweroff the VPS</span></a>'); 
	} 
 
	$('#vps-desc-status').html(status_list[vps_status]); 
 
} 
 
function capitalize_Words(str){ 
	return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); 
} 
 
function settings_tab() { 
 
	var flag = true; 
 
	$(".left-side-tabs .nav-link").each(function(){ 
 
		var href = $(this).attr('href'); 
 
		$(this).removeClass("active"); 
		$(href).removeClass("show active"); 
 
		if($(this).css('display') != 'none'){ 
			 
			if(flag){ 
				$(this).addClass("active"); 
				$(href).addClass("show active"); 
				var onclick = $(this).attr('onclick'); 
				 
				if(onclick){ 
					$(this).trigger("click"); 
				} 
			} 
 
			flag = false; 
 
		} 
	}); 
} 
 
// VPSManage onload wizard 
function vpsmanage_onload(){ 
	 
	if(!empty(N["error"])){ 
		error(N["error"]); 
		return -1; 
	} 
	 
	// For Advanced option 
	$('#vnc, #vnc-cell, #vncpass-cell, #select_lb-cell, #control-panel-tab, #rescue-mode-cell, #backups-cell, #backups-inc-tab, #ipv6_subnets-cell, #monitoring-tab, #proc-cell, #services, #alerts-cell, #console-cell, #recipe-mode-cell, #reinstall-tab, #ssh, #ssh-cell, #hostname-tab, #vps-hostname, #change-password-tab, #ips-cell, #self_shutdown-cell, #managevdf-cell, #sshkeys-cell').hide(); 
	$("#select_lb_form").html(''); 
 
	$('#os-cell').show(); 
	$('#installapps').hide(); 
	$("#pills-tab .nav-link, #pills-tab .dropdown-item").each(function(){ 
 
		var href = $(this).attr("href"); 
		$(href).removeClass("show active"); 
		$(this).removeClass('active'); 
	 
	}); 
 
	var param = getParameterByName('webuzo', 1); 
 
	if(param){ 
		$("#installapps").addClass('active'); 
		$("#installapps-tab").addClass('show active'); 
 
	}else{ 
		$("#overview-tab").addClass('active'); 
		$("#overview").addClass("show active"); 
	} 
 
	$('#deleteserver').hide(); 
 
	if(N['user_type'] == 2){ 
		$('#deleteserver').show(); 
	} 
 
	$("#deleteserver").on("click",function(){ 
		show_confirm('delvs',N['info']['vpsid']); 
	}); 
 
	var city = ''; 
	var countryCode = ''; 
	var state = ''; 
 
	if(!empty(N['info']['flags']['map_address']) && 'map_address' in N['info']['flags']){ 
		 
		city = 'city' in N['info']['flags']['map_address'] && N['info']['flags']['map_address']['city'].search(/[^a-zA-Z]+/)	? N['info']['flags']['map_address']['city'] : ''; 
		countryCode = 'country_code' in N['info']['flags']['map_address'] && N['info']['flags']['map_address']['country_code'].search(/[^a-zA-Z]+/) ? N['info']['flags']['map_address']['country_code'].toLowerCase() : ''; 
		state = 'state' in N['info']['flags']['map_address'] && N['info']['flags']['map_address']['state'].search(/[^a-zA-Z]+/)	? N['info']['flags']['map_address']['state'] : ''; 
 
		$.ajax({ 
			url:"themes/default/images/flags/"+countryCode+".png", 
			success: function(){ 
				$("#flag_src").attr('src', 'themes/default/images/flags/'+countryCode+'.png'); 
			}, 
			error: function(){ 
				$("#flag_src").attr('src', 'themes/default/images/flags/no-flag.png'); 
			}			 
		 }); 
		  
		$(".server-location").attr("tooltip", `<span class="d-block city">${capitalize_Words(city)}</span><span class="state">${capitalize_Words(state)}</span>`); 
	} 
 
	if(!city && !state){ 
		$(".server-location").attr("tooltip", countryCode.toUpperCase()); 
	} 
 
	if(!city && !state && !countryCode){ 
		$(".server-location").attr("tooltip", 'Location not found'); 
	} 
 
	showtooltip(); 
	 
	$('#current_hostname').html(N['info']['hostname']); 
 
	if(isError()){ 
		error(N["error"]); 
		return -1; 
	} 
 
	$('#suspend_div').html(""); 
 
	status_list = new Array('<span id="current_status_text" class="offline">Offline</span>','<span id="current_status_text" class="online">Online</span>', '<span id="current_status_text" class="suspended">Suspended</span>'); 
 
	if(N['info']['os']['distro_logo'].indexOf('http') == 0){ 
		$('#vm_distro_logo').attr('src', N['info']['os']['distro_logo']); 
	}else{ 
		$('#vm_distro_logo').attr('src', 'themes/default/images/'+N['info']['os']['distro_logo']); 
	} 
 
	var os_name = !empty(N['info']['os']['name']) ? N['info']['os']['name'] : 'Other'; 
 
	$('#vm_distro').html(capitalize_Words(N['info']['os']['distro'])); 
	$('#vm_os_name').html(os_name); 
 
	$('#ss_vm_lv_sname').hide(); 
	$('#vps-desc-server_name_box').hide(); 
 
	if('server_name' in N['info']){ 
		var ss_vm_lv_sname = 'Server'; 
		$('#ss_vm_lv_sname').html(ss_vm_lv_sname).show(); 
		$('#vps-desc-server_name').html(N['info']['server_name']); 
		$('#vps-desc-server_name_box').show(); 
	} 
 
	if(!empty(N['info']['flags']['vm_pass'])){ 
		$('#vps-desc-vm_pass').show(); 
		$('#vps-desc-vm_pass_show').show(); 
		$('.pass_common').show(); 
		$('#vps-vm_pass').html(N['info']['flags']['vm_pass']); 
		$('#vm_username').html(N['info']['flags']['vm_username']); 
	}else{ 
		$('#vps-desc-vm_pass').hide(); 
		$('#vps-desc-vm_pass_show').hide(); 
		$('.pass_common').hide(); 
		$('.pass_common').parent().hide(); 
	} 
 
	$('#vps-desc-hostname').html(` ${N['info']['hostname']}`); 
 
	$('#vps-desc-ip').html(N['info']['ip'][0]); 
	$('#ip_count').hide(); 
 
	if(N['info']['ip_count'] > 1){ 
		$('#ip_count').html('+'+(N['info']['ip_count'] - 1)).show(); 
		var ip_list = ''; 
		for(x in N['info']['ip']){ 
			if(x == 0) continue; 
			ip_list += '<div >'+ N['info']['ip'][x] + '</div>'; 
		} 
 
		$('#ip_count').attr('data-content', ip_list); 
	} 
 
	// Update the power options box 
	update_power_opts(N['info']['status']); 
	 
	if(empty(N['info']['flags']['disable_server_location'])){ 
		$('#location_details').show(); 
	} 
 
	if(!empty(N['info']['vps']['suspended'])){ 
 
		var sus_reason = 'This VPS is suspended. You cannot perform any operations for the VPS !'; 
		if(!empty(N['info']['vps']['suspend_reason'])){ 
			sus_reason += ' ('+N['info']['vps']['suspend_reason']+')'; 
		} 
 
		$('#suspend_div').html('<div class="notice">'+ sus_reason + '</div>'); 
 
		// We will have to hide the other divs if the vps is suspended. 
		$('.dashboard-tab, .manage-btns, .statistics').hide(); 
 
		dashboard_info_box(); 
		 
		return; 
	} 
 
	// Is network of VPS is suspended because of the bandwidth overused? 
	if(!empty(N['info']['nw_suspended']) && N['info']['nw_suspended']['reason'] == 'bw'){ 
 
		var sus_reason = 'This VPS is suspended due to Bandwidth Over Usage. You cannot perform any operations for the VPS !'; 
		if(!empty(N['info']['unsupend_time_msg'])){ 
			sus_reason += '<br>'+N['info']['unsupend_time_msg']; 
		} 
		$('#suspend_div').html('<div class="notice">'+ sus_reason + '</div>'); 
	} 
	 
	// Is the VPS in Rescue Mode ? 
	if(!empty(N["info"]["vps"]["rescue"])){ 
		 
		$('#suspend_div').html('<div class="notice">Rescue Mode is currently enabled.</div>'); 
	} 
 
	//Update the network status if the vps is online 
	if((N['info']['ntw_status'] != undefined) && (N['info']['status'] == 1)){ 
		//Please check the value for updating the reason of suspension 
	 
		$('#vps-desc-status').html('<span id="current_status_text" class="ntw_suspended">Network Suspended</span>'); 
		 
	} 
	 
	if(!empty(N['info']['flags']['show_vps_active_time'])){ 
		$("#current_status_text").after("<span id='vps_up_time'><i class='fas fa-clock ml-1'></i></span>"); 
		$('#vps_up_time').tooltip({ title:''+N['info']['show_vps_active_time']}); 
	} 
 
	if(!empty(N['info']['flags']['power_only_option']) && !empty(N['info']['vps']['admin_managed'])){ 
		$('.dashboard-tab').hide(); 
		$('#vnc-cell, #vncpass-cell, #vnc, #ssh, #scaling-cell, #select_lb-cell').hide(); 
		$("#select_lb_form").html(''); 
		dashboard_info_box(); 
		return false; 
	} 
 
	$('.dashboard-tab, .statistics, .manage-btns').show(); 
 
	dashboard_info_box(); 
 
	$('#vpsconfig-cell').hide(); 
 
	if(!empty(N['info']['vps']['admin_managed'])){ 
		$('#settings-tab, #installapps, #scaling-cell').hide(); 
	} 
 
	if(!empty(N['info']['flags']['hvmsettings']) && empty(N['info']['flags']['disable_vps_config']) && empty(N['info']['vps']['admin_managed'])){ 
		$('#vpsconfig-cell').show(); 
	} 
	 
	// For Advanced option 
	$('#vnc, #vnc-cell, #vncpass-cell, #select_lb-cell, #control-panel-tab, #rescue-mode-cell, #backups-cell, #backups-inc-tab, #ipv6_subnets-cell, #monitoring-tab, #proc-cell, #services, #alerts-cell, #console-cell, #recipe-mode-cell, #reinstall-tab, #ssh, #ssh-cell, #hostname-tab, #vps-hostname, #change-password-tab, #ips-cell, #self_shutdown-cell, #managevdf-cell, #sshkeys-cell, #scaling-cell').hide(); 
	$("#select_lb_form").html(''); 
 
	 	var show_install_id = ''; 
	if(!empty(N['info']['vps']['vnc']) && N['info']['virt'] != 'openvz' && N['info']['virt'] != 'proxo' && empty(N['info']['vps']['admin_managed'])){ 
		$('#vnc-cell, #vncpass-cell, #vnc').show(); 
	} 
 
	if(N['check_licensepro'] && "load_balancer" in N && !empty(N['load_balancer'])){ 
		let lb_options = ` 
		<div class="row mx-auto w-100 my-3"> 
			<div class="col-sm-12"> 
				<label>Select Load Balancer&nbsp;<a class="info" data-placement="right" tooltip="Load Balancer is not supported for windows VPS"><i class="fas text-primary fa-info-circle"></i></a></label><br> 
				<select name="select_lb" class="custom-select"> 
				<option value="0">None</option> 
				`; 
				$.each(N['load_balancer'], function(k, v){ 
					lb_options += `<option value="`+k+`">`+v['vpsid']+` - `+v['hostname']+`</option>`; 
				}) 
				lb_options += ` 
				</select> 
			</div> 
		</div> 
		<div class="row mx-auto w-100 my-3"> 
			<div class="col-sm-12 text-left"> 
				<input type="button" value="Save" onclick="lb_assign('select_lb_form')" class="btn btn-primary"/> 
			</div> 
		</div>`; 
		$("#select_lb_form").html(lb_options); 
		$("#select_lb-cell").show(); 
		showtooltip(); 
	} 
 
	if(!empty(N['info']['flags']['disable_change_vnc_password'])){ 
		$("#vncpass-cell").hide(); 
	} 
	 
	 // HAProxy VPS Domain Forwarding 
	 if (!empty(N['info']['flags']['haproxy']) && empty(N['info']['vps']['admin_managed']) && empty(N['info']['flags']['disable_domain_forward'])) { 
		 $('#managevdf-cell').show(); 
	 } 
 
	if(N['info']['virt'] == 'openvz' && empty(N['info']['flags']['disable_backup_cp']) && empty(N['info']['vps']['admin_managed'])){ 
		$('#backup-cell').show(); 
	} 
 
	if(!empty(N['info']['flags']['enable_console']) && empty(N['info']['vps']['admin_managed'])){ 
		$('#console-cell').show(); 
	} 
 
	// For information block 
	if(empty(N['info']['flags']['disable_icons_monitor'])){ 
		$('#monitoring-tab').show(); 
	} 
 
	if(!empty(N['info']['flags']['rescue_mode']) && empty(N['info']['vps']['admin_managed'])){ 
		$('#rescue-mode-cell').show(); 
	} 
 
	if(empty(N['info']['flags']['disable_recipes']) && empty(N['info']['vps']['admin_managed'])){ 
		$('#recipe-mode-cell').show(); 
	} 
 
	if(empty(N['info']['flags']['disable_change_hostname']) && empty(N['info']['vps']['admin_managed'])){ 
		$('#hostname-tab, #vps-hostname').show(); 
	} 
 
	if(empty(N['info']['flags']['disable_change_password']) && empty(N['info']['vps']['admin_managed'])){ 
		$('#change-password-tab').show(); 
	} 
 
	 if (empty(N['info']['flags']['disable_os_reinstall']) && empty(N['info']['vps']['admin_managed'])) { 
		 $('#reinstall-tab').show(); 
		 if (empty(show_install_id)) { 
			 show_install_id = 'reinstall-tab'; 
		 } 
	 } 
 
	 if (empty(N['info']['flags']['disable_icons_cp']) && empty(N['info']['vps']['admin_managed'])) { 
		 $('#control-panel-tab').show(); 
		 if (empty(show_install_id)) { 
			 show_install_id = 'control-panel-tab'; 
		 } 
	 } 
 
	 if (!empty(N['info']['flags']['disable_os_reinstall']) && !empty(N['info']['flags']['disable_icons_cp']) && empty(N['info']['vps']['admin_managed'])) { 
		 $('a[href="#recipe-mode-cell-tab"]').tab('show'); 
		 show_listrecipes_window() 
		 if (empty(show_install_id)) { 
			 show_install_id = 'recipe-mode-cell'; 
		 } 
	 } 
 
	 $('#reinstall-tab').click(function() { 
		 show_osreinstall_window(); 
	 }) 
 
	 if (!empty(N['info']['flags']['disable_os_reinstall']) && empty(N['info']['vps']['admin_managed'])) { 
		 show_cpinstall_window(); 
	 } 
 
	 $('#control-panel-tab').click(function() { 
		 show_cpinstall_window(); 
	 }) 
 
	 $('#recipe-mode-cell').click(function() { 
		 show_listrecipes_window() 
	 }) 
	  
	 if (!empty(show_install_id) && empty(N["info"]["disable_power_options"])) { 
		 $("#" + show_install_id).trigger('click'); 
	 } 
 
	if((!empty(N['info']['flags']['disable_os_reinstall']) && !empty(N['info']['flags']['disable_icons_cp']) && !empty(N['info']['flags']['disable_recipes'])) || !empty(N['info']['vps']['admin_managed'])){ 
		$('#os-cell').hide(); 
	} 
 
	if(empty(N['info']['flags']['disable_ssh']) && empty(N['info']['vps']['admin_managed'])){ 
		$('#ssh-cell, #ssh').show(); 
	} 
 
	if(empty(N['info']['flags']['disable_enduser_sshkeys']) && empty(N['info']['vps']['admin_managed'])){ 
		$('#sshkeys-cell').show(); 
	} 
 
	if(!empty(N['info']['flags']['ipv6_subnets']) && empty(N['info']['vps']['admin_managed'])){ 
		$('#ipv6_subnets-cell').show(); 
	} 
 
	if(N['info']['virt'] == 'openvz' || N['info']['virt'] == 'vzo' || N['info']['virt'] == 'vzk' || !empty(N['info']['flags']['services_support'])){ 
		$('#proc-cell, #services, #alerts-cell').show(); 
	} 
	 
	if(!empty(N['info']['vertical_scaling']) && !empty(N['info']['vertical_scaling'][N['info']['virt']]) && empty(N['info']['vps']['admin_managed'])){ 
 
		$('#scaling-cell').show(); 
		if(!empty(N['info']['ver_scaling']['ver_ram_inc_by'])){ 
			$('#vs_ver_ram_inc_default').parent().show() 
			$('#vs_ver_ram_inc_default').html(N['info']['ver_scaling']['ver_ram_inc_by']+" GB"); 
		}else{ 
			$('#vs_ver_ram_inc_default').parent().show() 
		} 
 
		if(!empty(N['info']['ver_scaling']['ver_cpu_inc_by'])){ 
			$('#vs_ver_cpu_inc_default').parent().show() 
			$('#vs_ver_cpu_inc_default').html(N['info']['ver_scaling']['ver_cpu_inc_by']+" cores"); 
		}else{ 
			$('#vs_ver_cpu_inc_default').parent().show() 
		} 
 
		if(!empty(N['info']['ver_data']) && N['info']['ver_data']['ver_ram_inc_by']){ 
			$("#vs_ver_ram_inc_by").val(N['info']['ver_data']['ver_ram_inc_by']); 
		} 
	 
		if(!empty(N['info']['ver_data']) && N['info']['ver_data']['ver_cpu_inc_by']){ 
			$("#vs_ver_cpu_inc_by").val(N['info']['ver_data']['ver_cpu_inc_by']); 
		} 
	} 
 
	if(empty(N['info']['vps']['admin_managed']) && N['info']['ip_count'] > 1){ 
		$('#ips-cell').show(); 
	} 
 
	if(empty(N['info']['flags']['disable_self_shutdown']) && empty(N['info']['vps']['admin_managed'])){ 
		$('#self_shutdown-cell').show(); 
	} 
	 
	if(empty(N['info']['flags']['disable_backup_cp']) && !empty(N['info']['flags']['bpid']) && empty(N['info']['vps']['admin_managed'])){ 
		$('#backups-cell').show(); 
	} 
 
	if(!empty(N['info']['flags']['has_backuply'])){ 
		$('#backups-inc-tab').show(); 
	} 
 
	let nextTab = 'vps-logs-tab'; 
	if(!empty(N['info']['flags']['disable_logs'])){ 
		$('#vps-logs-tab').hide(); 
		$('#vps-logs-tab').parent('.nav-item').hide(); 
		nextTab = 'status-logs-tab'; 
	} 
 
	if(!empty(N['info']['hide_eu_tasks'])){ 
 
		let onClickFunction = $('#'+nextTab).attr('onclick'); 
		let showHref = $('#'+nextTab).attr('href'); 
		 
		$('#tasks-tab').closest('li').remove(); 
		$('#tasks-and-logs').attr('onclick', onClickFunction); 
		$('#'+nextTab).addClass('active'); 
		$('#'+nextTab).attr('aria-selected','true'); 
		$('#tasks').removeClass('show active'); 
		$(showHref).addClass('show active'); 
 
	} 
	 
	if(!empty(N['info']['flags']['disable_change_primary_ip'])){ 
		$('#ips-cell').hide(); 
	} 
 
	// Server load chart on the right 
	function ServerLoadCharts() { 
 
		/* Graph variables and functions starts from here */ 
		function makedata(data){ 
 
			var updateInterval = 1000; 
			var now = new Date().getTime(); 
 
			var fdata = []; 
			i = 0; 
			for (x in data){ 
				fdata.push([now += updateInterval , data[x]]); 
				i++; 
			} 
			return fdata; 
		} 
 
		/* Cpu graph options */ 
		var cpu_options = { 
			series: { 
				lines: { 
					show: true, 
					lineWidth: 0.1, 
					fill: true 
				} 
			}, 
			xaxis: { 
				show:false, 
				color:"white", 
				mode: "time", 
				tickSize: [1, "second"], 
				tickFormatter: function (v, axis) { 
					var date = new Date(v); 
 
					if (date.getSeconds() % 5 == 0) { 
						var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours(); 
						var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes(); 
						var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds(); 
 
						return hours + ":" + minutes + ":" + seconds; 
					} else { 
						return ""; 
					} 
				}, 
				axisLabel: " ", 
				axisLabelUseCanvas: true, 
				axisLabelFontSizePixels: 12, 
				axisLabelFontFamily: 'Verdana, Arial', 
				axisLabelPadding: 10 
			}, 
			yaxis: { 
				show:false 
			}, 
			grid: { 
				borderWidth: 0, 
				borderColor: '#fff', 
				hoverable: true, 
			}, 
		}; 
 
		var totalPoints = 30; 
		var cpudata = []; 
		var finalcpudata = []; 
		for (var i = 0; i < totalPoints; ++i) { 
			cpudata.push(0.1); 
		} 
 
		cpu_dataset = [ 
			{ label: "", data: makedata(cpudata), color: "#1e88e5" } 
		]; 
 
		live_resource_graph("cpu_hist", cpu_dataset, cpu_options, "%", false); 
 
		// Update the CPU / Disk / Inodes graph 
		function cpu_update(){ 
 
			clearTimeout(timer_server_loads); 
 
			var svs = getParameterByName('svs', 1); 
 
			$.getJSON('index.php?api=json&act=vpsmanage&stats=1&svs=' + svs, function(data, textStatus, jqXHR) { 
 
				// Are we still visible 
				if(!$(".display").is(":visible")){ 
					return false; 
				} 
 
				var cpu = data['info']['cpu']; 
				var disk = data['info']['disk']; 
 
				// Update the Disk usage 
				 
				$('#disk_percent_bar').css('background', (disk['percent'] <= 40 ? '#06d79c' : disk['percent'] < 80 ? 'orange' :	disk['percent'] >= 80 ? 'red' : '#ff0000')); 
				$('#disk_percent_bar').css('width', disk['percent'] +"%"); 
				$('#disk_percent_bar').html(`${disk['percent']} %`); 
				$('#disk_percent_bar').attr('tooltip', disk['percent'] + ' %Used'); 
				$('#disk_percent_val').html(`${disk['used_gb']} / ${disk['limit_gb']} GB`); 
 
				cpudata.shift(); 
 
				cpudata.push(parseFloat(cpu['percent'])); 
 
				cpu_dataset = [ 
					{ label: "", data: makedata(cpudata), color: "#3498DB" } 
				]; 
 
				live_resource_graph("cpu_hist", cpu_dataset, cpu_options, "%", false); 
 
				$('.used-cpu').html(cpu['percent']+ '%'); 
 
				// Update the network speed graph 
				netspeed_update(data['info']['netspeed']); 
 
				timer_server_loads = setTimeout(cpu_update, 10000); 
 
			}); 
		} 
 
		cpu_update(); 
 
	}; 
 
	// Updates the graph 
	function netspeed_update(speed_data) { 
 
		if(!$("#network_speed_holder1").is(":visible")){ 
			return false; 
		} 
 
		// Slice the top 
		total_speed = total_speed.slice(1); 
		down_speed = down_speed.slice(1); 
		up_speed = up_speed.slice(1); 
 
		// Add the new data 
		total_speed.push((speed_data["speed"]/1024/1024)); 
		down_speed.push((speed_data["download"]/1024/1024)); 
		up_speed.push((speed_data["upload"]/1024/1024)); 
		 
		$("#nw_speed_live").html((speed_data["speed"]/1024/1024).toFixed(2)+" MB/s"); 
		 
		total_speed_data = makedata(total_speed); 
		down_speed_data = makedata(down_speed); 
		up_speed_data = makedata(up_speed); 
 
		netspeed_graph = [ 
			{ label: "Total speed",	data: total_speed_data}, 
			{ label: "Download",	data: down_speed_data}, 
			{ label: "Upload",	data: up_speed_data} 
		]; 
 
		var opts = netspeed_plot.getOptions(); 
		opts.yaxes[0].max = Math.max.apply(null, total_speed) + 5; 
		netspeed_plot.setupGrid(); 
 
		netspeed_plot.setData(netspeed_graph); 
		netspeed_plot.draw(); 
 
	}; 
 
	var svs = N['info']['vpsid']; 
 
	// If it is not susupended and svs is there then only we will show the graphs 
	if(!empty(svs)){ 
 
		adjust_div_heights(); 
 
		/* Network speed initialize starts */ 
		var total_speed = []; 
		var down_speed = []; 
		var up_speed = []; 
		var totalPoints = 60; 
 
		for (var i = 0; i < totalPoints; ++i) { 
			total_speed.push(0); 
			down_speed.push(0); 
			up_speed.push(0); 
		} 
 
		var total_speed_data = makedata(total_speed); 
		var down_speed_data = makedata(down_speed); 
		var up_speed_data = makedata(up_speed); 
 
		var netspeed_graph = [ 
			{ label: "Total speed",	data: total_speed_data}, 
			{ label: "Download",	data: down_speed_data}, 
			{ label: "Upload",	data: up_speed_data} 
		]; 
 
		var netspeed_plot = $.plot("#network_speed_holder1", netspeed_graph, { 
			series: { 
				//points: { show: true }, 
				lines: { show: true, fill: true, steps: false, lineWidth:0.5 } 
			}, 
			legend: { 
				show: true, 
				noColumns: 2, 
				container: $("#nw_speed_chartLegend") 
			}, 
			xaxis: { 
				show: false, 
				color:'#fff0' 
			}, 
			yaxis: { 
				min:0, 
				color:'#fff0' 
			}, 
			grid: { 
				borderWidth: 0, 
				borderColor: '#fff', 
				hoverable: true, 
			} 
		}); 
 
		// The following prototype causes a lot of issue in the JS. Hence commented ! 
		/*Array.prototype.max = function() { 
			return Math.max.apply(null, this); 
		};*/ 
 
		var previousPoint = null; 
		$("#network_speed_holder1").bind("plothover", function (event, pos, item) { 
			$("#x").text(pos.x.toFixed(2)); 
			$("#y").text(pos.y.toFixed(2)); 
 
			if (item) { 
 
				if (previousPoint != item.dataIndex) { 
					previousPoint = item.dataIndex; 
					$("#tooltip").remove(); 
					var x = item.datapoint[0].toFixed(2), 
						y = item.datapoint[1].toFixed(2); 
 
					showTooltip(item.pageX, item.pageY, 
								parseFloat(y) + " MB/s" + " (" + parseFloat(y*8) + " Mbit/s)"); 
				} 
			} else { 
				$("#tooltip").remove(); 
				previousPoint = null; 
			} 
		}); 
		/* Network speed initialized */ 
 
		ServerLoadCharts(); 
		show_bandwidth_window(); 
 
		/* Start yearly graph (Month wise)*/ 
		var d1 = []; 
		var d2 = []; 
		var band_data = N['info']['bandwidth']['yr_bandwidth']; 
 
		for(x in band_data){ 
 
			//alert(data['info']['bandwidth']['yr_bandwidth'][x]['in'] + '--' + data['info']['bandwidth']['yr_bandwidth'][x]['out'] + ' -- '+ x) 
			var indata = empty(band_data[x]['in']) ? 0 : parseFloat(band_data[x]['in']); 
			var outdata = empty(band_data[x]['out']) ? 0 : parseFloat(band_data[x]['out']); 
 
			d1.push([x, indata]); 
			d2.push([x, outdata]); 
		} 
 
		var tick_labels = [ 
			[0, "Jan"], [1, "Feb"], [2, "Mar"], [3, "Apr"], 
			[4, "May"], [5, "Jun"], [6, "Jul"], [7, "Aug"], 
			[8, "Sep"], [9, "Oct"], [10, "Nov"], [11, "Dec"] 
		]; 
 
		/* Monthly graph options */ 
		var monthly_options = { 
			series:{ 
				stack: true, 
				bars: { 
					show: true, 
					fill: true, 
					barWidth: 0.6, 
					lineWidth: 0.5 
				} 
			}, 
			legend: { 
				show: true, 
				noColumns: 2, 
				container: $("#bw_monthly_chartLegend") 
			}, 
			xaxis:{ 
				color:'#fff0', 
				axisLabel: " ", 
				axisLabelUseCanvas: true, 
				axisLabelFontSizePixels: 12, 
				axisLabelFontFamily: 'Verdana, Arial', 
				axisLabelPadding: 12, 
				ticks:tick_labels, 
				tickSize : 0.5 
			}, 
			yaxis:{ 
				min:0, 
				labelWidth: -28, 
				color:'#fff0', 
				axisLabelUseCanvas: true, 
				axisLabelFontSizePixels: 12, 
				axisLabelFontFamily: 'Verdana, Arial', 
				tickFormatter: function (v) { 
					if(v <= 1024) 
						return Math.round(v) + " M"; 
					if(v > 1024 && v < (1024*1024)) 
						return Math.round(v /1024) + " G"; 
					if(v > (1024*1024)) 
						return Math.round(v / (1024*1024)) + " T" 
				} 
			}, 
			grid:{ 
				borderWidth: 0, 
				borderColor: '#fff', 
				hoverable: true, 
			}, 
			tooltip: { 
				show: true, 
				content: function(label, xval, yval, flotItem){ 
					return "Month : " + (Number(xval)+1) + ", Bandwidth : " + unit_convert(yval); 
				} 
			} 
		} 
		var bw_cal_config = N['info']['bw_cal_config']; 
		var monthly_dataset = [ 
			{ label: "Download", data: (bw_cal_config == 1 || bw_cal_config == 0 ? d1 : 0), color: "#0077FF" }, 
			{ label: "Upload", data: (bw_cal_config == 2 || bw_cal_config == 0 ? d2 : 0), color: "#7D0096" } 
		]; 
 
		live_resource_graph("bw_monthly_body", monthly_dataset, monthly_options, '', false); 
		$('.flotTip').css({'background':'#000'}); 
		/* End of yearly graph (Month wise)*/ 
	} 
 
	// If server_location is empty then show flag, country and state 
	if(!empty(N['info']['flags']['disable_server_location'])){ 
 
		$('#location_details').hide(); 
		$('.vps-info-box').removeClass('col-lg-3'); 
		$('.vps-info-box').addClass('col-lg-4'); 
	} 
 
	// Are we to disable control options ? 
	if(!empty(N["info"]["disable_power_options"])){ 
 
		$('#suspend_div').html('<div class="notice">'+ N["info"]["disable_power_options"] +(empty(N["info"]["manual_locked"]) ? '&nbsp;<i class="fas fa-info-circle" tooltip="Please click on refresh button in order to get the current status of the VPS."></i>' : '') + '</div>'); 
		$('.dashboard-tab, .statistics, .manage-btns').hide(); 
		 
		showtooltip(); 
 
		dashboard_info_box(); 
		 
		// Update the power options as they are in suspended state 
		update_power_opts(2); 
		 
		// Override the status text as it will be set to suspended 
		$('#vps-desc-status').html(status_list[N['info']['status']]); 
		 
		return;		 
	} 
 
}; 
 
function ver_submitresponse(res){ 
	if(!empty(res['ver_done'])){ 
		success_alert(res['ver_done']); 
	} 
} 
 
function vpsmanage_onshow(){ 
 
	var no_webuzo = ['vzo','proxo','lxc','proxl']; 
	if(!("disable_webuzo" in N) && empty(N['info']['vps']['admin_managed']) && !no_webuzo.includes(N['info']['vps']['virt'])){ 
		$('#installapps').show(); 
	}	 
	$('#lmapps').show(); 
	// Check if call is for webuzo 
	var param = getParameterByName('webuzo', 1); 
	if(param){ 
		show_webuzo_window(); 
	} 
}; 
 
function jqueryvpsboot(todo, id, vpsid){ 
 
	Loading(0); // Hide the loading text 
	 
	// If there is no vpsid passed we assume the function is called from managevps page 
	vpsid = vpsid || N['info']['vpsid']; 
	 
	var id = id || 0; 
	var currentStateImage = null; 
	var og_content = $('#'+id).html(); 
 
	$('#'+id).html(""); 
	$('#'+id).html('<div class="loader"></div>'); 
 
	var url = 'index.php?api=json&svs='+vpsid+'&act='+todo+'&do=1'; 
 
	$.getJSON(url, function(data, textStatus, jqXHR) { 
 
		$('#'+id).html(og_content); 
		 
		if(act == 'listvs'){ 
			hidemenu(); 
			if('status' in data){ 
				changevpsstatus(vpsid, data["status"], data["ntw_status"]); 
			} 
		}else{ 
			if('status' in data){ 
				update_power_opts(data['status']); 
			} 
		} 
 
		// Are there any errors ? 
		if(typeof(data["error"]) != 'undefined'){ 
			error(data["error"], vpsid); 
		} 
 
		// Are we to show a success message ? 
		if(typeof(data["done"]) != 'undefined'){ 
			if('goto' in data["done"]){ 
				delete data["done"]['goto']; 
			} 
 
			// If it is start and done is there we will have to redraw the graphs 
			if(todo == 'start'){ 
				//ServerLoadCharts(); 
				//BandwidthGraphs(); 
			} 
			 
			data["done"]["vpsid"] = vpsid; 
			 
			//reloadData = -1; 
			done(data["done"]); 
		} 
 
		// Are we to get redirected ? 
		if(typeof(data["redirect"]) != 'undefined'){ 
			redirect(data["redirect"]); 
		} 
 
		// Are we to get redirected ? 
		if(typeof(data["goto"]) != 'undefined'){ 
			loadpage(data["goto"]); 
		} 
 
		refresh_page(); 
 
	}).fail(function (){ 
 
		// Is there a failure function ? 
		if(typeof failure === 'function'){ 
			failure(); 
		} 
 
	}); 
 
	return false; 
}; 
 
function show_hostname(){ 
 
	// We must reset the form 
	$_("hostnameform").reset(); 
	$('#current_hostname').html(N['info']['hostname']); 
	$('#hostnameform').attr('action', 'act=hostname&svs='+N['vpsid']); 
 
}; 
 
function show_ver_scaleform(){ 
	$('#ver-scalform').attr('action', 'act=vpsmanage&svs='+N['vpsid']); 
} 
 
function show_changepassform(){ 
 
	let vm_os_name = document.getElementById("vm_os_name").textContent;  
	// We must reset the form 
	$_("changepass-form").reset(); 
	$('#changepass-form').attr('action', 'act=changepassword&svs='+N['vpsid']); 
	$("#win_user_row").remove(); 
	let elem = '<div class="form-group" id="win_user_row">\ 
					<label for="input text" class="form-label mr-1 d-inline-block">VPS Admin Name</label>\ 
					<span class="info-text"  tooltip="Specify the username. If you want to change other users password. Default is Administrator (for Windows) and root (for Linux) if not specified any."><i class="fa fa-info-circle" aria-hidden="true"></i></span>\ 
					<div class="form-group">\ 
						<input type="text" id="vm_admin_name_pass" name="vm_admin_name" size="30" value="" class="form-control"/>\ 
					</div>\ 
				</div>'; 
	$('#changepass-form').prepend(elem); 
	if(!empty(vm_os_name.match(/windows/gi))){ 
		$("#vm_admin_name_pass").val('Administrator'); 
	}else{ 
		$("#vm_admin_name_pass").val('root'); 
	} 
	showtooltip(); 
}; 
 
function show_ipform(){ 
 
	$_('ips-form').reset(); 
 
	// Show the user list 
	var ip_list = ''; 
	for(x in N['info']['ip']){ 
 
		if(N['info']['ip'][x].includes('/')){ 
			continue; 
		} 
 
		ip_list += '<option value="'+ N['info']['ip'][x] +'">'+ N['info']['ip'][x] + '</option>'; 
	} 
	$("#vm_ips_select").html(ip_list); 
	$("#vm_ips_select").select2({width:"100%"}); 
	$('#ips-form').attr('action', 'act=ips&svs='+N['vpsid']); 
}; 
 
function show_enable_accl(){ 
	 
	if($("#hvm_enable_vga").prop('checked') == true){ 
		$("#hvm_enable_acceleration_tr").css("display", ""); 
		$('#hvm_enable_acceleration_tr').addClass('animate'); 
	}else{ 
		$("#hvm_enable_acceleration_tr").css("display", "none"); 
		$("#hvm_enable_acceleration_tr").removeAttr('checked'); 
	} 
} 
 
function show_hvm_vnc_keymap(){ 
	 
	if($("#hvm_vnc").prop('checked') == true){ 
		$("#hvm_vnc_keymap_tr").css("display", ""); 
		$("#hvm_vnc_keymap_tr").addClass('animate'); 
	}else{ 
		$("#hvm_vnc_keymap_tr").prop("selected", null); 
		$("#hvm_vnc_keymap_tr").css("display", "none"); 
	} 
} 
 
function show_hvmsetting_window(){ 
	 
	$('#hvmsettingsform')[0].reset();	 
	//$("#hvmsettings_submit").hide(); 
	$('#tuntap_enable_tr, #ppp_enable_tr , #acpi_tr, #apic_tr, #vnc_tr, #hvm_vnc_keymap_tr, #hvm_vga_tr, #hvm_enable_acceleration_tr, #hvm_sec_iso_tr, #hvm_nic_type_tr, #boot_reorder_pos_tr, #hvm_isos_tr, #hvm_virtio_tr, #hvm_fuse_tr, #hvm_ipip_tr, #hvm_ipgre_tr, #hvm_nfs_tr, #hvm_quotaugidlimit_tr, #hvm_iolimit_tr, #hvm_iopslimit_tr, .eu_iso, #hvm_timezone_tr').hide(); 
	$('#hvmsettingsform').attr('action', 'act=hvmsettings&svs='+N['vpsid']); 
	$('#tuntap_enable, #ppp_enable, #acpi_tr, #apic_tr, #vnc_tr').prop('checked', false); 
 
	AJAX('index.php?api=json&act=hvmsettings&svs='+N['vpsid'], function(data) { 
 
		data['vps']['timezone'] = (!empty(data['vps']['timezone']) ? data['vps']['timezone'] : data['preferences']['default_enduser_timezone']); 
 
		$('#hvm_timezone_tr').show(); 
		option_timezones = '<option value="0">None</option>'; 
		$.each(data['timezones'], function(region, list){ 
			option_timezones += '<optgroup label="'+region+'">'+"
"; 
			$.each(list, function(key, value) { 
				option_timezones += '<option value="'+ key +'" ' + (data['vps']['timezone'] == key ? 'selected' : '') + '>'+ value +'</option>'; 
			}); 
			option_timezones += '</optgroup>'+"
"; 
			 
		}); 
		$("#hvm_timezone").html(option_timezones); 
		$('#hvm_timezone').select2({ 
			selectOnClose: true 
		}); 
		 
		if(data['virt'] == 'openvz' || data['virt'] == 'vzo'){ 
			 
			if(!empty(data['flags']['enable_tuntap_cp'])){ 
				$('#tuntap_enable_tr').show(); 
				(!empty(data['vps']['tuntap']) ? $('#tuntap_enable').prop('checked', true) : ''); 
			} 
 
			if(!empty(data['flags']['enable_ppp_cp'])){ 
				$('#ppp_enable_tr').show(); 
				(!empty(data['vps']['ppp']) ? $('#ppp_enable').prop('checked', true) : ''); 
			} 
 
			if(!empty(data['flags']['enable_fuse_cp'])){ 
				$('#hvm_fuse_tr').show(); 
				(!empty(data['vps']['openvz_features']['fuse']) ? $('#hvm_fuse').prop('checked', true) : ''); 
			} 
 
			if(!empty(data['flags']['enable_ipip_cp'])){ 
				$('#hvm_ipip_tr').show(); 
				(!empty(data['vps']['openvz_features']['ipip']) ? $('#hvm_ipip').prop('checked', true) : ''); 
			} 
 
			if(!empty(data['flags']['enable_ipgre_cp'])){ 
				$('#hvm_ipgre_tr').show(); 
				(!empty(data['vps']['openvz_features']['ipgre']) ? $('#hvm_ipgre').prop('checked', true) : ''); 
			} 
 
			if(!empty(data['flags']['enable_nfs_cp'])){ 
				$('#hvm_nfs_tr').show(); 
				(!empty(data['vps']['openvz_features']['nfs']) ? $('#hvm_nfs').prop('checked', true) : ''); 
			} 
 
			if(!empty(data['flags']['enable_quotaugidlimit_cp'])){ 
				$('#hvm_quotaugidlimit_tr').show(); 
				$('#hvm_quotaugidlimit').val(data['vps']['openvz_features']['quotaugidlimit']); 
			} 
 
			if(!empty(data['flags']['enable_iolimit_cp'])){ 
				$('#hvm_iolimit_tr').show(); 
				$('#hvm_iolimit').val(data['vps']['openvz_features']['iolimit']); 
			} 
 
			if(!empty(data['flags']['enable_iopslimit_cp'])){ 
				$('#hvm_iopslimit_tr').show(); 
				$('#hvm_iopslimit').val(data['vps']['openvz_features']['iopslimit']); 
			} 
 
		}else{ 
			 
			if(!empty(data['flags']['enable_enduser_vnc'])){ 
			 
				$('#vnc_tr').show(); 
				 
				if(!empty(data['vps']['vnc'])){ 
					$('#hvm_vnc').prop('checked', true);  
					$('#hvm_vnc_keymap_tr').show(); 
				} 
	 
				$('#hvm_vnc').change(show_hvm_vnc_keymap); 
				 
				var vnc_keymap_list = ''; 
				 
				for(x in data['vnckeymaps']){ 
				 
					vnc_keymap_list += '<option value="'+ data['vnckeymaps'][x] +'" '+ (data['vnckeymaps'][x] == data['vps']['vnc_keymap'] ? 'selected="selected"' : '') +' >' +data['vnckeymaps'][x] +'</option>'; 
				} 
				$("#hvm_vnc_keymap").html(vnc_keymap_list); 
	 
			} 
				 
			if(data['virt'] == 'kvm' || ((data['virt'] == 'xen' || data['virt'] == 'xcp') && data['vps']['hvm'] == 1)){ 
				 
				$('#acpi_tr').show(); 
				$('#apic_tr').show(); 
				 
				(data['vps']['acpi'] == 1 ? $('#acpi').prop('checked', true) : ''); 
				(data['vps']['apic'] == 1 ? $('#apic').prop('checked', true) : ''); 
				 
				if(data['virt'] == 'kvm'){ 
					if(empty(data['flags']['disable_vga'])) { 
						$('#hvm_vga_tr').show(); 
						 
						if(!empty(data['vps']['kvm_vga'])){ 
							$('#hvm_enable_vga').attr('checked','checked'); 
							$('#hvm_enable_acceleration_tr').show(); 
							(!empty(data['vps']['acceleration']) ? $('#hvm_enable_acceleration').attr('checked','checked') : $('#hvm_enable_acceleration').removeAttr('checked')); 
						}else{ 
							$('#hvm_enable_vga').removeAttr('checked'); 
							$('#hvm_enable_acceleration').removeAttr('checked'); 
						} 
						 
						$('#hvm_enable_vga').change(show_enable_accl); 
					} 
					 
					if(!empty(data['flags']['eu_allow_virtio'])){ 
						 
						$('#hvm_virtio_tr').show(); 
						 
						if(!empty(data['vps']['virtio'])){ 
							$('#hvm_enable_virtio').attr('checked','checked'); 
						}else{ 
							$('#hvm_enable_virtio').removeAttr('checked'); 
						} 
					} 
				} 
			} 
 
			if(data['flags']['iso_support']){ 
				 
				if(!empty(data['flags']['enable_eu_iso'])){ 
					$('.eu_iso').show(); 
				} 
				 
				if('boot' in data){									 
					$('#boot_reorder_pos_tr').show(); 
					var order = ''; 
					var boot_list_old = '<select name="boot" class="form-control w-100">'; 
					var boot_list_new = '<div class="row"><div class="col-6"><select name="boot" id="boot" class="form-control w-100" size="4">'; 
					var i = 0; 
					let new_boot = 0; 
			 
					for(x in data['boot']){		 
						 
						if(x.match(/boot_order/gi)){ 
							let hidden_value = ''; 
							data['boot'][x].forEach((element) => { 
								boot_list_new += '<option value="'+element+'" id="boot_'+element+'">'+element.toUpperCase()+'</option>';	 
								hidden_value += element + ','; 
							}); 
							new_boot = 1; 
							document.getElementById("boot_reorder_pos_val").value = hidden_value; 
 
						}else{ 
 
							if(x == 'c'){ 
								data['boot'][x] = '1) Hard Disk 2) CD Drive'; 
								order = 'cd';							 
							}else if(x == 'd'){ 
								data['boot'][x] = '1) CD Drive 2) Hard Disk'; 
								order = 'dc'; 
							} 
							 
							if(empty(i)){ 
								boot_list_old += '<option value="'+order+'" id="boot_'+x+'" selected="selected">'+data['boot'][x]+'</option>';	 
							}else{ 
								boot_list_old += '<option value="'+order+'" id="boot_'+x+'">'+data['boot'][x]+'</option>'; 
							} 
 
						} 
 
						i++; 
					} 
 
					if(new_boot){ 
						boot_list_new += '</select>\ 
								</div>\ 
								<div class="col-6">\ 
									<div class="d-flex flex-column mb-3">\ 
										<div class="p-2">\ 
											<button type="button" id="up" onclick="change_bootorder(this)" class="btn"><i class="fas fa-arrow-up"></i></button>\ 
										</div>\ 
										<div class="p-2">\ 
											<button type="button" id="down" onclick="change_bootorder(this)" class="btn"><i class="fas fa-arrow-down"></i></button>\ 
										</div>\ 
									</div>\ 
								</div>\ 
						</div>'; 
						 
						$("#boot_reorder_pos").html(boot_list_new); 
					}else{ 
						boot_list_old += '</select>'; 
						$("#boot_reorder_pos").html(boot_list_old); 
					} 
				} 
				 
				if('isos' in data){ 
					 
					$('#hvm_isos_tr').show(); 
					var iso_list = '<option value="0">None</option>'; 
					var options_eu_iso = options_iso = ''; 
					for(x in data['isos']){ 
						if(!empty(data['isos'][x]['isuseriso'])){ 
							options_eu_iso += '<option value="'+ x +'" ' + (data['vps']['iso'] == x ? 'selected="selected"' : '') + '>'+ data['isos'][x]['filename'] +'</option>'; 
						}else{ 
							options_iso += '<option value="'+ x +'" ' + (data['vps']['iso'] == x ? 'selected="selected"' : '') + '>'+ data['isos'][x]['filename'] +'</option>'; 
						} 
					} 
					if(!empty(options_iso)){ 
						iso_list += '<optgroup label="Admin ISOs">' + options_iso + '</optgroup>'; 
					} 
					if(!empty(options_eu_iso)){ 
						iso_list += '<optgroup label="User ISOs">' + options_eu_iso + '</optgroup>'; 
					} 
					 
					$('#hvm_isos').html(iso_list); 
					 
					if(data['flags']['sec_iso_support']){ 
						options_eu_iso = options_iso = iso_list = ''; 
						iso_list = '<option value="0">None</option>'; 
						for(x in data['isos']){ 
							if(!empty(data['isos'][x]['isuseriso'])){ 
								options_eu_iso += '<option value="'+ x +'" ' + (data['vps']['sec_iso'] == x ? 'selected="selected"' : '') + '>'+ data['isos'][x]['filename'] +'</option>'; 
							}else{ 
								options_iso += '<option value="'+ x +'" ' + (data['vps']['sec_iso'] == x ? 'selected="selected"' : '') + '>'+ data['isos'][x]['filename'] +'</option>'; 
							} 
						} 
						if(!empty(options_iso)){ 
							iso_list += '<optgroup label="Admin ISOs">' + options_iso + '</optgroup>'; 
						} 
						if(!empty(options_eu_iso)){ 
							iso_list += '<optgroup label="User ISOs">' + options_eu_iso + '</optgroup>'; 
						} 
						$('#hvm_sec_iso_tr').show(); 
						$('#hvm_sec_iso').html(iso_list); 
					} 
 
					$("#hvm_isos, #hvm_sec_iso").select2({ 
						width: '78%' 
					}); 
				} 
			} 
			if(data['virt'] == 'proxk'){ 
				var ostype = ''; 
				var rtc = ''; 
				 
				if(!empty(data['flags']['os_type'])){					 
 					$.each(data['flags']['os_type'], function(k , v){ 
						ostype += '<option value="'+ k +'" '+((k == data['vps']['data']['os_type']) ? 'selected' : '')+' >'+v +'</option>';  
					}); 
					$("#os_type").html(ostype); 
					$('#os_type_tr').show();  
				} 
				rtc += '<option value="0" '+((data['vps']['data']['rtc'] == '0') ? 'selected' : '')+' > Disable </option>'; 
				rtc += '<option value="1" '+((data['vps']['data']['rtc'] == '1') ? 'selected' : '')+' > Enable </option>'; 
 
				$("#rtc").html(rtc); 
				$('#rtc_tr').show(); 
			} 
			 
			if(!empty(data['flags']['nic_support']) && !empty(data['flags']['enable_nic'])){ 
				var nic_type_list = ''; 
				for(x in data['nictypes']){ 
					nic_type_list += '<option value="'+ x +'" '+((x == data['vps']['nic_type'])?'selected':'')+' >'+data['nictypes'][x]+'</option>'; 
				} 
				$("#hvm_nic_type").html(nic_type_list); 
				$('#hvm_nic_type_tr').show(); 
			} 
		} 
	}); 
	 
}; 
 
function hvm_sumbit_response(data){ 
	if(empty(data['error'])){ 
		loadpage('act=vpsmanage&svs='+N['info']['vps']['vpsid']); 
	} 
} 
 
// Show the profile 
function profile_onload(){ 
	 
	if(!empty(N['hide_acc_password'])){ 
		$('#account-password-tab').hide(); 
	}else{ 
		$('#account-password-tab').show(); 
	} 
 
	populateCountries("country"); 
	populateStates("country", "state"); 
	 
	if(!empty(N["preferences"]["country"])){ 
		if($("#country option[value='"+N["preferences"]["country"]+"']").length > 0){ 
			$("#country").val(N["preferences"]["country"]).trigger('change'); 
		}else{ 
			var select = $("#country").html(); 
			select = select+'<option value="'+N["preferences"]["country"]+'">'+N["preferences"]["country"]+'</option>'; 
			$("#country").html(select); 
			$("#country").val(N["preferences"]["country"]).trigger('change'); 
		} 
	} 
	 
	if(!empty(N["preferences"]["state"])){ 
		populateStates("country", "state"); 
		if($("#state option[value='"+N["preferences"]["state"]+"']").length == 0){ 
			var select = $("#state").html(); 
			select = select+'<option value="'+N["preferences"]["state"]+'">'+N["preferences"]["state"]+'</option>'; 
			$("#state").html(select); 
			$("#state").val(N["preferences"]["state"]).trigger('change'); 
		} 
	} 
	 
	// Parse the variables 
	parseVars("profile", N["preferences"]); 
	 
}; 
 
function show_states(id){ 
	 
	//alert($("#country").val()) 
	if(id == "select" && $("#country").val() == -1){ 
		alert("{{err_select_country}}") 
		return; 
	} 
	populateStates("country", "state"); 
}; 
 
function show_ssh_window(window){ 
 
	var id = '#show_ssh'; 
 
	if(window == 1){ 
		$("#show_ssh_window").modal("show"); 
		id = '#show_ssh_modal'; 
	} 
 
	$(id).html('<center><applet code="com.jcraft.jcterm.JCTermApplet.class" archive="jcterm-0.0.10.jar?'+ Math.floor((Math.random() * 1000) + 1) +',jsch-0.1.46.jar?'+ Math.floor((Math.random() * 1000) + 1) +',jzlib-1.1.1.jar?'+ Math.floor((Math.random() * 1000) + 1) +'" codebase="themes/default/java/jcterm/" width="650" height="440"><param name="jcterm.font_size"	value="13"><!-- <param name="jcterm.fg_bg" value="#000000:#ffffff,#ffffff:#000000,#00ff00:#000000"> --> <!-- <param name="jcterm.config.repository" value="com.jcraft.jcterm.ConfigurationRepositoryFS"> --> <param name="jcterm.destinations" value="root@'+ N['info']['ip'][0] +'"> </applet> </center><br /><p class="notice">SSh will only work if java is installed and enabled</p>'); 
 
}; 
 
function show_sshkeys_window() { 
	 
	var badge = '<div class="col-md-3 my-2 p-2">\ 
					<div class="p-3 align-items-center os_badge use_sshkey media">\ 
						<i class="fas fa-key fa-2x d-inline-block mr-2"></i>\ 
						<span class="key_name m-0 text-break d-inline-block"> </span>\ 
					</div>\ 
					<input type="hidden" name="ssh_keys[]" value="" disabled="true" />\ 
				</div>'; 
	 
	$('#sshkeysform').attr('action', 'act=sshkeys&svs='+N['vpsid']); 
	 
	$('#sshkey_list').empty(); 
	 
	$('#sshkeysform .blue_btn').hide(); 
				 
	AJAX('index.php?api=json&act=sshkeys&svs='+N['vpsid'], function(data) { 
		 
		if(empty(data['ssh_keys'])) { 
			$('#sshkey_list').removeClass('row'); 
			$('#sshkey_list').html('<div class="notice">You do not have any SSH Keys added to your account. Please add an SSH key first by navigating to SSH Keys on the left menu.</div>'); 
			return false; 
		} 
		 
		$('#sshkeysform .blue_btn').show(); 
		 
		$.each(data['ssh_keys'], function(k, v) { 
			 
			var $tmp = $(badge).clone(); 
			 
			$tmp.data('keyid', v['keyid']); 
			$tmp.find('.key_name').text(v['name']); 
			 
			$tmp.click(function() { 
				$(this).find('.media').toggleClass('selected'); 
				 
				var selected = $(this).find('.media').hasClass('selected'); 
				 
				$(this).find('input').attr('disabled', !selected) 
						.val(v['keyid']); 
			}); 
			 
			$('#sshkey_list').append($tmp); 
			 
		}); 
 
		var add_sshkey = ` 
		<div class="col-md-3 my-2 p-2" onclick="javascript:loadpage('act=sshkeys&tab=add-sshkey');return false;"> 
			<div class="p-3 align-items-center border os_badge use_sshkey media"> 
				<i class="fas fa-plus-circle fa-2x d-inline-block mr-2"></i> 
				<span class="key_name m-0 text-break d-inline-block">Add New SSH Key</span> 
			</div> 
		</div>`; 
 
 
		$('#sshkey_list').append(add_sshkey); 
		 
	}); 
	 
}; 
 
function show_vnc_window(window){ 
 
	vncip = '#vncip'; 
	vncport = '#vncport'; 
	vnc_button_id = '#vnc_buttons'; 
 
	if(window == 1){ 
		$("#show_vnc_window").modal("show"); 
		vncip = '#modal_vncip'; 
		vncport = '#modal_vncport'; 
		vnc_button_id = '#modal_vnc_buttons'; 
	} 
 
	AJAX('index.php?api=json&act=vnc&svs='+N['vpsid'], function(data) { 
		 
		if(empty(N['info']['flags']['hide_enduser_vnc_info'])){ 
			$('.modal-vnc-info, .vnc-info').show(); 
			$(vncip).html(data['info']['ip']); 
			$(vncport).html(data['info']['port']); 
		} 
		 
		var vnc_buttons = ''; 
 
		if('novnc' in data['info']){ 
			vnc_buttons += '<a href="javascript:void(0);" onclick="launchHTML5vnc(\''+N['vpsid']+'\')" class="blue_btn">Launch HTML 5 VNC Client</a>'; 
		} 
		 
		$(vnc_button_id).html(vnc_buttons); 
	}); 
	 
}; 
 
function launchjvnc(vpsid){ 
	window.open('index.php?&act=vnc&launch=1&jsnohf=1&svs='+vpsid,'vnc','width=300,height=150'); 
}; 
 
function launchHTML5vnc(vpsid){ 
	var thisURL = window.location.href; 
	thisURL = thisURL.toString(); 
	thisURL = thisURL.replace('http:', 'https:'); 
	thisURL = thisURL.replace(':4084', ':4085'); 
	window.open('index.php?&act=vnc&novnc=1&jsnohf=1&svs='+vpsid, '_blank', 'height=400,width=720'); 
}; 
 
function show_vncpass_window(){ 
 
	if(N['info']['vps']['vnc'] == ''){ 
		error_alert("VNC is not enabled"); 
		return false; 
	} 
	$('#vncpassform').attr('action', 'act=vncpass&jsnohf=1&svs='+N['vpsid']); 
 
}; 
 
function show_select_lb_window(){ 
	$("#select_lb_form").removeAttr('data-vpsid'); 
	$("#select_lb_form").attr('data-vpsid', N['vpsid']) 
} 
 
function show_osreinstall_window(){ 
	 
	// Reset all data 
	$('#osreinstallform').attr('action', 'act=ostemplate&jsnohf=1&svs='+N['vpsid']); 
	$('#os_list').html(''); 
	$('#osreinstallform')[0].reset(); 
	$("#prog_spin").hide(); 
	$("#os_reins").hide(); 
	$("#os_reins").html(''); 
 
	// The template for OS select badge 
	var os_badge = ` 
	<div class="col-12 col-sm-6 col-md-3 mb-3"> 
		<div class="create_os text-center rounded"> 
			<button class="btn dropdown dropdown-toggle border-0 w-100 p-0" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 
				<div class="media-left p-1"> 
				<img class="distro_img media-object" src=""> 
				</div> 
				<div class="media-body p-2"> 
				<h4 class="distro_name"></h4> 
				</div> 
 
				<div class="media-footer p-2"> 
					<div class="version pop" title="" data-aniamtion="true" data-toggle="popover" data-content="" data-original-title=""></div> 
				</div> 
			</button> 
			<div class="os_badge_list dropdown-menu w-100"></div> 
		</div> 
	</div>`; 
 
	AJAX('index.php?api=json&act=ostemplate&svs='+N['vpsid'], function(data) { 
 
		var vpsvirt = data['virt']; 
		var oslist = data['oslist'][vpsvirt]; 
		var distros = data['distros']; 
		var format_primary = data['info']['flags']['os_format_primary']; 
		var show_oses = 0; 
		var os_reins = data['info']['flags']['os_reins']; 
		 
		if(!empty(os_reins)){ 
			$("#os_reins").show(); 
			$("#os_reins").html(os_reins); 
		} 
		 
		$("#os_format_primary").hide(); 
		 
		if(!empty(format_primary)){ 
			$("#os_format_primary").show(); 
		} 
 
		for(os in oslist){ 
			if(oslist[os] != 0){ 
				show_oses = 1; 
				break; 
			} 
		} 
 
		if(show_oses == 0){ 
			$("#osreinstallform").hide(); 
			$("#no_os").css("display", ""); 
		} 
 
		$('#os_list').html(""); 
 
		for(x in oslist) { 
			var distro_name = ''; 
			var distro_img = ''; 
 
			if(!(x in distros) || distros[x] == ''){ 
				distro_name = 'Other'; 
				distro_img = 'themes/default/images/others_60.png'; 
			}else{ 
				$v = distros[x]; 
				distro_name = $v['name']; 
				distro_img = ($v['logo'] != '' ? $v['logo'] : 'themes/default/images/' + $v['distro'] + '_60.png'); 
			} 
 
			if(oslist[x] != ''){ 
				var $os_select = $(os_badge).clone(); 
				 
				$os_select.find('.distro_img').attr('src', distro_img); 
				$os_select.find('.distro_name').text(distro_name); 
				 
				var os_ids = Object.keys(oslist[x]); 
				 
				// Show dropdown only if distro has more than 1 template 
				if(os_ids.length > 1) { 
					for(os in oslist[x]) { 
						$os_select.find('.os_badge_list').append('<a href="#" data-os="'+os+'" onclick="return false;">'+oslist[x][os]['name']+'</a>'); 
						$os_select.find('.version').text('SELECT VERSION'); 
					} 
				} else { 
					var os_id = os_ids[0]; 
 
					var div = $os_select.find('.create_os button'); 
					var tmp = $os_select.find('.create_os button').children().clone(); 
					var parent = div.parent(); 
					div.remove(); 
					tmp.appendTo(parent); 
 
					$os_select.find('.version').text(oslist[x][os_id]['name']); 
					$os_select.find('.create_os').attr('data-os', os_id); 
					$os_select.find('.os_badge_list').remove(); 
				} 
			 
				$('#os_list').append($os_select); 
			} 
		} 
 
		os_badges('os_list', 'newos'); 
		$("#rebuild_custom_ssh_div").hide(); 
		var opt = '<option value="0">select</option>\ 
					<option value="-1">Add SSH key</option>'; 
		if(!empty(data['info']['ssh_keys'])){ 
			$.each(data['info']['ssh_keys'], function(k, v){ 
				opt+='<option value="'+k+'">'+v['name']+'</option>'; 
			}) 
		} 
		 
		$("#rebuild_sshkey_dropdown").html(opt); 
 
		$("#rebuild_sshkey_dropdown").on('change', function(){ 
			$("#rebuild_custom_ssh_div").hide(); 
			if($(this).val() == -1){ 
				$("#rebuild_custom_ssh_div").show(); 
			} 
		}) 
 
	}); 
	 
	var events = $._data($('#osreinstallform')[0], 'events'); 
	 
	if(empty(events)){ 
		 
		$('#osreinstallform').submit(function(){ 
 
			modalConfirm(function(confirm){ 
				if(confirm){ 
					showspinner(); 
			 
					return submitit('osreinstallform', 'osreinstallresp'); 
				}else{ 
					return false; 
				} 
			},'Are you sure you want to rebuild VPS ? Warning : Existing data on VPS will be lost permanently.'); 
 
			return false; 
			 
		}); 
	} 
}; 
 
function osreinstallresp(data){ 
	//Hide the progress bar 
	$("#show_osreinstall_window .scrollbar-virt").show(); 
	$("#prog_spin").hide(); 
}; 
 
function showspinner(){ 
	$('#show_osreinstall_window .scrollbar-virt').hide(); 
	$('#prog_spin').show(); 
}; 
 
function show_cpinstall_window(){ 
 
	$panels_avail = N['available']; 
 
	$panels = ['cpanel', 'webuzo', 'plesk', 'interworx', 'webmin', 'ispconfig', 'cwp', 'vesta']; 
 
	$('#installcp').attr('action', 'act=controlpanel&jsnohf=1&svs=' + N['vpsid']); 
	 
	if(count($panels_avail) == 0){ 
		$('.cp_notice').show(); 
 
		if(N['info']['nojson']){ 
			$('.cp_notice').text('JSON file of supported OS for control panel is missing, so diplaying all the panels'); 
		} 
	} 
	 
	$.each($panels, function(i, v) { 
		$('#'+v).show(); 
	}); 
	 
}; 
 
function basename(str){ 
   var base = new String(str).substring(str.lastIndexOf('/') + 1);  
   return base; 
} 
 
function backuply_delete_bkup(time, chain, type){ 
 
	modalConfirm(function(confirm){ 
		if(!confirm){ 
			return false; 
		}else{ 
			var data = new Object(); 
			data["time"] = time; 
			data["chain"] = chain; 
			data["type"] = type; 
			Loading(1); 
			$.ajax({ 
				type: "POST", 
				url: "index.php?api=json&act=backup2&svs=" + N['vpsid'] + "&api=json&backuply_delete=1", 
				dataType : "json", 
				data: data, 
				success:function(res){ 
					Loading(0); 
					handleResponseData(res); 
					show_backup2_window() 
				} 
			}); 
		} 
	},'Are you sure you want to delete this backup ?'); 
	 
} 
 
function backuply_restore_bkup(htime, chain){ 
 
	modalConfirm(function(confirm){ 
		if(!confirm){ 
			return false; 
		}else{ 
			var data = new Object(); 
			data["backup_file"] = htime; 
			data["backup_date"] = chain; 
			Loading(1); 
			$.ajax({ 
				type: "POST", 
				url: "index.php?api=json&act=backup2&svs=" + N['vpsid'] + "&api=json&backuply_restore=1", 
				dataType : "json", 
				data: data, 
				success:function(res){ 
					Loading(0); 
					handleResponseData(res); 
					setTimeout(refresh_page, 10000); 
				} 
			}); 
		} 
	},'Are you sure you want to restore this backup ?'); 
	 
} 
 
function backuply_backup(){ 
 
	var data = new Object(); 
	data['take_full_backup'] = ($("#take_full_backup").prop('checked') == true ? 1 : 0); 
	Loading(1); 
	$.ajax({ 
		type: "POST", 
		url: "index.php?api=json&act=backup2&svs=" + N['vpsid'] + "&api=json&backuply_backup=1", 
		dataType : "json", 
		data: data, 
		success:function(res){ 
			Loading(0); 
			handleResponseData(res); 
		} 
	}); 
 
} 
 
function timeConverter(UNIX_timestamp){ 
	var a = new Date(UNIX_timestamp * 1000); 
	return a.toUTCString(); 
} 
 
function backuply_set_backup(data){ 
	 
	var table = `<table class="table table-hover border-0 " width="100%" id="backuply_table_list"> 
			<thead> 
				<tr> 
					<th style="width:220px;" data-orderable="false"></th> 
					<th>Files</th> 
					<th width="3%"></th> 
					<th>Size</th> 
					<th>Backup Time</th> 
					<th>Actions</th> 
				</tr> 
			</thead> 
			<tbody>`; 
 
	if(!empty(data)){ 
 
		$.each(data, (date, files) => { 
			var size = parseFloat((files['size']/1024/1024)); 
			var childrens_count = 1; 
			if(!empty(files['children'])){ 
				childrens_count = Object.keys(files['children']).length + childrens_count; 
			} 
	 
			var formattedTime = timeConverter(date) 
			var formated_htime = files['htime'].split('-') 
			formated_htime = formated_htime[0].replace(/_/g, '/')+' '+formated_htime[1].replace(/_/g, ':'); 
			table += `<tr data-node-id="`+date+`" data-node-pid="`+date+`"> 
						<td>`+formattedTime+`<span class="badge p-1 badge-pill blue_btn ml-2">`+childrens_count+`</span></td> 
						<td>`+basename(files['filepath'])+`</td> 
						<td class="text-center"><span class="badge p-1 badge-pill blue_btn">full</span></td> 
						<td>`+size.toFixed(2)+` MB</td> 
						<td>`+formated_htime+`</td> 
						<td class="text-center"> 
							<div class="row"> 
								<div class="col-6 px-1"> 
									<a href="javascript:void(0);" title="Restore" onclick="backuply_restore_bkup('`+files['htime']+`', '`+date+`')"><i class="fas fa-history restore-icon"></i></a> 
								</div> 
								<div class="col-6 px-1"> 
									<a href="javascript:void(0);" title="Delete" onclick="backuply_delete_bkup('`+files['htime']+`', '`+date+`', '`+files['type']+`')"><i class="fas fa-trash text-danger"></i></a> 
								</div> 
							</div> 
						</td> 
					</tr>`; 
			if(!empty(files['children'])){ 
				$.each(files['children'], (k, file) => { 
					var size = parseFloat((file['size']/1024/1024)); 
					var formated_htime = file['htime'].split('-') 
					formated_htime = formated_htime[0].replace(/_/g, '/')+' '+formated_htime[1].replace(/_/g, ':'); 
					table += `<tr data-node-pid="`+date+`"> 
								<td>`+formattedTime+`<span class="badge p-1 badge-pill blue_btn ml-2">`+childrens_count+`</span></td> 
								<td class="pl-4">`+basename(file['filepath'])+`</td> 
								<td class="text-center"><span class="badge p-1 badge-pill blue_btn">`+file['type']+`</span></td> 
								<td>`+size.toFixed(2)+` MB</td> 
								<td>`+formated_htime+`</td> 
								<td class="text-center"> 
									<div class="row"> 
										<div class="col-6 px-1"> 
											<a href="javascript:void(0);" title="Restore" onclick="backuply_restore_bkup('`+file['htime']+`', '`+date+`')"><i class="fas fa-history restore-icon"></i></a> 
										</div> 
										<div class="col-6 px-1"> 
											<a href="javascript:void(0);" title="Delete" onclick="backuply_delete_bkup('`+file['htime']+`', '`+date+`', '`+files['type']+`')"><i class="fas fa-trash text-danger"></i></a> 
										</div> 
									</div> 
								</td> 
							</tr>`; 
				}) 
			} 
		}) 
 
	} 
	 
	table += `</tbody></table>`; 
	$("#backuply_table_div").html(table) 
	 
	var groupColumn = 0; 
	var table_obj = $("#backuply_table_list").DataTable({ 
		"columnDefs": [ 
			{ "visible": false, "targets": groupColumn }, 
			{ "orderable": false, "targets": -1 } 
		], 
		"order": [[ groupColumn, "desc" ]], 
		"displayLength": 25, 
		"drawCallback": function ( settings ) { 
			let api = this.api(); 
			var rows = api.rows( {page:"current"} ).nodes(); 
			var last=null; 
 
			api.column(groupColumn, {page:"current"} ).data().each( function ( group, i ) { 
				 
				if ( last !== group && !empty(group)) { 
					 
					$(rows).eq( i ).before( 
						"<tr class=\"group\" data-node-id=\""+$(rows).eq( i ).attr('data-node-id')+"\"><td colspan=\"6\" class=\"bg-light\">"+group+"</td></tr>" 
					); 
 
					if($(rows).eq( i ).prev().attr('data-node-id') == $(rows).eq( i ).attr('data-node-id')){ 
						$(rows).eq( i ).removeAttr('data-node-id') 
					} 
					 
					last = group; 
				} 
				 
			}); 
		} 
	}); 
 
	$('#backuply_table_list').simpleTreeTable({ 
		store: 'session', 
		storeKey: 'backuply_table_list' 
	}); 
 
} 
 
function show_backup2_window(){ 
	 
	// Reset all data first 
	set_backups_table([]); 
	backuply_set_backup([]); 
	$('#bkup2_server').text(''); 
	$('#bkup2_bserid').find('option').not('[value=0]').remove(); 
	$('#bkup2_settings_form').attr('action', 'act=backup2&svs=' + N['vpsid']); 
	$('#bkup2_settings_form')[0].reset(); 
	 
	// Set selected tab to first by default 
	$('#bkup2_tabs a:first').tab('show'); 
	$('#bkup2_tabs').hide(); 
	 
	// Set the VPSID text 
	$('#bkup2_vpsid, #backuply_vpsid').text(N['vpsid']); 
	 
	$('#bkup2_now, #bkup2_bkup_used, #bkup2_restore_used, #bkup2_current_cycle, #backuply_bkup_used, #backuply_current_cycle, #backuply_restore_used, #backuply_bkup2_now, #backuply_backup_cont').hide(); 
	 
	// Get backup window data 
	AJAX('index.php?api=json&act=backup2&svs=' + N['vpsid'], function(data) { 
		 
		if(!empty(data["error"])){ 
			error(data["error"]); 
			$("#show_backup2_window").modal("hide"); 
			return; 
		} 
		 
		var backup_limit_txt = data['backup_limit'] == -1 ? '<i class=\'fas fa-infinity\'></i>' : data['backup_limit']; 
		var restore_limit_txt = data['restore_limit'] == -1 ? '<i class=\'fas fa-infinity\'></i>' : data['restore_limit']; 
		 
		// Show remaining backup and restore counts 
		$("#bkup2_bkup_used span").html(data['backup_used']+' / '+backup_limit_txt); 
		$("#bkup2_restore_used span").html(data['restore_used']+' / '+restore_limit_txt); 
		$("#backuply_bkup_used span").html(data['backuply_backup_used']+' / '+backup_limit_txt); 
		$("#backuply_restore_used span").html(data['backuply_restore_used']+' / '+restore_limit_txt); 
		$("#bkup2_current_cycle span, #backuply_current_cycle span").html(data['service_period']['start']+' to '+data['service_period']['end']); 
		 
		if(data["backup_limit"] != 0) { 
			$('#bkup2_now, #bkup2_bkup_used, #bkup2_current_cycle, #backuply_bkup_used, #backuply_current_cycle, #backuply_bkup2_now, #backuply_backup_cont').show(); 
		} 
 
		$("#take_full_backup_div").addClass('d-none'); 
		$("#take_full_backup_div").removeClass('d-flex'); 
		if(!empty(data['show_full'])){ 
			$("#take_full_backup_div").addClass('d-flex'); 
			$("#take_full_backup_div").removeClass('d-none'); 
		} 
		 
		if(data["restore_limit"] != 0) { 
			$('#bkup2_restore_used, #bkup2_current_cycle, #backuply_restore_used, #backuply_current_cycle, #backuply_bkup2_now, #backuply_backup_cont').show(); 
		} 
		 
		var restore = (data["restore_limit"] != 0); 
 
		// Populate backups list 
		set_backups_table(data['backup_file_list'], restore); 
 
		backuply_set_backup(data['backuply_file_list']); 
		 
		if(!empty(data['backup_servers'])) { 
			$('#bkup2_tabs').show(); 
			 
			// Get selected backup server 
			var selected_server = null; 
			$.each(data['backup_servers'], function(i, v) { 
				if(v['selected'] == true) { 
					selected_server = v; 
				} 
			}); 
			 
			// Show server name selected in settings 
			if(selected_server) { 
				$('#bkup2_server').text('(Backup Server: ' + selected_server['name'] + ')'); 
			} 
			 
			// Populate backup settings 
			var el = $('#bkup2_bserid'); 
			 
			$.each(data['backup_servers'], function(i, v) { 
				el.append($("<option />").val(v['bserid']).text(v['name'])); 
			}); 
			 
			if(selected_server) { 
				el.val(selected_server['bserid']); 
			} 
		} 
	}); 
}; 
 
function set_backups_table(backups_list, restore) { 
	var table = null; 
	 
	if($.fn.DataTable.isDataTable('#backup_table')) { 
		table = $('#backup_table').DataTable(); 
	} else { 
		table = $('#backup_table').DataTable({ 
			columns: [ 
				{ className: 'dt-left' }, 
				{ className: 'dt-center', width: '50px', orderable: false } 
			], 
			order: [[ 0, 'desc' ]] 
		}); 
	} 
	 
	table.clear().draw(); 
 
	var table_data = []; 
	$.each(backups_list, function(date, value){ 
		var _date = date.substr(0, 4)+'-'+date.substr(4, 2)+'-'+date.substr(6, 2) 
		$.each(value, function(fk, file){ 
			var matches = file.match(/(\d+_\d+_\d+\-\d+_\d+_\d+)/is); 
 
			if(!empty(matches)){ 
				_date = matches[1];	 
				var tmp_date = _date.split('-'); 
				_date = tmp_date[0].replaceAll('_', '-'); 
				_date = _date +' '+tmp_date[1].replaceAll('_', ':'); 
			} 
			var action_restore = (restore ? '<a href="javascript:void(0)" title="Restore" onclick="restore(' + date + ', \''+file+'\'); return false;"><i class="fas fa-history restore-icon mr-2"></i>' : ''); 
 
			table_data.push(['<span title = "'+file+'">'+_date+'</span>' ,action_restore + '<a href="javascript:void(0)" title="Delete" onclick="backup_delete(' + date + ', \''+file+'\'); return false;"><i class="far fa-1x fa-trash-alt delete" aria-hidden="true"></i></a>']); 
		}) 
	}) 
	table.rows.add(table_data).draw(); 
} 
 
function restore(date, file){ 
 
	modalConfirm(function(confirm){ 
		if(!confirm){ 
			return false; 
		}else{ 
			$('#backupform2').attr('action', 'act=backup2&svs=' + N['vpsid']); 
			$('#cbackup_bkup2').val(''); 
			$('#restore_bkup2').val(1); 
			$('#delete_bkup2').val(''); 
			$('#date_bkup2').val(date); 
			$('#file_bkup2').val(file); 
			submitit('backupform2'); 
			setTimeout(refresh_page, 10000); 
		} 
	},'Are you sure you want to restore this backup ?'); 
 
}; 
 
function backup_now(){ 
 
	modalConfirm(function(confirm){ 
		if(!confirm){ 
			return false; 
		}else{ 
			$('#backupform2').attr('action', 'act=backup2&svs=' + N['vpsid']); 
			$('#cbackup_bkup2').val(1); 
			$('#restore_bkup2').val(''); 
			$('#delete_bkup2').val(''); 
			$('#date_bkup2').val(''); 
			$('#file_bkup2').val(''); 
			submitit('backupform2'); 
			setTimeout(function(){ 
				refresh_page('vpsmanage'); 
			}, 2000); 
			 
		} 
	},'Are you sure you want to create backup ?'); 
 
}; 
 
function backup_delete(date, file){ 
 
	modalConfirm(function(confirm){ 
		if(!confirm){ 
			return false; 
		}else{ 
			$('#backupform2').attr('action', 'act=backup2&svs=' + N['vpsid']); 
			$('#cbackup_bkup2').val(''); 
			$('#restore_bkup2').val(''); 
			$('#delete_bkup2').val(1); 
			$('#date_bkup2').val(date); 
			$('#file_bkup2').val(file); 
			submitit('backupform2', 'backup_delete_response'); 
		} 
	},'Are you sure you want to delete this backup ?'); 
}; 
 
function backup_delete_response(data) { 
	if(!empty(data["done"])){		 
		var restore = (data["restore_limit"] != 0); 
		 
		set_backups_table(data['backup_file_list'], restore); 
	} 
} 
 
function bkup2_settings_response(data) { 
	var restore = (data["restore_limit"] != 0); 
	 
	set_backups_table(data['backup_file_list'], restore); 
	 
	$('#bkup2_server').text(''); 
	 
	if(!empty(data['backup_servers'])) { 
		var selected_server = null; 
		$.each(data['backup_servers'], function(i, v) { 
			if(v['selected'] == true) { 
				selected_server = v; 
			} 
		}); 
		 
		if(selected_server) { 
			$('#bkup2_server').text('(Backup Server: ' + selected_server['name'] + ')'); 
		} 
	} 
} 
 
 
function show_rescue_window(){ 
 
	AJAX('index.php?api=json&act=rescue&svs='+N['vpsid'], function(data) { 
 
		$('#cant_rescue_div').hide(); 
 
		if(!empty(data['cant_rescue'])){ 
			$('#cant_rescue_div').show(); 
		} 
 
		if(data['rescue_enabled'] == true){ 
			// Show thw disable form 
			$('#disableform').attr('action', 'act=rescue&svs='+N['vpsid']); 
			$('#enbale_rescue_div').css('display', 'none'); 
			$('#disable_rescue_div').css('display', ''); 
		}else{ 
			// show the enable form 
			$('#enableform').attr('action', 'act=rescue&svs='+N['vpsid']); 
			$('#enbale_rescue_div').css('display', ''); 
			$('#disable_rescue_div').css('display', 'none'); 
		} 
		/*for(x in data){ 
			alert(data[x]) 
		}*/ 
	}); 
 
}; 
 
function selectRecipes(){ 
	var seq = $("#rec-order").val(); 
	var tmp = seq.split(","); 
	 
	$("#recipestable tr").removeClass("table-success"); 
	tmp.forEach(rid => { 
		$("#rec"+rid).addClass("table-success"); 
	}); 
} 
 
function addRecipe(rid){ 
	if(!($("#rec"+rid).hasClass("table-success"))){ 
		$("#rec"+rid).addClass("table-success"); 
		if(!($("#rec-order").val())){ 
			$("#rec-order").val(rid); 
		}else{ 
			$("#rec-order").val(function() { 
				return this.value + ',' +rid; 
		}); 
		} 
	} 
	 
} 
 
function removeRecipe(rid){ 
	if($("#rec"+rid).hasClass("table-success")){ 
		var seq = $("#rec-order").val(); 
		var tmp = seq.split(","); 
		tmp.splice(tmp.indexOf(rid),1); 
		$("#rec-order").val(tmp.join(",")); 
		$("#rec"+rid).removeClass("table-success"); 
		$("#rec"+rid).addClass("table-danger"); 
		setTimeout(function () { 
			$("#rec"+rid).removeClass("table-danger"); 
		}, 100); 
	} 
	 
} 
 
function show_listrecipes_window(startURL){ 
 
	startURL = startURL || 'act=listrecipes'; 
	 
	var regex = new RegExp("[\?&]page=([^&#]*)"); 
	var results = regex.exec(startURL); 
	var pageNum = 0; 
	if(results != null){ 
		pageNum = decodeURIComponent(results[1].replace(/\+/g, " ")); 
	} 
 
	$("#no_recipes").hide(); 
 
	$('#recipeform').attr('action', 'act=listrecipes&svs='+N['vpsid']+'&page='+pageNum); 
 
	AJAX('index.php?api=json&act=listrecipes&svs='+N['vpsid']+'&page='+pageNum, function(data) { 
 
		if(empty(data['recipes'])){ 
			$("#no_recipes").show(); 
			 
			return false; 
		} 
		 
		if(data['error'] != undefined){ 
			error(data['error']); 
			return false; 
		} 
		 
		pageLinks("recipe_links", 'act=listrecipes&svs='+N['vpsid'], data['page'], 'show_listrecipes_window'); 
 
		var recipe_table = ''; 
		recipe_table += '<table class="table border table-hover" id="recipestable"><thead><tr><th>ID</th><th width="15%">Logo</th><th>Name</th><th>Action</th><th>Ingredients</th></tr></thead><tbody>'; 
		 
		$('#recipe_select').select2({ 
			placeholder: '', 
			allowClear: true 
		 }); 
 
		 $("#recipe_select").on("select2:select", function (evt) { 
			var element = evt.params.data.element; 
			var $element = $(element); 
			 
			$element.detach(); 
			$(this).append($element); 
			$(this).trigger("change"); 
		 }); 
 
		// Prepare the list 
		for(x in data['recipes']){ 
 
			$v = data['recipes'][x]; 
			var seq = $("#rec-order").val(); 
			var tmp = seq.split(","); 
			var addClass = tmp.includes($v['rid'])? ' class="table-success" ':'';  
 
			recipe_table += '<tr id="rec'+$v['rid']+'"'+addClass+'><th width="5%">' + $v['rid'] + '</td><td width="10%"><img width="24" src="'+(!empty($v['logo']) ? $v['logo'] : 'themes/default/images/recipes.png' )+'" /></td><td id="name'+$v['rid']+'">' + $v['name'] + '</td><td><a id="add_r'+$v['rid']+'" name="add_recipe" onclick="addRecipe(\''+$v['rid']+'\');"><i class="fas fa-plus-circle fa-1x"></i></a><a id="rm_r'+$v['rid']+'" name="remove_recipe" onclick="removeRecipe(\''+$v['rid']+'\');"><i class="far fa-trash-alt fa-1x delete ml-2"></i></a></td><td width="10%"><i class="fas fa-1x fa-info-circle info" aria-hidden="true" title="Ingredients" onclick="show_recipe(\''+$v['rid']+'\')"></i><div id="desc'+$v['rid']+'" style="display:none;" >'+ ($v['desc'] != null ?	$v['desc'] : 'No description')+ '</div><div style="display:none;" id="code'+$v['rid']+'">'+$v['code']+'</div></td></tr>'; 
			$('#recipe_select').append(new Option($v['name'],$v['rid'])); 
 
		} 
	 
		recipe_table += '</tbody></table></form>'; 
		// We have to do this as we want to show the desc in same line 
		var tmp_str = $("#recipe_links .pagination-top").html(); 
		$("#recipe_links .pagination-top").html('<div class="row"><div class="col-md-6 d-none d-md-block">'+tmp_str+'</div><div class="col-md-6 text-right pt-2"><span>Recipes are predefined bash codes</span></div></div>'); 
		 
		$('#recipeform').show(); 
		$('#recipes_list').html(recipe_table); 
	}); 
 
	var events = $._data($('#recipeform')[0], 'events'); 
	 
	if(empty(events)){ 
		 
		$('#recipeform').submit(function(){ 
 
			execute_recipe('recipeform'); 
			return false; 
			 
		}); 
	} 
}; 
 
function show_recipe(id){ 
 
	$("#rec_desc").html($("#desc"+id).html()); 
	$("#rec_code").html("<pre>"+$("#code"+id).html()+"</pre>"); 
 
	$("#show_recipecode_window").modal('show'); 
}; 
 
function execute_recipe(el){ 
	var eval = $('#rec-order').val(); 
	var tmp = eval.split(","); 
	var duplicate = 0; 
	var uniqueRids = []; 
	 
	if(eval.trim() == ""){ 
		customAlert("No recipe selected, select recipes from the list to execute",1); 
		return false; 
	} 
	 
	$.each(tmp, function(i, el){ 
	if($.inArray(el, uniqueRids) === -1){  
		uniqueRids.push(el); 
	}else{ 
		duplicate = 1; 
	}}); 
 
	if(duplicate == 0){ 
		modalConfirm(function(confirm){ 
			if(!confirm){ 
				return false; 
			}else{ 
					$("#recipestable tr").removeClass("table-success"); 
					var val = $('#rec-order').val(); 
					$("#exec_rid").val(val); 
					$('#rec-order').val(''); 
					 
					var vv_rid_sel = $("#"+ el + " #rid"); 
					$(vv_rid_sel).html(""); 
					$.each(val.split(","), function(vi, vv){ 
						vv = vv.trim(); 
						$(vv_rid_sel).append("<option value=\""+vv+"\" selected=\"selected\" >" + vv + "</option>"); 
					}); 
					 
					return submitit(el); 
			} 
		},"Are you sure you want to cook this recipe ?<br>Recipes to execute: "+eval); 
	} 
	else{ 
		customAlert("Duplicate recipe ID(s) entered. Please enter a unique sequence",1); 
	} 
	 
}; 
 
function show_managesubnets_window(){ 
 
	AJAX('index.php?api=json&act=managesubnets&svs='+N['vpsid'], function(data) { 
 
		var subnet_table = ''; 
		subnet_table += '<table class="table border dataTable no-footer" id="managesubnets"><thead class="thead-light"><tr><th>IPv6 Subnet</th><th>Edit</th></tr></thead>'; 
 
		// Prepare the list 
		for(x in data['ips']){ 
 
			$v = data['ips'][x]; 
 
			subnet_table += '<tr><td>' + $v['ip'] + '/' + $v['ipr_netmask'] + '</td><td id="data-subnet" data-subnet="' + $v['ip'] + '/' + $v['ipr_netmask'] + '" class="manage_subnet" onclick="show_add_ipv6_to_subnet(this);"><i class="far fa-edit edit fa-1x"></i></td></tr>'; 
 
		} 
 
		subnet_table += '</table><input type="hidden" name="subnet" value="" id="subnet_id" />'; 
 
		$('#managesubnets_div').html(subnet_table); 
 
		$("#managesubnets").dataTable(); 
	}); 
}; 
 
//------------------------------MANAGE VDF------------------------------ 
 
function show_managevdf_window(){ 
	 
	//$('#managevdfform').attr('action', 'act=managevdf&svs=' + N['vpsid']); 
	//$('#managevdf_div').html(''); 
	 
	vdf_url = 'index.php?api=json&act=managevdf&svs=' + N['vpsid']; 
	vdf_edit_ico = "far fa-edit edit fa-1x edit"; 
	vdf_save_ico = "fa fa-1x fa-save"; 
	vdf_delete_ico = "far fa-trash-alt fa-1x delete"; 
	vdf_revert_ico = "fa fa-1x fa-undo"; 
 
	AJAX(vdf_url, function(data) { 
		$supported_protocols = data['supported_protocols']; 
		$haproxydata = data['haproxydata']; 
		$vpses = data['vpses']; 
		$arr_haproxy_src_ips = data['arr_haproxy_src_ips']; 
		 
		$('#vdf_infobox_rp').html(data["server_haconfigs"][N['info']['vps']['serid']]['haproxy_reservedports'] || 'NA'); 
		$('#vdf_infobox_rph').html(data["server_haconfigs"][N['info']['vps']['serid']]['haproxy_reservedports_http'] || 'NA'); 
		$('#vdf_infobox_ap').html(data["server_haconfigs"][N['info']['vps']['serid']]['haproxy_allowedports'] || 'NA'); 
		 
		//List current VDF entries 
		listvpsforwardertbl(); 
		 
		// Hide add VDF form if was visible previously and show add vdf form button 
		$("#showaddvdfformbtn").show(); 
		vdf_vpsuuid = N['info']['vps']['uuid']; 
		vdf_serid = N['info']['vps']['serid']; 
		 
	}); 
 
	$("#show_managevdf_window").modal("show"); 
 
}; 
//---------------------------MANAGE VDF ENDS---------------------------- 
 
function show_add_ipv6_to_subnet(id){ 
 
	$('#subnet_id').val($(id).attr('data-subnet')); 
	$('#managesubnetsform').attr('action', 'act=managesubnets&svs='+N['vpsid']); 
 
	return submitit('managesubnetsform', 'managesubnetsform_response'); 
}; 
 
function managesubnetsform_response(data){ 
 
	var addipv6_html = ''; 
	$('#managesubnetsform').attr('action', 'act=managesubnets&svs='+N['vpsid']); 
 
	addipv6_html += '<table class="table border dataTable no-footer" id="additional_ipv6Lists"><thead><tr><th>IPv6 Address</th><th>Delete</th></tr></thead>'; 
 
	var ipr_ips = data['ipr_ips']; 
	 
	if(('ipv6' in ipr_ips) && !empty(ipr_ips['ipv6'])){ 
		 
		for(x in ipr_ips['ipv6']){ 
			addipv6_html += '<tr><td>' + ipr_ips['ipv6'][x] + '</td><td><span	class="delete_ipv6"><i class="far fa-trash-alt delete fa-1x" aria-hidden="true"></i></span></td></tr>'; 
		} 
	} 
 
	addipv6_html += '</table><div class="main_ipv6_row p-3 mt-3 border"><div class="form-label">Add an Ipv6 address</div><div class="add_ipv6_row">'; 
 
	var ipv6_parts_arr = ipr_ips['ipv6_addr'].split(':'); 
 
	var ipv6_input_boxes = new Array(); 
 
	// loop till value which are disabled to edit 
	for(var i = 0; i < (8 - ipr_ips['ipv6_subnet_mask_value']); i++){ 
		ipv6_input_boxes[i] = '<input class="form-control ipv6-octets w-auto" type="text" name="ipv6_parts[]" value="' + ipv6_parts_arr[i] + '" disabled="disabled" size="5" maxlength="4"></input>'; 
	} 
 
	// display rest of the input boxes 
	for(i = i; i < 8; i++){ 
		ipv6_input_boxes[i] = '<input class="form-control ipv6-octets w-auto" type="text" name="ipv6_parts[]" value="" size="5" maxlength="4"></input>'; 
	} 
 
	addipv6_html += ipv6_input_boxes.join('&nbsp;:&nbsp;'); 
 
	addipv6_html += '<div class="ui-dialog-buttonset my-3"><button class="blue_btn add_ipv6_row_button" onclick="submitit(\'managesubnetsform\');return false;" >Add IP</button> &nbsp; <button type="button" class="blue_btn ipv6_back_button" onclick="show_managesubnets_window();">Back</button></center></div><input type="hidden" name="ipv6_addr" value="" id="ipv6_addr_id" /><input type="hidden" name="ipv6_subnet_mask" value="" id="ipv6_subnet_mask_id" /><div id="new_ipv6_id"></div>'; 
 
	$('#managesubnets_div').html(addipv6_html); 
 
	var tableData = $("#additional_ipv6Lists").dataTable(); 
 
	$(".add_ipv6_row_button").click(function(){ 
		insertIP(tableData, ipr_ips); 
	}); 
 
	$("#additional_ipv6Lists").on("click", "tr span.delete_ipv6", function () { 
 
		var iPos = tableData.fnGetPosition(this.parentNode); 
 
		modalConfirm(function(confirm){ 
			if(confirm){ 
				tableData.fnDeleteRow(iPos[0]);//delete row 
				insertIP(tableData, ipr_ips); 
			}else{ 
				return false; 
			} 
		},"Are you sure you want to delete this IPv6 address ?"); 
 
	}); 
 
}; 
 
function insertIP(tableData, ipr_ips){ 
 
	ipv6 = new Array(); 
 
	$("input[name^=ipv6_parts]").each(function(i, el){ 
 
		if(el.value){ 
			ipv6.push(el.value); 
		}else{ 
			ipv6.push("O"); 
		} 
	}); 
 
	ipv6 = ipv6.join(':'); 
 
	if(ipv6.indexOf('O') < 0){ 
		tableData.fnAddData([ipv6, '<span class="delete_ipv6"><i class="far fa-trash-alt delete fa-1x" aria-hidden="true"></i></span>']); 
	} 
 
	var new_ipv6 = ''; 
 
	$(tableData.fnGetNodes()).each(function(i, el){ 
		new_ipv6 += '<input type="hidden" name="new_ipv6[]" value="'+ $(this).find("td").html() +'">'; 
	}); 
 
	$('#ipv6_subnet_mask_id').val(ipr_ips['ipv6_subnet_mask']); 
	$('#ipv6_addr_id').val(ipr_ips['ipv6_addr']); 
	$('#new_ipv6_id').html(new_ipv6); 
 
	return submitit('managesubnetsform', 'managesubnetsform_response'); 
}; 
 
function show_console_window(action){ 
 
	$('#console_div').html(''); 
 
	if(action != "undefined"){ 
		action = '&'+action+'=1'; 
	} 
 
	AJAX('index.php?api=json&act=console'+action+'&svs=' + N['vpsid'], function(data) { 
 
		var console = data['console']; 
 
		if(empty(console['time_left'])){ 
			var cs_html = '<div class="notice">No existing console session found. Please create one !</div><div class="text-center"><a href="javascript:void(0);" class="blue_btn" id="cs_create" onclick="create_cosole_session('+ N['vpsid'] +')">Create Session</a></div>'; 
		}else{ 
			var cs_html = '<div class="notice">The following are the console details</div><div class="row mb-2"><div class="col-md-8"><div class="session-details mb-2"><div><label class="form-label d-inline-block mr-3">Expires :</label><span class="current-value" id="console_time"></span></div><div><label class="form-label d-inline-block mr-3">IP Address :</label><span class="current-value">' + data['server_publicip'] + '</span></div><div><label class="form-label d-inline-block mr-3">Port :</label><span class="current-value">' + console['port'] + '</span></div><div><label class="form-label d-inline-block mr-3">Username :</label><span class="current-value">' + console['username'] + '</span></div><div><label class="form-label d-inline-block mr-3">Password :</label><span class="current-value">' + console['password'] + '</span></div></div></div></div><a href="javascript:void(0);" class="blue_btn mr-3 mb-2" id="cs_destroy" onclick="destroy_cosole_session();">Destroy Session</a><a onclick="$(\'#cs_applet\').show();" class="link-btn">Java Console</a><center style="display:none" id="cs_applet"><applet code="com.jcraft.jcterm.JCTermApplet.class"		 archive="jcterm-0.0.10.jar?' + randstr(3) + ',jsch-0.1.46.jar?' + randstr(3) + ',jzlib-1.1.1.jar?' + randstr(3) + '"	codebase="themes/default/java/jcterm/"			width="650" height="480"><param name="jcterm.font_size"	value="13"><!-- <param name="jcterm.fg_bg" value="#000000:#ffffff,#ffffff:#000000,#00ff00:#000000"> --><!--<param name="jcterm.config.repository" value="com.jcraft.jcterm.ConfigurationRepositoryFS"> --><param name="jcterm.destinations" value="' + console['username'] + '@' + data['server_publicip'] + ':' + console['port'] + '"></applet></center><br /><br />'; 
 
			var fiveMinutes = console['time_left']; 
 
			updateTime(fiveMinutes); 
		} 
		$('#console_div').html(cs_html); 
	}); 
}; 
 
function create_cosole_session(vpsid){ 
	show_console_window('create'); 
}; 
 
function destroy_cosole_session(vpsid){ 
	$("#console_time").text(''); 
	show_console_window('destroy'); 
}; 
 
function updateTime(fiveMinutes) { 
 
	var display = $("#console_time"), mins, seconds; 
 
	mins = parseInt(fiveMinutes / 60) 
	seconds = parseInt(fiveMinutes % 60); 
	seconds = (seconds < 10) ? "0" + seconds : seconds; 
	display.text(mins + ":" + seconds); 
	fiveMinutes--; 
 
	if (fiveMinutes >= 0) { 
		setTimeout(function(){updateTime(fiveMinutes);}, 1000); 
	} 
}; 
 
function show_monitor_window(open_window, mon){ 
 
	// Retain the state of radio button 
	var search_state = undefined; 
	var mon = mon || ''; 
	$("#note_box").css("display", "none"); 
	 
	AJAX('index.php?api=json&act=monitor&svs=' + N['vpsid'] + '&show=' + mon, function(data) { 
 
		var cpudata = data['cpu']; 
		var diskdata = data['disk']; 
		var ramdata = data['ram']; 
		var iodata = data['io']; 
 
		$('#cpu_show_graph, #diskgraphcell, #inodesgraphcell').css('display', 'block'); 
 
		var ajaxTimer = null; 
 
		var cpu = [ 
			{ label: "Used",	data: cpudata['cpu']['percent']}, 
			{ label: "Free",	data: cpudata['cpu']['percent_free']} 
		]; 
 
		resource_graph("cpuchart", cpu); 
 
		var ram = [ 
			{ label: "Used",	data: ramdata['percent']}, 
			{ label: "Free",	data: ramdata['percent_free']} 
		]; 
 
		if(!empty(ramdata['percent'])){ 
			$('#ram_show_graph, #legend_ram, #ram_plot, #ramused').show(); 
			$('#ramused').prev().show(); 
			resource_graph("ramchart", ram); 
			$('#ramused').html(ramdata['used'] + ' MB'); 
			$('#raminpercent').html(ramdata['percent'] + '%'); 
			//startusage(); 
		} 
 
		var disk = [ 
			{ label: "Used",	data: diskdata['disk']['used_gb']}, 
			{ label: "Free",	data: diskdata['disk']['free_gb']} 
		]; 
 
		resource_graph("diskchart_holder", disk); 
 
 
		var inodes = [ 
			{ label: "Used",	data: diskdata['inodes']['used']}, 
			{ label: "Free",	data: diskdata['inodes']['free']} 
		]; 
 
		resource_graph("inodeschart_holder", inodes); 
 
		// File the CPU info 
		$('#cpulimit').html(cpudata['cpu']['limit'] + ' MHz'); 
		$('#cppercent').html(cpudata['cpu']['percent'] + ' %'); 
		$('#cpuman_img').attr('src', 'themes/default/images/' + cpudata['cpu']['manu'] + '.png'); 
 
		// Fill the RAM information 
		var swap_lang = 'Burstable :'; 
		var swap_val = ramdata['burst']; 
		$('#ramlimit').html(ramdata['limit'] + ' MB'); 
		if('swap' in ramdata){ 
			swap_lang = 'SWAP :'; 
			swap_val = ramdata['swap']; 
		} 
		$('#swap_lang').html(swap_lang); 
		$('#swap_val').html(swap_val + ' MB'); 
 
 
		// Fill the DISK/INODE information 
		$('#disk_limit').html(diskdata['disk']['limit_gb'] + ' GB'); 
		$('#disk_used').html(diskdata['disk']['used_gb'] + ' GB'); 
		$('#disk_percent').html(diskdata['disk']['percent'] + ' %'); 
 
		$('#inod_limit').html(diskdata['inodes']['limit']); 
		$('#inod_used').html(diskdata['inodes']['used']); 
		$('#inod_percent').html(diskdata['inodes']['percent'] + ' %'); 
 
		var monthly_data = (!empty(data.monthly_data) ? data.monthly_data : 0); 
		var month = (!empty(data.month) ? data.month : 0); 
 
		//For showing up the average download and upload speed 
		var avg_download = 0; 
		var avg_upload = 0; 
		var avg_io_read = 0; 
		var avg_io_write = 0; 
		var count = 0; 
		var cpu_data = new Array(); 
		var inode_data = new Array(); 
		var ram_data = new Array(); 
		var disk_data = new Array(); 
		var ntw_in_data = new Array(); 
		var ntw_out_data = new Array(); 
		var ntw_total_data = new Array(); 
		var io_read_data = new Array(); 
		var io_write_data = new Array(); 
 
		if(monthly_data){ 
 
			$.each(monthly_data, function(key, val){ 
 
				//Array is in format [vpsid, time, status, disk, inode, ram, cpu, net_in, net_out] 
				cpu_data.push([val[1], val[6]]); 
 
				inode_data.push([val[1], val[4]]); 
 
				ram_data.push([val[1], val[5]]); 
 
				disk_data.push([val[1], val[3]]); 
 
				ntw_in_data.push([val[1], val[7]]); 
 
				ntw_out_data.push([val[1], val[8]]); 
 
				ntw_total_data.push([val[1], (parseInt(val[7])+parseInt(val[8]))]); 
 
				io_read_data.push([val[1], val[9]]); 
 
				io_write_data.push([val[1], val[10]]); 
 
				// Display the average speed of available data 
				avg_download += parseInt(val[7]); 
				avg_upload += parseInt(val[8]); 
				avg_io_read += parseInt(val[9]); 
				avg_io_write += parseInt(val[10]) 
				count++; 
			}); 
 
			// As data is differently interpreted on mozilla and chrome so initial sorting is done 
			cpu_data.sort(function(a, b){ 
				return a[0]-b[0]; 
			}); 
 
			var cpu_graph = [ 
				{ label: "CPU Usage",	data: cpu_data} 
			]; 
 
			var inode_graph = [ 
				{ label: "Inode Usage",	data: inode_data, color: "#011f4d"} 
			]; 
 
			var ram_graph = [ 
				{ label: "RAM Usage",	data: ram_data, color: "#ffc800"} 
			]; 
 
			var disk_graph = [ 
				{ label: "Disk Usage",	data: disk_data, color: "#ff4c00"} 
			]; 
 
			var io_read_graph = [ 
				{ label: "I/O Read Speed",	data: io_read_data, color: "#0015ff"}, 
			]; 
 
			var io_write_graph = [ 
				{ label: "I/O Write Speed",	data: io_write_data, color: "#ff4c00"}, 
			]; 
 
			var ntw_graph = [ 
				{ label: "Download Speed",	data: ntw_in_data, color: "#0517e3"}, 
				{ label: "Upload Speed",	data: ntw_out_data , color: "#00004d"}, 
				{ label: "Total Speed",	data: ntw_total_data } 
			]; 
 
			// Calculating the average Downloading Speed per month 
			avg_download = (avg_download/count/1024/1024).toFixed(5); 
			$("#avg_download").html(avg_download + " MB/s"); 
 
			// Calculating the average Uploading Speed per month 
			avg_upload = (avg_upload/count/1024/1024).toFixed(5); 
			$("#avg_upload").html(avg_upload + " MB/s"); 
 
			// Calculating the average I/O read per month 
			avg_io_read = (avg_io_read/count/1024/1024).toFixed(5); 
			$("#io_read").html(avg_io_read + " MB/s"); 
 
			// Calculating the average I/O write per month 
			avg_io_write = (avg_io_write/count/1024/1024).toFixed(5); 
			$("#io_write").html(avg_io_write + " MB/s"); 
 
			selection_zooming("cpu_plot", cpu_graph); 
			live_resource_graph("cpu_plot", cpu_graph, flot_options("cpu_plot"), "% at ",true); 
 
			if(!empty(ramdata['percent'])){ 
				selection_zooming("ram_plot", ram_graph); 
				live_resource_graph("ram_plot", ram_graph, flot_options("ram_plot"), "MB at ",true); 
			} 
			 
			selection_zooming("disk_plot", disk_graph); 
			live_resource_graph("disk_plot", disk_graph, flot_options("disk_plot"), "MB at ",true); 
 
			selection_zooming("inode_plot", inode_graph); 
			live_resource_graph("inode_plot", inode_graph, flot_options("inode_plot"), "Blocks at ",true); 
			 
			selection_zooming("ntw_plot", ntw_graph); 
			live_resource_graph("ntw_plot", ntw_graph, flot_options("ntw_plot"), "MB/s at ",true); 
			 
			selection_zooming("io_read_plot", io_read_graph); 
			live_resource_graph("io_read_plot", io_read_graph, flot_options("io_read_plot"), "MB/s at ",true); 
			 
			selection_zooming("io_write_plot", io_write_graph); 
			live_resource_graph("io_write_plot", io_write_graph, flot_options("io_write_plot"), "MB/s at ",true); 
 
			var current_year = month.current_month.substring(0,4); 
			var current_month = parseInt(month.current_month.substring(4)); 
			var monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]; 
 
			var d = new Date(); 
			var n = d.getMonth(); 
 
			$('#month_holder2').html(monthNames[current_month - 1] +" "+ current_year); 
 
			$('#next_month').css({"display" : "none"}); 
 
			if(n != (current_month - 1)){ 
				$('#next_month').css({"display" : "inline-block"}); 
			} 
 
			$('#prev_month').html('<input id="next_stats" type="submit" class="prev-mnth blue_btn small-btn" onclick="show_monitor_window(1,'+ month.prev_month +')" value="Prev Month" />'); 
			$('#next_month').html('<input id="next_stats" type="submit" class="next-mnth blue_btn small-btn" onclick="show_monitor_window(1,'+ month.next_month +')" value="Next Month" />'); 
		}else{ 
			$("#note_box").css("display", "block"); 
		} 
	}); 
 
}; 
 
//lets check for selection and zooming 
function selection_zooming (id, data){ 
 
	$("#"+id).bind("plotselected", function (event, ranges) { 
		if (ranges.xaxis.to - ranges.xaxis.from < 0.00001) {ranges.xaxis.to = ranges.xaxis.from + 0.00001;} 
		if (ranges.yaxis.to - ranges.yaxis.from < 0.00001) {ranges.yaxis.to = ranges.yaxis.from + 0.00001;} 
		options = flot_options(id); 
		plot = $.plot("#"+id, data, 
			$.extend(true, {}, options, { 
				xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to }, 
				yaxis: { min: ranges.yaxis.from, max: ranges.yaxis.to } 
			}) 
		); 
		 
		//Lets append zoom out button if its not present 
		if($("#zoomOut_"+id) != undefined){ 
			$("#zoomOut_"+id).remove(); 
		} 
		 
		$("<input type='button' style='position:absolute;right:15px;top:15px;opacity:0.5;' id='zoomOut_'"+ id +" value='Zoom Out'>").appendTo($("#"+id)).click(function(e){ 
			e.preventDefault(); 
			options = flot_options(id); 
			$.plot("#"+id, data, options); 
			$("#zoomOut_"+id).remove(); 
		});	 
	}); 
}; 
 
//Call for the options 
function flot_options(optionOf){ 
	var options = { 
			grid: { 
				borderWidth:0, 
				labelMargin:0, 
				axisMargin:0, 
				minBorderMargin:0 
			}, 
			legend: { 
				show: true, 
				noColumns: 3, 
			}, 
			series: { 
				lines: { 
					show: true, 
					lineWidth: 0.07, 
					fill: true, 
				} 
			}, 
			xaxis: { 
				show:true, 
				mode: "time", 
				tickFormatter: function (v, axis) { 
					return nDate(v,"m/d"); 
				}, 
				axisLabelUseCanvas: true, 
				axisLabelFontSizePixels: 12, 
				axisLabelFontFamily: "Verdana, Arial", 
				axisLabelPadding: 10, 
			}, 
			yaxis: { 
				show:true, 
				min: 0, 
				max: null, 
				axisLabelUseCanvas: true, 
				axisLabelFontSizePixels: 12, 
				axisLabelFontFamily: "Verdana, Arial", 
			}, 
			selection: { 
				mode: "x" 
			},	 
			grid: { 
				borderWidth: 0, 
				borderColor: "#FFF", 
				hoverable: true, 
			} 
		}; 
		 
		if(optionOf == "cpu_plot"){ 
		 
			//Appending options for cpu 
			options.yaxis.tickFormatter = function (v) { 
				if(v <= 1024) 
					return Math.round(v) + " %"; 
			}; 
			options.legend.container = $("#legend_cpu"); 
		 
		}else if(optionOf == "ram_plot"){ 
			 
			//Appending options for ram 
			options.yaxis.tickFormatter = function (v) { 
				if(v <= 1024) 
					return Math.round(v) + " MB"; 
				if(v > 1024 && v < (1024*1024)) 
					return Math.round(v /1024) + " GB"; 
				if(v > (1024*1024)) 
					return Math.round(v / (1024*1024)) + " TB" 
			}; 
			options.legend.container = $("#legend_ram"); 
			 
		}else if(optionOf == "disk_plot"){ 
		 
			//Appending options for Disk 
			options.yaxis.tickFormatter = function (v) { 
				if(v <= 1024) 
					return Math.round(v) + " MB"; 
				if(v > 1024 && v < (1024*1024)) 
					return Math.round(v /1024) + " GB"; 
				if(v > (1024*1024)) 
					return Math.round(v / (1024*1024)) + " TB" 
			}; 
			options.legend.container = $("#legend_disk"); 
		 
		}else if(optionOf == "inode_plot"){ 
		 
			//Appending option for INodes 
			options.yaxis.tickFormatter = ""; 
			options.legend.container = $("#legend_inode"); 
		 
		}else if(optionOf == "io_read_plot" || optionOf == "io_write_plot"){ 
		 
			//Appending option for INodes 
			options.yaxis.tickFormatter = function (v) { 
				if(v <= 1024) 
					return Math.round(v) + " Bytes/s"; 
				if(v > 1024 && v < (1024*1024)) 
					return Math.round(v /1024) + " KB/s"; 
				if(v > (1024*1024) && v < (1024*1024*1024)) 
					return Math.round(v / (1024*1024)) + " MB/s" 
				if(v > (1024*1024*1024)) 
					return Math.round(v / (1024*1024*1024)) + " GB/s" 
			}; 
			options.legend.container = (optionOf == "io_read_plot" ? $("#legend_io_read") : $("#legend_io_write")); 
		 
		}else if(optionOf == "ntw_plot"){ 
		 
			//Appending	option for Network 
			options.yaxis.tickFormatter = function (v) { 
				if(v <= 1024) 
					return Math.round(v) + " B/s"; 
				if(v > 1024 && v <= (1024*1024)) 
					return Math.round(v / 1024) + " KB/s"; 
				if(v > (1024*1024) && v <= (1024*1024*1024)) 
					return Math.round(v / (1024*1024)) + " MB/s"; 
				if(v > (1024*1024*1024)) 
					return Math.round(v / (1024*1024*1024)) + " GB/s"; 
			}; 
			options.legend.container = $("#legend_ntw"); 
			 
		} 
		 
		return options; 
}; 
 
function change_monitor_tabs(id){ 
	$('#cpuinfo_win, #raminfo_win, #diskinfo_win, #ioinfo_win, #ntwinfo_win' ).hide(); 
	$('#'+id+'_win').show(); 
}; 
 
function startusage(){ 
	ajaxTimer = setInterval("show_monitor_window(1, 0 , 0, 0)", 5000); 
}; 
 
function drawrampie(ram){ 
	pie("ramchart", [270, 200, 80, 100, 65], ram[0], ram[1], "#3399CC", "#FF0000", "MB"); 
}; 
 
function show_bandwidth_window(mon, custDates = []){ 
	var all_data = ''; 
 
	let bandwidth_api_call = 'index.php?api=json&act=bandwidth&svs=' + N['vpsid'] + '&show=' + mon; 
 
	if(!empty(custDates)){ 
		bandwidth_api_call = 'index.php?api=json&act=bandwidth&svs=' + N['vpsid'] + '&show=' + mon + '&customDates='+custDates; 
	} 
 
	AJAX(bandwidth_api_call, function(data) { 
 
		all_data = data; 
 
		var month = data['month']; 
 
		if(empty(month)){ 
			return false; 
		} 
 
		var prev_month = month['prev']; 
		var next_month = month['next']; 
		var months = month['mth_txt'].split('<br>'); 
 
		var presentMonths = convertDateStringToArray(month['mth_txt']); 
		var date1 = presentMonths[0]; 
		var date2 = presentMonths[1]; 
 
		if(!empty(all_data['bandwidth']['custom_date'])){ 
			function dateFormatter(mont){ 
				let dateStr = mont; 
				let year = dateStr.substring(0, 4); 
				let month = dateStr.substring(4, 6); 
				let day = dateStr.substring(6, 8); 
				let formattedDate = month + "/" + day + "/" + year; 
				return formattedDate; 
			} 
			var date1 = dateFormatter(all_data['bandwidth']['custom_date']['from']) 
			var date2 = dateFormatter(all_data['bandwidth']['custom_date']['to']) 
		} 
		var monthHtml = '<input type="text" name="reservation" id="reservation" value="'+date1+' - '+date2+'" />'; 
		$('#month_holder1').html(monthHtml); 
 
		$('#reservation').daterangepicker({ 
			"autoapply": true, 
			"linkedCalendars": false, 
			"minDate": moment(formatDateFromEpoch(all_data['vps_create_date']), "YYYY-MM-DD"), 
			"maxDate": moment(moment().format("YYYY-MM-DD"), "YYYY-MM-DD") 
		},  
		function(start, end, label) { 
			let startAndEndDates = [start.format('DD/MM/YYYY'), end.format('DD/MM/YYYY')]; 
			show_bandwidth_window(mon, startAndEndDates); 
		}); 
     
		$('.drp-calendar.right').hide(); 
        $('.drp-calendar.left').addClass('single'); 
 
        $('.calendar-table').on('DOMSubtreeModified', function() { 
            var el = $(".prev.available").parent().children().last(); 
            	if (el.hasClass('next available')) { 
                    return; 
                } 
                el.addClass('next available'); 
                el.append('<span></span>'); 
        }); 
 
		var today = new Date(); 
		var mm = today.getMonth()+1; //January is 0! 
		var yyyy = today.getFullYear(); 
 
		if(mm.toString().length == 1){ 
			mm = '0' + mm; 
		} 
 
		var presentMonth = all_data['vps_create_month']; 
 
		if(empty(all_data['bandwidth']['custom_date'])){ 
			$('#reset_api').hide(); 
			if(presentMonth == month['month']){ 
				$('#prev_month').css('visibility', 'hidden'); 
			}else{ 
				$('#prev').html('<a id="prev_month" href="javascript:void(0);" class="blue_btn green_but_a small-btn" onclick="show_bandwidth_window('+ month['prev'] +')">Prev Month</a>'); 
				$('#prev_month').css('visibility', 'visible'); 
			} 
 
			if(month['next'] > (yyyy+""+mm)){ 
				$('#next').hide(); 
			}else{ 
				$('#next').html('<a id="next" href="javascript:void(0);" class="blue_btn green_but_a small-btn" onclick="show_bandwidth_window('+ month['next'] +')">Next Month</a>'); 
				$('#next').show(); 
			} 
		}else{ 
			$('#reset_api').show(); 
			$('#prev_month').css('visibility', 'hidden'); 
			$('#next').hide(); 
		} 
 
		var band_limit = data['bandwidth']['limit_gb'] + ' GB'; 
		var free_gb = data['bandwidth']['free_gb']; 
		var used_gb = data['bandwidth']['used_gb']; 
		var band_percent = data['bandwidth']['percent']; 
 
		if(data['bandwidth']['limit_gb'] == 0){ 
			band_limit = '<i class="fas fa-infinity"></i> GB'; 
			free_gb = 1000000; 
			used_gb = 1; 
		} 
 
		$('#bw_limit').html(band_limit); 
		$('#bw_used').html(data['bandwidth']['used_gb'] + ' GB'); 
		$('#bw_percent').html(band_percent + ' %'); 
 
		drawbwpie(); 
 
		function drawbwpie(){ 
 
			$('#bandwidth_usage').html(`${used_gb} / ${band_limit}`) 
 
			var res = [ 
				{ label: "Used",	data: used_gb}, 
				{ label: "Free",	data: free_gb} 
			]; 
 
			$('#bwpiechart_holder').css('background', (band_percent <= 40 ? '#06d79c' : band_percent < 80 ? 'orange' :	band_percent >= 80 ? 'red' : '#ff0000')); 
			$('#bwpiechart_holder').css('width', band_percent +"%"); 
			$('#bwpiechart_holder').html(`${band_percent} %`); 
			$('#bwpiechart_holder').attr('tooltip', band_percent + ' %Used'); 
		}; 
 
		var d1 = makedata(all_data['bandwidth']['usage'], 1); 
		var indata = makedata(all_data['bandwidth']['in'], 1); 
		var outdata = makedata(all_data['bandwidth']['out'], 1); 
 
		var bw_cal_config = N['info']['bw_cal_config']; 
 
		var bandwidth_graph = [ 
			{ label: "Usage",	data: bw_cal_config == 0 ? d1 : 0}, 
			{ label: "In",	data: bw_cal_config == 1 || bw_cal_config == 0 ? indata : 0}, 
			{ label: "Out",	data: bw_cal_config == 2 || bw_cal_config == 0 ? outdata : 0} 
		]; 
 
		$.plot($("#bwband_holder1"), bandwidth_graph, { 
			series: { 
				points: { show: false }, 
				lines: { show: true, fill: true, steps: false, lineWidth: 0.5 }, 
			}, 
			legend: { 
				show: true, 
				noColumns: 3, 
				container: $("#chartLegend"), 
				position: "se", 
			}, 
			xaxis:{ 
				mode: 'time', 
				color:'#545454', 
				tickColor:'blue', 
				timeformat: '%d', 
				tickSize: [1, 'day'], 
				tickLength: 5, 
				axisLabelUseCanvas: false, 
				tickFormatter: function (val, xaxis) { 
					var d = new Date(val); 
					var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; 
					if (xaxis.lastMonth === undefined || xaxis.lastMonth !== d.getUTCMonth()) { 
						xaxis.lastMonth = d.getUTCMonth(); 
						return d.getUTCDate() + "<br>" + "|" + monthNames[d.getUTCMonth()] + "->"; 
					} else { 
						return d.getUTCDate(); 
					} 
				}, 
				alignTicksWithAxis: 4 
			}, 
			yaxis:{ 
				min:0, 
				color:'#545454', 
				tickLength: 5, 
				tickFormatter: function (v) { 
					if(v <= 1024) 
						return Math.round(v) + " M"; 
					if(v > 1024 && v < (1024*1024)) 
						return Math.round(v /1024) + " G"; 
					if(v > (1024*1024)) 
						return Math.round(v / (1024*1024)) + " T" 
				} 
			}, 
			grid: { 
				borderWidth: 0, 
				borderColor: '#fff0', 
				hoverable: true, 
			} 
		}); 
 
		var previousPoint = null; 
		$("#bwband_holder1").bind("plothover", function (event, pos, item) { 
			$("#x").text(pos.x.toFixed(2)); 
			$("#y").text(pos.y.toFixed(2)); 
 
			if (item) { 
 
				if (previousPoint != item.dataIndex) { 
					previousPoint = item.dataIndex; 
					$("#tooltip").remove(); 
					var tmp_date = new Date(item.series.data[item.dataIndex][0]); 
					var x = tmp_date.getDate()+'-'+(tmp_date.getMonth() + 1)+'-'+tmp_date.getFullYear(), 
						y = item.datapoint[1].toFixed(2); 
 
					showTooltip(item.pageX, item.pageY, 
								"Total : " + parseInt(y) + " MB <br>Day : " + x); 
				} 
			} else { 
				$("#tooltip").remove(); 
				previousPoint = null; 
			} 
		}); 
	}); 
}; 
 
function formatDateFromEpoch(epoch) { 
	var date = new Date(epoch * 1000); // Convert to milliseconds 
	var year = date.getFullYear(); 
	var month = ("0" + (date.getMonth() + 1)).slice(-2); // Month is zero-based, so adding 1 and padding with leading zero if necessary 
	var day = ("0" + date.getDate()).slice(-2); // Padding with leading zero if necessary 
   
	return year + "-" + month + "-" + day; 
} 
 
function reset_bandwidth_graph(){ 
	show_bandwidth_window(); 
} 
 
function convertDateStringToArray(dateString) { 
 
	// Split the string by the '<br>' separator 
	var dates = dateString.split('<br>'); 
 
	// Initialize an empty array to store the converted dates 
	var convertedDates = []; 
	 
	// Iterate through each date string 
	for (var i = 0; i < dates.length; i++) { 
	  var date = dates[i].trim(); // Remove any leading/trailing spaces 
	   
	  // Split the date string by spaces 
	  var parts = date.split(' '); 
	   
	  // Extract the day, month, and year 
	  var day = parts[0]; 
	  var month = parts[1]; 
	  var year = parts[2]; 
	   
	  // Convert the month abbreviation to a two-digit number 
	  var monthNumber = ('JanFebMarAprMayJunJulAugSepOctNovDec'.indexOf(month) / 3 + 1).toString().padStart(2, '0'); 
	   
	  // Format the date string as 'MM/DD/YYYY' 
	  var formattedDate = monthNumber + '/' + day + '/' + year; 
	   
	  // Add the formatted date to the array 
	  convertedDates.push(formattedDate); 
	} 
	 
	return convertedDates; 
} 
 
function show_processes_window(shw_win){ 
 
	$('#processes').attr('action', 'act=processes&svs='+ N['vpsid']); 
 
	// Show the popup 
	if(shw_win == 1){ 
		$("#show_processes_window").modal('show'); 
	} 
	AJAX('index.php?api=json&act=processes&svs=' + N['vpsid'], function(data) { 
 
		// Prepare the list 
		var tdata = '<thead><tr>'; 
		//alert(typeof(data["processes_head"])); 
 
		var abc; 
		for(abc in data["processes_head"]){ 
			var proc_h; 
			proc_h = data["processes_head"][abc]; 
			if(typeof(proc_h) != 'string'){ // For some reason there is a function coming in data["processes_head"] 
				continue; 
			} 
			tdata += '<th>'+ proc_h +'</th>'; 
		} 
 
		tdata += '<th>select</th></tr></thead>'; 
 
		for(x in data["processes"]){ 
 
			if(typeof(data["processes"][x]['PID']) != "undefined"){ 
				tdata += '<tr>'; 
				for(y in data["processes"][x]){ 
					tdata += '<td>'+ data["processes"][x][y] +'</td>'; 
				} 
				tdata += '<td><div class="custom-control custom-checkbox"><input type="checkbox" name="sel_proc[]" class="custom-control-input" id="process-'+data["processes"][x]['PID']+'" value="'+ data["processes"][x]['PID'] +'"><label class="custom-control-label" for="process-'+data["processes"][x]['PID']+'"></div></td>'; 
				tdata += '</tr>'; 
			} 
		} 
 
		if(empty(data["processes"])){ 
			$('#process_div').html('<div class="notice">The VPS is off !</div>'); 
			return false; 
		} 
		 
		$('#proctable').html(tdata); 
		 
		$("#proctable").dataTable({ 
			'destroy': true, 
			'columnDefs': [ { 
				'targets': [9], // column index (start from 0) 
				'orderable': false, // set orderable false for selected columns 
				}, 
				{ "width": "5%", "targets": [0,1] }, 
				{ "width": "10%", "targets": [7] },		  
				{ "width": "20%", "targets": [8] }, 
				{ "width": "6%", "targets": [9] },		  
			], 
			'autoWidth': true,  
 
		}); 
		 
		 
	}); 
 
	$("#process_poweroff").unbind().click(function(){ 
		$("#processes").submit(); 
	}) 
}; 
 
function response_processes(){ 
	show_processes_window(0); 
}; 
 
function show_services_window(shw_win){ 
 
	$('#servicesform').attr('action', 'act=services&svs=' + N['vpsid']); 
	$('#services_div').html(''); 
	AJAX('index.php?api=json&act=services&svs=' + N['vpsid'], function(data) { 
 
		var cols = new Object(); 
		cols["heading"] = {"l" : 'Services', "width": '30px'}; 
		cols["status"] = {"l" : 'Status', "width": '30px'}; 
		cols["autostart"] = {"l" : 'Autostart', "width": '30px'}; 
		cols["select_all"] = {"l" : '<div class="custom-control custom-checkbox"><input type="checkbox" id="services_select_all" class="select_all custom-control-input" onclick="check(document.getElementsByName(\'sel_serv[]\'), this)"><label class="custom-control-label" for="services_select_all"></div>', "width": '30px', "class" : "select-all-checkbox"}; 
 
		var services = data['services']; 
		var autostart = data['autostart']; 
		var running = data['running']; 
		var tmp = new Object(); 
		// Prepare the list 
		for(x in services){ 
 
			$v = services[x]; 
			tmp[x] = new Object(); 
 
			tmp[x]["heading"] = $v; 
 
			for(y in running){ 
				if(running[y] == $v){ 
					tmp[x]["status"] = 'Running'; 
					break; 
				}else{ 
					tmp[x]["status"] = 'OFF'; 
				} 
			} 
 
			for(z in autostart){ 
				if(autostart[z] == $v){ 
					tmp[x]["autostart"] = 'ON'; 
					break; 
				}else{ 
					tmp[x]["autostart"] = 'OFF'; 
				} 
			} 
 
			tmp[x]["select_all"] = '<div class="custom-control custom-checkbox"><input type="checkbox" class="custom-control-input" id="services-checkbox'+$v+'" name="sel_serv[]" value="'+ $v +'"><label class="custom-control-label" for="services-checkbox'+$v+'"></div>'; 
		} 
		// Form the TABLE 
		table({'id' : 'services_div', 'tid' : 'servicestable', "width" : '100%'}, cols, tmp); 
 
		// Prepare the list 
		$("#servicestable").dataTable({ 
			'columnDefs': [ { 
				'targets': [3], // column index (start from 0) 
				'orderable': false, // set orderable false for selected columns 
			 }] 
		}); 
	}); 
 
	var action = ''; 
	$('#start_x,	#restart_x, #stop_x').val(''); 
 
	$("#sstart").unbind().click(function(){ 
		$('#start_x').val(1); 
		return submitit('servicesform', 'response_services'); 
	}); 
 
	$("#sstop").unbind().click(function(){ 
		$('#stop_x').val(1); 
		return submitit('servicesform', 'response_services'); 
	}); 
 
	$("#srestart").unbind().click(function(){ 
		$('#restart_x').val(1); 
		return submitit('servicesform', 'response_services'); 
	}); 
 
}; 
 
function response_services(){ 
	show_services_window(0); 
}; 
 
function show_statuslogs_window(){ 
 
	AJAX('index.php?api=json&act=statuslogs&svs=' + N['vpsid'], function(data) { 
 
		var cols = new Object(); 
		cols["time"] = {"l" : 'Time', "width": '30px'}; 
		cols["status"] = {"l" : 'System Status', "width": '30px'}; 
 
		// Prepare the list 
		for(x in data["var"]){ 
			$v = data["var"][x]; 
 
			if($v['status'] == 1){ 
				var sts_status = '<i class="fas run fa-running mr-2"></i>Running'; 
			}else{ 
				var sts_status = '<i class="fas stop fa-times-circle mr-2"></i>Stopped'; 
			} 
			data["var"][x]["time"] = $v['datified_time']; 
			data["var"][x]["status"] = sts_status; 
		} 
		// Form the TABLE 
		table({'id' : 'statustable_div', 'tid' : 'statustable', 'class' : 'table border tasks_table w-100'}, cols, data["var"]); 
 
		$("#statustable").dataTable({ 
				"order": [[ 0, "desc" ]] 
			} 
		); 
 
	}); 
 
}; 
 
function show_logs_window(){ 
 
	AJAX('index.php?api=json&act=logs&svs=' + N['vpsid'], function(data) { 
 
		var cols = new Object(); 
		cols["time"] = {"l" : 'Date', "width": '150px'}; 
		cols["action_text"] = {"l" : 'Task', "width": '60px'}; 
		cols["status"] = {"l" : 'Status', "width": '35px'}; 
		cols["ip"] = {"l" : 'IP', "width": '35px'}; 
 
		// Prepare the list 
		for(x in data["logs"]){ 
			$v = data["logs"][x]; 
			if($v['status'] == 1){ 
				var sts_status = '<font color="#06d79c">Successful</font>'; 
			}else{ 
				var sts_status = '<font color="#FF0000">Fail</font>'; 
			} 
			data["logs"][x]["time"] = nDate($v['time']); 
			data["logs"][x]["status"] = sts_status; 
		} 
		// Form the TABLE 
		table({'id' : 'logs_div', 'tid' : 'logstable', 'class':'table border tasks_table w-100 text-left'}, cols, data["logs"]); 
 
		$("#logstable").dataTable({ 
				"order": [[ 0, "desc" ]] 
			} 
		); 
 
	}); 
}; 
 
function show_self_shutdown_window(startURL){ 
 
	startURL = startURL || 'act=self_shutdown'; 
	var regex = new RegExp("[\?&]page=([^&#]*)"); 
	var results = regex.exec(startURL); 
	var pageNum = 0; 
 
	if(results != null){ 
		pageNum = decodeURIComponent(results[1].replace(/\+/g, " ")); 
	} 
 
	$('#shutdown_form').attr('action', 'act=self_shutdown&svs='+N['vpsid']+'&page='+pageNum); 
 
	$('#shutdown_hrs').val(); 
	$('#shutdown_min').val(); 
	$('#shutdown_date').val(); 
	$('#shutdown_action').val(); 
 
	AJAX('index.php?api=json&act=self_shutdown&svs=' + N['vpsid']+'&page='+pageNum, function(result){ 
		response_shutdown(result); 
	}); 
 
	if($('#shutdown_min option').length <= 0){ 
		appendOption("#shutdown_min", 60); 
		appendOption("#shutdown_hrs", 24); 
	} 
 
	$("#show_self_shutdown_window").modal('show'); 
}; 
 
function submit_self_shutdown_form(element){ 
 
	var data = new Object(); 
	var id = $(element).attr("id").split("_"); 
	 
	data['shutdown_min'] = $('#shutdown_min').val(); 
	data['shutdown_hrs'] = $('#shutdown_hrs').val(); 
	data['shutdown_date'] = $('#shutdown_date').val(); 
	data['selfshutdown'] = 1; 
	data['shutdown_action'] = $('#shutdown_action').val(); 
 
	if (isDate(data['shutdown_date'], "mm/dd/yyyy") && (id[0] == "submitTimer")){ 
 
		modalConfirm(function(confirm){ 
			if(confirm){ 
				submitit('shutdown_form', 'response_shutdown'); 
			}else{ 
				return false; 
			} 
		},'Are you sure you want set timer ?'); 
 
	} else if (id[0] == "deleteTimer"){ 
 
		modalConfirm(function(confirm){ 
			if(confirm){ 
				$("#delete_timer").val(id[1]); 
				submitit('shutdown_form', 'response_shutdown'); 
			}else{ 
				return false; 
			} 
		},"Are you sure you want delete timer ?"); 
 
	} else { 
		error_alert("Please enter date in mm/dd/yyyy format"); 
	} 
 
	return false; 
}; 
 
function edit_self_shutdown(element){ 
 
	data_edit = window.self_shutdown; 
	id = $(element).attr('id').split("_"); 
 
	$('#shutdown_hrs').val(Number(data_edit[id[1]].hours)); 
	$('#shutdown_min').val(Number(data_edit[id[1]].minutes)); 
	$('#shutdown_date').val(data_edit[id[1]].date); 
	$('#shutdown_action').val(data_edit[id[1]].action); 
	$('#edit_timer').val(id[1]); 
	$('#submitTimer').val("Edit"); 
}; 
 
function response_shutdown(data){ 
	 
	if(data['self_shutdown'] != null){ 
		data['page'] = data['self_shutdown']['page']; 
		data['self_shutdown'] = data['self_shutdown']['self_shutdown']; 
		pageLinks("shutdown_links", 'act=self_shutdown&svs='+N['vpsid'], data['page'], 'show_self_shutdown_window'); 
 
		var table_cols = new Object(); 
		var table_data = new Object(); 
 
		// Reset the timers before displaying the table 
		$('#edit_timer').removeAttr("value"); 
		$('#delete_timer').removeAttr("value"); 
		$('#submitTimer').val("Save"); 
		$('#shutdown_hrs').val(""); 
		$('#shutdown_min').val(""); 
		$('#shutdown_date').val(""); 
		$('#shutdown_action').val(""); 
 
		var actions = new Array('Start', 'Stop', 'Restart', 'Power Off'); 
 
		table_cols["id"] = {"l" : 'ID', "width": '30px'}; 
		table_cols["date"] = {"l" : 'Date', "width": '30px'}; 
		table_cols["hours"] = {"l" : 'Hour', "width": '20px'}; 
		table_cols["minutes"] = {"l" : 'Minute', "width": '20px'}; 
		table_cols["show_action"] = {"l" : 'Action', "width": '30px'}; 
		table_cols["show_status"] = {"l" : 'Status', "width": '30px'}; 
 
		//data = JSON.parse(data); 
		window.self_shutdown = data["self_shutdown"]; 
		data['self_shutdown'] = sortProperties(data['self_shutdown']); 
 
		// Did we get something ? 
		if(data["self_shutdown"] != null){ 
 
			$.each(data["self_shutdown"], function(key, value){ 
 
				table_data[key] = data["self_shutdown"][key]; 
 
				table_data[key]["show_action"] = '<span id=action_' + data["self_shutdown"][key].action + '>' + actions[data["self_shutdown"][key].action] + '</span>'; 
 
				// If the value is there and it is not yet marked as shutdown 
				if(value != undefined && value["status"] == null){ 
					table_data[key]["show_status"] = '<i class="far fa-trash-alt delete fa-1x mr-2" aria-hidden="true" title="Delete" id="deleteTimer_'+ data["self_shutdown"][key].id +'" onclick="submit_self_shutdown_form(this);"></i><i class="far fa-edit edit fa-1x" title="Edit" id="editTimer_'+ data["self_shutdown"][key].id +'" onclick="edit_self_shutdown(this);"></i>'; 
				}else{ 
					table_data[key]["show_status"] = '<i class="fas fa-check start" title="Done"></i>'; 
				} 
			}); 
		} 
 
		if(!empty(table_data)){ 
			$("#shutdown_links").show(); 
			table({'id' : 'shutdown_details_div', 'tid' : 'shutdown_details', 'width' : '95%'}, table_cols, table_data); 
		} 
 
	} 
}; 
 
function show_system_alerts_window(){ 
 
	AJAX('index.php?api=json&act=system_alerts&svs=' + N['vpsid'], function(data) { 
 
		var cols = new Object(); 
		cols["time"] = {"l" : 'Time'}; 
		cols["cpu"] = {"l" : 'CPU'}; 
		cols["ram"] = {"l" : 'Ram'}; 
		cols["disk"] = {"l" : 'Disk'}; 
 
		// Prepare the list 
		for(x in data["alerts"]){ 
			$v = data["alerts"][x]; 
			data["alerts"][x]["time"] = nDate($v['time'], ''); 
			data["alerts"][x]["cpu"] = '<font class="'+ ($v['cpu'] > 75 ? 'sysred' : ($v['cpu'] > 50 ? 'sysyellow' : 'sysgreen'))+'">'+$v['cpu']+'</font>'; 
			data["alerts"][x]["ram"] = '<font class="'+ ($v['ram'] > 75 ? 'sysred' : ($v['ram'] > 50 ? 'sysyellow' : 'sysgreen'))+'">'+$v['ram']+'</font>'; 
			data["alerts"][x]["disk"] = '<font class="'+ ($v['disk'] > 75 ? 'sysred' : ($v['disk'] > 50 ? 'sysyellow' : 'sysgreen'))+'">'+$v['disk']+'</font>'; 
		} 
		// Form the TABLE 
		table({'id' : 'system_alerts_div', 'tid' : 'system_alertstable', "width" : '80%'}, cols, data["alerts"]); 
 
		$("#system_alertstable").dataTable(); 
 
	}); 
 
	$("#show_system_alerts_window").modal('show'); 
}; 
 
// Show the usersettings 
function usersettings_onload(){ 
 
	// timezone array for backward compatibility 
	var mapped_timezones = N['mapped_timezones'] 
 
	if(N['timezone'] in mapped_timezones){ 
		N['timezone'] = mapped_timezones[N['timezone']]; 
	} 
 
	// Show the languages 
	var txt = []; 
	for(x in N["languages"]){ 
		txt.push('<option value="'+ x +'">'+ ucfirst(N["languages"][x]) +'</option>'); 
	} 
 
	$("#usersettings_language").html(txt.join('')); 
 
	// Show the skins 
	var txt = []; 
	for(x in N["skins"]){ 
		txt.push('<option value="'+ x +'">'+ ucfirst(N["skins"][x]) +'</option>'); 
	} 
 
	$("#usersettings_skins").html(txt.join('')); 
 
	// Show the timezones 
	timezones = N['timezones_new']; 
 
	var options = ''; 
	var tzone = ''; 
	 
	$.each(timezones, function(key, value){ 
		options += `<optgroup label="${key}">` 
		$.each(value, function(timezone, timezone_name){ 
			if(N['timezone'] == timezone){ 
				tzone = timezone;  
			} 
			options += `<option value="${timezone}">${timezone_name}</option>` 
		}) 
	}); 
 
	$("#usersettings_timezone").html(options); 
	$("#usersettings_timezone").select2({width:'100%'}); 
	setTimeout(() => { 
		$("#usersettings_timezone").val(tzone).trigger('change'); 
	}, 5); 
 
	// Should we show the logo URL option ? 
	if(N["user_type"] == 2){ 
		$("#us_logo, #us_mob_logo, #us_login_logo, #cuser_favicon_url, #cuser_copyright_text, #cuser_policy_url").show(); 
 
		if(!empty(N['allow_cloud_dom_name'])){ 
			$("#cuser_dom_name").show(); 
		} 
 
	}else{ 
		$("#us_logo, #us_mob_logo, #us_login_logo, #cuser_dom_name, #cuser_favicon_url, #us_title, #cuser_copyright_text, #cuser_policy_url").hide(); 
	} 
 
	// We save 0% bandwidth threshold as -1 and hence we need to convert it back 
	if(N['preferences']['vps_bandwidth_threshold'] == -1 || N['preferences']['vps_bandwidth_threshold'] == null) { 
		N['preferences']['vps_bandwidth_threshold'] = 0; 
	} 
 
	// Parse the variables 
	parseVars("usersettings", N["preferences"]); 
 
}; 
 
//Json beautify block 
function jsonViewer(json, collapsible=false) { 
    var TEMPLATES = { 
        item: '<div class="json__item"><div class="json__key">%KEY%</div><div class="json__value json__value--%TYPE%">%VALUE%</div></div>', 
        itemCollapsible: '<label class="json__item json__item--collapsible"><input type="checkbox" class="json__toggle"/><div class="json__key">%KEY%</div><div class="json__value json__value--type-%TYPE%">%VALUE%</div>%CHILDREN%</label>', 
        itemCollapsibleOpen: '<label class="json__item json__item--collapsible"><input type="checkbox" class="json__toggle"/><div class="json__key">%KEY%</div><div class="json__value json__value--type-%TYPE%">%VALUE%</div>%CHILDREN%</label>' 
    }; 
 
    function createItem(key, value, type){ 
        var element = TEMPLATES.item.replace('%KEY%', key); 
 
        if(type == 'string') { 
            element = element.replace('%VALUE%', '"' + value + '"'); 
        } else { 
            element = element.replace('%VALUE%', value); 
        } 
 
        element = element.replace('%TYPE%', type); 
 
        return element; 
    } 
 
    function createCollapsibleItem(key, value, type, children){ 
        var tpl = 'itemCollapsible'; 
         
        if(collapsible) { 
            tpl = 'itemCollapsibleOpen'; 
        } 
         
        var element = TEMPLATES[tpl].replace('%KEY%', key); 
 
        element = element.replace('%VALUE%', type); 
        element = element.replace('%TYPE%', type); 
        element = element.replace('%CHILDREN%', children); 
 
        return element; 
    } 
 
    function handleChildren(key, value, type) { 
        var html = ''; 
 
        for(var item in value) {  
            var _key = item, 
                _val = value[item]; 
 
            html += handleItem(_key, _val); 
        } 
 
        return createCollapsibleItem(key, value, type, html); 
    } 
 
    function handleItem(key, value) { 
        var type = typeof value; 
 
        if(typeof value === 'object') {         
            return handleChildren(key, value, type); 
        } 
 
        return createItem(key, value, type); 
    } 
 
    function parseObject(obj) { 
        _result = '<div class="json">'; 
 
        for(var item in obj) {  
            var key = item, 
                value = obj[item]; 
 
            _result += handleItem(key, value); 
        } 
 
        _result += '</div>'; 
 
        return _result; 
    } 
     
    return parseObject(json); 
}; 
//Json beautify block End 
 
// API Key wizard 
function apikey_onload(){ 
 
	if(isError()){ 
		error(N["error"]); 
		return -1; 
	} 
 
	if(N['apikeys'] == ""){ 
		$('#apikeyslist').html('<div class="notice">You do not have any API Credentials. Please add one.</div>'); 
		$('#no_table_api').show(); 
		return; 
	} 
 
	//Prepar the table list 
	if(!empty(N['api_logs'])){ 
		var tdata = '<thead><tr>'; 
		var api_iterator; 
		var sign_status = 0; 
 
		tdata += '<th>ID</th>'; 
		tdata += '<th>API ID</th>'; 
		tdata += '<th>VPSID</th>'; 
		tdata += '<th>Source IP</th>'; 
		tdata += '<th>Action</th>'; 
		tdata += '<th>Time</th>'; 
		tdata += '<th>Extra Info</th>'; 
		tdata += '<th>Status</th>'; 
		tdata += '</tr></thead>'; 
		tdata += '<tr>'; 
		//console.log(N['api_logs']); 
		$.each(N['api_logs'], function (i) { 
				if(empty(N['api_logs'][i].status )){ 
					sign_status = '<div style="text-align:center;"><i class="fas fa-1x fa-check-circle text-primary"></i></div>'; 
				}else{ 
					sign_status = '<div style="text-align:center;"><i class="fas fa-1x fa-times-circle stop"></i></div>'; 
				} 
 
				var data_to = N['api_logs'][i].data; 
				var data_too = ''; 
				data_to = JSON.parse(data_to); 
				//console.log(data_to); 
				data_too += jsonViewer(data_to, true); 
 
				tdata += '<td>'+ N['api_logs'][i].id +'</td>'; 
				tdata += '<td>'+ N['api_logs'][i].api_id +'</td>'; 
				tdata += '<td>'+ N['api_logs'][i].vpsid +'</td>'; 
				tdata += '<td>'+ N['api_logs'][i].from_ip +'</td>'; 
				tdata += '<td>'+ vlang[N['api_logs'][i].action] +'</td>'; 
				tdata += '<td>'+ nDate(N['api_logs'][i].time, 'd/m/Y H:i:s') +'</td>'; 
				tdata += '<td>'+ data_too +'</td>'; 
				tdata += '<td>'+ sign_status +'</td>'; 
				tdata += '</tr>'; 
		}); 
     
		$('#no_table_api').hide(); 
		$('#api_table').show(); 
		$('#apitable').html(tdata); 
     
		$("#apitable").dataTable({ 
			"order": [[ 0, "desc" ]], 
			'columnDefs': [ 
				{ "width": "5%", "targets": [0,1,2] }, 
				{ "width": "40%", "targets": [6] }, 
				{ "width": "15%", "targets": [3] }, 
				{ "width": "20%", "targets": [5] }, 
			], 
			"bDestroy": true, 
			autoWidth: false 
		}); 
	}else{ 
		$('#no_table_api').show(); 
		$('#api_table').hide(); 
	} 
 
	var cols = new Object(); 
	cols["apikey"] = {"l" : 'API Key', "width": '30px'}; 
	cols["apipass"] = {"l" : 'API Password'}; 
	cols["ip"] = {"l" : 'IP addresses'}; 
	cols["manage"] = {"l" : 'Manage', "width" : '5%', "class" : 'text-center'}; 
 
	// Prepare the list 
	for(x in N["apikeys"]){ 
		$v = N["apikeys"][x]; 
		N["apikeys"][x]["manage"] = '<div class="d-flex"><a href="javascript:loadpage(\'act=editapi&idapi='+N["apikeys"][x]["idapi"]+'\')" class="mx-2"><i class="far edit fa-1x fa-edit" tooltip="Edit"></i></a>\ 
		<a href="javascript:delapikey('+x+')" class="mx-2"><i class="far fa-1x fa-trash-alt delete" aria-hidden="true" tooltip="Delete"></i></a>\ 
		<a href="javascript:resetapikey('+x+')" class="mx-2"><i class="fas fa-1x fa-sync-alt" aria-hidden="true" tooltip="Reset API Key"></i></a></div>'; 
 
		if(!empty(N["apikeys"][x]["ip"])){ 
			var final = JSON.parse(N["apikeys"][x]["ip"]); 
			N["apikeys"][x]["ip"] = final; 
		}else{ 
			N["apikeys"][x]["ip"] = 'All IP addresses'; 
		} 
	} 
	 
	// Form the TABLE 
	table({'id' : 'apikeyslist', 'tid' : 'apikey_list_table', "width" : '80%'}, cols, N["apikeys"]); 
	showtooltip(); 
}; 
 
// Add an API KEY 
function addapikey(){ 
	call('index.php?api=json&'+'act=apikey&do=add'); 
}; 
 
// Deletes an API KEY 
function delapikey(key){ 
	modalConfirm(function(confirm){ 
		if(confirm){ 
			call('index.php?api=json&'+'act=apikey&del='+key); 
		}else{ 
			return false; 
		} 
	},"Do you want to delete this API credentails?"); 
}; 
 
// Reset an API KEY 
function resetapikey(key){ 
	modalConfirm(function(confirm){ 
		if(confirm){ 
			call('index.php?api=json&'+'act=apikey&resetapikey='+key); 
		}else{ 
			return false; 
		} 
	},"Do you want to reset this API credentails?"); 
}; 
 
function delisokey(data){ 
	data = data || 0; 
	var ids = []; 
	 
	// Go Button pressed 
	if(data == 0){ 
	 
		$('.isorow').each(function(){ 
			if($(this).is(':checked')){ 
				ids.push($(this).val()); 
			} 
		}); 
	 
	// Direct X button 
	}else{	 
		ids.push(data);	 
	} 
	 
	if(ids.length <= 0){ 
		return; 
	} 
	 
	var fids = new Object(); 
	fids['act']='euiso'; 
	fids['del'] = ids.join(","); 
	 
	var url = 'index.php?api=json&'+$.param(fids); 
 
	modalConfirm(function(confirm){ 
		if(confirm){ 
			call(url); 
		}else{ 
			return false; 
		} 
	},"Are you sure you want to delete this item ?"); 
 
}; 
 
// List Users Wizard 
function users_onload(){ 
 
	// First Clear the Div 
	$('#userslist').html(""); 
 
	$('#no_users').hide(); 
 
	// Are there any users ? 
	if(!("user_list" in N) || N['user_list'] == ''){ 
		$('#no_users').show(); 
		return; 
	} 
 
	if(isError()){ 
		error(N["error"]); 
		return -1; 
	} 
 
	var cols = new Object(); 
	cols["email"] = {"l" : 'Email'}; 
	cols["edituser"] = {"l" : 'Edit', "width" : '5%'}; 
	cols["deluser"] = {"l" : 'Delete', "width" : '5%'}; 
 
	// Prepare the list 
	for(x in N["user_list"]){ 
		$v = N["user_list"][x]; 
		N["user_list"][x]["edituser"] = '<a href="javascript:loadpage(\'act=edituser&uid='+x+'\')"><i class="far edit fa-1x fa-edit"></i></a>'; 
		N["user_list"][x]["deluser"] = '<a href="javascript:delusers('+x+', \''+N["user_list"][x]['email']+'\')" class="areload"><i class="far fa-1x fa-trash-alt delete" aria-hidden="true" title="Delete"></i></a>'; 
	} 
 
	// Form the TABLE 
	table({'id' : 'userslist', 'tid' : 'users_list_table', "width" : '80%'}, cols, N["user_list"]); 
}; 
 
// Add User onshow 
function adduser_onshow(){ 
	$('#adu_user_email').val(""); 
	$('#adu_user_password').val(""); 
}; 
 
// Delete the user 
function delusers(id, email){ 
 
	modalConfirm(function(confirm){ 
		if(confirm){ 
			call('act=users&delete='+id); 
		}else{ 
			loadpage('act=users'); 
		} 
	},"Are you sure you want to delete the User ? "+email+" ?"); 
}; 
 
// Edit User Wizard 
function edituser_onload(){ 
 
	// Set the action correctly 
	$("#edituserform").attr("action", "act=edituser&uid="+N["edit_user"]['uid']); 
 
	// Parse the variables to load the default ones 
	parseVars("edituser", N["edit_user"]); 
 
}; 
 
// Edit API Wizard 
function editapi_onload(){ 
	if(empty(N['edit_api']['ip'])){ 
		$('#edit_ip_addresses').val(''); 
	}else{ 
		var final_ips = JSON.parse(N['edit_api']['ip']); 
		$('#edit_ip_addresses').val(final_ips); 
	} 
	$('#edit_enable_logging').prop('checked', false); 
	if(!empty(N['edit_api']['logging'])){ 
		$('#edit_enable_logging').prop('checked', true); 
	} 
	$('#editapi_id').val(N['edit_api']['idapi']); 
}; 
 
function twofactauth_onload(){ 
	 
	$('#twofactauth_passcode').val(""); 
 
	AJAX('index.php?api=json&act=twofactauth', function(data) { 
 
		$('#otp_email_user').html(data['username']); 
		 
		var selected_type = 'none' 
		 
		if(!empty(data['twofactauth']['2fa_type'])){ 
			selected_type = data['twofactauth']['2fa_type']; 
		} 
		 
		$("#2fa_type").val(selected_type); 
		 
		// Display the QR Code Always 
		$('#qrcode').html('<img class="border mt-3" src="'+data["twofactauth"]["qrcode"]+'" />'); 
		 
		// Display the Secret Code Always 
		$('#secret_key').html(data['twofactauth']['secret_key']); 
		$('#secret_key_val').val(data['twofactauth']['secret_key']); 
		 
		show_otp_divs(); 
 
	}); 
	 
}; 
 
function show_otp_divs(){ 
	 
	$(".otp_methods_div").css("display", "none"); 
	 
	//alert($("#2fa_type").val()) 
	var show_div = $("#2fa_type").val()+'_otp_div'; 
	$("#"+show_div).show(); 
	if($("#2fa_type").val() != 'none'){ 
		$('#otp_input_div').show(); 
	} 
}; 
 
function reset_otp_key(){ 
 
	modalConfirm(function(confirm){ 
		if(confirm){ 
			AJAX('index.php?api=json&'+'act=twofactauth&reset_secret_key=1', function(data) { 
				var twofa = data['twofactauth']; 
				//alert(twofa['secret_key']) 
				$("#secret_key").html(twofa['secret_key']); 
				$("#secret_key_val").val(twofa['secret_key']); 
				$('#qrcode').html('<img src="'+twofa["qrcode"]+'" />'); 
			}); 
		}else{ 
			return false; 
		} 
	},"WARNING : If you reset the secret key you will have to update your apps with the new one. Are you sure you want to continue ?"); 
}; 
 
function send_passcode(){ 
	call('index.php?api=json&'+'act=twofactauth&email_passcode=1'); 
} 
 
// rDNS Wizard 
function rdns_onload(){ 
 
	// Clean the div of rdnslist 
	$('#rdnslist').html(""); 
	$("#no_rdns").hide(); 
	 
	$("#rdns_ip").on("select2:close", function(event){ 
		ele = $("#select2-rdns_ip-results") 
		.parent(".select2-results") 
		.prev(".select2-search") 
		.find(".select2-search__field"); 
		ele.unbind(); 
		event.stopImmediatePropagation(); 
	}); 
 
 
	 
	$('#rdns_ip').select2({ 
		width:"100%", 
		ajax: { 
			type: "POST", 
			dataType: 'json', 
			delay: 250, 
			url: "index.php?api=json&act=rdns&search_rdns=1", 
			data: function (params) { 
				return { 
					search: params.term 
				}; 
			}, 
			processResults: function (data) { 
				return { 
					results: $.map(data['allowed_ip'], function (obj) { 
						 
						let vv = [], opt = []; 
						 
						if (obj['ipv6'] !== '' && obj['ipr_netmask'] !== '') { 
							for (let y in obj['ipr_ips']) { 
								vv.push(obj['ipr_ips'][y]); 
								opt.push(obj['ipr_ips'][y] + ' (' + obj["hostname"] + ')'); 
							} 
						} else { 
							vv.push(obj['ip']); 
							opt.push(obj['ip'] + ' (' + obj["hostname"] + ')'); 
						} 
			 
						return vv.map((ip, index) => { 
							return { id: ip, text: opt[index] }; 
						}); 
					}).flat() // Flattening the array of arrays 
				}; 
			}, 
		}, 
	}); 
	 
 
	// Show the languages 
	var txt = []; 
	for(x in N["allowed_ip"]){ 
 
		$v = N["allowed_ip"][x]; 
		if($v['ipv6'] != '' && $v['ipr_netmask'] != ''){ 
			txt.push('<optgroup label="'+ x +'">'); 
				for(y in $v['ipr_ips']){ 
					$vv = $v['ipr_ips'][y]; 
					txt.push('<option value="'+ $vv +'" >'+ $vv +' ('+$v['hostname']+')</option>'); 
				} 
				txt.push('</optgroup>'); 
		}else{ 
			txt.push('<option value="'+ x +'" >'+ x +' ('+$v['hostname']+')</option>'); 
		} 
	} 
 
	$("#rdns_ip").html(txt.join('')); 
 
	if(N["rdns_records"] == null){ 
		$("#no_rdns").show(); 
		$('#records-rdns .pagination-top, #records-rdns .pagination-bottom').hide(); 
		return false; 
	} 
 
	var cols = new Object(); 
	cols["id"] = {"l" : 'ID', "width": '30px'}; 
	cols["ip"] = {"l" : 'IP Address'}; 
	cols["name"] = {"l" : 'Name'}; 
	cols["content"] = {"l" : 'Domain'}; 
	cols["delete"] = {"l" : ''}; 
 
	pageNum = getParameterByName('page', 1); 
	pageNum = empty(pageNum) ? 1 : pageNum; 
 
	// Prepare the list 
	let inc_counter = ((pageNum - 1) * 50) + 1; 
	for(x in N["rdns_records"]){ 
		$v = N["rdns_records"][x]; 
		N["rdns_records"][x]["delete"] = '<a href="javascript:delrdns(\''+x+'\')" ><i class="far fa-trash-alt delete fa-1x"></i></a>'; 
		if(x.includes('id')){ 
			N["rdns_records"][x]["delete"] = 'NA'; 
		} 
		N["rdns_records"][x]['id'] = inc_counter++; 
	} 
 
	pageLinks("records-rdns", 'act=rdns', N['page']); 
 
	// Form the TABLE 
	table({'id' : 'rdnslist', 'tid' : 'rdnslist_table', "width" : '100%'}, cols, N["rdns_records"]); 
}; 
 
// Delete rDNS 
function delrdns(id){ 
	modalConfirm(function(confirm){ 
		if(confirm){ 
			pageNum = getParameterByName('page', 1); 
			call('index.php?api=json&'+'act=rdns&delete='+id+'&page='+pageNum); 
		}else{ 
			return false; 
		} 
	},"Do you want to delete this rDNS record?"); 
}; 
 
// rDNS Wizard 
function rdns_onshow(){ 
	// Blank out the domain field 
	$('#rdns_domain').html(""); 
}; 
 
// PDNS Wizard 
function pdns_onload(){ 
	// Blank out the domain field 
	$('#pdnslist').html(""); 
	$("#no_pdns").hide(); 
 
	// Select DNS Server for Zone entries 
	let deafult_pdns_id = N["default_pdns_id"]; 
	var txt = []; 
	for(x in N["user_pdns_servers"]){ 
		$v = N["user_pdns_servers"][x]; 
		txt.push('<option value="'+x+'" >'+ $v['name'] + (deafult_pdns_id == x ? ' (DNS Plan)' : '')+'</option>'); 
	} 
	$("#user_pdns_servers").html(txt.join('')); 
	 
	if(empty(N["domains"])){ 
		$("#no_pdns").show(); 
		return false; 
	} 
 
	var cols = new Object(); 
	cols["id"] = {"l" : 'ID', "width": '30px'}; 
	cols["pdns_server"] = {"l" : 'PDNS Server'}; 
	cols["name"] = {"l" : 'Domain'}; 
	cols["manage"] = {"l" : 'Manage', "width": '30px'}; 
 
	// Prepare the list 
	let inc_counter = 1; 
	for(x in N["domains"]){ 
		$v = N["domains"][x]; 
		N["domains"][x]["manage"] = '<a href="javascript:loadpage(\'act=managezone&domainid='+x+'\')" ><i class="fas fa-cog fa-1x mr-3"></i></a><a href="javascript:delpdns(\''+x+'\')" ><i class="far fa-trash-alt delete fa-1x"></i></a>'; 
		N["domains"][x]['id'] = inc_counter++; 
	} 
 
	// Form the TABLE 
	table({'id' : 'pdnslist', 'tid' : 'pdnslist_table'}, cols, N["domains"]); 
 
}; 
 
function delpdns(id){ 
	call('index.php?api=json&act=pdns&del='+id); 
}; 
 
function pdns_onshow(){ 
	$('#zone_name').html(""); 
}; 
 
function updatezonedetails(){ 
	var zone = $("#zone_name").val(); 
	$("#primary_nameserver").val('ns1.' + zone); 
	$("#hostmaster_email").val('admin@' + zone); 
}; 
 
// Manage Zone Wizard 
function managezone_onload(){ 
 
	$("#no_records").hide(); 
	// Blank out the domain field 
	$('#managezonelist').html(""); 
 
	$('#domain_name').html(N['domains'][N['domainid']]['name']); 
 
	// Show the languages 
	var txt = []; 
	for(x in N["manage_type"]){ 
		txt.push('<option value="'+ N["manage_type"][x] +'">'+ N["manage_type"][x] +'</option>'); 
	} 
 
	$("#type").html(txt.join('')); 
 
	var cols = new Object(); 
	cols["name"] = {"l" : 'Host'}; 
	cols["type"] = {"l" : 'Type'}; 
	cols["content"] = {"l" : 'Points to / TXT Value'}; 
	cols["prio"] = {"l" : 'Priority'}; 
	cols["ttl"] = {"l" : 'TTL'}; 
	cols["manage"] = {"l" : '', "width": '30px'}; 
	cols["delete"] = {"l" : '', "width": '30px'}; 
 
	if(empty(N["records"])){ 
		$("#no_records").show(); 
		return false; 
	} 
 
	// Prepare the list 
	for(x in N["records"]){ 
		$v = N["records"][x]; 
		N["records"][x]["manage"] = '<a href="javascript:editpdns_zone('+x+')" ><i class="far fa-edit edit fa-1x"></i></a>'; 
		N["records"][x]["delete"] = '<a href="javascript:delpdns_zone(\''+N['get_domain_id']+'\','+x+')" ><i class="far fa-trash-alt delete fa-1x"></i></a>'; 
	} 
 
	// Form the TABLE 
	table({'id' : 'managezonelist', 'tid' : 'managezonelist_table', "width" : '100%'}, cols, N["records"]); 
 
}; 
 
// Set have something 
function managezone_onshow(){ 
	var tmp1 = windowHASH().split('&'); 
	var tmp = tmp1[1].split('='); 
	if(tmp[0] == 'domainid'){ 
		$('#domainid').val(tmp[1]); 
		$('#editdomainid').val(tmp[1]); 
	} 
}; 
 
// Show the Add record Form 
function show_addrecord_form(){ 
 
	// We must reset the form 
	$_("addrecordsform").reset(); 
 
	// Show the modal 
	$("#show_addrecord_form").modal("show"); 
}; 
 
// Show the Edit record Form 
function editpdns_zone(zone_id){ 
 
	// Set the id which is being edited 
	$('#id').val(zone_id); 
	var zone_name = get_zone_name(N['records'][zone_id]['name']); 
 
	// Now filll the data 
	$('#editdomain_name').html(N['domains'][N['domainid']]['name']); 
	$('#editname').val(zone_name); 
	$('#edittype').val(N['records'][zone_id]['type']); 
	$('#edittype_val').val(N['records'][zone_id]['type']); 
	$('#editcontent').val(N['records'][zone_id]['content']); 
	$('#editprio').val(N['records'][zone_id]['prio']); 
	$('#editttl').val(N['records'][zone_id]['ttl']); 
 
	// Show the modal 
	$("#show_editrecord_form").modal("show"); 
}; 
 
function delpdns_zone(domain_id, zone_id){ 
	call('index.php?api=json&act=managezone&domainid='+domain_id+'&delete='+zone_id); 
}; 
 
 
// Create wizard (Launch Instance) 
function create_onload(){ 
 
	$('#create_hostname input').slice(1).remove(); 
 
	var notice = ''; 
 
	if(N['resources']['num_vs'] < 1 && !empty(N['res_limit']['num_vs'])){ 
		notice = 'You have already created the maximum number of VMs allowed'; 
	} 
 
	if(!empty(N['error'])){ 
		if('insufficient_balance' in N['error']){ 
			notice = 'You have insufficient balance, <a href=\"#act=billing&tab=make_payment\">please add funds now</a>.'; 
		} 
	} 
 
	if(!empty(notice)){ 
		$('#createlist').html(""); 
		$('#createlist').html(`<div class="notice">${notice}</div>`); 
		return; 
	} 
 
	// reset the notice 
	$('#vm_count_notice').text(''); 
 
	$('.adv_border, #tr_ipv4, #tr_ip_int, #tr_ipv6subnet, #tr_ipv6, #adv_options').hide(); 
 
	var hidden_fields = new Array(); 
	hidden_fields = ['osid', 'plid']; 
 
	$.each(hidden_fields, function(k, v){ 
		$('#createform #'+v).val(''); 
	}); 
	 
	// Is it inhouse billing ? 
	if(!empty(N['inhouse_billing'])){ 
 
		$('#ihb_div').hide(); 
		 
		// Load the CSS 
		$('#bill_css').attr('href', $('#bill_css').attr('nhref')); 
		 
		// Enable inhouse billing create vps inputs 
		$('#ihb_div *').prop('disabled', false); 
		 
		// Disable old create create 
		$('.old_create *').prop('disabled', true); 
		$('.old_create').hide(); 
		$('.create_common').hide(); 
	 
	// Cloud User old style 
	}else{ 
		 
		// Disable inhouse billing 
		$('#ihb_div *').prop('disabled', true); 
		$('#ihb_div').hide(); 
		 
	} 
	 
	//$('#advoptions_toggle').hide(); 
	var unlimited_lang = '<i class=\'fas fa-infinity\'></i>'; 
 
	// Show the user list 
	var txt = []; 
	txt.push('<option value="0">Add User</option>'); 
	for(x in N['users']){ 
		txt.push('<option value="'+ x +'" '+(x == N['uid'] ? 'selected="selected"' : '')+'>'+ N["users"][x]['email'] +'</option>'); 
	} 
 
	$("#li_uid").html(txt.join('')); 
	 
	// Load the regions (server groups) 
	var txt = []; 
	txt.push('<option value="-1">Select</option>'); 
	for(x in N['servergroups']){ 
		if(!empty(N["servergroups"][x]['virts'])){ 
			txt.push('<option value="'+ x +'" id="sgid_'+ x +'">'+ N["servergroups"][x]['sg_reseller_name'] +'</option>'); 
		} 
	} 
	$("#sgid").html(txt.join('')); 
 
	// Load the virtualizations 
	var txt = []; 
	txt.push('<option value="0">None</option>'); 
	for(x in N['virts']){ 
		 
		txt.push('<option value="'+ [x] +'" id="virt_'+ [x] +'">'+ N['virt_lang'][x] +'</option>'); 
	} 
 
	$("#virt").html(txt.join('')); 
	 
	// Load isos 
	var txt = []; 
	txt.push('<option value="0">None</option>'); 
	if('isos' in N){ 
		var iso_list = '<option value="0">None</option>'; 
		var options_eu_iso = options_iso = ''; 
		for(x in N['isos']){ 
			if(!empty(N['isos'][x]['isuseriso'])){ 
				options_eu_iso += '<option value="'+ x +'">'+ N['isos'][x]['name'] +'</option>'; 
			}else{ 
				options_iso += '<option value="'+ x +'">'+ N['isos'][x]['name'] +'</option>'; 
			} 
		} 
		if(!empty(options_iso)){ 
			iso_list += '<optgroup label="Admin ISOs">' + options_iso + '</optgroup>'; 
		} 
		if(!empty(options_eu_iso)){ 
			iso_list += '<optgroup label="User ISOs">' + options_eu_iso + '</optgroup>'; 
		} 
	} 
 
	$("#iso").html(iso_list); 
 
	if('num_ipv4' in N['resources']){ 
		$('#num_ipv4').html(N['resources']['num_ipv4']); 
		$('#tr_ipv4').show(); 
	} 
 
	if('num_ip_int' in N['resources'] && N['resources']['num_ip_int'] > 0){ 
		$('#num_ip_int').html(N['resources']['num_ip_int']); 
		$('#tr_ip_int').show(); 
	} 
 
	if('num_ipv6_subnet' in N['resources']){ 
		$('#num_ipv6_subnet').html(N['resources']['num_ipv6_subnet']); 
		$('#tr_ipv6_subnet').show(); 
	} 
 
	if('num_ipv6' in N['resources']){ 
		$('#num_ipv6').html(N['resources']['num_ipv6']); 
		$('#tr_ipv6').show(); 
	} 
 
	$('#res_space').html(N['resources']['space'] + ' GB'); 
	$('#res_ram').html(N['resources']['ram'] + ' MB'); 
	$('#res_burst').html(N['resources']['burst'] + ' MB'); 
	$('#res_swap').html(N['resources']['burst'] + ' MB'); 
 
	var bandwith_lang = (N['res_limit']['bandwidth'] == 0) ? unlimited_lang : N['resources']['bandwidth'] + ' GB'; 
	$('#res_bandwidth').html(bandwith_lang); 
 
	var avail_cores = (N['res_limit']['num_cores'] == 0) ? unlimited_lang : N['resources']['num_cores']; 
	$('#cpu_cores_title').tooltip({ title:'Recommended Value : '+N['resources']['cores']}); 
	$('#max_cores').html(N['resources']['cores']); 
	$('#max_space').html(N['resources']['space_per_vm']); 
	$('#avail_cores').html(avail_cores); 
 
	// For advance options 
	if(N['resources']['network_speed'] > -1){ 
 
		if(empty(N['inhouse_billing'])){ 
			$("#adv_options").show(); 
		} 
 
		$('#li_network_speed_div').show(); 
		kbit_to_mbit = 0.0078125; 
 
		// Load speeds 
		var last = 0; 
		var order = []; 
		var network_speed_values = Array(128, 256, 384, 512, 640, 768, 896, 1024, 1152, 1280, 1920, 2560, 3849, 5120, 6400, 7680, 8960, 10240, 11520, 12800, 128000, 1280000); 
		var network_speed_values_mbit = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000, 10000); 
		var kbit_to_mbit = 0.0078125; 
 
		for(x in network_speed_values){ 
			order.push(parseFloat(network_speed_values[x])); 
		} 
 
		order.sort(function(a,b){return a-b}); 
		var txt = []; 
		txt.push('<option value="0" selected="selected">No Restriction</option>'); 
 
		if(empty(N['resources']['network_speed'])){ 
			for(x in order){ 
				txt.push('<option value="'+ order[x] +'">'+ order[x] +'	kb/s ('+ network_speed_values_mbit[x] +' mbit)</option>'); 
			} 
		}else{ 
			for(x in order){ 
				last = order[x]; 
				if(order[x] < N['resources']['network_speed'] && !isNaN(order[x])){ 
					txt.push('<option value="'+ order[x] +'">'+ order[x] +'	kb/s ('+ network_speed_values_mbit[x] +'mbit)</option>'); 
				} 
			} 
 
			if(N['resources']['network_speed'] < last){ 
				txt.push('<option value="'+ N['resources']['network_speed'] +'">'+ N['resources']['network_speed'] +' kb/s ('+ (N['resources']['network_speed'] * kbit_to_mbit) + ' mbit)</option>'); 
			} 
		} 
 
		$("#network_speed2").html(txt.join('')); 
 
		// Load the upload speed 
		var last = 0; 
		var txt = []; 
		txt.push('<option value="0" selected="selected">No Restriction</option>'); 
		 
		var tmp_up_lim = N['resources']['upload_speed']; 
		if(tmp_up_lim == -1){ 
			tmp_up_lim = N['resources']['network_speed']; 
		} 
		 
		if(tmp_up_lim == 0){ 
			for(x in order){ 
				txt.push('<option value="'+ order[x] +'">'+ order[x] +'	kb/s ('+ network_speed_values_mbit[x] +' mbit)</option>'); 
			} 
		}else{ 
			for(x in order){ 
				last = order[x]; 
				if(order[x] < tmp_up_lim && !isNaN(order[x])){ 
					txt.push('<option value="'+ order[x] +'">'+ order[x] +'	kb/s ('+ network_speed_values_mbit[x] +'mbit)</option>'); 
				} 
			} 
 
			if(tmp_up_lim < last){ 
				txt.push('<option value="'+ tmp_up_lim +'">'+ tmp_up_lim +' kb/s ('+ (tmp_up_lim * kbit_to_mbit) + ' mbit)</option>'); 
			} 
		} 
		$("#upload_speed2").html(txt.join('')); 
 
	} 
 
	$('#vm_count_plus').unbind().click(function(){ 
 
		// get the count from input 
		var count = $('#vm_count').val(); 
		$('#vm_count_notice').text(''); 
 
		// max limit is 10. so if its greater than 10 then return. 
		if(count >= 10){ 
			$('#vm_count_notice').text('Maximum limit is 10'); 
			return false; 
		} 
		 
		// increase the count 
		count++; 
 
		// update the count on input 
		$('#vm_count').val(count); 
 
		// clone the hostname field 
		var ele = $('#hostname-1').clone(true); 
 
		// change the id 
		ele = ele.clone().prop('id', 'hostname-'+count); 
 
		// change the value 
		var value = $(ele).val(); 
		value = value+'-'+count; 
		ele = ele.prop('value', value); 
		ele.addClass('add_host'); 
		// add the new field 
		$('#hostname-'+(count - 1)).after(ele); 
 
	}); 
 
	$('#vm_count_minus').unbind().click(function(){ 
 
		// get the count from input 
		var count = $('#vm_count').val(); 
		$('#vm_count_notice').text(''); 
 
		// count should not be less than 1. 
		if(count <= 1){ 
			$('#vm_count_notice').text('Count can not be less than 1'); 
			return false; 
		} 
		 
		// remove the field 
		$('#hostname-'+count).remove(); 
 
		// decrease the count 
		count--; 
 
		// update the count on input 
		$('#vm_count').val(count); 
 
	}); 
 
 
	$('#vm_count').change(function(){ 
 
		// get the count from input 
		var count = $('#vm_count').val(); 
 
		$('#vm_count_notice').text(''); 
 
		// min is 1 and max is 10 
		if(count > 10){ 
			$('#vm_count_notice').text('Maximum limit is 10'); 
			return false; 
		} 
 
		if(count < 1){ 
			$('#vm_count_notice').text('Count can not be less than 1'); 
			return false; 
		} 
 
		// remove all the fields except the first. 
		$('#create_hostname input').slice(1).remove(); 
 
		// add the fields according to the count 
		for (let index = 1; index < count; index++) { 
 
			var ele = $('#hostname-1').clone(true); 
			ele = ele.clone().prop('id', 'hostname-'+(index + 1)); 
			var value = $(ele).val(); 
			value = value+'-'+(index+1); 
			ele = ele.prop('value', value); 
			$('#hostname-'+index).after(ele); 
 
		} 
 
	}); 
 
	if(!empty(N["ssh_keys"])){ 
		let html = `<select name="existing_key[]" class="custom-select virt-select" data-placeholder="Select SSH keys" multiple>`; 
		$.each(N["ssh_keys"], function(k, v){ 
			html += `<option value="`+v["value"]+`">`+v["name"]+`</option>`; 
		}) 
		html += `</select>` 
		$("#existing_keys_div").html(html); 
		$(".virt-select").select2({width:"100%"}); 
	}else{ 
		$("#existing_keys_div").html(`<div class="col-sm-12 p-0">No SSH keys found!</div>`); 
	} 
 
	handle_ssh_settings(); 
	 
}; 
 
let add_ssh_event = 0; 
function handle_ssh_settings(){ 
	$(".ssh_options").prop("checked", false); 
	$("#add_ssh_keys_div").hide(); 
	$("#use_ssh_keys_div").hide(); 
	$("#new_key_loader").hide(); 
	 
	$(".ssh_options").unbind().on("change", function(){ 
		$("#add_ssh_keys_div").hide(); 
		$("#use_ssh_keys_div").hide(); 
		$("#download_private").hide(); 
		$("#new_key_loader").hide(); 
		$("#sshkey, #private_key").val(""); 
		$("#sshkey").removeAttr("readonly"); 
		$("#private_key_link").attr("href", ""); 
 
		$("#"+$(this).attr("value")+"_div").show(); 
 
		if($(this).attr("value") == 'add_ssh_keys'){ 
			add_ssh_event = 1; 
		} 
 
		if($(this).attr("value") == "generate_keys"){ 
			$("#new_key_loader").show(); 
			$("#add_ssh_keys_div").show(); 
			add_ssh_event = 0 
			$.ajax({ 
				type: "POST", 
				url: "index.php?api=json&act=create&generate_keys=1&api=json", 
				dataType : "json", 
				success:function(data){ 
					if(!empty(data["new_keys"]) && empty(add_ssh_event)){ 
						$("#new_key_loader").hide(); 
						$("#download_private").show(); 
						$("#private_key_link").attr("href", "data:attachment/text," + encodeURI(data["new_keys"]["private_key"])) 
						$("#private_key_link").attr("download", "private_key") 
						$("#private_key_link")[0].click() 
						$("#sshkey").val(data["new_keys"]["public_key"]) 
						$("#private_key").val(data["new_keys"]["private_key"]) 
						$("#sshkey").attr("readonly", "readonly") 
					} 
				} 
			}); 
		} 
	}) 
}; 
 
function create_onshow(){ 
 
	var elementExists = document.getElementById('createform'); 
 
	if(elementExists == null){ 
		return; 
	} 
 
	$("#createform")[0].reset(); 
 
	is_only_one(); 
	 
	if(empty(N['disable_webuzo'])){ 
		$('#webuzo_show_tr').show(); 
		show_webuzo_box('webuzo'); 
	} 
	 
	if(!empty(N['inhouse_billing'])){ 
		return; 
	} 
	 
	checkvnc(); 
	li_adduser(); 
	fill_ostemplates(); 
 
	//	VNC pass lenght differs with virt type 
	generate_vnc_pass('vncpass1', $('#createform').find('#virt').val()); 
	 
	show_cpu_topology('#create'); 
	change_cpu_topology('#create'); 
	show_adv_options('#create', $('#createform').find('#virt').val()); 
 
}; 
 
function generate_vnc_pass(ele, virt){ 
	$_(ele).value = randstr(!empty(N['vncpasslen'][virt]) ? N['vncpasslen'][virt] : 8); 
} 
 
// Edit Instance wizard (Edit Instance) 
function editvm_onload(){ 
 
	var unlimited_lang = '<i class=\'fas fa-infinity\'></i>'; 
	 
	$('#ei_tr_ips').hide(); 
	$('#ei_tr_ips_int').hide(); 
	$('#ei_tr_ipv6subnet').hide(); 
	$('#ei_tr_ipv6').hide(); 
	$('#ei_vid').val(N['vps']['vpsid']); 
	$('#ei_virt').val(N['vps']['virt']); 
 
	// Show the user list 
	var txt = []; 
 
	for(x in N['users']){ 
		txt.push('<option value="'+ x +'" '+(N['vps']['uid'] == x ? 'selected="selected"' : '')+'>'+ N["users"][x]['email'] +'</option>'); 
	} 
	$("#ei_uid").html(txt.join('')); 
 
	// Load the regions (server groups) 
	var txt = []; 
	for(x in N['servergroups']){ 
		txt.push('<option value="'+ x +'" id="sgid_'+ x +'">'+ N["servergroups"][x]['sg_reseller_name'] +'</option>'); 
	} 
	$("#ei_sgid").html(txt.join('')); 
 
	var distro_img = N['vps']['distro'] == '' ? 'others' : N['vps']['distro']; 
	 
	$('#ei_os_name').html("<img src='themes/default/images/"+distro_img+".png'> "+N['vps']['os_name']); 
 
	if(!empty(N['vps']['os_name'].match(/windows/gi))){ 
		$("#ei_vm_admin_name").val('Administrator'); 
	}else{ 
		$("#ei_vm_admin_name").val('root'); 
	} 
 
	// Load isos 
	var txt = []; 
	txt.push('<option value="0">None</option>'); 
	if('isos' in N){ 
		for(x in N['isos']){ 
			txt.push('<option value="'+ x +'" '+(x == N['vps']['iso'] ? "selected=selected" : "")+' >'+ N['isos'][x]['name'] +'</option>'); 
		} 
	} 
 
	$("#ei_iso").html(txt.join('')); 
	$('#ei_hostname').val(N['vps']['hostname']); 
 
	$('#ei_ips').val(count(N['vps']['ips'])); 
	$('#ei_num_ipv4').html(N['resources']['num_ipv4']); 
 
	// $('#ei_total_iops_sec').val(N['vps']['total_iops_sec']); 
	// $('#ei_read_bytes_sec').val(N['vps']['read_bytes_sec']); 
	// $('#ei_write_bytes_sec').val(N['vps']['write_bytes_sec']); 
	$('#ei_tr_ips').show(); 
 
	$('#ei_ipsint').val(count(N['vps']['ips_int'])); 
	$('#ei_num_ipsint').html(N['resources']['num_ip_int']); 
	$('#ei_tr_ipsint').show(); 
 
	// $('#ei_ipsint').attr("disabled", "disabled"); 
 
	$('#ei_ipv6subnet').val(count(N['vps']['ips6_subnet'])); 
	$('#ei_num_ipv6subnet').html(N['resources']['num_ipv6_subnet']); 
	$('#ei_tr_ipv6subnet').show(); 
 
 
	$('#ei_ipv6').val(count(N['vps']['ips6'])); 
	$('#ei_num_ipv6').html(N['resources']['num_ipv6']); 
	$('#ei_tr_ipv6').show(); 
 
	$('#ei_space').val(N['vps']['space']); 
	$('#ei_res_space').html(N['resources']['space'] + ' GB'); 
 
	$('#ei_ram').val(N['vps']['ram']); 
	$('#ei_res_ram').html(N['resources']['ram'] + ' MB'); 
 
	$('#ei_burst').val(N['vps']['burst']); 
	$('#ei_res_burst').html(N['resources']['burst'] + ' MB'); 
 
	$('#ei_swap').val(N['vps']['swap']); 
	$('#ei_res_swap').html(N['resources']['burst'] + ' MB'); 
	 
	if(!empty(N['vps']['vnc'])){ 
		$('#ei_vnc').attr("checked", true); 
	} 
	 
	var bandwidth_lang = (N['res_limit']['bandwidth'] == 0 ? unlimited_lang : N['resources']['bandwidth']	+ ' GB'); 
 
	$('#ei_bandwidth').val(N['vps']['bandwidth']); 
	$('#ei_res_bandwidth').html(bandwidth_lang); 
 
	var avail_cores = (N['res_limit']['num_cores'] == 0 ? unlimited_lang : N['resources']['num_cores']); 
	$('#ei_avail_cores').html(avail_cores); 
	$('#ei_cores').val(N['vps']['cores']); 
 
	$('#ei_recom_core').tooltip({ title:'Recommended Value : '+N['resources']['cores']}); 
	$('#ei_max_cores').html(N['resources']['cores']); 
	$('#ei_max_space').html(N['resources']['space_per_vm']); 
	if(!empty(N['resources']['disable_change_hostname'])){ 
		$('#ei_hostname').prop("readonly",true); 
 
	} 
	if(!empty(N['resources']['disable_change_password'])){ 
		$('#ei_rootpass').prop("readonly",true); 
		$("#gen_rootpass").removeAttr('onclick'); 
	} 
 
	// For advance options 
	if(N['resources']['network_speed'] > -1){ 
		 
		if(N['vps']['network_speed'] >= 0){ 
			$('#ei_network_speed').val(N['vps']['network_speed']); 
		} 
		 
		$('#ei_network_speed_div, #ei_advoptions_toggle').show(); 
		kbit_to_mbit = 0.0078125; 
 
		// Load speeds 
		var last = 0; 
		var order = []; 
		var network_speed_values = Array(128, 256, 384, 512, 640, 768, 896, 1024, 1152, 1280, 1920, 2560, 3849, 5120, 6400, 7680, 8960, 10240, 11520, 12800, 128000, 1280000); 
		var network_speed_values_mbit = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000, 10000); 
		var kbit_to_mbit = 0.0078125; 
 
		for(x in network_speed_values){ 
			order.push(parseFloat(network_speed_values[x])); 
		} 
 
		order.sort(function(a,b){return a-b}); 
		var txt = []; 
		txt.push('<option value="0" selected="selected">No Restriction</option>'); 
		if(N['resources']['network_speed'] == 0){ 
			for(x in order){ 
				txt.push('<option value="'+ order[x] +'">'+ order[x] +'	kb/s ('+ network_speed_values_mbit[x] +' mbit)</option>'); 
			} 
		}else{ 
			for(x in order){ 
				last = order[x]; 
				if(order[x] < N['resources']['network_speed'] && !isNaN(order[x])){ 
					txt.push('<option value="'+ order[x] +'">'+ order[x] +'	kb/s ('+ network_speed_values_mbit[x] +'mbit)</option>'); 
				} 
			} 
 
			if(N['resources']['network_speed'] < last){ 
				txt.push('<option value="'+ N['resources']['network_speed'] +'">'+ N['resources']['network_speed'] +' kb/s ('+ (N['resources']['network_speed'] * kbit_to_mbit) + ' mbit)</option>'); 
			} 
		} 
 
		$("#ei_network_speed2").html(txt.join('')); 
 
		// Load the upload speed 
		var last = 0; 
		var txt = []; 
		txt.push('<option value="0" selected="selected">No Restriction</option>'); 
		var tmp_up_lim = N['resources']['upload_speed']; 
		if(tmp_up_lim == -1){ 
			tmp_up_lim = N['resources']['network_speed']; 
		} 
		 
		if(N['vps']['upload_speed'] >= -1){ 
			$('#ei_upload_speed').val(N['vps']['upload_speed']); 
		} 
		 
		if(tmp_up_lim == 0){ 
			for(x in order){ 
				txt.push('<option value="'+ order[x] +'">'+ order[x] +'	kb/s ('+ network_speed_values_mbit[x] +' mbit)</option>'); 
			} 
		}else{ 
			for(x in order){ 
				last = order[x]; 
				if(order[x] < tmp_up_lim && !isNaN(order[x])){ 
					txt.push('<option value="'+ order[x] +'">'+ order[x] +'	kb/s ('+ network_speed_values_mbit[x] +'mbit)</option>'); 
				} 
			} 
 
			if(tmp_up_lim < last){ 
				txt.push('<option value="'+ tmp_up_lim +'">'+ tmp_up_lim +' kb/s ('+ (tmp_up_lim * kbit_to_mbit) + ' mbit)</option>'); 
			} 
		} 
		$("#ei_upload_speed2").html(txt.join('')); 
 
	} 
	 
	$('#ei_topology_sockets').val(N['vps']['topology_sockets']); 
	$('#ei_topology_cores').val(N['vps']['topology_cores']); 
	$('#ei_topology_threads').val(N['vps']['topology_threads']); 
	 
	if(empty(N['vps']['topology_sockets'])) { 
		$('#ei_enable_cpu_topology').removeAttr('checked'); 
	} else { 
		$('#ei_enable_cpu_topology').prop('checked', true); 
	} 
	 
	if(!empty(N['inhouse_billing'])){ 
		 
		// Show the existing and possible plans		 
		var sel_plans = '<option value="">None</option>'; 
		for(y in N['pricing']){ 
			var x = N['pricing'][y]['plid']; 
			var a = N['pricing'][y]; 
			sel_plans = sel_plans+'<option value="'+x+'" '+(N['vps']['plid'] == x ? 'selected' : '')+'>'+N['plans'][x]['plan_name']+' ('+N['billing_symbol']+a['h_rate']+'/Hour | '+N['billing_symbol']+a['m_rate']+'/Month)</option>'; 
		} 
		 
		$('#ei_plid').html(sel_plans); 
		$('#ei_tr_plid').show(); 
		 
		$('.no-bill').hide(); 
		$('.bill-disable').attr('disabled', 'disabled'); 
		for(x in N['resource_pricing']){ 
			 
			$('#ei_'+x).removeAttr('disabled'); 
			 
			var def_val = ('in_plan' in N && x in N['in_plan']) ? 'Included in Plan : '+N['in_plan'][x] : '' 
			$('#ei_tr_'+x+' .bill-rates').html('<p class="mb-0">'+def_val+'</p><p>Additional Pricing : <b>'+N['billing_symbol']+N['resource_pricing'][x]['h_rate']+'</b>'+(x == 'bandwidth' ? '' : '/Hour OR <b>'+N['billing_symbol']+N['resource_pricing'][x]['m_rate']+'</b>'+'/Month</p>')); 
		} 
		 
		$("#ei_load_balancer").html(''); 
		if("load_balancer" in N && !empty(N['load_balancer']) && empty(N['vps']['load_balancer'])){ 
			 
			lb_html = ` 
				<div class="col-sm-12"> 
					<label>Select Load Balancer&nbsp;<a class="info" data-placement="right" tooltip="Load Balancer is not supported for windows VPS"><i class="fas text-primary fa-info-circle"></i></a></label><br> 
					<select name="load_balancer" class="custom-select"> 
						<option value="0">None</option>`; 
					 
			$.each(N['load_balancer'], function(k, lb){ 
				lb_html += '<option value="'+lb['vps_uuid']+'">'+lb['vpsid']+' - '+lb['hostname']+'</option>'; 
			}); 
			lb_html += `</select> 
			</div>`; 
			$("#ei_load_balancer").html(lb_html); 
		} 
	} 
 
	//show bios option if the virt is kvm 
	if(N['vps']['virt'] == 'kvm') { 
		$('#ei_tr_bios').show(); 
		let opt = ''; 
		opt += '<option value="seabios" ' + ((N['vps']['data']['bios'] == 'seabios') ? 'selected' : '') + '>SeaBios (Default)</option>'; 
		opt += '<option value="uefi" ' + ((N['vps']['data']['bios'] == 'uefi') ? 'selected' : '') + '>UEFI (OVMF)</option>'; 
		$("#ei_bios").html(opt); 
 
	}else{ 
		$('#ei_tr_bios').hide(); 
	} 
 
}; 
 
 
function editvm_onshow(){ 
 
	is_only_one('ei_'); 
	checkvnc('ei_'); 
	fill_ostemplates('ei_'); 
	$('#ei_rootpass').val(""); 
	 
	if(empty(N['vps']['vnc'])){ 
		//	VNC pass lenght differs with virt type 
		generate_vnc_pass('ei_vncpass', N['vps']['virt']); 
	} 
 
	if($("#ei_virt").val() == 'kvm' && N['resources']['cloud_allow_virtio'] == 1){ 
		if(!empty(N['vps']['virtio'])){ 
			$("#ei_virtio_check").prop('checked', true); 
		}else{ 
			$("#ei_virtio_check").prop('checked', false); 
		} 
 
		$("#ei_virtio").show(); 
	}else{ 
		$("#ei_virtio").hide(); 
	} 
	 
	var virt = N['vps']['virt']; 
	 
	if(!empty(N['vps']['hvm'])) { 
		virt += 'hvm'; 
	} 
	 
	show_cpu_topology('#editvm', virt); 
	change_cpu_topology('#editvm'); 
	show_adv_options('#editvm', virt); 
}; 
 
// Cloud Resource onload 
function cloudres_onload(){ 
	 
	if(isError()){ 
		error(N["error"]); 
		return -1; 
	} 
 
	$('#lim_num_vs').html(res_lim(N['res_limit']['num_vs'])); 
	$('#used_num_vs').html(res_used(N['res_limit']['num_vs'] - N['resources']['num_vs'])); 
	$('#ava_num_vs').html(res_ava(N['resources']['num_vs'], N['res_limit']['num_vs'])); 
 
	$('#lim_num_users').html(res_lim(N['res_limit']['num_users'])); 
	$('#used_num_users').html(res_used(N['res_limit']['num_users'] - N['resources']['num_users'])); 
	$('#ava_num_users').html(res_ava(N['resources']['num_users'], N['res_limit']['num_users'])); 
 
	$('#lim_space').html(res_lim(N['res_limit']['space'])); 
	$('#used_space').html(res_used(N['res_limit']['space'] - N['resources']['space'])); 
	$('#ava_space').html(res_ava(N['resources']['space'], N['res_limit']['space'])); 
 
	$('#lim_ram').html(res_lim(N['res_limit']['ram'])); 
	$('#used_ram').html(res_used(N['res_limit']['ram'] - N['resources']['ram'])); 
	$('#ava_ram').html(res_ava(N['resources']['ram'], N['res_limit']['ram'])); 
 
	$('#lim_bandwidth').html(res_lim(N['res_limit']['bandwidth'])); 
	$('#used_bandwidth').html(res_used(N['res_limit']['bandwidth'] - N['resources']['bandwidth'])); 
	$('#ava_bandwidth').html(res_ava(N['resources']['bandwidth'], N['res_limit']['bandwidth'])); 
 
	$('#cr_num_ipv4').html(N['res_limit']['num_ipv4']); 
	$('#used_num_ipv4').html(res_used(N['res_limit']['num_ipv4'] - N['resources']['num_ipv4'])); 
	$('#res_num_ipv4').html(N['resources']['num_ipv4']); 
 
	$('#cr_num_ip_int').html(N['res_limit']['num_ip_int']); 
	$('#used_num_ip_int').html(res_used(N['res_limit']['num_ip_int'] - N['resources']['num_ip_int'])); 
	$('#res_num_ip_int').html(N['resources']['num_ip_int']); 
 
	$('#cr_num_ipv6_subnet').html(N['res_limit']['num_ipv6_subnet']); 
	$('#used_num_ipv6_subnet').html(res_used(N['res_limit']['num_ipv6_subnet'] - N['resources']['num_ipv6_subnet'])); 
	$('#res_num_ipv6_subnet').html(N['resources']['num_ipv6_subnet']); 
 
	$('#cr_num_ipv6').html(N['res_limit']['num_ipv6']); 
	$('#used_ipv6').html(res_used(N['res_limit']['num_ipv6'] - N['resources']['num_ipv6'])); 
	$('#cr_res_ipv6').html(N['resources']['num_ipv6']); 
 
	$('#lim_num_cores').html(res_lim(N['res_limit']['num_cores'])); 
	$('#usage_num_cores').html(N['usage']['num_cores']); 
	$('#ava_num_cores').html(res_ava(N['resources']['num_cores'], N['res_limit']['num_cores'])); 
 
	$('#lim_cores').html(res_lim(N['res_limit']['cores'])); 
	$('#lim_space_per_vm').html(res_lim(N['res_limit']['space_per_vm'])); 
 
}; 
 
function ctasks_onload(url){ 
 
	var th = ''; 
	var pre = ''; 
	var tmpsvs = getParameterByName("svs", 1); 
	var svs_url = '&random='+Math.random(); 
	var tab = ''; 
 
	if(!empty(tmpsvs)){ 
		svs_url = '&svs=' + N['vpsid']; 
		tab = '_tab' 
	} 
 
	$(".no_ctasks").hide(); 
	 
	if(!url){ 
		url = 'index.php?api=json&act=ctasks' + svs_url; 
	} 
	 
	if(N['user_type'] == 2){ 
		th = '<th>Server</th>'; 
		pre = 'c'; 
	} 
 
	var regex = new RegExp("[\?&]page=([^&#]*)"); 
	var results = regex.exec(url); 
	var pageNum = 0; 
	if(results != null){ 
		pageNum = decodeURIComponent(results[1].replace(/\+/g, " ")); 
	} 
 
	AJAX(url, function(data) { 
 
		if(empty(data['tasks'])){ 
			$(".no_ctasks").show(); 
			$("#ctasks_links").hide(); 
			return false; 
		} 
 
		pageLinks(pre+'tasks_links'+tab, url, data['page'], 'ctasks_onload'); 
 
		// Form the TABLE 
		var table = '<table id="'+pre+'tasks_table'+tab+'" border="0" cellspacing="1" cellpadding="8" class="table border table-hover tablesorter tasks_table table-fixed"><thead><tr><th>ACTID</th><th>VPSID</th>'+th+'<th>User</th><th>Started</th><th>Updated</th><th>Ended</th><th>Action</th><th>Status</th><th>Progress</th></thead><tbody>'; 
 
		// Prepare the list 
		for(x in data["tasks"]){ 
 
			$v = data["tasks"][x]; 
 
			if($v['progress_num'] == 100){ 
				$v['progress'] = '<i class="fas fa-1x fa-check-circle text-primary"></i>'; 
			}else if($v['status'] == -1){ 
				$v['progress'] = '<i class="fas fa-1x fa-times-circle stop"></i></i>'; 
			} 
 
			table += '<tr id="'+pre+'tasks_'+$v['actid']+'"><td>'+$v['actid']+'</td><td>'+$v["vpsid"]+'</td>'; 
			if(N['user_type'] == 2){ 
				$v["server_name"] = (typeof $v["serid"] != 'undefined' ? $v["server_name"]+' ('+$v["serid"]+')' : 'Unslaved Server'); 
				table += '<td>'+$v["server_name"]+'</td>'; 
			} 
 
			table += '<td>'+$v['email']+'</td><td id="start'+pre+'date_'+$v["actid"]+'">'+$v["started"]+'</td><td id="update'+pre+'date_'+$v["actid"]+'">'+$v["updated"]+'</td><td id="end'+pre+'date_'+$v["actid"]+'">'+$v["ended"]+'</td><td>'+$v['action']+'</td><td id="'+pre+'status_'+$v['actid']+'">'+$v['status_txt']+'</td><td id="'+pre+'progress_'+$v['actid']+'"><center><div style="text-align:center;" id="'+pre+'pbar'+$v['actid']+'">'+$v["progress"]+'</center><div style="display:none;" class="progress w-100 ctask_progress '+pre+'progressbar'+$v['actid']+'"><div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" id="'+pre+'progressbar'+$v['actid']+'"></div></div></td></tr>'; 
 
		} 
 
		table += '</tbody></table>'; 
	 
		if((N['user_type'] == 2 || act == 'ctasks') && empty(tmpsvs)){ 
			$('#ctasks_links').show(); 
			$('#ctaskslist').html(table); 
			 
		}else{ 
			$("#ctasks_links_tab").show(); 
			$('#vpstasks_div').html(table); 
		} 
		update_tasks(url, pre); 
	}); 
	 
}; 
 
function set_backup_servers_table(backup_servers) { 
	if(!$.isArray(backup_servers) || backup_servers.length == 0) { 
		$('#bslist').html('<div class="notice">You do not have any backup servers</div>'); 
		$('#backupservers .bottom-go-options').hide(); 
		return; 
	} 
	 
	$('#bslist').html(''); 
	$('#backupservers .bottom-go-options').show(); 
	 
	var cols = new Object(); 
	cols["bserid"] = {'l' : 'ID', 'width' : '30'}; 
	cols["name"] = {'l' : 'Name', 'width' : '120'}; 
	cols["type"] = {'l' : 'Type', 'width' : '30', 'centered' : true}; 
	cols["hostname"] = {'l' : 'Hostname', 'width' : '120'}; 
	cols["username"] = {'l' : 'Username', 'width' : '120'}; 
	cols["port"] = {'l' : 'Port', "width" : '50', 'centered' : true}; 
	cols["dir"] = {'l' : 'Directory', "width" : '50', 'centered' : true}; 
	cols["manage"] = {'l' : 'Manage', "width" : '20', 'centered' : true}; 
	cols["select_all"] = {'l' : '<input type="checkbox" name="select_all" id="select_all" class="select_all" onchange="checkbox_select_all(this);">', "width" : '1%', 'centered' : true}; 
	 
	var data = []; 
	 
	for(var i=0; i<backup_servers.length; i++) { 
		data[i] = new Array(); 
		data[i]['bserid'] = backup_servers[i]['bserid']; 
		data[i]['name'] = backup_servers[i]['name']; 
		data[i]['type'] = backup_servers[i]['type']; 
		data[i]['hostname'] = backup_servers[i]['hostname']; 
		data[i]['username'] = backup_servers[i]['username']; 
		data[i]['port'] = backup_servers[i]['port']; 
		data[i]['dir'] = backup_servers[i]['dir']; 
		data[i]['manage'] = '<a href="#" title="Edit" onclick="loadpage(\'act=editbackupserver&bserid=' + backup_servers[i]['bserid'] + '\'); return false;"><i class="far fa-edit edit fa-1x"></i></a>&nbsp;&nbsp;&nbsp;<a href="#" title="Delete" onclick="delete_backup_server(' + data[i]['bserid'] + '); return false;"><i class="far fa-trash-alt delete fa-1x" aria-hidden="true"></i></a>'; 
		data[i]['select_all'] = '<input type="checkbox" class="ios" name="bs[]" value="' + backup_servers[i]['bserid'] + '" />'; 
	} 
	 
	table({'id' : 'bslist', 'tid' : 'bslist_list_table', 'width' : '100%'}, cols, data); 
} 
 
function backupservers_onload() { 
	// Redirect if backup servers not enabled 
	if(!empty(N['disable_backup_cp'])) { 
		loadpage('act=listvs'); 
		return; 
	} 
	 
	set_backup_servers_table(N['backup_servers']); 
}; 
 
function addbackupserver_onload() { 
	// Redirect if backup servers not enabled 
	if(!empty(N['disable_backup_cp'])) { 
		loadpage('act=listvs'); 
		return; 
	} 
	 
	$('#addbackupserverform')[0].reset(); 
} 
 
function editbackupserver_onload() { 
	// Redirect if backup servers not enabled 
	if(!empty(N['disable_backup_cp'])) { 
		loadpage('act=listvs'); 
		return; 
	} 
	 
	// Check if allowed to edit 
	if(empty(N['backup_server'])) { 
		loadpage('act=backupservers'); 
		return; 
	} 
	 
	$('#editbackupserverform')[0].reset(); 
	 
	$('#editbackupserver #bs_bserid').val(N['backup_server']['bserid']); 
	$('#editbackupserver #bs_name').val(N['backup_server']['name']); 
	$('#editbackupserver #bs_hostname').val(N['backup_server']['hostname']); 
	$('#editbackupserver #bs_type').val(N['backup_server']['type']); 
	$('#editbackupserver #bs_username').val(N['backup_server']['username']); 
	$('#editbackupserver #bs_port').val(N['backup_server']['port']); 
	$('#editbackupserver #bs_dir').val(N['backup_server']['dir']); 
} 
 
function bs_go_click() { 
	var action = $("#bs_multi_options").val(); 
	 
	if(action == 0){ 
		error_alert("No operation selected"); 
		return false; 
	} else if(action == 1) { 
		delete_backup_server(); 
	} 
} 
 
function delete_backup_server(bserid) { 
	// old confirm 
	if(!confirm('Are you sure you want to delete this backup server ?')) { 
		return; 
	} 
	 
	var bserids = new Array(); 
	 
	if(bserid) { 
		bserids.push(bserid); 
	} else { 
		$('#backupservers .ios:checked').each(function() { 
			var val = $(this).val(); 
			bserids.push(val); 
		}); 
	} 
	 
	$('#bs_delete').val(bserids.join(',')); 
	 
	submitit('deletebackupserverform', 'deletebackupserverform_response'); 
} 
 
function deletebackupserverform_response(data) { 
	if(!empty(data['done'])) { 
		set_backup_servers_table(data['backup_servers']); 
	} 
} 
 
function set_ssh_keys_table(ssh_keys) { 
	if(empty(ssh_keys) || ssh_keys.length == 0) { 
		$('#sshkeylist').html('<div class="notice">You do not have any SSH Keys</div>'); 
		$('#sshkeys .bottom-go-options').hide(); 
		return; 
	} 
	 
	$('#sshkeylist').html(''); 
	$('#sshkeys .bottom-go-options').show(); 
	 
	var cols = new Object(); 
	cols["keyid"] = {'l' : 'ID', 'width' : '10%'}; 
	cols["uuid"] = {'l' : 'UUID', 'width' : '20%'}; 
	cols["name"] = {'l' : 'Name'}; 
	cols["manage"] = {'l' : 'Manage', "width" : '10%'}; 
	cols["select_all"] = {'l' : '<div class="custom-control custom-checkbox"><input type="checkbox" name="select_all" id="ssh_select_all" class="select_all custom-control-input" onchange="checkbox_select_all(this);"><label class="custom-control-label" for="ssh_select_all"></label></div>', "width" : '5%', "class" : "select-all-checkbox"}; 
	 
	var data = []; 
	 
	for(var i=0; i<ssh_keys.length; i++) { 
		data[i] = new Array(); 
		data[i]['keyid'] = ssh_keys[i]['keyid']; 
		data[i]['uuid'] = ssh_keys[i]['uuid']; 
		data[i]['name'] = ssh_keys[i]['name']; 
		data[i]['manage'] = '<a href="#" title="Edit" onclick="loadpage(\'act=editsshkey&keyid=' + ssh_keys[i]['keyid'] + '\'); return false;"><i class="far fa-edit fa-1x edit" title="Edit"></i></a>&nbsp;&nbsp;&nbsp;<a href="#" title="Delete" onclick="delete_ssh_key(' + ssh_keys[i]['keyid'] + '); return false;"><i class="far fa-1x fa-trash-alt delete" aria-hidden="true" title="Delete"></i></a>'; 
		data[i]['select_all'] = '<div class="custom-control custom-checkbox"><input type="checkbox" class="ios custom-control-input" name="sshkeys[]" id="ssh-checkbox'+ssh_keys[i]['keyid']+'" value="' + ssh_keys[i]['keyid'] + '" /><label class="custom-control-label" for="ssh-checkbox'+ssh_keys[i]['keyid']+'"></label></div>'; 
	} 
	 
	table({'id' : 'sshkeylist', 'tid' : 'sshkey_list_table'}, cols, data); 
} 
 
function sshkeys_onload() { 
	set_ssh_keys_table(N['ssh_keys']); 
} 
 
function addsshkey_onload() { 
	$('#addsshkeyform')[0].reset(); 
 
	$('.private_key_container').hide(); 
 
	$("#gen-sshkey").click(function(){ 
		Loading(1) 
		var key = {'generate' : 1}; 
		$.ajax({ 
			url: "index.php?api=json&act=addsshkey", 
			method : 'post', 
			data : key, 
			dataType : 'json', 
			success: function(result){ 
				Loading(0); 
				$("#addsshkey_value").val(result['sshkey']['result']['public_key']); 
				$('.private_key_container').show(); 
				$("#private_key").text(result['sshkey']['result']['private_key']); 
			} 
		}); 
	}); 
} 
 
function editsshkey_onload() { 
	// Check if allowed to edit 
	if(empty(N['ssh_key'])) { 
		loadpage('act=sshkeys'); 
		return; 
	} 
	 
	$('#editsshkeyform')[0].reset(); 
	 
	$('#editsshkeyform #sshkey_keyid').val(N['ssh_key']['keyid']); 
	$('#editsshkey_name').val(N['ssh_key']['name']); 
	$('#editsshkey_value').val(N['ssh_key']['value']); 
} 
 
function sshkey_go_click() { 
	var action = $("#sshkey_multi_options").val(); 
	 
	if(action == 0){ 
		error_alert("No operation selected"); 
		return false; 
	} else if(action == 1) { 
		delete_ssh_key(); 
	} 
} 
 
function delete_ssh_key(keyid) { 
 
	var keyids = new Array(); 
			 
	if(keyid) { 
		keyids.push(keyid); 
	} else { 
		$('#sshkeys .ios:checked').each(function() { 
			var val = $(this).val(); 
			keyids.push(val); 
		}); 
	} 
 
	$('#sshkey_delete').val(keyids.join(',')); 
 
	if(empty(keyids)){ 
		error_alert("Please select at least one SSH Key."); 
		return false; 
	} 
 
	modalConfirm(function(confirm){ 
		if(confirm){ 
			submitit('deletesshkeyform', 'deletesshkeyform_response'); 
		}else{ 
			return false; 
		} 
	},'Are you sure you want to delete this SSH Key ?'); 
} 
 
function deletesshkeyform_response(data) { 
	if(!empty(data['done'])) { 
		set_ssh_keys_table(data['ssh_keys']); 
	} 
} 
 
var euiso; 
function euiso_onload() { 
	 
	if(isError()){ 
		error(N["error"]); 
		return -1; 
	} 
	 
	// Are we to get redirected ? 
	if(typeof(N['done']) != 'undefined' && typeof(N['done']["redirect"]) != 'undefined'){ 
		redirect(N['done']["redirect"]); 
		return; 
	} 
	 
	if(empty(N['isos'])){ 
		$('#euisolist').html('<div class="notice">You do not have any ISO(s). You can add one now</div>'); 
		return; 
	} 
	 
	if($('#iso_list_table').length>0){ 
		$('#iso_list_table tr td').eq(2).css({'color':'red'}); 
	} 
 
	var cols = new Object(); 
	cols["uuid"] = {"l" : 'UUID', "width": '60px'}; 
	cols["distro"] = {"l" : 'Distro', "width": '30px'}; 
	cols["iso"] = {"l" : 'Filename'}; 
	cols["size"] = {"l" : 'Total Size'}; 
	cols["downloaded"] = {"l" : 'Downloaded Size'}; 
	cols["download_time"] = {"l" : 'Download Time'}; 
	cols["active"] = {"l" : 'Status', "width" : '10'}; 
	cols["delete"] = {"l" : 'Delete', "width" : '10'}; 
	cols["select_all"] = {"l" : '<div class="custom-control custom-checkbox"><input type="checkbox" name="select_all" id="iso_select_all" class="select_all custom-control-input" onclick="checkbox_select_all(this);" ><label class="custom-control-label" for="iso_select_all"></label></div>', "width" : '5%', 'class' : 'select-all-checkbox'}; 
	 
	var is_downloading = 0; 
	 
	// Prepare the list 
	for(x in N["isos"]){ 
		$v = N["isos"][x]; 
		active = $v['active']; 
		$v['active'] = Math.round(($v['downloaded']/$v['size'])*100) + ' %'; 
		$v['size'] = Math.round($v['size'] / 1024 / 1024) + ' MB'; 
		$v['downloaded'] = Math.round($v['downloaded'] / 1024 / 1024) + ' MB'; 
		$v['download_time'] = $v['download_time']; 
		$v["delete"] = '<a href="javascript:delisokey(\''+x+'\')" class="areload" data-iso=\''+x+'\'><i class="far fa-1x fa-trash-alt delete" aria-hidden="true" title="Delete"></i></a>'; 
		$v["select_all"] = '<div class="custom-control custom-checkbox"><input type="checkbox" class="ios isorow custom-control-input" id="iso-checkbox'+[x]+'" name="iso_id[]" value="'+[x]+'" "/><label class="custom-control-label" for="iso-checkbox'+[x]+'"></label></div>'; 
		 
		if(empty(active)){ 
			is_downloading = 1; 
		} 
	} 
 
	// Form the TABLE 
	table({'id' : 'euisolist', 'tid' : 'iso_list_table'}, cols, N["isos"]); 
	 
	var sel_opts = "<option value='0'>With Selected:</option><option value='1'>Delete</option>"; 
	 
 
	var bottom_menu = `<div class="bottom-go-options"><div class="input-group"> 
		<select class="custom-select" name="multi_options" id="iso_options" > 
			${sel_opts} 
		</select> 
		<span class="input-group-append go-option"> 
			<a class="btn justify-content-end align-items-center d-flex" type="button"><input type="button" value="GO" onclick="delisokey()" class="go_btn" /></a> 
		</span> 
	</div></div><div class="clearfix"></div>`; 
	 
	bottom_menu += '<div class="text-center mt-3">'; 
	 
	if("euiso_auto_del" in N){ 
		bottom_menu += '<div class="notice">'+N['euiso_auto_del']+'</div>'; 
	} 
	 
	bottom_menu += '</div>'; 
	if(!$('#euiso .bottom-go-options').length){ 
		$("#euisolist").parent().parent().after(bottom_menu); 
	} 
	 
	// Are there any ISO that are downloading ? 
	if(!empty(is_downloading)){ 
		euiso = setTimeout('loadpage("act=euiso")', 30000); 
		is_downloading = 0; 
	} 
	 
}; 
 
function euiso_onleave() { 
	clearTimeout(euiso); 
}; 
 
function addiso_onload(){ 
	 
	// Are we to get redirected ? 
	if(typeof(N['done']) != 'undefined' && typeof(N['done']["redirect"]) != 'undefined'){ 
		redirect(N['done']["redirect"]); 
		return; 
	} 
	$_("addisoform").reset(); 
}; 
 
// Billing onlaod 
function billing_onload(){ 
 
	if(isError()){ 
		error(N["error"]); 
		return -1; 
	} 
 
	// Hide charges, invoices if user is WHMCS User 
	if(!empty(N["foreign_uid"]) && !empty(N["cb_invoice_whmcs_user"])){ 
		$("#charges_box").hide(); 
		$("#cur_invoices_box").hide(); 
		$("#invoice_tab").hide(); 
		$("#transactions_tab").hide(); 
		$("#make_payment_tab").hide(); 
		$('#usage_tab').addClass('active'); 
		$('#invoices, #invoice_tab').removeClass('active'); 
		$('#invoice_tab').removeClass('active'); 
		$('#usage').addClass('active'); 
		$('#usage').removeClass('fade'); 
	} 
	 
	// No invoices ? 
	if(empty(N["invoices"])){ 
		 
		$('#billinglist').html('<div class="notice">You do not have any invoices yet !</div>'); 
	 
	// Some invoices 
	}else{ 
 
		var cols = new Object(); 
		cols["invoid"] = {"l" : 'Invoice ID', "width": '15%'}; 
		cols["invodate"] = {"l" : 'Invoice Date', "width": '15%'}; 
		cols["duedate"] = {"l" : 'Due Date', "width": '15%'}; 
		cols["item"] = {"l" : 'Item', "width": '15%'}; 
		cols["_net"] = {"l" : 'Amount', "width": '15%'}; 
		cols["status_txt"] = {"l" : 'Status', "width": '15%'}; 
		cols["view"] = {"l" : '', "width" : '5%'}; 
		// cols["select_all"] = {"l" : '<div class="custom-control custom-checkbox"><input type="checkbox" name="select_all" id="invoice_select_all" class="select_all custom-control-input" onclick="checkbox_select_all(this);" ><label class="custom-control-label" for="invoice_select_all"></label></div>', "width" : '1%', "centered" : true, 'class' : 'table-col'}; 
		 
		// Prepare the list 
		for(x in N["invoices"]){ 
			 
			$v = N["invoices"][x]; 
 
			x = x.replace('i_',''); 
			$v['invodate'] = datetime($v['invodate']); 
			$v['duedate'] = datetime($v['duedate']); 
			$v['_net'] = N['billing_symbol']+$v['net']; 
			$v["view"] = '<a target="_blank" href="index.php?&act=invoices&invoid='+x+'"><i class="fa fa-1x fa-file" /></a>'; 
			// $v["select_all"] = '<div class="custom-control custom-checkbox"><input type="checkbox" class="ios custom-control-input" name="invoid[]" value="'+[x]+'" id="invoice_checkbox'+[x]+'" /><label class="custom-control-label" for="invoice_checkbox'+[x]+'"></label></div>'; 
		} 
 
		// Form the TABLE 
		table({'id' : 'billinglist', 'tid' : 'invoices_table', "width" : '90%'}, cols, N["invoices"]); 
		 
		pageLinks("invoices", 'act=billing', N['page']); 
	 
	} 
	 
	// No Transactions ? 
	if(empty(N["transactions"])){ 
		 
		$('#transactionslist').html('<div class="notice">No transaction were found</div>'); 
	 
	// Some Transactions 
	}else{ 
 
		var cols = new Object(); 
		cols["trid"] = {"l" : 'ID', "width": '60px' }; 
		cols["date"] = {"l" : 'Date', "width": '25%' }; 
		cols["gateway"] = {"l" : 'Payment Gateway', "width": '25%'}; 
		cols["amt"] = {"l" : 'Amount', "width": '25%'}; 
		cols["bal"] = {"l" : 'Balance'}; 
		 
		// Prepare the list 
		for(x in N["transactions"]){ 
			$v = N["transactions"][x]; 
			$v['date'] = datetime($v['date']); 
			if(!empty($v['invoid'])){ 
				$v['gateway'] = '<a target="_blank" href="index.php?&act=invoices&invoid='+$v['invoid']+'">Invoice : '+$v['invoid']+'</a>'; 
			} 
		} 
 
		// Form the TABLE 
		table({'id' : 'transactionslist', 'tid' : 'transactions_table', "width" : '90%'}, cols, N["transactions"]); 
		 
		pageLinks("transactions", 'act=billing', N['trpage'], false, 'trpage'); 
	 
	} 
	 
	// No Usage ? 
	if(empty(N["usage"])){ 
		 
		$('#usagelist').html('<div class="notice">No billing items were found !</div>'); 
	 
	// Some Usage Items 
	}else{ 
 
		var cols = new Object(); 
		cols["usid"] = {"l" : 'ID', "width": '60px'}; 
		cols["vps"] = {"l" : 'VPS', "width": '200'}; 
		cols["region"] = {"l" : 'Region', "width": '150'}; 
		cols["resource"] = {"l" : 'Type', "width": '75'}; 
		cols["starttime"] = {"l" : 'Start Time',"width": '180'}; 
		cols["updatetime"] = {"l" : 'Update Time',"width": '180'}; 
		cols["charge"] = {"l" : 'Charge', "width": '150'}; 
		 
		// Prepare the list 
		for(x in N["usage"]){ 
			$v = N["usage"][x]; 
			if(!empty($v['vpsid'])){ 
				$v['vps'] = $v['vps_uuid']+' (ID: '+$v['vpsid']+')'; 
				if(!empty($v['data'])){ 
					$v['vps'] = $v['vps_uuid']+' ('+$v['data']['hostname']+')'; 
				} 
			}else{ 
				$v['vps'] = $v['vps_uuid']+' <span style="color:red;">(Terminated)</span>'; 
				if(!empty($v['data'])){ 
					$v['vps'] = $v['vps_uuid']+' <span style="color:red;"> ('+$v['data']['hostname']+') </span>'; 
				} 
			} 
 
 
			$v['starttime'] = nDate($v['starttime']); 
			$v['updatetime'] = nDate($v['updatetime']); 
			$v['charge'] = N['billing_symbol']+$v['h_used']; 
		} 
 
		// Form the TABLE 
		table({'id' : 'usagelist', 'tid' : 'usage_table', "width" : '90%'}, cols, N["usage"]); 
		 
		$('#usage_table').dataTable({ 
			"order": [[ 0, "desc" ]] 
		}); 
	 
	} 
 
	// No Usage ? 
	if(empty(N["billed_usage"])){ 
		 
		$('#billed_usagelist').html('<div class="notice">No billing items were found !</div>'); 
	 
	// Some Usage Items 
	}else{ 
 
		var cols = new Object(); 
		cols["usid"] = {"l" : 'ID', "width": '60px'}; 
		cols["invoid"] = {"l" : 'Invoice ID', "width": '90px'}; 
		cols["vps"] = {"l" : 'VPS', "width": '200'}; 
		cols["region"] = {"l" : 'Region', "width": '150'}; 
		cols["resource"] = {"l" : 'Type', "width": '75'}; 
		cols["starttime"] = {"l" : 'Start Time',"width": '180'}; 
		cols["updatetime"] = {"l" : 'Update Time',"width": '180'}; 
		cols["charge"] = {"l" : 'Charge', "width": '150'}; 
 
		// Prepare the list 
		for(x in N["billed_usage"]){ 
			$v = N["billed_usage"][x]; 
			if(!empty($v['vpsid'])){ 
				$v['vps'] = $v['vps_uuid']+' (ID: '+$v['vpsid']+')'; 
				if(!empty($v['data'])){ 
					$v['vps'] = $v['vps_uuid']+' ('+$v['data']['hostname']+')'; 
				} 
			}else{ 
				$v['vps'] = $v['vps_uuid']+' <span style="color:red;">(Terminated)</span>'; 
				if(!empty($v['data'])){ 
					$v['vps'] = $v['vps_uuid']+' <span style="color:red;"> ('+$v['data']['hostname']+') </span>'; 
				} 
			} 
 
 
			$v['starttime'] = nDate($v['starttime']); 
			$v['updatetime'] = nDate($v['updatetime']); 
			$v['charge'] = N['billing_symbol']+$v['h_used']; 
		} 
 
		// Form the TABLE 
		table({'id' : 'billed_usagelist', 'tid' : 'billed_usage_table', "width" : '90%'}, cols, N["billed_usage"]); 
		 
		pageLinks("billed_usage", 'act=billing', N['uspage'], false, 'uspage'); 
	 
	} 
 
	// No Gateways ? 
	if(empty(N["gateways"])){ 
		 
		$('#make_payment').html('<div class="notice">No Payment Gateways found. Please contact Virtualizor at </div>'); 
	 
	// Payment Gateways 
	}else{ 
		var options = '<option value="" selected="selected">None</option>'; 
		for(x in N["gateways"]){ 
			options += '<option value="'+x+'">'+N["gateways"][x]+'</option>'; 
		} 
		$('#gateway').html(options); 
 
		 
 
	} 
	 
	$('#balance').html(N['billing_symbol']+N['balance']); 
	$('#charges').html(N['billing_symbol']+N['charges']); 
	$('#cur_usage').html(N['billing_symbol']+N['cur_usage']); 
	$('#cur_invoices').html(N['billing_symbol']+N['cur_invoices']); 
	$('#billing_symbol').html(N['billing_symbol']); 
	$('.pay_fields').prop("disabled", true); 
}; 
 
function lb_assign(formid){ 
	// $("#"+formid). 
	Loading(1); 
	$.ajax({ 
		type: "POST", 
		url: "index.php?api=json&act=load_balancer&vpsid="+$("#"+formid).attr("data-vpsid")+"&api=json", 
		data: $("#"+formid).serialize(), 
		dataType : "json", 
		success:function(res){ 
			Loading(0); 
			if('vps_assigned' in res){ 
				setTimeout(function(){ success_alert("Settings were saved successfully"); 
					$("#alert-modal").on("hidden.bs.modal", function (e) { 
						refresh_page(); 
					}); 
				return; } ,200); 
			} 
 
			// Are there any errors ? 
			if(typeof(res["error"]) != "undefined"){ 
				setTimeout(function(){ var errors = ""; 
				for(x in res["error"]){ 
					errors = errors + res["error"][x]+ "<br>"; 
				} 
				error_alert(errors); } ,200); 
			} 
		} 
	}); 
 
} 
 
let lb_uuid = ''; 
//manage load balancer onload 
function manage_load_balancer_onload(){ 
 
	if(empty(N['load_balancer'])){ 
		return false; 
	} 
 
	let load_balancer = N['load_balancer']; 
	lb_uuid = load_balancer['vps_uuid']; 
	html = ` 
	<div class="px-3"> 
		<div class="row mx-auto w-100"> 
			<div class="col-sm-12 mb-3 d-flex align-items-center p-0"> 
				<div class="mr-2"> 
					<div class="border border-primary rounded-circle p-3 d-flex align-items-center justify-content-center" style="width: 50px; height:50px;position:relative"> 
						<i class="fas fa-code-branch h2 m-0"></i> 
						<div class="status"> 
							<i class="fas fa-circle cursor-pointer text-`+(N['lb_status'] ? 'success' : 'danger')+` h6 m-0"></i> 
						</div> 
					</div> 
				</div> 
				<div> 
					<div class="d-flex align-items-center mb-2 text-dark"> 
						<h5 class="m-0">`+load_balancer['hostname']+`</h5> 
					</div> 
					<div class="d-flex align-items-center"> 
						<div class="text-muted m-0">`+load_balancer['sg_name']+`</div> 
						<div class="mx-1">/</div> 
						<div class="text-muted m-0">`+load_balancer['ip']+`</div> 
					</div> 
				</div> 
			</div> 
		</div> 
		<div class="lb_div-tab" id="lb_div"> 
			<ul class="nav nav-tabs mb-4 dash-tabs" id="pills-tab" role="tablist"> 
				<li class="nav-item"> 
					<a class="nav-link active" id="vps-list-tab" data-toggle="pill" href="#vps-list" role="tab" aria-controls="vps-list" aria-selected="false"><i class="fas fa-server mr-2"></i>VPS List<span class="badge badge-primary bg-primary ml-2">`+load_balancer['num_vps']+`</span></a> 
				</li> 
				<li class="nav-item"> 
					<a class="nav-link" id="rules-list-tab" data-toggle="pill" href="#rules-list" role="tab" aria-controls="rules-list" aria-selected="false"><i class="fas fa-atlas mr-2"></i>Rules List<span class="badge badge-primary bg-primary ml-2">`+(!empty(load_balancer['settings']) ? Object.keys(load_balancer['settings']).length : 0)+`</span></a>						 
				</li> 
				<li class="nav-item"> 
					<a class="nav-link" id="lb-settings-tab" data-toggle="pill" href="#lb-settings" role="tab" aria-controls="lb-settings" aria-selected="false"><i class="fas fa-cogs mr-2"></i>Settings</a> 
				</li>				 
				<li class="nav-item"> 
					<a class="nav-link" id="lb-stats-tab" onclick="lb_get_stats()" data-toggle="pill" href="#lb-stats" role="tab" aria-controls="lb-stats" aria-selected="false"><i class="fas fa-table mr-2"></i>Statistics</a> 
				</li>				 
				<li class="nav-item"> 
					<a class="nav-link" id="lb-logs-tab" onclick="lb_get_logs()" data-toggle="pill" href="#lb-logs" role="tab" aria-controls="lb-logs" aria-selected="false"><i class="fas fa-clipboard-list mr-2"></i>Logs</a> 
				</li>				 
			</ul> 
			<div class="tab-content px-2" id="pills-tabContent"> 
				<div class="tab-pane fade show active" id="vps-list" role="tabpanel" aria-labelledby="vps-list-tab"> 
					<div class="row mx-auto w-100"> 
						<div class="col-sm-12 p-0 mx-n3"> 
							<div class="scrollbar-virt"> 
								<table class="table table-hover tablesorter border w-100" id="lb_vm_table"> 
									<thead> 
										<tr> 
											<th class="min_width"> 
												ID 
											</th> 
											<th> 
												UUID 
											</th> 
											<th> 
												Hostname 
											</th> 
											<th> 
												IP 
											</th> 
											<th> 
												Server 
											</th> 
											<th class="min_width"> 
												Manage 
											</th> 
										</tr> 
									</thead> 
								`; 
									$.each(N['vpses'], function(vpsid, vps){ 
										html += ` 
										<tr> 
											<td> 
												`+vpsid+` 
											</td> 
											<td> 
												`+vps['uuid']+(!empty(vps['locked']) ? `<i class="fas fa-lock pl-2" tooltip="`+vps['locked']['reason']+`" data-original-title="" title="" style=""></i>` : ``) +` 
											</td> 
											<td> 
												`+vps['hostname']+` 
											</td> 
											<td> 
												`+vps['ip']+` 
											</td> 
											<td> 
												`+vps['server_name']+` 
											</td> 
											<td> 
												<a class="text-danger" onclick="lb_remove_vm('`+vpsid+`')" title="Remove"><i class="fas fa-trash m-1"></i></a> 
											</td> 
										</tr>`; 
									}) 
								html += ` 
								</table> 
							</div> 
						</div> 
					</div> 
				</div> 
				<div class="tab-pane fade" id="rules-list" role="tabpanel" aria-labelledby="rules-list-tab"> 
				<div class="row mx-auto w-100"> 
						<div class="col-sm-12 p-0 mx-n3"> 
							<div class="scrollbar-virt"> 
								<table class="table table-hover tablesorter border w-100" id="lb_rules_table"> 
									<thead> 
										<tr> 
											<th> 
												Source Protocol 
											</th> 
											<th> 
												Source Port 
											</th> 
											<th> 
												Destination Protocol 
											</th> 
											<th> 
												Destination Port 
											</th> 
											<th> 
												Load Balancer Method 
											</th> 
											<!--<th> 
												Directory 
											</th>--> 
											<th class="min_width"> 
												Manage 
											</th> 
										</tr> 
									</thead> 
								`; 
								$.each(load_balancer['settings'], function(sk, sv){ 
									html += ` 
										<tr id="lb_settings_tr_`+sk+`"> 
											<span id="lb_settings_`+sk+`" style="display:none;">`+JSON.stringify(sv)+`</span> 
											<td> 
												`+sv['source_protocol']+` 
											</td> 
											<td> 
												`+sv['source_port']+` 
											</td> 
											<td> 
												`+sv['dest_protocol']+` 
											</td> 
											<td> 
												`+sv['dest_port']+` 
											</td> 
											<td> 
												`+sv['lb_method']+` 
											</td> 
											<td> 
												<div class="d-flex"> 
													<a class="text-warning" title="Edit"><i class="fas fa-pencil-alt m-1" onclick="lb_edit_rule('`+sk+`',this)"></i></a> 
													<a class="text-danger" title="Remove" onclick="lb_remove_rule('`+sk+`')"><i class="fas fa-trash m-1"></i></a> 
												</div> 
											</td> 
										</tr> 
									`; 
								}) 
								html += ` 
								</table> 
							</div> 
						</div> 
					</div> 
				</div> 
				<div class="tab-pane fade" id="lb-settings" role="tabpanel" aria-labelledby="lb-settings-tab"> 
					<form method="post" id="lb_settings_form"> 
						<fieldset class="user_details_f"> 
							<legend class="user_details_f mb-0">Load Balancer Method</legend> 
							<div class="row mx-auto w-100"> 
								<div class="col-sm-12 col-xs-12 col-md-4 col-lg-4 col-xl-4 my-2 px-1"> 
									<label> 
										Choose Method 
									</label><br> 
									<select name="lb_method" class="custom-select"> 
										<option value="roundrobin">roundrobin(Default)</option> 
										<option value="leastconn">leastconn</option> 
										<option value="static-rr">static-rr</option> 
										<option value="first">first</option> 
									</select> 
								</div> 
							</div> 
						</fieldset> 
						<fieldset class="user_details_f"> 
							<legend class="user_details_f mb-0">Load Balancer Rules</legend> 
							<div class="row mx-auto w-100"> 
								<div class="col-12 my-2 px-1"> 
									<div class="row mx-auto w-100"> 
										<div class="col-6 p-0 d-flex lb_div" > 
											<h6>Load Balancer</h6> 
										</div> 
										<div class="col-1 p-0 d-flex align-items-center justify-content-center mt-3"> 
										</div> 
										<div class="col-5 p-0 d-flex vps_div"> 
											<h6>VPS</h6> 
										</div> 
									</div> 
								</div> 
							</div> 
							<div class="row mx-auto w-100"> 
								<div class="col-12 my-2 px-1"> 
									<div class="row mx-auto w-100"> 
										<div class="col-6 p-0 d-flex lb_div"> 
											<div class="w-100 px-1"> 
												<label> 
												Protocol 
												</label><br> 
												<select name="source_protocol" class="custom-select" id="lb_source_protocol"> 
													<option value="http">HTTP</option> 
													<option value="https">HTTPS</option> 
													<option value="http2">HTTP2</option> 
													<option value="http3">HTTP3</option> 
													<option value="tcp">TCP</option> 
												</select> 
											</div> 
											<div class="w-100 px-1"> 
												<label> 
													Port 
												</label><br> 
												<input type="text" name="source_port" id="lb_source_port" value="80" class="form-control"> 
											</div> 
											<div class="w-100 px-1" id="lb_ssl_cert" style="display:none;"> 
												<label> 
													Certificate 
												</label><br> 
												<select id="lb_ssl_options" class="custom-select" name="ssl_options"> 
													<option value="create">Self-signed</option> 
													<option value="use_own">Use Your Own</option>`; 
													if("lb_ssl_certs" in N && !empty(N['lb_ssl_certs'])){ 
														$.each(N['lb_ssl_certs'], function(sslk, sslv){ 
															html += `<option value="`+sslv['ssl_id']+`">`+sslv['ssl_name']+`</option>`; 
														}); 
													} 
													html += ` 
												</select> 
											</div> 
										</div> 
										<div class="col-1 p-0 d-flex align-items-center justify-content-center mt-3"> 
											<i class="fas fa-arrow-right"></i> 
										</div> 
										<div class="col-5 p-0 d-flex vps_div"> 
											<div class="w-100 px-1"> 
												<label> 
													Protocol 
												</label><br> 
												<select name="dest_protocol" class="custom-select" onchange="($(this).val() == 'https' ? $('#lb_dest_port').val('443') : $('#lb_dest_port').val('80'))"> 
													<option value="http">HTTP</option> 
													<option value="https">HTTPS</option> 
													<option value="tcp">TCP</option> 
												</select> 
											</div> 
											<div class="w-100 px-1"> 
												<label> 
													Port 
												</label><br> 
												<input type="text" name="dest_port" id="lb_dest_port" value="80" class="form-control"> 
											</div> 
										</div> 
									</div> 
								</div> 
								<!--<div class="col-2 my-2 px-1"> 
									<label> 
										{{dir}} 
									</label><br> 
									<input type="text" name="dir" value="/" class="form-control"> 
								</div>--> 
							</div> 
						</fieldset> 
						<fieldset class="user_details_f" id="lb_use_own_div" style="display:none;"> 
							<legend class="user_details_f mb-0">Certificate Details</legend> 
							<div class="row mx-auto w-100"> 
								<div class="col-sm-12 px-1 my-2"> 
									<label> 
										SSL Name 
									</label><br> 
									<input type="text" name="ssl_name" class="form-control"/> 
								</div> 
							</div> 
							<div class="row mx-auto w-100"> 
								<div class="col-sm-12 px-1 my-2"> 
									<label> 
										Certificate 
									</label><br> 
									<textarea class="form-control font-monospace" name="cert" rows="5"></textarea> 
								</div> 
								<div class="col-sm-12 px-1 my-2"> 
									<label> 
										Private Key 
									</label><br> 
									<textarea class="form-control font-monospace" name="key" rows="5"></textarea> 
								</div> 
								<div class="col-sm-12 px-1 my-2"> 
									<label> 
										Certificate Chain 
									</label><br> 
									<textarea class="form-control font-monospace" name="chain" rows="5"></textarea> 
								</div> 
							</div> 
						</fieldset> 
						<div class="w-100 text-center"> 
							<input type="button" id="lb_save_settings" value="Save Settings" class="btn btn-primary" name="lb_save_settings"/> 
						</div> 
					</form> 
				</div> 
				<div class="tab-pane fade" id="lb-stats" role="tabpanel" aria-labelledby="lb-stats-tab"> 
					<center><div class="loader"></div></center> 
				</div> 
				<div class="tab-pane fade" id="lb-logs" role="tabpanel" aria-labelledby="lb-logs-tab"> 
					<center><div class="loader"></div></center> 
				</div> 
			</div> 
		</div> 
	</div>`; 
	$("#manage_lb_div").html(html); 
 
	$(".scrollbar-virt").scrollbar(); 
 
	$("#lb_ssl_options").on("change", function(){ 
		if($(this).val() == "use_own"){ 
			$("#lb_use_own_div").show(); 
		}else{ 
			$("#lb_use_own_div").hide(); 
		} 
	}); 
 
	$("#lb_vm_table").dataTable({ 
		'destroy': true, 
		'columnDefs': [  
			{ 'targets': [5] }, // column index (start from 0) 
			{ "orderable": false, "targets": [5] }, 
		], 
		'autoWidth': false, 
	}); 
 
	$("#lb_rules_table").dataTable({ 
		'destroy': true, 
		'columnDefs': [  
			{ 'targets': [5] }, // column index (start from 0) 
			{ "orderable": false, "targets": [5] }, 
		], 
		'autoWidth': false, 
	}); 
 
	$("#lb_vm_table_wrapper .row").addClass("mx-auto w-100"); 
	$("#lb_rules_table_wrapper .row").addClass("mx-auto w-100"); 
 
	$("#lb_source_protocol").on("change", function(){ 
		if($(this).val() == "http"){ 
			$(".lb_div").removeClass("col-7"); 
			$(".lb_div").addClass("col-6"); 
			$(".vps_div").removeClass("col-4"); 
			$(".vps_div").addClass("col-5"); 
			$("#lb_ssl_cert").hide(); 
			$("#lb_use_own_div").hide(); 
			$("#lb_ssl_options").val("create"); 
			$("#lb_source_port").val("80"); 
		}else if($(this).val() == "https" || $(this).val() == "http2" || $(this).val() == "http3"){ 
			$(".lb_div").removeClass("col-6"); 
			$(".lb_div").addClass("col-7"); 
			$(".vps_div").removeClass("col-5"); 
			$(".vps_div").addClass("col-4"); 
			$("#lb_source_port").val("443"); 
			$("#lb_ssl_cert").show(); 
		}else if($(this).val() == "tcp"){ 
			$(".lb_div").removeClass("col-7"); 
			$(".lb_div").addClass("col-6"); 
			$(".vps_div").removeClass("col-4"); 
			$(".vps_div").addClass("col-5"); 
			$("#lb_ssl_cert").hide(); 
			$("#lb_use_own_div").hide(); 
			$("#lb_ssl_options").val("create"); 
			$("#lb_source_port").val("22"); 
		} 
	}) 
 
	$("#lb_save_settings").on("click", function(){ 
		$("#lb_save_settings").prop("disabled", true); 
		Loading(1); 
		$.ajax({ 
			type: "POST", 
			url: "index.php?api=json&act=manage_load_balancer&lb_uuid="+lb_uuid+"&save_settings=1&api=json", 
			dataType : "json", 
			data:$("#lb_settings_form").serialize(), 
			success:function(res){ 
				Loading(0); 
				$("#lb_save_settings").prop("disabled", false); 
				if("save_settings_done" in res){ 
					setTimeout(function(){ success_alert("Settings were saved successfully"); 
						$("#alert-modal").on("hidden.bs.modal", function (e) { 
							refresh_page(); 
						}); 
					return; } ,200); 
				} 
	 
				// Are there any errors ? 
				if(typeof(res["error"]) != "undefined"){ 
					setTimeout(function(){ var errors = ""; 
					for(x in res["error"]){ 
						errors = errors + res["error"][x]+ "<br>"; 
					} 
					error_alert(errors); } ,200); 
				} 
			} 
		}); 
	}); 
 
	showtooltip(); 
 
} 
 
function lb_get_stats(){ 
	Loading(1); 
	$.ajax({ 
		type: "POST", 
		url: "index.php?api=json&act=manage_load_balancer&lb_uuid="+lb_uuid+"&get_stats=1&api=json", 
		dataType : "json", 
		success:function(res){ 
			Loading(0); 
			if("lb_stats" in res){ 
				$("#lb-stats").html(`<div style="overflow:auto;" id="lb_stats_div">`+res['lb_stats']+`</div>`); 
				$("#lb_stats_div").find("table")[$("#lb_stats_div").find("table").length-4].remove(); 
				$("#lb_stats_div").find("table")[$("#lb_stats_div").find("table").length-3].remove(); 
			} 
 
			// Are there any errors ? 
			if(typeof(res["error"]) != "undefined"){ 
				setTimeout(function(){ var errors = ""; 
				for(x in res["error"]){ 
					errors = errors + res["error"][x]+ "<br>"; 
				} 
				error_alert(errors ,"1"); } ,200); 
			} 
		} 
	}); 
} 
function lb_get_logs(){ 
	Loading(1); 
	$.ajax({ 
		type: "POST", 
		url: "index.php?api=json&act=manage_load_balancer&lb_uuid="+lb_uuid+"&get_logs=1&api=json", 
		dataType : "json", 
		success:function(res){ 
			Loading(0); 
			if("lb_logs" in res){ 
				$("#lb-logs").html(`<div style="overflow:auto;"><pre>`+res['lb_logs'].join('<br>')+`</pre></div>`); 
			} 
 
			// Are there any errors ? 
			if(typeof(res["error"]) != "undefined"){ 
				setTimeout(function(){ var errors = ""; 
				for(x in res["error"]){ 
					errors = errors + res["error"][x]+ "<br>"; 
				} 
				error_alert(errors ,"1"); } ,200); 
			} 
		} 
	}); 
} 
 
function lb_delete(delete_lb){ 
	msg = `Are you sure you that you want to <b class=\'text-danger\'>delete</b> the load balancer<br> 
	<div class="custom-control custom-checkbox"> 
		<input type="checkbox" name="lb_delete_added_vm" id="lb_delete_added_vm" class="custom-control-input" > 
		<label class="custom-control-label" for="lb_delete_added_vm">Delete added VPS from panel as well?</label> 
	</div>`; 
	modalConfirm(function(confirm){ 
		if(confirm == false){ 
			return false; 
		}else{ 
			Loading(1); 
			var is_checked = $("#lb_delete_added_vm").prop("checked"); 
			$.ajax({ 
				type: "POST", 
				url: "index.php?api=json&act=load_balancer&delete_lb="+delete_lb+(!empty(is_checked) ? "&delete_added_vm=1" : "")+"&api=json", 
				dataType : "json", 
				success:function(res){ 
					Loading(0); 
					if("delete_lb_done" in res){ 
						let success_msg = "The load balancer was removed successfully"; 
						 
						if(!empty(res["delete_lb_done"]["done_msg"])){ 
							success_msg += "<br>These VPS are locked and will not be deleted VPSID - "+res["delete_lb_done"]["done_msg"]; 
						} 
						setTimeout(function(){ success_alert(success_msg); 
							$("#alert-modal").on("hidden.bs.modal", function (e) { 
								refresh_page(); 
							}); 
						return; } ,200); 
					} 
		 
					// Are there any errors ? 
					if(typeof(res["error"]) != "undefined"){ 
						setTimeout(function(){ var errors = ""; 
						for(x in res["error"]){ 
							errors = errors + res["error"][x]+ "<br>"; 
						} 
						error_alert(errors ,"1"); } ,200); 
					} 
				} 
			}); 
		} 
	}, msg); 
} 
 
function lb_remove_vm(vpsid){ 
	msg = `Are you sure that you want to <b class=\'text-danger\'>remove</b> the VPS?<br> 
	<div class="custom-control custom-checkbox"> 
		<input type="checkbox" name="lb_delete_vm" id="lb_delete_vm" class="custom-control-input" > 
		<label class="custom-control-label" for="lb_delete_vm">Delete VPS from panel as well?</label> 
	</div>`; 
	modalConfirm(function(confirm){ 
		if(confirm == false){ 
			return false; 
		}else{ 
			Loading(1); 
			var is_checked = $("#lb_delete_vm").prop("checked"); 
			$.ajax({ 
				type: "POST", 
				url: "index.php?api=json&act=manage_load_balancer&lb_uuid="+lb_uuid+"&remove_vps="+vpsid+(!empty(is_checked) ? "&delete_vm=1" : "")+"&api=json", 
				dataType : "json", 
				success:function(res){ 
					Loading(0); 
					if("remove_vps_done" in res){ 
						setTimeout(function(){ success_alert("The VPS was removed successfully"); 
							$("#alert-modal").on("hidden.bs.modal", function (e) { 
								refresh_page(); 
							}); 
						return; } ,200); 
					} 
		 
					// Are there any errors ? 
					if(typeof(res["error"]) != "undefined"){ 
						setTimeout(function(){ var errors = ""; 
						for(x in res["error"]){ 
							errors = errors + res["error"][x]+ "<br>"; 
						} 
						error_alert(errors ,"1"); } ,200); 
					} 
				} 
			}); 
		} 
	}, msg); 
} 
 
function lb_remove_rule(rule){ 
	modalConfirm(function(confirm){ 
		if(confirm == false){ 
			return false; 
		}else{ 
			Loading(1); 
			$.ajax({ 
				type: "POST", 
				url: "index.php?api=json&act=manage_load_balancer&lb_uuid="+lb_uuid+"&remove_rule="+rule+"&api=json", 
				dataType : "json", 
				success:function(res){ 
					Loading(0); 
					if("remove_rule_done" in res){ 
						setTimeout(function(){ success_alert("The rule was removed successfully"); 
							$("#alert-modal").on("hidden.bs.modal", function (e) { 
								refresh_page(); 
							}); 
						return; } ,200); 
					} 
		 
					// Are there any errors ? 
					if(typeof(res["error"]) != "undefined"){ 
						setTimeout(function(){ var errors = ""; 
						for(x in res["error"]){ 
							errors = errors + res["error"][x]+ "<br>"; 
						} 
						error_alert(errors); } ,200); 
					} 
				} 
			}); 
		} 
	}, "Are you sure that you want to <b class=\'text-danger\'>delete</b> the rule?"); 
} 
 
function lb_edit_rule(k, ele){ 
 
	if($("#edit_lb_rule_div").length <= 0){ 
		var _edit_lb_rule_div = '<div id="edit_lb_rule_div"></div>'; 
		$(_edit_lb_rule_div).prependTo('#manage_load_balancer'); 
	} 
	var data = JSON.parse($("#lb_settings_"+k).html()); 
	var _htm = ` 
	<div class="modal fade"> 
		<div class="modal-dialog modal-lg"> 
			<div class="modal-content"> 
				<div class="modal-header"> 
					<h5>Edit Rule</h5> 
					<button type="button" class="close text-always-white" data-dismiss="modal">&times;</button> 
				</div> 
				<div class="modal-body"> 
					<form method="post" id="lb_edit_settings_form"> 
						<input type="hidden" name="old_key" value="`+(k)+`"/> 
						<fieldset class="user_details_f"> 
							<legend class="user_details_f mb-0">Load Balancer Method</legend> 
							<div class="row mx-auto w-100"> 
								<div class="col-sm-12 col-xs-12 col-md-4 col-lg-4 col-xl-4 my-2 px-1"> 
									<label> 
										Choose Method 
									</label><br> 
									<select name="edit_lb_method" class="custom-select"> 
										<option value="roundrobin" `+(data.lb_method == "roundrobin" ? "selected" : "")+`>roundrobin(Default)</option> 
										<option value="leastconn" `+(data.lb_method == "leastconn" ? "selected" : "")+`>leastconn</option> 
										<option value="static-rr" `+(data.lb_method == "static-rr" ? "selected" : "")+`>static-rr</option> 
										<option value="first" `+(data.lb_method == "first" ? "selected" : "")+`>first</option> 
									</select> 
								</div> 
							</div> 
						</fieldset> 
						<fieldset class="user_details_f"> 
							<legend class="user_details_f mb-0">Load Balancer Rules</legend> 
							<div class="row mx-auto w-100"> 
								<div class="col-12 my-2 px-1"> 
									<div class="row mx-auto w-100"> 
										<div class="col-6 p-0 d-flex edit_lb_div" > 
											<h6>Load Balancer</h6> 
										</div> 
										<div class="col-1 p-0 d-flex align-items-center justify-content-center mt-3"> 
										</div> 
										<div class="col-5 p-0 d-flex edit_vps_div"> 
											<h6>VPS</h6> 
										</div> 
									</div> 
								</div> 
							</div> 
							<div class="row mx-auto w-100"> 
								<div class="col-12 my-2 px-1"> 
									<div class="row mx-auto w-100"> 
										<div class="col-6 p-0 d-flex edit_lb_div"> 
											<div class="w-100 px-1"> 
												<label> 
												Protocol 
												</label><br> 
												<select name="edit_source_protocol" class="custom-select" id="edit_source_protocol" onchange="check_source_protocol($(this).val(), 1);"> 
													<option value="http" `+(data.source_protocol == "http" ? "selected" : "")+`>HTTP</option> 
													<option value="https" `+(data.source_protocol == "https" ? "selected" : "")+`>HTTPS</option> 
													<option value="http2" `+(data.source_protocol == "http2" ? "selected" : "")+`>HTTP2</option> 
													<option value="http3" `+(data.source_protocol == "http3" ? "selected" : "")+`>HTTP3</option> 
													<option value="tcp" `+(data.source_protocol == "tcp" ? "selected" : "")+`>TCP</option> 
												</select> 
											</div> 
											<div class="w-100 px-1"> 
												<label> 
													Port 
												</label><br> 
												<input type="text" name="edit_source_port" id="lb_edit_source_port" value="`+data.source_port+`" class="form-control"> 
											</div> 
											<div class="w-100 px-1" id="lb_edit_ssl_cert" style="display:none;"> 
												<label> 
													Certificate 
												</label><br> 
												<select id="lb_edit_ssl_options" class="custom-select" name="edit_ssl_options"> 
													<option value="create">Self-signed</option> 
													<option value="use_own">Use Your Own</option>`; 
													if("lb_ssl_certs" in N && !empty(N['lb_ssl_certs'])){ 
														$.each(N['lb_ssl_certs'], function(sslk, sslv){ 
															_htm += `<option value="`+sslv['ssl_id']+`" `+(data.ssl_id == sslv['ssl_id'] ? 'selected="selected"' : '')+`>`+sslv['ssl_name']+`</option>`; 
														}); 
													} 
													_htm += ` 
												</select> 
											</div> 
										</div> 
										<div class="col-1 p-0 d-flex align-items-center justify-content-center mt-3"> 
											<i class="fas fa-arrow-right"></i> 
										</div> 
										<div class="col-5 p-0 d-flex edit_vps_div"> 
											<div class="w-100 px-1"> 
												<label> 
													Protocol 
												</label><br> 
												<select name="edit_dest_protocol" class="custom-select" onchange="($(this).val() == 'https' ? $('#edit_dest_port').val('443') : $('#edit_dest_port').val('80'))"> 
													<option value="http" `+(data.dest_protocol == "http" ? "selected" : "")+`>HTTP</option> 
													<option value="https" `+(data.dest_protocol == "https" ? "selected" : "")+`>HTTPS</option> 
													<option value="tcp" `+(data.dest_protocol == "tcp" ? "selected" : "")+`>TCP</option> 
												</select> 
											</div> 
											<div class="w-100 px-1"> 
												<label> 
													Port 
												</label><br> 
												<input type="text" name="edit_dest_port" id="edit_dest_port" value="`+data.dest_port+`" class="form-control"> 
											</div> 
										</div> 
									</div> 
								</div> 
								<!-- <div class="col-2 my-2 px-1"> 
									<label> 
										{{dir}} 
									</label><br> 
									<input type="text" name="edit_dir" value="`+data.dir+`" class="form-control"> 
								</div> --> 
							</div> 
							<div class="row mx-auto w-100 my-3" `+(data.source_protocol == "http" ? "style='display:none'" : "")+`> 
								<div class="col-3"> 
									<label class="control-label">Reinstall SSL&nbsp;<a class="info" data-placement="right" tooltip="If checked then SSL will be reinstalled depending on SSL option selected"><i class="fas text-primary fa-info-circle"></i></a></label> 
								</div> 
								<div class="col-1"> 
									<div class="custom-control custom-checkbox"> 
										<input type="checkbox" name="reinstall_ssl" id="lb_reinstall_ssl" class="custom-control-input"> 
										<label class="custom-control-label" for="lb_reinstall_ssl"></label> 
									</div> 
								</div> 
							</div> 
						</fieldset> 
						<fieldset class="user_details_f" id="lb_edit_use_own_div" style="display:none;"> 
							<legend class="user_details_f mb-0">Certificate Details</legend> 
							<div class="row mx-auto w-100"> 
								<div class="col-sm-12 px-1 my-2"> 
									<label> 
										SSL Name 
									</label><br> 
									<input type="text" name="edit_ssl_name" class="form-control"/> 
								</div> 
							</div> 
							<div class="row mx-auto w-100"> 
								<div class="col-sm-12 px-1 my-2"> 
									<label> 
										Certificate 
									</label><br> 
									<textarea class="form-control font-monospace" name="edit_cert" rows="5"></textarea> 
								</div> 
								<div class="col-sm-12 px-1 my-2"> 
									<label> 
										Private Key 
									</label><br> 
									<textarea class="form-control font-monospace" name="edit_key" rows="5"></textarea> 
								</div> 
								<div class="col-sm-12 px-1 my-2"> 
									<label> 
										Certificate Chain 
									</label><br> 
									<textarea class="form-control font-monospace" name="edit_chain" rows="5"></textarea> 
								</div> 
							</div> 
						</fieldset> 
						<div class="w-100 text-center"> 
							<input type="button" id="edit_settings" value="Save Settings" class="btn btn-primary"/> 
						</div> 
					</form> 
				</div> 
			</div> 
		</div> 
	</div>`; 
	var ele = $(_htm).prependTo('#edit_lb_rule_div'); 
	$(ele).modal(); 
	showtooltip(); 
	$("#lb_edit_ssl_options").on("change", function(){ 
		if($(this).val() == "use_own"){ 
			$("#lb_edit_use_own_div").show(); 
		}else{ 
			$("#lb_edit_use_own_div").hide(); 
		} 
	}); 
	check_source_protocol(data.source_protocol); 
	$("#edit_settings").on("click", function(){ 
		$("#edit_settings").prop("disabled", true); 
		Loading(1); 
		$.ajax({ 
			type: "POST", 
			url: "index.php?api=json&act=manage_load_balancer&lb_uuid="+lb_uuid+"&edit_settings=1&api=json", 
			dataType : "json", 
			data:$("#lb_edit_settings_form").serialize(), 
			success:function(res){ 
				Loading(0); 
				$("#edit_settings").prop("disabled", false); 
				if("edit_settings_done" in res){ 
					setTimeout(function(){ success_alert("Settings were saved successfully"); 
						$("#alert-modal").on("hidden.bs.modal", function (e) { 
							refresh_page(); 
						}); 
					return; } ,200); 
				} 
	 
				// Are there any errors ? 
				if(typeof(res["error"]) != "undefined"){ 
					setTimeout(function(){ var errors = ""; 
					for(x in res["error"]){ 
						errors = errors + res["error"][x]+ "<br>"; 
					} 
					error_alert(errors); } ,200); 
				} 
			} 
		}); 
	}) 
	$(ele).on("hidden.bs.modal", function (e) { 
		$("#edit_lb_rule_div").remove(); 
	}); 
} 
 
function check_source_protocol(val, checkit = 0){ 
	if(val == "http"){ 
		$(".edit_lb_div").removeClass("col-7"); 
		$(".edit_lb_div").addClass("col-6"); 
		$(".edit_vps_div").removeClass("col-4"); 
		$(".edit_vps_div").addClass("col-5"); 
		$("#lb_edit_ssl_cert").hide(); 
		$("#lb_edit_use_own_div").hide(); 
		$("#lb_edit_ssl_options").val("create"); 
		if(checkit){ 
			$("#lb_edit_source_port").val("80"); 
		} 
	}else if(val == "https" || val == "http2" || val == "http3"){ 
		$(".edit_lb_div").removeClass("col-6"); 
		$(".edit_lb_div").addClass("col-7"); 
		$(".edit_vps_div").removeClass("col-5"); 
		$(".edit_vps_div").addClass("col-4"); 
		$("#lb_edit_ssl_cert").show(); 
		if(checkit){ 
			$("#lb_edit_source_port").val("443"); 
		} 
	}else if(val == "tcp"){ 
		$(".edit_lb_div").removeClass("col-7"); 
		$(".edit_lb_div").addClass("col-6"); 
		$(".edit_vps_div").removeClass("col-4"); 
		$(".edit_vps_div").addClass("col-5"); 
		$("#lb_edit_ssl_cert").hide(); 
		$("#lb_edit_use_own_div").hide(); 
		$("#lb_edit_ssl_options").val("create"); 
		if(checkit){ 
			$("#lb_edit_source_port").val("22"); 
		} 
	} 
} 
 
//load balancer onload 
function load_balancer_onload(){ 
	if(!("load_balancer" in N) || empty(N["load_balancer"])){ 
		$("#lb_list").html('<div class="notice">No Load Balancer Added</div>'); 
		return false; 
	} 
	lb_table = ` 
	<table class="table table-hover tablesorter border w-100" id="lb_table"> 
		<thead> 
			<tr> 
				<th> 
					ID 
				</th> 
				<th> 
					Load Balancer 
				</th> 
				<th> 
					Load Balancer IP 
				</th> 
				<th> 
					Number of VPS 
				</th> 
				<th> 
					User 
				</th> 
				<th> 
					Server Group 
				</th> 
				<th colspan="2"> 
					Manage 
				</th> 
			</tr> 
		</thead> 
		`; 
		$.each(N['load_balancer'], function(k, v){ 
			lb_table += ` 
			<tr> 
				<td> 
					`+v['lbid']+` 
				</td> 
				<td> 
					`+v['hostname']+` (`+v['vpsid']+`) 
				</td> 
				<td> 
					`+v['ip']+` 
				</td> 
				<td> 
					`+v['num_vps']+` 
				</td> 
				<td> 
					`+v['email']+` 
				</td> 
				<td> 
					`+v['sg_name']+` 
				</td> 
				<td> 
					<a onclick="loadpage('lb_uuid=`+v['vps_uuid']+`&act=manage_load_balancer');" title="Manage"><i class="fas fa-cog text-primary"></i></a> 
				</td> 
				<td> 
					<a href="javascript:void(0);" onclick="lb_delete('`+v['vps_uuid']+`')" title="Delete"><i class="fas fa-trash text-danger"></i></a> 
				</td> 
			</tr> 
			`; 
		}) 
	lb_table +=` 
	</table>`; 
	$("#lb_list").html(lb_table); 
	$("#lb_table").dataTable({ 
		'destroy': true, 
		'paging': false, 
		'columnDefs': [  
			{ 'targets': [7] }, // column index (start from 0) 
			{ "orderable": false, "targets": [6, 7] }, 
		], 
		'autoWidth': false, 
	}); 
	$("#lb_table_filter").parent().prev().addClass("pagination-top") 
	pageLinks("pagelinks_lb", 'act=load_balancer', N['page']); 
	 
} 
 
//////////////////////////// 
// Miscellaneous FUNCTIONS 
//////////////////////////// 
 
// Match the passwords 
function pass_match(pass1, pass2, msg_div){ 
	var newpass = $("#"+pass1).val(); 
	var conf = $("#"+pass2).val(); 
	if(newpass != conf){ 
		$("#"+msg_div).text("Passwords do not match"); 
		$("#"+msg_div).css("color", "red"); 
	}else{ 
		$("#"+msg_div).text(""); 
	} 
} 
 
// Sort Object 
function sortProperties(obj){ 
 
	// convert object into array 
	var sortable=[]; 
	for(var key in obj) 
		if(obj.hasOwnProperty(key)) 
			sortable.push(obj[key]); // each item is an array in format [key, value] 
 
	// sort items by value 
	sortable.sort(function(a, b){ 
		return	a.status - b.status; 
	}); 
 
	return sortable; // array in format [ [ key1, val1 ], [ key2, val2 ], ... ] */ 
}; 
 
function isDate(date, format){ 
 
	if(date == undefined){ 
		return false; 
	} 
 
	var match_format = format.split(/\/|-/); 
	var matchResult = date.split(/\/|-/); 
 
	if(matchResult == null){ 
		return false; 
	} 
 
	var monthResult = 0; 
	var dayResult = 0; 
	var yearResult = 0; 
 
	match_format.forEach(function(name, index){ 
		if(name == "mm"){ 
			monthResult = matchResult[index]; 
		}else if(name == "dd"){ 
			dayResult = matchResult[index]; 
		}else if(name == "yyyy"){ 
			yearResult = matchResult[index]; 
		} 
	}); 
 
	// Months containing 31 days 
	numDays = [4,6,9,11]; 
 
	if(monthResult < 1 || monthResult > 12){ 
		return false; 
	}else if(dayResult < 1 || dayResult > 31){ 
		return false; 
	}else if((numDays.indexOf(monthResult) != -1) && dayResult == 31){ 
		return false; 
	}else if(monthResult == 2){ 
		var isleap = (yearResult % 4 == 0 && (yearResult % 100 != 0 || yearResult % 400 == 0)); 
 
		if (dayResult> 29 || ((dayResult == 29) && !isleap)) 
			return false; 
	} 
 
	return true; 
}; 
 
// for generating the option based on Nos and element 
function appendOption(ele, nos){ 
 
	var html = ''; 
 
	for(var i=0;i<nos;i++){ 
		html += '<option value='+i+'>'+i+'</option>'; 
 
	}; 
	$(ele).append(html); 
}; 
 
function unit_convert(v){ 
 
	if(v <= 1024) 
		return Math.round(v) + " M"; 
	if(v > 1024 && v < (1024*1024)) 
		return Math.round(v /1024) + " G"; 
	if(v > (1024*1024)) 
		return Math.round(v / (1024*1024)) + " T" 
}; 
 
// Password strentgh related functions 
function passwordStrength(password1) { 
	 
	var shortPass = 1, badPass = 2, goodPass = 3, strongPass = 4, mismatch = 5, symbolSize = 0, natLog, score = 0; 
	var pass_strength = Array(); 
	//password < 4 
	if ( password1.length < 4 ){ 
		score = 9; 
		pass_strength = [shortPass, parseInt(score)]; 
		return pass_strength; 
	} 
 
	var strength = 0; 
	 
	if (password1.length > 7) strength += 1.5; 
			 
	//If password contains both lower and uppercase characters, increase strength value. 
	if (password1.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))	strength += 1.5;	 
	 
	//If it has numbers and characters, increase strength value. 
	if (password1.match(/([a-zA-Z])/) && password1.match(/([0-9])/))	strength += 1.5;	 
	 
	//If it has one special character, increase strength value. 
	if (password1.match(/([!,%,&,@,#,$,^,*,?,_,~])/) && password1.match(/([a-zA-Z])/))	strength += 1.5; 
	 
	//if it has two special characters, increase strength value. 
	if (password1.match(/(.*[!,%,&,@,#,$,^,*,?,_,~].*[!,%,&,@,#,$,^,*,?,_,~])/) && password1.match(/([a-zA-Z])/)) strength += 1.5; 
	 
	//If value is less than 2 
	if( strength < 2 ){ 
		pass_strength = [badPass, parseInt((strength/5)*100)];	 
		return pass_strength;	 
	} 
	 
	if (strength == 2 ){ 
		pass_strength = [goodPass, parseInt((strength/5)*100)];	 
		return pass_strength;	 
	}else{ 
		pass_strength = [strongPass, parseInt((strength/5)*100)]; 
		return pass_strength;	 
	} 
} 
 
function check_pass_strength(id) { 
 
	var pass = $("#"+id).val(); 
	var strength = Array(); 
 
	$("."+id+"_pass-strength").removeClass("short bad good strong"); 
 
	if (!pass) { 
		display_pass_strength("strength_indicator", 0, id); 
		return; 
	} 
 
	try{ 
 
		strength = passwordStrength(pass); 
		 
		if(strength[1] > 100) strength[1] = 100; 
 
		switch(strength[0]){ 
			case 1: 
				score = "bad";// For short password 
				display_pass_strength(score, strength[1], id); 
				break; 
			case 2: 
				score = "bad"; // For bad password 
				display_pass_strength(score, strength[1], id); 
				break; 
			case 3: 
				score = "good";// For good password 
				display_pass_strength(score, strength[1], id); 
				break; 
			case 4: 
				score = "strong";// For Strong password 
				display_pass_strength(score, strength[1], id); 
				break; 
		} 
	}catch(e){} 
}; 
 
function display_pass_strength(score, per, id){ 
 
	var lang; 
 
	if(typeof per == "undefined") per = 0; 
 
	if(score == "bad") lang = "Bad"; 
	if(score == "good") lang = "Good"; 
	if(score == "strong") lang = "Strong"; 
	if(score == "short") lang = "'Short"; 
	if(score == "strength_indicator") lang = "Strength Indicator"; 
 
	$("."+id+"_pass-strength").addClass(score).html(lang + "(" + per + "/100)"); 
}; 
 
function setpwd(size){ 
	var pwd = rand_pass(size); 
	$("#os_newpass").val(pwd); 
	$("#conf_pass").val(pwd); 
}; 
 
function copy_password(){ 
 
	var os_newpass = $("#os_newpass").val(); 
	$("#prompt-modal .modal-body").html(`<label for="password" class="form-label">Please copy the password at safe place</label><input type="text" class="form-control" value="${os_newpass}">`); 
	$("#prompt-modal").modal("show"); 
}; 
 
// Random password String with Special characters 
function rand_pass(length){ 
 
	var $string="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%&*"; 
	var $randpass = ""; 
 
	for ($i = 0; $i < length; $i++){ 
 
		$randpass += $string.charAt(Math.floor(Math.random() * $string.length)); 
	} 
 
	return $randpass; 
 
}; 
 
function getParameterByName(name, inHash) { 
 
	inHash = inHash || 0; 
	name = name.replace(/[\[]/, "\[").replace(/[\]]/, "\]"); 
	var regex = new RegExp("[\?&]" + name + "=([^&#]*)"), 
		results = regex.exec(inHash ? "?"+windowHASH() : location.search); 
	return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
}; 
 
function formatState (state) { 
	if (!state.id) { return state.text; } 
	var icon = $(state.element).data("icon"); 
	var $state = $( 
		"<span><img src=\"" + icon + "\" class=\"distro_img\" style=\"margin-right:5px\" /> " + state.text + "</span>" 
	); 
	return $state; 
}; 
 
$(document).ready(function(){ 
 
	$(".select2").select2({ width: '100%'}); 
 
	$(".pop").popover({ trigger: "manual" , html: true, animation:false}) 
		.on("mouseenter", function () { 
			var _this = this; 
			$(this).popover("show"); 
			$(".popover").on("mouseleave", function () { 
				$(_this).popover('hide'); 
			}); 
		}).on("mouseleave", function () { 
			var _this = this; 
			setTimeout(function () { 
				if (!$(".popover:hover").length) { 
					$(_this).popover("hide"); 
				} 
			}, 300); 
	}); 
 
	$('.cpinstall').click(function(){ 
 
		clicked_input = $(this).children().attr("name"); 
		$('#cp_ins').val(clicked_input); 
 
		modalConfirm(function(confirm){ 
			if(confirm){ 
				return submitit('installcp'); 
			}else{ 
				return false; 
			} 
		},'Are you sure you want to install this panel ? Data on the server will be altered significantly. This process will download and install the selected control panel on your VPS. This process can take up-to 90 minutes. You may follow the installation progress via SSH'); 
 
		return false; 
	}); 
 
	$('.login-password').click(function(){ 
		if($(this).hasClass('fa-eye')){ 
			$("#_password").attr("type","text"); 
			$(this).removeClass('fa-eye'); 
			$(this).addClass("fa-eye-slash"); 
		}else{ 
			$("#_password").attr("type","password"); 
			$(this).removeClass('fa-eye-slash'); 
			$(this).addClass("fa-eye"); 
		} 
	}); 
}); 
 
//Checks the entire range of checkboxes 
function check(field, checker){ 
	if(checker.checked == true){ 
		for(i = 0; i < field.length; i++){ 
			field[i].checked = true; 
		} 
	}else{ 
		for(i = 0; i < field.length; i++){ 
			field[i].checked = false; 
		} 
	} 
}; 
 
function res_lim(v){ 
	return (v < 1 ? '<i class="fas fa-infinity"></i>' : v); 
}; 
 
function res_ava(v, u){ 
	return (((v < 1) && (u < 1)) ? '<i class="fas fa-infinity"></i>' : v); 
}; 
 
function res_used(v){ 
	return (v); 
}; 
 
function get_zone_name(str){ 
	var name = str.replace("."+$('#domain_name').html(), ""); 
	return name; 
}; 
 
// Get the count of an object 
function count(obj){ 
	var count = 0; 
	var i; 
	for (i in obj) { 
		if (obj.hasOwnProperty(i)) { 
			count++; 
		} 
	} 
	return count; 
} 
 
var managemenuhider; 
 
function showmanagevpsmenu(vpsid){ 
	 
	if(managemenuhider){ 
		clearTimeout(managemenuhider); 
		hidemanagemenu(); 
	} 
	 
	$("#vpsmanagemenu_" + vpsid).css("display", "block"); 
 
} 
 
function hidemanagevpsmenu(){ 
	managemenuhider = setTimeout("hidemanagemenu()", 200); 
} 
 
function hidemanagemenu(){ 
	$(".vpsmanagemenu").css("display", "none"); 
} 
 
function showvpsmenu(vpsid){ 
	 
	if(menuhider){ 
		clearTimeout(menuhider); 
		hidevpsmenu(); 
	} 
	 
	var vpsmenustr = '<div id="vpsmenu_'+vpsid+'" class="vpsmenu" onmouseenter="clearTimeout(menuhider);" onmouseleave="hidemenu();"> \ 
				<div class="vpsmenubg px-2 text-left"><a href="javascript:void(0)"><i class="fa fa-play power-on" title="Start VPS" aria-hidden="true" onclick="jqueryvpsboot(\'start\', \'stat_'+vpsid+'\', '+vpsid+');"></i></a> \ 
				<a href="javascript:void(0)"><i class="fa fa-stop stop" aria-hidden="true" title="Stop VPS" onclick="jqueryvpsboot(\'stop\', \'stat_'+vpsid+'\', '+vpsid+')"></i></a> \ 
				<a href="javascript:void(0)"><i class="fas fa-sync-alt refresh" aria-hidden="true" title="Restart VPS" onclick="jqueryvpsboot(\'restart\', \'stat_'+vpsid+'\', '+vpsid+')"></i></a> \ 
				<a href="javascript:void(0)"><i class="fa fa-power-off power-off" title="Poweroff VPS" onclick="jqueryvpsboot(\'poweroff\', \'stat_'+vpsid+'\', '+vpsid+')" aria-hidden="true"></i></a>'; 
	vpsmenustr += (!empty(N['info']['flags']['novnc']) ? '<a id="novncURL_'+vpsid+'" class="vncButton" href="index.php?&act=vnc&novnc=1&jsnohf=1&svs='+ vpsid +'" target="_blank"><img style="padding-left:4px" src="themes/default/images/vnc.png" title="Launch NoVNC viewer"/></a>' : (empty(N['info']['flags']['disable_java_vnc']) ? '<a href="javascript:void(0);" id="java_vnc_'+vpsid+'" class="vncButton" onclick="launchjvnc('+vpsid+')"><img style="padding-left:4px;" src="themes/default/images/vnc.png" title="Launch JavaVNC viewer"/></a>' : ''))+'</div></div>'; 
	 
	$("#stat_"+vpsid).append(vpsmenustr); 
	 
	if(vnc_vm.indexOf(vpsid.toString()) > -1){ 
		$("#novncURL_"+vpsid+", #java_vnc_"+vpsid).show(); 
	}else{ 
		$("#novncURL_"+vpsid+", #java_vnc_"+vpsid).hide(); 
	} 
 
	if(N['vs'][vpsid]['status'] == 1){ 
		$(".vpsmenubg .power-on").hide(); 
	} 
 
	if(N['vs'][vpsid]['status'] == 0){ 
		$(".vpsmenubg .power-off").hide(); 
		$(".vpsmenubg .stop").hide(); 
		$(".vpsmenubg .vncButton").hide(); 
		$(".vpsmenubg .refresh").hide(); 
	} 
	 
	$("#vpsmenu_"+vpsid).css("display","block"); 
}; 
 
var menuhider; 
function hidemenu(){ 
	menuhider = setTimeout("hidevpsmenu()", 500); 
}; 
 
function hidevpsmenu(){ 
	$(".vpsmenu").css("display", "none"); 
}; 
 
function changevpsstatus(vpsid, status, net_status){ 
	 
	if(status == 0){ 
		 
		$("#stat_" + vpsid).html('<i class="fa fa-circle stop"></i>'); 
 
		$("#sus_" + vpsid).html('&nbsp;<a href="#"><img src="themes/default/images/blank_page.gif" /></a>&nbsp;'); 
		 
		$("#net_sus_" + vpsid).html('&nbsp;<a href="#"><img src="themes/default/images/blank_page.gif" /></a>&nbsp;'); 
 
	}else if(status == 1){ 
		 
		$("#stat_" + vpsid).html('<i class="fas fa-circle start" title="Online"></i>'); 
 
		$("#sus_" + vpsid).html('&nbsp;<a title="{{lst_lv_suspendvs}}" onclick="vpsaction(\'suspend\', '+vpsid+');"><i class="fa fa-pause fa-1x suspend"></i></a>&nbsp;'); 
		 
		$("#net_sus_" + vpsid).html((net_status == 0 ? '&nbsp;<a title="Suspend VPS network" onclick="vpsaction(\'network_suspend\', '+vpsid+');"><img src="themes/default/images/admin/disconnect.png" /></a>&nbsp;' : '&nbsp;<a title="Unsuspend VPS network" onclick="vpsaction(\'network_unsuspend\', '+ vpsid +');"><img src="themes/default/images/admin/connect.png" /></a>&nbsp;')); 
 
	}else if(status == 2){ 
		 
		$("#stat_" + vpsid).html('<i class="vpslist fa fa-circle suspend" title="Suspended"></i>'); 
 
		$("#sus_" + vpsid).html('&nbsp;<a title="{{lst_lv_unsuspendvs}}" onclick="vpsaction(\'unsuspend\', '+vpsid+');"><img src="themes/default/images/admin/unsuspend.png" /></a>&nbsp;'); 
		 
		$("#net_sus_" + vpsid).html('&nbsp;<a href="#"><img src="themes/default/images/blank_page.gif" /></a>&nbsp;'); 
	} 
}; 
 
function checkbox_select_all(el){ 
	 
	var checked = $(el).is(':checked'); 
	 
	$('.ios').each(function(){ 
		$(this).prop("checked", checked); 
	}); 
} 
 
function toggle_advoptions(ele, ele2){ 
	//alert("#"+ele); 
	ele2 = ele2 || 0; 
	if ($("#"+ele).is(":hidden")){ 
		$("#"+ele).slideDown("slow"); 
		if (ele2 != 0){ 
			$("#"+ele2).html('<i class="fas fa-1x fa-minus-square mr-2"></i>') 
		} 
	}else{ 
		$("#"+ele).slideUp("slow"); 
		if(ele2 != 0){ 
			$("#"+ele2).html('<i class="fa fa-1x fa-plus-square mr-2"></i>') 
			 
		} 
	} 
}; 
 
function plus_onmouseover(ele){ 
	$("#"+ele.id+"_plus").attr("src", "themes/default/images/admin/plus_hover.gif"); 
}; 
 
function plus_onmouseout(ele){ 
	$("#"+ele.id+"_plus").attr("src", "themes/default/images/admin/plus.gif"); 
}; 
 
function li_adduser(){ 
	var uid = parseInt($_("li_uid").value); 
	if(uid < 1){ 
		$("#li_user_details").show(); 
	}else{ 
		$("#li_user_details").hide(); 
	} 
}; 
 
// Called once the region is selected. Lists all plans available within the selected region 
function ihb_list_plans(sgid){ 
	 
	// Make sure the divs are visible 
	$('#ihb_div').show(); 
	$('#ihb_no_pl').hide(); 
	$("#ihb_plans .ihb_plans_container").hide(); 
	$(".lb_ihb_plans_container").hide(); 
	 
	$('#ihb_sel_plan').html(N["servergroups"][sgid]['sg_reseller_name']); 
	 
	// Make the list of plans 
	var html = ''; 
	var lb_html = ''; 
	var pricing = {}; 
	var tempi = 0; 
		 
	// Is there an ALL regions plan 
	if(!empty(N['pricing'][-1])){		 
		pricing = jQuery.extend(true, {}, N['pricing'][-1]);	 
	} 
	 
	// Override rates for the selected plans 
	if(!empty(N['pricing'][sgid])){ 
		for(y in N['pricing'][sgid]){ 
			pricing[y] = N['pricing'][sgid][y]; 
		} 
	} 
	 
	// Is there any plan 
	if(empty(pricing)){ 
		$('#ihb_no_pl').show(); 
		$('.adv_border').hide(); 
		$('#the_creator').hide(); 
	}else{ 
		for(y in pricing){ 
			var x = pricing[y]['plid']; 
			if(empty(N["plans"][x])){ 
				continue; 
			} 
			var bandwidth = (N["plans"][x]["bandwidth"] == 0 ? '<i class="fas fa-infinity"></i> ': N["plans"][x]["bandwidth"]+'GB'); 
			var download_speed = (N["plans"][x]["network_speed"] == 0 ? '<i class=\'fas fa-infinity\'></i>' : N["plans"][x]["network_speed"] + ' KBps'); 
			var upload_speed = (N["plans"][x]["upload_speed"] == -1 ? download_speed : (N["plans"][x]["upload_speed"] == 0 ? '<i class=\'fas fa-infinity\'></i>' : N["plans"][x]["upload_speed"]+' KBps')); 
 
			tooltip = classname = ''; 
 
			if((N["plans"][x]['plan_name']).length >= 18){ 
				tooltip = 'tooltip="'+N["plans"][x]['plan_name']+'"'; 
				classname = 'wrap'; 
			} 
 
			//if load balancer plan is there then make tab wise selection 
			if(!empty(N["plans"][x]['load_balancer'])){ 
				lb_html += '<div class="col-lg-2 col-md-4 col-sm-6 mb-3">'; 
				lb_html += '<div class="card ihb_regpl" onclick="ihb_select_plan(this, 1)" id="ihb_pl_'+sgid+'_'+x+'">'; 
				lb_html += '<div class="ihb_regpl_selected"></div>'; 
				lb_html += '<div class="ihb_regpl_name text-center"><span class="d-inline-block mr-2"></span><label class="plan-title d-inline-block mb-1 '+classname+'" '+tooltip+'>'+N["plans"][x]['plan_name']+'</label>'; 
				lb_html += '<div class="ihb_regpl_pricing px-3">'; 
				lb_html += '<div class="ihb_pl_mprice_main">'; 
				lb_html += '<span class="ihb_pl_mprice">'+N['billing_symbol']+parseFloat(pricing[y]['m_rate']).toFixed(2)+'/mo</span><br/>'; 
				lb_html += '</div>'; 
				lb_html += '<div class="ihb_pl_hprice_main">'; 
				lb_html += '<span class="ihb_pl_hprice">'+N['billing_symbol']+parseFloat(pricing[y]['h_rate'])+'/Hour</span>'; 
				lb_html += '</div>'; 
				lb_html += '</div>'; 
				lb_html += '</div>'; 
				lb_html += '<div class="ihb_regpl_dat p-2">'; 
				lb_html += '<div><span class="ihb_rpd_val mr-1">'+N["plans"][x]["cores"]+'</span><span>CPU</span></div>'; 
				lb_html += '<div><span class="ihb_rpd_val mr-1">'+N["plans"][x]["ram"]+' MB</span><span>Ram</span></div>'; 
				lb_html += '<div><span class="ihb_rpd_val mr-1">'+N["plans"][x]["space"]+' GB</span><span>Disk</span></div>'; 
				lb_html += '<div><span class="ihb_rpd_val mr-1">'+bandwidth+'</span> Bandwidth</span><span class="info-text ml-1" tooltip="Download Speed : '+download_speed+'<br>Upload Speed : '+upload_speed+'"><i class="fa fa-info-circle" aria-hidden="true"></i></span></div>'; 
				lb_html += '</div>'; 
				lb_html += '</div>'; 
				lb_html += '</div>'; 
			}else{ 
				html += '<div class="col-lg-2 col-md-4 col-sm-6 mb-3">'; 
				html += '<div class="card ihb_regpl" onclick="ihb_select_plan(this)" id="ihb_pl_'+sgid+'_'+x+'">'; 
				html += '<div class="ihb_regpl_selected"></div>'; 
				html += '<div class="ihb_regpl_name text-center"><span class="d-inline-block mr-2"></span><label class="plan-title d-inline-block mb-1 '+classname+'" '+tooltip+'>'+N["plans"][x]['plan_name']+'</label>'; 
				html += '<div class="ihb_regpl_pricing px-3">'; 
				html += '<div class="ihb_pl_mprice_main">'; 
				html += '<span class="ihb_pl_mprice">'+N['billing_symbol']+parseFloat(pricing[y]['m_rate']).toFixed(2)+'/mo</span><br/>'; 
				html += '</div>'; 
				html += '<div class="ihb_pl_hprice_main">'; 
				html += '<span class="ihb_pl_hprice">'+N['billing_symbol']+parseFloat(pricing[y]['h_rate'])+'/Hour</span>'; 
				html += '</div>'; 
				html += '</div>'; 
				html += '</div>'; 
				html += '<div class="ihb_regpl_dat p-2">'; 
				html += '<div><span class="ihb_rpd_val mr-1">'+N["plans"][x]["cores"]+'</span><span>CPU</span></div>'; 
				html += '<div><span class="ihb_rpd_val mr-1">'+N["plans"][x]["ram"]+' MB</span><span>Ram</span></div>'; 
				html += '<div><span class="ihb_rpd_val mr-1">'+N["plans"][x]["space"]+' GB</span><span>Disk</span></div>'; 
				html += '<div><span class="ihb_rpd_val mr-1">'+bandwidth+'</span> Bandwidth</span><span class="info-text ml-1" tooltip="Download Speed : '+download_speed+'<br>Upload Speed : '+upload_speed+'"><i class="fa fa-info-circle" aria-hidden="true"></i></span></div>'; 
				html += '</div>'; 
				html += '</div>'; 
				html += '</div>'; 
			} 
			tempi++; 
		} 
		 
		// If no valid plans found for selected region 
		if(html == ''){ 
			$('#ihb_no_pl').show(); 
			$('.adv_border').hide(); 
			$('#the_creator').hide(); 
		}else{ 
			$(".ihb_plans_container").eq(0).html('<h4 class="my-3 col-md-12 m-0">Available Plans</h4>'+html); 
			$(".ihb_plans_container").show(); 
			$("#the_creator").show(); 
		} 
		 
		if(!empty(lb_html)){ 
			$("#lb_tr_hostname").hide(); 
			$(".lb_ihb_plans_container").eq(0).html('<h4 class="my-3 col-md-12 m-0">Available Plans</h4>'+lb_html); 
			$("#lb_create").show(); 
			$(".lb_ihb_plans_container").show(); 
		}else{ 
			$("#lb_create").hide(); 
		} 
 
		$("#lb_add_div").html(''); 
		if("load_balancer" in N && !empty(N['load_balancer'][sgid])){ 
			lb_html = ` 
				<div class="col-sm-12"> 
					<label>Select Load Balancer&nbsp;<a class="info" data-placement="right" tooltip="Load Balancer is not supported for windows VPS"><i class="fas text-primary fa-info-circle"></i></a></label><br> 
					<select name="load_balancer" class="custom-select"> 
						<option value="0">None</option>`; 
					 
			$.each(N['load_balancer'][sgid], function(k, lb){ 
				lb_html += '<option value="'+lb['vps_uuid']+'">'+lb['vpsid']+' - '+lb['hostname']+'</option>'; 
			}); 
			lb_html += `</select> 
			</div>`; 
			$("#lb_add_div").html(lb_html); 
		} 
 
	} 
 
	showtooltip(); 
	 
	// Show and scroll 
	$("#ihb_plans").show(); 
	$("#ihb_plans")[0].scrollIntoView({behavior: "smooth"}); 
	 
} 
 
// Is called when the user selects a plan 
function ihb_select_plan(plan, is_lb = 0){ 
	 
	// Remove selected plan class from previous plan 
	$(".ihb_regpl").removeClass('ihb_slctd_pl'); 
	 
	// Add selected plan class to this plan 
	$(plan).addClass('ihb_slctd_pl'); 
	 
	// Get the Plan ID 
	var plid = $(plan).attr('id').split('_')[3]; 
	 
	if(empty(is_lb)){ 
		$('#plid').val(plid); 
		$('#virt').val(N["plans"][plid]["virt"]); 
		fill_ostemplates(); 
		$("#network_speed").val(N['plans'][plid]['network_speed']); 
		$("#upload_speed").val(N['plans'][plid]['upload_speed']); 
		if(N['resources']['network_speed'] > -1){ 
			$("#adv_options").show(); 
		} 
	}else{ 
		$('#lb_plid').val(plid); 
		$('#lb_uid').val(N['uid']); 
	} 
 
	 
	var id = $(plan).attr('id'); 
	var val = $('#'+id).find('.plan-title').text(); 
	$('#hostname-1').val(val.toLowerCase().replace(/ /g,'-').replace(/[^\w-]+/g,'')); 
 
	$(".create_common").show();	 
 
	if(!empty(is_lb)){ 
		$("#lb_tr_hostname").show(); 
	}else{ 
		if(empty(N['disable_webuzo'])){ 
			$("#webuzo_show_tr").show(); 
		} 
		$("#tr_rootpass").show(); 
		$("#tr_uid").show(); 
		$("#tr_os").show(); 
		$("#tr_vm_count").show(); 
		$("#ssh_options_div").show(); 
		$("#lb_add_div").show(); 
		$("#disable_password").show(); 
	} 
	$(".create_common")[0].scrollIntoView({behavior: "smooth"}); 
	 
	 
} 
 
// Parse the form 
function fill_virts(prefix){ 
	prefix = prefix || ''; 
	var sgid = parseInt($("#"+prefix+"sgid").val()); 
 
	var allowed_virts = new Object(); 
 
	// Show the virts 
	if(sgid < 0){ 
		return false; 
	} 
 
	var virts = N["servergroups"][sgid]["virts"]; 
 
	for(V in virts){ 
		try{ 
			if(N["resources"]["allowed_virts"][virts[V]]){ 
				allowed_virts[virts[V]] = virts[V]; 
			} 
		}catch(e){} 
	} 
 
	var allowed_virts_html = ''; 
 
	for(virt in allowed_virts){ 
 
		var selected = N['set_def_hvm'] == 1 && virt.toLowerCase().search('hvm') != -1 ? "selected='selected'" : ''; 
 
		allowed_virts_html += '<option value="'+virt+'" id="virt_'+virt+'" '+selected+'>'+N['virt_lang'][virt]+'</option>'; 
	} 
 
	$("#"+prefix+"virt").html(allowed_virts_html); 
 
	// Also try to fill OS Templates now 
	fill_ostemplates(); 
	 
	// Also list region plans and their pricing 
	if(!empty(N['inhouse_billing'])){ 
		ihb_list_plans(sgid); 
	} 
}; 
 
function merge_array(array1, array2) { 
	var result_array = []; 
	var arr = array1.concat(array2); 
	var len = arr.length; 
	var assoc = {}; 
 
	while(len--) { 
		var item = arr[len]; 
 
		if(!assoc[item])  
		{  
			result_array.unshift(item); 
			assoc[item] = true; 
		} 
	} 
 
	return result_array; 
} 
 
// Fills the virts 
function fill_ostemplates(prefix){ 
 
	$(".adv_border").hide(); 
	if(typeof prefix == "undefined"){ 
		prefix = ''; 
	} 
	 
	$("#"+prefix+"tr_nic").hide(); 
	 
	if(empty(prefix)){ 
		generate_vnc_pass('vncpass1', $('#createform').find('#virt').val()); 
	} 
 
	var plid; 
	var mgs_array = []; 
 
	$('.ihb_regpl').each(function(){ 
		if($(this).hasClass('ihb_slctd_pl')){ 
			plid = $('.ihb_slctd_pl').attr('id').split('_')[3]; 
			var mgs = N['plans'][plid]['mgs']; 
 
			if(empty(mgs)){ 
				return mgs_array; 
			} 
 
			mgs_array = mgs.split(','); 
 
			mgs_array = $.map(mgs.split(','), function(value){ 
				return parseInt(value); 
				// or return +value; which handles float values as well 
			}); 
 
		} 
	}); 
	 
	prefix = prefix || ''; 
 
	var virt = $("#"+prefix+"virt").val(); 
 
	// if virt is empty take it from selected plan 
	if(empty(virt) && !empty(plid)){ 
		virt = N['plans'][plid]['virt']; 
	} 
	 
	var user_mgs = N['user_mgs'] ? N['user_mgs'] : []; 
 
	var tmp_mgs = []; 
 
	tmp_mgs = !empty(mgs_array) ? mgs_array : merge_array(user_mgs, mgs_array); 
 
	var temp = []; 
 
	var os_badge = ` 
	<div class="col-12 col-lg-2 col-md-3 col-sm-6	mb-3"> 
		<div class="create_os text-center rounded"> 
			<button class="btn dropdown dropdown-toggle border-0 w-100 p-0" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 
				<div class="media-left p-1"> 
					<img class="distro_img media-object" src=""> 
				</div> 
				<div class="media-body p-2"> 
					<h4 class="distro_name"></h4> 
				</div> 
				 
				<div class="media-footer p-2"> 
					<div class="version pop" title="" data-aniamtion="true" data-toggle="popover" data-content="" data-original-title=""></div> 
				</div> 
			</button> 
			<div class="os_badge_list dropdown-menu w-100"></div> 
		</div> 
	</div>`; 
 
	$("#"+prefix+"osid-box").html(''); 
	var oslist = []; 
 
	// Now show the allowed templates 
	for(x in N["ostemplates"]){ 
		if(virt != N["ostemplates"][x]["Nvirt"]){ 
			continue; 
		} 
 
		if(tmp_mgs.length > 0){ 
			for(var i = 0; i < tmp_mgs.length; i++) { 
 
				if(jQuery.inArray(parseInt(tmp_mgs[i]), N['ostemplates'][x]['mg']) !== -1){ 
 
					if(jQuery.inArray(x, temp) !== -1){ 
						continue; 
					} 
 
					temp.push(x); 
 
					var distro_name = (N["ostemplates"][x]['distro'] == '') ? 'Other' : N["ostemplates"][x]['distro']; 
 
					if(typeof(oslist[distro_name]) === 'undefined'){ 
						oslist[distro_name] = []; 
					} 
					oslist[distro_name][x] = N["ostemplates"][x]; 
 
				} 
			} 
		} 
 
		if(tmp_mgs.length == 0){ 
 
 
			var distro_name = (N["ostemplates"][x]['distro'] == '') ? 'Other' : N["ostemplates"][x]['distro']; 
 
			if(typeof(oslist[distro_name]) === 'undefined'){ 
				oslist[distro_name] = []; 
			} 
			 
			oslist[distro_name][x] = N["ostemplates"][x]; 
 
		} 
 
	} 
 
	if(empty(oslist)){ 
		$("#"+prefix+"osid-box").html(`<div class="col-12"><div class="notice">There are no OS templates available</div></div>`); 
	} 
 
	for(x in oslist){ 
 
		if(oslist[x] != ''){ 
 
			var distro_name = ''; 
			var distro_img = ''; 
 
			if(x == ''){ 
				distro_name = 'Other'; 
				distro_img = 'themes/default/images/others_60.png'; 
			}else{ 
				distro_name = x; 
				distro_img = `themes/default/images/${x}_60.png`; 
			} 
 
			var $os_select = $(os_badge).clone(); 
			 
			$os_select.find('.distro_img').attr('src', distro_img); 
			$os_select.find('.distro_name').text(distro_name); 
			 
			var os_ids = Object.keys(oslist[x]); 
			 
			// Show dropdown only if distro has more than 1 template 
			if(os_ids.length > 1) { 
				for(os in oslist[x]) { 
					$os_select.find('.os_badge_list').append('<a href="#" data-os="'+os+'" onclick="return false;">'+oslist[x][os]['name']+'</a>'); 
					$os_select.find('.version').text('SELECT VERSION'); 
				} 
			} else { 
 
				var os_id = os_ids[0]; 
 
				var div = $os_select.find('.create_os button'); 
				var tmp = $os_select.find('.create_os button').children().clone(); 
				var parent = div.parent(); 
				div.remove(); 
				tmp.appendTo(parent); 
 
				$os_select.find('.version').text(oslist[x][os_id]['name']); 
				$os_select.find('.create_os').attr('data-os', os_id); 
				$os_select.find('.os_badge_list').remove(); 
			} 
 
			$("#"+prefix+"osid-box").append($os_select); 
		} 
	} 
 
	os_badges('osid-box', 'osid'); 
 
	// Show stuff or not 
	if(virt == "openvz" || virt == "lxc" || virt == "vzo"){ 
		$("#"+prefix+"vncrow").hide(); 
		$("#"+prefix+"tr_iso").hide(); 
	}else{ 
		$("#"+prefix+"vncrow").show(); 
		$("#"+prefix+"tr_iso").show(); 
	} 
	 
	if(virt == "vzo"){ 
		$("#"+prefix+"vncrow").show(); 
	} 
	 
	var virt_swap = ["lxc", "proxl", "proxk", "kvm", "vzk", "xcp", "vzo"]; 
 
	if(virt == "openvz" || virt == "proxo"){ 
		$("#"+prefix+"tr_burst").show(); 
		$("#"+prefix+"tr_swap").hide();		 
	}else if(virt_swap.includes(virt)){ 
		$("#"+prefix+"tr_burst").hide(); 
		$("#"+prefix+"tr_swap").show(); 
	} 
	 
	if(virt == "kvm" && N['resources']['cloud_allow_virtio'] == 1){		 
		$('#'+prefix+'tr_virtio, #'+prefix+'disk-tab').show(); 
	}else{ 
		$("#"+prefix+"tr_virtio").hide(); 
	} 
 
	// if(!empty(N['resources']['enable_iops_sec']) && virt == 'kvm'){ 
	// 	$(".iops_sec").show(); 
	// }else{ 
	// 	$(".iops_sec").hide(); 
	// } 
	 
	if(!empty(N['nic_support']) && !empty(N['nic_support'][virt]) && !empty(N['enable_nic'])){ 
		var nic_type_list = ''; 
		 
		for(x in N['nic_type'][virt]){ 
			curnic = ''; 
			if(!empty(prefix)){ 
				if(x === N['vps']['nic_type']){ 
					var curnic = "selected=selected"; 
				} 
			}else if(x === 'e1000'){ 
				var curnic = "selected=selected"; 
			} 
			 
			nic_type_list += '<option value="'+ x +'" '+curnic+'>'+N['nic_type'][virt][x]+'</option>'; 
		} 
	 
		$("#"+prefix+"nic").html(nic_type_list); 
		$("#"+prefix+"tr_nic").show(); 
	} 
	 
	//re_height(); 
	$(".adv_border").show(); 
	$('#cpu-tab').hide(); 
	$('#disk-tab').hide(); 
 
	$('#networking-tab').trigger('click'); 
 
	show_adv_options("#create", virt); 
 
}; 
 
hide_on_tabs_action('tr_iso', 'tr_bios'); 
 
//hides the element on particaluar nav tab action 
function hide_on_tabs_action(hide_action_id, prefix = ''){ 
 
	$( document ).ready(function() { 
		$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { 
			$("#"+prefix).hide(); 
			if($("#"+hide_action_id).hasClass('active')){ 
				$("#"+prefix).show(); 
			} 
  		}); 
	}); 
 
}; 
 
function checkvnc(prefix){ 
 
	var prefix = prefix || ''; 
 
	if(!$_(prefix+"vnc")){ 
		return false; 
	} 
 
	if($_(prefix+"vnc").checked){ 
		$("#"+prefix+"vncpassrow").slideDown(300); 
	}else{ 
		$("#"+prefix+"vncpassrow").slideUp(300); 
	} 
 
	//re_height(); 
}; 
 
function is_only_one(prefix){ 
 
	prefix = prefix || ''; 
 
	var i = 0; 
	var sgid = 0; 
	for(x in N["servergroups"]){ 
		sgid = x; 
		i++; 
	} 
 
	// There is ONLY one region 
	if(i == 1){ 
		$("#"+prefix+"sgid_"+sgid).prop("selected", true); 
		fill_virts(prefix); 
		$("#"+prefix+"tr_regions").hide(); 
 
	}else if( i > 1 && !empty(prefix)){ 
		$("#"+prefix+"tr_regions").show(); 
		ihb_list_plans(N["servergroups"][0]["sgid"]); 
	} 
 
	// If only one virt is allowed 
	var virts_total = 0; 
	$("#"+prefix+"virt option").each(function(){ 
		if($(this).attr("disabled")) return; 
		virts_total++; 
	}); 
 
	if(virts_total == 1){ 
		$("#"+prefix+"virt option").each(function(){ 
			if($(this).attr("disabled")) return; 
			$(this).prop("selected", true); 
		}); 
		$("#"+prefix+"tr_virts").hide(); 
	} 
 
	//alert($("#virt").val()); 
 
}; 
 
// Makes data for graphs 
function makedata(data, date){ 
	var fdata = []; 
	i = 1; 
	 
	date = date || ''; 
	// For date we need to modify the data 
	if(!empty(date)){ 
		for (x in data){ 
			var year = x.substring(0, 4); 
			var month = x.substring(4, 6); 
			var day = x.substring(6, 8); 
			var date = new Date(year+'-'+month+'-'+day); 
			fdata.push([date, data[x]]); 
			i++; 
		} 
	}else{ 
		for (x in data){ 
			fdata.push([i, data[x]]); 
			i++; 
		} 
	} 
	 
	return fdata; 
}; 
 
// Show tooltip for graphs 
function showTooltip(x, y, contents) { 
	$('<div id="tooltip">' + contents + '</div>').css( { 
		position: "absolute", 
		display: "none", 
		top: y + 20, 
		left: x - 20, 
		border: "1px solid #CCCCCC", 
		padding: "2px", 
		background: "#1E1E1E", 
		color:"white", 
		"z-index" : 10000, 
		opacity: 0.80 
	}).appendTo("body").fadeIn(200); 
}; 
 
function Hidedata(){ 
 
	var default_hidden_t2 = ["lmcreate", "lmcloudres", "lmusers"]; 
 
	// Are you Admin ? 
	if("orig_uid" in N){ 
		$('#orig_uid').show(); 
	} 
 
	if('support_link' in N){ 
		$('#lmsupport').attr('href', N['support_link']); 
		$('#lmsupport').show(); 
	} 
 
	// Does this user have access to rDNS ? 
	if("rdns" in N){ 
		$('#lmrdns').show(); 
	} 
	 
	// Does this user have access to 2FA ? 
	if("enable_2fa" in N){ 
		$('#lmtwofactauth').show(); 
	} 
 
	// Does this user have access to pdns ? 
	if("pdns" in N){ 
		$('#lmpdns').show(); 
	} 
 
	// Do we have to show API credentials ? 
	if(empty(N["disable_apicredential"])){ 
		$('#lmapikey').show(); 
	} 
 
	// Do we have to show API credentials ? 
	if(N["uid"] > 0){ 
		$('.disable_loginlogo').show(); 
	} 
 
	// Id user type is 2 than show else dont show 
	for(x in default_hidden_t2){ 
		if(N['user_type'] == 2){ 
			$('#'+default_hidden_t2[x]).show(); 
		}else{ 
			$('#'+default_hidden_t2[x]).hide(); 
		} 
	} 
 
	 // Is this user a billing user ? 
	 if (!empty(N['inhouse_billing'])) { 
		 $('#lmbilling').show(); 
		 $('#lmcloudres').hide(); 
		if(!("disable_volume_enduser" in N)){ 
			$("#lmvolume").show(); 
		} 
		if(!("disable_lb_enduser" in N) && ("check_licensepro" in N) && !empty(N['check_licensepro'])){ 
			$("#lmloadbalancer").show(); 
		} 
	 } 
 
	 if (("enable_eu_iso" in N)) { 
		 $('#lmeuiso').show(); 
	 } 
 
	if(!("disable_webuzo" in N)){ 
		$('#lmapps').show(); 
	} 
	 
	// Are we suppose to show the iso option for HVM? 
	if(!empty(N["info"]) && ("iso_support" in N["info"]["flags"]) && (N["info"]["flags"]["iso_support"] <= 0)){ 
		$('#lmeuiso').hide(); 
	} 
 
	// Does this user have access to backup servers ? 
	/* if(!("disable_backup_cp" in N)){ 
		$('#lmbackupservers').show(); 
	} */ 
 
	if(!("disable_enduser_sshkeys" in N)){ 
		$('#lmsshkeys').show(); 
	} 
} 
 
function ucfirst(str){ 
	str += ''; 
	var f = str.charAt(0).toUpperCase(); 
	return f + str.substr(1); 
} 
 
 
// Encrypt the Login password 
function login_pass(field, doreset){ 
	field = field || "password"; 
	doreset = doreset || 0; 
 
	var md5 = $().crypt({method:"md5",source:$("#_"+field).val()}); 
	if(!md5) { 
		md5 = ''; 
	} 
	$("#"+field).val(md5); 
 
	// Reset the field ? 
	if(doreset){ 
		$("#_"+field).val(""); 
	} 
}; 
 
// Get the selected files and folders to be restored 
function getSelectedRestore(){ 
 
	var arr = new Array(); 
 
	$("#srfile_list_table input:checked").each(function(){ 
		var tmp = $(this).attr('name').substr(3); 
		arr.push(tmp); 
	}); 
 
	return arr; 
 
}; 
 
// Show the Server restore window to restore on the server 
function ShowServerRestore(){ 
 
	// Selected files and folders 
	var fnf = getSelectedRestore(); 
 
	// Check if anything is selected or not 
	if(fnf.length < 1){ 
		error_alert("{{res_nothing_sel}}"); 
		return; 
	} 
}; 
 
// Show the Device restore window to restore on the server 
function ShowDeviceRestore(){ 
 
	// Selected files and folders 
	var fnf = getSelectedRestore(); 
 
	// Check if anything is selected or not 
	if(fnf.length < 1){ 
		error_alert("{{res_nothing_sel}}"); 
		return; 
	} 
}; 
 
// Starts the server restore process 
function doRestore(device){ 
 
	device = device || 0; 
 
	// Selected files and folders 
	var fnf = getSelectedRestore(); 
 
	// Check if anything is selected or not 
	if(fnf.length < 1){ 
		error_alert("{{res_nothing_sel}}"); 
		return; 
	} 
 
	// Get the data of this snapshot 
	var tmp = $("#shres_data").val(); 
	tmp = tmp.split("-"); 
 
	// Path where we have to restore 
	var respath = encodeURIComponent((device > 0 ? $("#res_devpath").val() : $("#res_serpath").val())); 
 
	var url = 'index.php?api=json&act=dashboard&snapid='+tmp[0]+'&parentid='+tmp[1]+'&restore='+fnf.join(",")+'&'+(device > 0 ? 'devicepath' : 'serverpath')+'='+respath+'&random='+Math.random(); 
 
	//alert(url);return; 
 
	// Make the request to restore 
	$.getJSON(url, function(rdata) { 
		if(typeof(rdata["error"]) != 'undefined'){ 
			error(rdata["error"]); 
		} 
 
		// Are we to show a success message ? 
		if(typeof(rdata["done"]) != 'undefined'){ 
			done(rdata["done"]); 
		} 
	}); 
}; 
 
// Parse the File Type 
function Ftype(ftype){ 
	t_0 = '{{file_type_0}}'; 
	t_1 = '{{file_type_1}}'; 
	t_2 = '{{file_type_2}}'; 
	t_3 = '{{file_type_3}}'; 
	t_4 = '{{file_type_4}}'; 
	t_5 = '{{file_type_5}}'; 
	t_6 = '{{file_type_6}}'; 
	t_7 = '{{file_type_7}}'; 
	return eval('t_'+ftype); 
}; 
 
// Return the Size 
function Fsize(size){ 
 
	// GB 
	if(size > 1073741824){ 
		return Math.round(size / 1073741824)+' G'; 
	} 
 
	// MB 
	if(size > 1048576){ 
		return Math.round(size / 1048576)+' M'; 
	} 
 
	// KB 
	if(size > 1024){ 
		return Math.round(size / 1024)+' K'; 
	} 
 
	// Bytes 
	return size+' B'; 
}; 
 
// Clean the action to make it more presentable 
function cleanAction(txt){ 
	txt = txt.replace('_', ' '); 
	return ucwords(txt); 
}; 
 
function showtooltip(){ 
	$('[tooltip]').tooltip({ 
		trigger : 'hover', 
		html: true, 
		title: function(ele){ 
			return '<div class="w-100">'+$(this).attr("tooltip")+'</div>';	 
		}, 
		animation:true 
	}); 
} 
 
// Time in VPS Manage 
$(document).ready(function() { 
	$('.dash-tabs').responsiveTabs(); 
	 
	showtooltip(); 
 
// Create two variable with the names of the months and days in an array 
var monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; 
var dayNames= ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"] 
 
// Create a newDate() object 
var newDate = new Date(); 
// Extract the current date from Date object 
newDate.setDate(newDate.getDate()); 
// Output the day, date, month and year 
$('#Date').html(dayNames[newDate.getDay()] + " " + newDate.getDate() + ' ' + monthNames[newDate.getMonth()] + ' ' + newDate.getFullYear()); 
 
setInterval( function() { 
	// Create a newDate() object and extract the seconds of the current time on the visitor's 
	var seconds = new Date().getSeconds(); 
	// Add a leading zero to seconds value 
	$("#sec").html(( seconds < 10 ? "0" : "" ) + seconds); 
	},1000); 
 
setInterval( function() { 
	// Create a newDate() object and extract the minutes of the current time on the visitor's 
	var minutes = new Date().getMinutes(); 
	// Add a leading zero to the minutes value 
	$("#min").html(( minutes < 10 ? "0" : "" ) + minutes); 
	},1000); 
 
setInterval( function() { 
	// Create a newDate() object and extract the hours of the current time on the visitor's 
	var hours = new Date().getHours(); 
	// Add a leading zero to the hours value 
	$("#hours").html(( hours < 10 ? "0" : "" ) + hours); 
	}, 1000); 
 
}); // Function for showing the live time 
 
function panel_maximize(panel){ 
 
	if(panel.hasClass("panel-maxed-done")){ 
		panel.removeClass("panel-maxed-done").unwrap(); 
		panel.find(".panel-body").css("height",""); 
		$('#cpu_hist').css("width", "350px"); 
		$('#bw_monthly_body').css("width", "338px"); 
		// Add the maximize button back 
		panel.find(".panel-maximize .fa").removeClass("fa-compress").addClass("fa-expand"); 
	}else{ 
		var head = panel.find(".panel-head"); 
		var hplus = 30; 
		if(head.length > 0){ 
			hplus += head.height()+35; 
		} 
		panel.find(".panel-body").height($(window).height() - hplus); 
 
		// Add the minimize button 
		panel.addClass("panel-maxed-done").wrap('<div class="panel-maxed"></div>'); 
		panel.find(".panel-maximize .fa").removeClass("fa-expand").addClass("fa-compress"); 
		$('#cpu_hist').css("width", "100%"); 
		$('#bw_monthly_body').css("width", "100%"); 
	} 
 
	$(window).resize(); 
 
}; 
 
// Monthwise Bandwidth Graph 
function MonthlyBandwidthGraph(){ 
 
	var svs = getParameterByName('svs', 1); 
 
	$.getJSON('index.php?api=json&act=vpsmanage&svs=' + svs, function(data, textStatus, jqXHR){ 
	}); 
}; 
 
 
$(document).ready(function(){ 
 
	$(".panel-maximize").on("click",function(){ 
		panel_maximize($(this).parents(".panel")); 
		return false; 
	}); 
 
	$(".scrollbar-virt, .sidebar-nav").scrollbar(); 
 
}); 
 
function adjust_div_heights(){ 
	if($('#vps_stats_div').height() < 10 || $('#bw_div').height() < 10){ 
		setTimeout('adjust_div_heights();', 1000); 
	} 
 
	$('#dashboard-tab').height($('#vps_stats_div').height()); 
	$('#bw_monthly_div').height($('#bw_div').height()); 
}; 
 
 
function update_tasks(url, pre){ 
	 
	// If any of these window are not there we will not set the timer and just return 
	if($("#ctaskslist").is(':hidden') && $('#vpstasks_div').is(':hidden')){ 
		return false; 
	} 
		  
	$.getJSON(url, function(data){ 
		for(x in data["tasks"]){ 
			$v = data["tasks"][x]; 
			var cur_status = $v['status_txt']; 
			var cur_progress = $v['progress']; 
			$('#start'+pre+'date_'+$v["actid"]).html($v["started"]); 
			$('#update'+pre+'date_'+$v["actid"]).html($v["updated"]); 
			$('#end'+pre+'date_'+$v["actid"]).html($v["ended"]); 
			$('#'+pre+'status_'+$v["actid"]).html(cur_status); 
			 
			if($v['status'] == -1 || $v['progress_num'] == 100 || !empty($v['notupdated_task'])){ 
				if($v['status'] == "1"){ 
					cur_progress = '<i class="fas fa-1x fa-check-circle text-primary"></i>'; 
				}else if($v['status'] == "-1" ){ 
					cur_progress = '<i class="fas fa-1x fa-times-circle stop"></i></i>'; 
				} 
				$('.'+pre+'progressbar'+$v["actid"]).hide(); 
			}else{ 
				$('.'+pre+'progressbar'+$v["actid"]).show().width('100%'); 
				$('#'+pre+'progressbar'+$v["actid"]).width(cur_progress); 
			} 
			$('#'+pre+'pbar'+$v["actid"]).html(cur_progress); 
		} 
	}); 
	task_timeout = setTimeout(function(){update_tasks(url, pre);}, 10000); 
} 
 
function extractfilename(url){ 
	var tmp = url.replace(/^.*[\/\\]/g, ''); 
	$_("iso_name").value = tmp; 
}; 
 
//////////////////////////// 
// Theme FUNCTIONS 
//////////////////////////// 
 
function nslide(ele){ 
	$(ele).toggle("clip"); 
}; 
 
 
function show_cpu_topology(khidki, virt) { 
	 
	// For launch instance 
	if(empty(virt)) { 
		virt = $(khidki).find('#virt').val(); 
	} 
	 
	if(empty(N['cpu_topology'][virt])) { 
		$(khidki).find(".cpu_topology").hide(); 
	} else { 
		$(khidki).find(".cpu_topology").show(); 
		 
		if(empty(N['cpu_threads'][virt])) { 
			$(khidki).find(".cpu_threads").hide(); 
		} else { 
			$(khidki).find(".cpu_threads").show(); 
			$("#cpu_tab").show(); 
		} 
	} 
	 
} 
 
function change_cpu_topology(khidki){ 
	 
	if($(khidki).find('.enable_cpu_topology').is(':checked')){ 
		$(khidki).find(".tr_cpu_topology").show(); 
		$("#cpu_tab").show(); 
	}else{ 
		$(khidki).find(".tr_cpu_topology").hide(); 
		$(khidki).find(".topology_sockets").val(0); 
		$(khidki).find(".topology_cores").val(0); 
		$(khidki).find(".topology_threads").val(0); 
	} 
	 
} 
 
function show_adv_options(par_div, virt=""){ 
 
	var elements = document.getElementsByClassName("ihb_regpl"); 
 
	if(!empty(elements)){ 
 
		var slctd_plid = 0; 
		var pl_kvm_cache = ''; 
 
		$(elements).each(function(i,v){ 
			if($(elements[i]).hasClass('ihb_slctd_pl')){ 
				slctd_plid = $(elements[i]).attr('id').split('_')[3]; 
				pl_kvm_cache = N['plans'][slctd_plid]['kvm_cache']; 
			} 
		}); 
	} 
	 
	var par_div_id = par_div+" "; 
	 
	var ei = ""; 
	if(par_div.indexOf("edit") != -1){ 
		ei = "ei_"; 
	} 
	 
	$(par_div_id+"#tr_"+ei+"disable_ebtables").hide(); 
	$(par_div_id+"#tr_"+ei+"rdp").hide(); 
	$(par_div_id+"#tr_"+ei+"cpu_mode").hide(); 
	$(par_div_id+"select#"+ei+"cpu_mode").html(""); 
	 
	if(virt == ""){ 
		if($("#virt option").length == 1){ 
			virt = $(par_div_id+"#virt option").val(); 
		}else{ 
			virt = $(par_div_id+"#virt").val(); 
		} 
	} 
	 
	if(Array("openvz", "vzo").indexOf(virt) != -1){ 
		return true; 
	} 
	 
	// General Options 
	 
	var props_show_chk = {}; 
	 
	// General options 
	props_show_chk.disable_ebtables = 0; 
	 
	if(N["resources"] != undefined && N["resources"]["allow_cloud_ebt_disable"] > 0){ 
		props_show_chk.disable_ebtables = 1; 
	} 
	 
	// HVM Options 
	props_show_chk.rdp = 0; 
	 
	// HVM Options 
	if(Array("kvm", "proxk", "xenhvm", "vzk", "xcphvm").indexOf(virt) != -1){ 
		props_show_chk.rdp = 1 
	} 
	 
	// Show all avalid checkbox 
	for (var i in props_show_chk){ 
		if(props_show_chk[i] == 1){ 
			var chk_el = "#"+ei+"tr_"+i+" #"+ei+i; 
			if(N['vps'] != undefined && N['vps'][i] != undefined){ 
				$(chk_el).prop("checked", false); 
				if(N['vps'][i] > 0){ 
					$(chk_el).prop("checked", true); 
				} 
				$("#"+ei+"tr_"+i).show(); 
			}else{ 
				$("#tr_"+i).show(); 
			} 
		}else{ 
			$("#"+ei+"tr_"+i).hide(); 
		} 
	} 
	 
	if(Array("kvm", "proxk").indexOf(virt) == -1){ 
		return true; 
	} 
 
	var cache_options = ['0', 'writeback', 'writethrough', 'directsync', 'default']; 
 
	var options = ''; 
	var selected = ''; 
 
	cache_options.forEach(function(v){ 
 
		selected = (v == pl_kvm_cache ? 'selected=selected' : ''); 
 
		if('vps' in N){ 
			if('kvm_cache' in N['vps']){ 
				selected = N['vps']['kvm_cache'] == v ? 'selected=selected' : ''; 
			} 
		} 
		options += '<option value="'+v+'" '+ selected +' >'+ (v == 0 ? 'None' : ucfirst(v)) +'</option>'; 
	}); 
 
	$('#'+ei+'tr_disk_cache, #'+ei+'disk-tab').show(); 
	$('#'+ei+'kvm_cache').html(options); 
	 
	// KVM related HVM options: 
	$("#"+ei+"tr_cpu_mode ,#"+ei+"cpu-tab").show(); 
	 
	// CPU mode select options 
	if(N['cpu_modes'][virt] != "" && N['cpu_modes'][virt] != undefined && N['cpu_modes'][virt] != false){ 
		 
		var t_cmodes = N['cpu_modes'][virt]; 
		 
		// This variable holds cpu_modes select options 
		var opts = ''; 
		 
		// Variables used to select VPS current cpu_mode value if present 
		var selected = ''; 
		var selected_str = ''; 
		 
		// If this is create and we have plan selected, then load value of plan's cpu_mode 
		var plid = ''; 
		if($('.ihb_slctd_pl').attr('id') != undefined){ 
			plid = $('.ihb_slctd_pl').attr('id').split('_')[3]; 
		} 
		if(plid > 0 && N['plans'] != undefined && N['plans'][plid] != undefined && N['plans'][plid]['cpu_mode'] != undefined){ 
			selected = N['plans'][plid]['cpu_mode']; 
		} 
		 
		// If this is editvm, and VPS has cpu_mode present, then select that value. 
		if(N['vps'] != undefined && N['vps']['cpu_mode'] != undefined){ 
			selected = N['vps']['cpu_mode']; 
		} 
		 
		for(i in t_cmodes){ 
			// Select VPS current cpu_mode value 
			selected_str = (selected != '' && selected == t_cmodes[i][0] ? ' selected="selected" ' : ''); 
			opts += '<option value="'+t_cmodes[i][0]+'" '+selected_str+'>'+t_cmodes[i][1]+'</option>'; 
		}; 
		$(par_div_id+"select#"+ei+"cpu_mode").html(opts); 
	} 
	 
	return true; 
} 
 
// From YYYYMMDDhhmm to YYYY/MM/DD hh:mm 
function datetime(datetime){ 
	var n = datetime.toString(); 
	var year = parseInt(n.substr(0, 4)); 
	var month = parseInt(n.substr(4, 2)); 
	var day = parseInt(n.substr(6, 2)); 
	 
	var ret = day+'/'+month+'/'+year; 
	 
	if(n.length > 8){ 
		var hour = parse